From 2974b866c5f20614385e0d466f651195636340cc Mon Sep 17 00:00:00 2001 From: LimePotato Date: Sun, 30 Jul 2023 18:21:54 -0600 Subject: [PATCH] 20230730 --- index.html | 78 +- mybulma/css/mystyles.css | 3415 +++ mybulma/node_modules/.bin/color-support | 3 + mybulma/node_modules/.bin/mkdirp | 68 + mybulma/node_modules/.bin/node-gyp | 140 + mybulma/node_modules/.bin/node-sass | 444 + mybulma/node_modules/.bin/node-which | 52 + mybulma/node_modules/.bin/nopt | 54 + mybulma/node_modules/.bin/resolve | 50 + mybulma/node_modules/.bin/rimraf | 68 + mybulma/node_modules/.bin/sassgraph | 122 + mybulma/node_modules/.bin/semver | 183 + mybulma/node_modules/.package-lock.json | 2357 +++ .../node_modules/@babel/code-frame/LICENSE | 22 + .../node_modules/@babel/code-frame/README.md | 19 + .../@babel/code-frame/lib/index.js | 163 + .../@babel/code-frame/package.json | 30 + .../helper-validator-identifier/LICENSE | 22 + .../helper-validator-identifier/README.md | 19 + .../lib/identifier.js | 86 + .../lib/identifier.js.map | 1 + .../helper-validator-identifier/lib/index.js | 59 + .../lib/index.js.map | 1 + .../lib/keyword.js | 40 + .../lib/keyword.js.map | 1 + .../helper-validator-identifier/package.json | 28 + .../scripts/generate-identifier-regex.js | 75 + mybulma/node_modules/@babel/highlight/LICENSE | 22 + .../node_modules/@babel/highlight/README.md | 19 + .../@babel/highlight/lib/index.js | 116 + .../node_modules/ansi-styles/index.js | 165 + .../node_modules/ansi-styles/license | 9 + .../node_modules/ansi-styles/package.json | 56 + .../node_modules/ansi-styles/readme.md | 147 + .../highlight/node_modules/chalk/index.js | 228 + .../node_modules/chalk/index.js.flow | 93 + .../highlight/node_modules/chalk/license | 9 + .../highlight/node_modules/chalk/package.json | 71 + .../highlight/node_modules/chalk/readme.md | 314 + .../highlight/node_modules/chalk/templates.js | 128 + .../node_modules/chalk/types/index.d.ts | 97 + .../node_modules/color-convert/CHANGELOG.md | 54 + .../node_modules/color-convert/LICENSE | 21 + .../node_modules/color-convert/README.md | 68 + .../node_modules/color-convert/conversions.js | 868 + .../node_modules/color-convert/index.js | 78 + .../node_modules/color-convert/package.json | 46 + .../node_modules/color-convert/route.js | 97 + .../node_modules/color-name/.eslintrc.json | 43 + .../node_modules/color-name/.npmignore | 107 + .../highlight/node_modules/color-name/LICENSE | 8 + .../node_modules/color-name/README.md | 11 + .../node_modules/color-name/index.js | 152 + .../node_modules/color-name/package.json | 25 + .../highlight/node_modules/color-name/test.js | 7 + .../highlight/node_modules/has-flag/index.js | 8 + .../highlight/node_modules/has-flag/license | 9 + .../node_modules/has-flag/package.json | 44 + .../highlight/node_modules/has-flag/readme.md | 70 + .../node_modules/supports-color/browser.js | 5 + .../node_modules/supports-color/index.js | 131 + .../node_modules/supports-color/license | 9 + .../node_modules/supports-color/package.json | 53 + .../node_modules/supports-color/readme.md | 66 + .../@babel/highlight/package.json | 30 + .../node_modules/@gar/promisify/LICENSE.md | 10 + mybulma/node_modules/@gar/promisify/README.md | 65 + mybulma/node_modules/@gar/promisify/index.js | 36 + .../node_modules/@gar/promisify/package.json | 32 + mybulma/node_modules/@npmcli/fs/LICENSE.md | 20 + mybulma/node_modules/@npmcli/fs/README.md | 62 + .../@npmcli/fs/lib/common/get-options.js | 20 + .../@npmcli/fs/lib/common/node.js | 9 + .../@npmcli/fs/lib/common/owner-sync.js | 96 + .../@npmcli/fs/lib/common/owner.js | 96 + .../node_modules/@npmcli/fs/lib/copy-file.js | 16 + .../node_modules/@npmcli/fs/lib/cp/LICENSE | 15 + .../node_modules/@npmcli/fs/lib/cp/index.js | 22 + .../@npmcli/fs/lib/cp/polyfill.js | 428 + mybulma/node_modules/@npmcli/fs/lib/errors.js | 129 + mybulma/node_modules/@npmcli/fs/lib/fs.js | 14 + mybulma/node_modules/@npmcli/fs/lib/index.js | 12 + mybulma/node_modules/@npmcli/fs/lib/mkdir.js | 19 + .../node_modules/@npmcli/fs/lib/mkdtemp.js | 23 + .../node_modules/@npmcli/fs/lib/rm/index.js | 22 + .../@npmcli/fs/lib/rm/polyfill.js | 239 + .../@npmcli/fs/lib/with-owner-sync.js | 21 + .../node_modules/@npmcli/fs/lib/with-owner.js | 21 + .../@npmcli/fs/lib/with-temp-dir.js | 41 + .../node_modules/@npmcli/fs/lib/write-file.js | 14 + mybulma/node_modules/@npmcli/fs/package.json | 50 + .../node_modules/@npmcli/move-file/LICENSE.md | 22 + .../node_modules/@npmcli/move-file/README.md | 69 + .../@npmcli/move-file/lib/index.js | 185 + .../@npmcli/move-file/package.json | 47 + .../node_modules/@tootallnate/once/LICENSE | 21 + .../node_modules/@tootallnate/once/README.md | 93 + .../@tootallnate/once/dist/index.d.ts | 7 + .../@tootallnate/once/dist/index.js | 24 + .../@tootallnate/once/dist/index.js.map | 1 + .../once/dist/overloaded-parameters.d.ts | 231 + .../once/dist/overloaded-parameters.js | 3 + .../once/dist/overloaded-parameters.js.map | 1 + .../@tootallnate/once/dist/types.d.ts | 17 + .../@tootallnate/once/dist/types.js | 3 + .../@tootallnate/once/dist/types.js.map | 1 + .../@tootallnate/once/package.json | 52 + mybulma/node_modules/@types/minimist/LICENSE | 21 + .../node_modules/@types/minimist/README.md | 16 + .../node_modules/@types/minimist/index.d.ts | 95 + .../node_modules/@types/minimist/package.json | 40 + .../@types/normalize-package-data/LICENSE | 21 + .../@types/normalize-package-data/README.md | 66 + .../@types/normalize-package-data/index.d.ts | 46 + .../normalize-package-data/package.json | 25 + mybulma/node_modules/abbrev/LICENSE | 46 + mybulma/node_modules/abbrev/README.md | 23 + mybulma/node_modules/abbrev/abbrev.js | 61 + mybulma/node_modules/abbrev/package.json | 21 + mybulma/node_modules/agent-base/README.md | 145 + .../agent-base/dist/src/index.d.ts | 78 + .../node_modules/agent-base/dist/src/index.js | 203 + .../agent-base/dist/src/index.js.map | 1 + .../agent-base/dist/src/promisify.d.ts | 4 + .../agent-base/dist/src/promisify.js | 18 + .../agent-base/dist/src/promisify.js.map | 1 + mybulma/node_modules/agent-base/package.json | 64 + mybulma/node_modules/agent-base/src/index.ts | 345 + .../node_modules/agent-base/src/promisify.ts | 33 + .../node_modules/agentkeepalive/History.md | 248 + mybulma/node_modules/agentkeepalive/LICENSE | 23 + mybulma/node_modules/agentkeepalive/README.md | 246 + .../node_modules/agentkeepalive/browser.js | 5 + .../node_modules/agentkeepalive/index.d.ts | 62 + mybulma/node_modules/agentkeepalive/index.js | 5 + .../node_modules/agentkeepalive/lib/agent.js | 398 + .../agentkeepalive/lib/constants.js | 14 + .../agentkeepalive/lib/https_agent.js | 51 + .../node_modules/agentkeepalive/package.json | 66 + mybulma/node_modules/ansi-regex/index.d.ts | 37 + mybulma/node_modules/ansi-regex/index.js | 10 + mybulma/node_modules/ansi-regex/license | 9 + mybulma/node_modules/ansi-regex/package.json | 55 + mybulma/node_modules/ansi-regex/readme.md | 78 + mybulma/node_modules/ansi-styles/index.d.ts | 345 + mybulma/node_modules/ansi-styles/index.js | 163 + mybulma/node_modules/ansi-styles/license | 9 + mybulma/node_modules/ansi-styles/package.json | 56 + mybulma/node_modules/ansi-styles/readme.md | 152 + .../node_modules/are-we-there-yet/LICENSE.md | 18 + .../node_modules/are-we-there-yet/README.md | 208 + .../are-we-there-yet/lib/index.js | 4 + .../are-we-there-yet/lib/tracker-base.js | 11 + .../are-we-there-yet/lib/tracker-group.js | 116 + .../are-we-there-yet/lib/tracker-stream.js | 36 + .../are-we-there-yet/lib/tracker.js | 32 + .../are-we-there-yet/package.json | 56 + mybulma/node_modules/arrify/index.js | 8 + mybulma/node_modules/arrify/license | 21 + mybulma/node_modules/arrify/package.json | 33 + mybulma/node_modules/arrify/readme.md | 36 + .../async-foreach/dist/ba-foreach.js | 58 + .../async-foreach/dist/ba-foreach.min.js | 4 + .../node_modules/async-foreach/lib/foreach.js | 63 + .../async-foreach/test/foreach_test.js | 200 + .../balanced-match/.github/FUNDING.yml | 2 + .../node_modules/balanced-match/LICENSE.md | 21 + mybulma/node_modules/balanced-match/README.md | 97 + mybulma/node_modules/balanced-match/index.js | 62 + .../node_modules/balanced-match/package.json | 48 + .../bulma-pageloader/CHANGELOG.md | 76 + mybulma/node_modules/bulma-pageloader/LICENSE | 21 + .../node_modules/bulma-pageloader/README.md | 17 + .../dist/css/bulma-pageloader.min.css | 1 + .../dist/css/bulma-pageloader.sass | 128 + .../bulma-pageloader/package.json | 69 + .../bulma-pageloader/src/sass/index.sass | 128 + mybulma/node_modules/bulma/LICENSE | 21 + mybulma/node_modules/bulma/README.md | 139 + mybulma/node_modules/bulma/bulma.sass | 10 + mybulma/node_modules/bulma/css/bulma-rtl.css | 11851 +++++++++++ .../node_modules/bulma/css/bulma-rtl.css.map | 1 + .../node_modules/bulma/css/bulma-rtl.min.css | 1 + mybulma/node_modules/bulma/css/bulma.css | 11851 +++++++++++ mybulma/node_modules/bulma/css/bulma.css.map | 1 + mybulma/node_modules/bulma/css/bulma.min.css | 1 + mybulma/node_modules/bulma/package.json | 56 + .../node_modules/bulma/sass/base/_all.sass | 6 + .../bulma/sass/base/animations.sass | 5 + .../node_modules/bulma/sass/base/generic.sass | 145 + .../node_modules/bulma/sass/base/helpers.sass | 1 + .../bulma/sass/base/minireset.sass | 79 + .../bulma/sass/components/_all.sass | 15 + .../bulma/sass/components/breadcrumb.sass | 77 + .../bulma/sass/components/card.sass | 103 + .../bulma/sass/components/dropdown.sass | 83 + .../bulma/sass/components/level.sass | 79 + .../bulma/sass/components/media.sass | 59 + .../bulma/sass/components/menu.sass | 59 + .../bulma/sass/components/message.sass | 101 + .../bulma/sass/components/modal.sass | 117 + .../bulma/sass/components/navbar.sass | 446 + .../bulma/sass/components/pagination.sass | 167 + .../bulma/sass/components/panel.sass | 121 + .../bulma/sass/components/tabs.sass | 176 + .../bulma/sass/elements/_all.sass | 16 + .../node_modules/bulma/sass/elements/box.sass | 26 + .../bulma/sass/elements/button.sass | 357 + .../bulma/sass/elements/container.sass | 29 + .../bulma/sass/elements/content.sass | 162 + .../bulma/sass/elements/form.sass | 1 + .../bulma/sass/elements/icon.sass | 46 + .../bulma/sass/elements/image.sass | 73 + .../bulma/sass/elements/notification.sass | 52 + .../bulma/sass/elements/other.sass | 31 + .../bulma/sass/elements/progress.sass | 73 + .../bulma/sass/elements/table.sass | 134 + .../node_modules/bulma/sass/elements/tag.sass | 140 + .../bulma/sass/elements/title.sass | 70 + .../node_modules/bulma/sass/form/_all.sass | 9 + .../bulma/sass/form/checkbox-radio.sass | 22 + .../node_modules/bulma/sass/form/file.sass | 184 + .../bulma/sass/form/input-textarea.sass | 66 + .../node_modules/bulma/sass/form/select.sass | 88 + .../node_modules/bulma/sass/form/shared.sass | 60 + .../node_modules/bulma/sass/form/tools.sass | 215 + .../node_modules/bulma/sass/grid/_all.sass | 5 + .../node_modules/bulma/sass/grid/columns.sass | 513 + .../node_modules/bulma/sass/grid/tiles.sass | 36 + .../node_modules/bulma/sass/helpers/_all.sass | 12 + .../bulma/sass/helpers/color.sass | 39 + .../bulma/sass/helpers/flexbox.sass | 35 + .../bulma/sass/helpers/float.sass | 10 + .../bulma/sass/helpers/other.sass | 14 + .../bulma/sass/helpers/overflow.sass | 2 + .../bulma/sass/helpers/position.sass | 7 + .../bulma/sass/helpers/spacing.sass | 31 + .../bulma/sass/helpers/typography.sass | 103 + .../bulma/sass/helpers/visibility.sass | 122 + .../node_modules/bulma/sass/layout/_all.sass | 6 + .../bulma/sass/layout/footer.sass | 11 + .../node_modules/bulma/sass/layout/hero.sass | 153 + .../bulma/sass/layout/section.sass | 17 + .../bulma/sass/utilities/_all.sass | 9 + .../bulma/sass/utilities/animations.sass | 1 + .../bulma/sass/utilities/controls.sass | 49 + .../sass/utilities/derived-variables.sass | 114 + .../bulma/sass/utilities/extends.sass | 25 + .../bulma/sass/utilities/functions.sass | 135 + .../sass/utilities/initial-variables.sass | 79 + .../bulma/sass/utilities/mixins.sass | 303 + mybulma/node_modules/cacache/LICENSE.md | 16 + mybulma/node_modules/cacache/README.md | 716 + .../node_modules/cacache/lib/content/path.js | 29 + .../node_modules/cacache/lib/content/read.js | 241 + .../node_modules/cacache/lib/content/rm.js | 20 + .../node_modules/cacache/lib/content/write.js | 189 + .../node_modules/cacache/lib/entry-index.js | 404 + mybulma/node_modules/cacache/lib/get.js | 225 + mybulma/node_modules/cacache/lib/index.js | 45 + .../node_modules/cacache/lib/memoization.js | 72 + mybulma/node_modules/cacache/lib/put.js | 80 + mybulma/node_modules/cacache/lib/rm.js | 31 + .../cacache/lib/util/fix-owner.js | 145 + .../cacache/lib/util/hash-to-segments.js | 7 + .../cacache/lib/util/move-file.js | 56 + mybulma/node_modules/cacache/lib/util/tmp.js | 33 + mybulma/node_modules/cacache/lib/verify.js | 257 + .../brace-expansion/.github/FUNDING.yml | 2 + .../node_modules/brace-expansion/LICENSE | 21 + .../node_modules/brace-expansion/README.md | 135 + .../node_modules/brace-expansion/index.js | 203 + .../node_modules/brace-expansion/package.json | 46 + .../cacache/node_modules/glob/LICENSE | 15 + .../cacache/node_modules/glob/README.md | 378 + .../cacache/node_modules/glob/common.js | 240 + .../cacache/node_modules/glob/glob.js | 790 + .../cacache/node_modules/glob/package.json | 55 + .../cacache/node_modules/glob/sync.js | 486 + .../cacache/node_modules/minimatch/LICENSE | 15 + .../cacache/node_modules/minimatch/README.md | 259 + .../node_modules/minimatch/lib/path.js | 4 + .../node_modules/minimatch/minimatch.js | 907 + .../node_modules/minimatch/package.json | 32 + mybulma/node_modules/cacache/package.json | 84 + .../node_modules/camelcase-keys/index.d.ts | 103 + mybulma/node_modules/camelcase-keys/index.js | 77 + mybulma/node_modules/camelcase-keys/license | 9 + .../node_modules/camelcase-keys/package.json | 73 + mybulma/node_modules/camelcase-keys/readme.md | 125 + mybulma/node_modules/camelcase/index.d.ts | 63 + mybulma/node_modules/camelcase/index.js | 76 + mybulma/node_modules/camelcase/license | 9 + mybulma/node_modules/camelcase/package.json | 43 + mybulma/node_modules/camelcase/readme.md | 99 + mybulma/node_modules/chalk/source/index.js | 229 + .../node_modules/chalk/source/templates.js | 134 + mybulma/node_modules/chalk/source/util.js | 39 + mybulma/node_modules/chownr/LICENSE | 15 + mybulma/node_modules/chownr/README.md | 3 + mybulma/node_modules/chownr/chownr.js | 167 + mybulma/node_modules/chownr/package.json | 32 + mybulma/node_modules/clean-stack/index.d.ts | 47 + mybulma/node_modules/clean-stack/index.js | 40 + mybulma/node_modules/clean-stack/license | 9 + mybulma/node_modules/clean-stack/package.json | 39 + mybulma/node_modules/clean-stack/readme.md | 76 + mybulma/node_modules/cliui/CHANGELOG.md | 139 + mybulma/node_modules/cliui/LICENSE.txt | 14 + mybulma/node_modules/cliui/README.md | 141 + mybulma/node_modules/cliui/build/index.cjs | 302 + mybulma/node_modules/cliui/build/index.d.cts | 43 + mybulma/node_modules/cliui/build/lib/index.js | 287 + .../cliui/build/lib/string-utils.js | 27 + mybulma/node_modules/cliui/index.mjs | 13 + mybulma/node_modules/cliui/package.json | 83 + .../node_modules/color-convert/CHANGELOG.md | 54 + mybulma/node_modules/color-convert/LICENSE | 21 + mybulma/node_modules/color-convert/README.md | 68 + .../node_modules/color-convert/conversions.js | 839 + mybulma/node_modules/color-convert/index.js | 81 + .../node_modules/color-convert/package.json | 48 + mybulma/node_modules/color-convert/route.js | 97 + mybulma/node_modules/color-name/LICENSE | 8 + mybulma/node_modules/color-name/README.md | 11 + mybulma/node_modules/color-name/index.js | 152 + mybulma/node_modules/color-name/package.json | 28 + mybulma/node_modules/color-support/LICENSE | 15 + mybulma/node_modules/color-support/README.md | 129 + mybulma/node_modules/color-support/bin.js | 3 + mybulma/node_modules/color-support/browser.js | 14 + mybulma/node_modules/color-support/index.js | 134 + .../node_modules/color-support/package.json | 36 + mybulma/node_modules/concat-map/.travis.yml | 4 + mybulma/node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + mybulma/node_modules/concat-map/index.js | 13 + mybulma/node_modules/concat-map/package.json | 43 + mybulma/node_modules/concat-map/test/map.js | 39 + mybulma/node_modules/core-util-is/lib/util.js | 107 + mybulma/node_modules/cross-spawn/CHANGELOG.md | 130 + mybulma/node_modules/cross-spawn/LICENSE | 21 + mybulma/node_modules/cross-spawn/README.md | 96 + mybulma/node_modules/cross-spawn/index.js | 39 + .../node_modules/cross-spawn/lib/enoent.js | 59 + mybulma/node_modules/cross-spawn/lib/parse.js | 91 + .../cross-spawn/lib/util/escape.js | 45 + .../cross-spawn/lib/util/readShebang.js | 23 + .../cross-spawn/lib/util/resolveCommand.js | 52 + mybulma/node_modules/cross-spawn/package.json | 73 + mybulma/node_modules/debug/LICENSE | 20 + mybulma/node_modules/debug/README.md | 481 + mybulma/node_modules/debug/package.json | 59 + mybulma/node_modules/debug/src/browser.js | 269 + mybulma/node_modules/debug/src/common.js | 274 + mybulma/node_modules/debug/src/index.js | 10 + mybulma/node_modules/debug/src/node.js | 263 + mybulma/node_modules/decamelize-keys/index.js | 19 + mybulma/node_modules/decamelize-keys/license | 21 + .../node_modules/map-obj/index.js | 13 + .../node_modules/map-obj/license | 21 + .../node_modules/map-obj/package.json | 36 + .../node_modules/map-obj/readme.md | 29 + .../node_modules/decamelize-keys/package.json | 63 + .../node_modules/decamelize-keys/readme.md | 69 + mybulma/node_modules/delegates/test/index.js | 94 + mybulma/node_modules/depd/History.md | 96 + mybulma/node_modules/depd/LICENSE | 22 + mybulma/node_modules/depd/Readme.md | 280 + mybulma/node_modules/depd/index.js | 522 + .../node_modules/depd/lib/browser/index.js | 77 + .../depd/lib/compat/callsite-tostring.js | 103 + .../depd/lib/compat/event-listener-count.js | 22 + mybulma/node_modules/depd/lib/compat/index.js | 79 + mybulma/node_modules/depd/package.json | 41 + .../node_modules/emoji-regex/es2015/index.js | 6 + .../node_modules/emoji-regex/es2015/text.js | 6 + mybulma/node_modules/encoding/lib/encoding.js | 83 + mybulma/node_modules/encoding/test/test.js | 49 + mybulma/node_modules/env-paths/index.d.ts | 101 + mybulma/node_modules/env-paths/index.js | 74 + mybulma/node_modules/env-paths/license | 9 + mybulma/node_modules/env-paths/package.json | 45 + mybulma/node_modules/env-paths/readme.md | 115 + mybulma/node_modules/err-code/.editorconfig | 12 + mybulma/node_modules/err-code/.eslintrc.json | 7 + mybulma/node_modules/err-code/.travis.yml | 4 + mybulma/node_modules/err-code/README.md | 70 + mybulma/node_modules/err-code/bower.json | 30 + mybulma/node_modules/err-code/index.js | 47 + mybulma/node_modules/err-code/index.umd.js | 51 + mybulma/node_modules/err-code/package.json | 34 + .../node_modules/err-code/test/.eslintrc.json | 5 + mybulma/node_modules/err-code/test/test.js | 159 + mybulma/node_modules/error-ex/LICENSE | 21 + mybulma/node_modules/error-ex/README.md | 144 + mybulma/node_modules/error-ex/index.js | 141 + mybulma/node_modules/error-ex/package.json | 46 + mybulma/node_modules/escalade/dist/index.js | 22 + mybulma/node_modules/escalade/dist/index.mjs | 22 + mybulma/node_modules/escalade/sync/index.d.ts | 2 + mybulma/node_modules/escalade/sync/index.js | 18 + mybulma/node_modules/escalade/sync/index.mjs | 18 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 41 + .../escape-string-regexp/readme.md | 27 + mybulma/node_modules/find-up/index.d.ts | 137 + mybulma/node_modules/find-up/index.js | 89 + mybulma/node_modules/find-up/license | 9 + mybulma/node_modules/find-up/package.json | 53 + mybulma/node_modules/find-up/readme.md | 156 + mybulma/node_modules/fs.realpath/LICENSE | 43 + mybulma/node_modules/fs.realpath/README.md | 33 + mybulma/node_modules/fs.realpath/index.js | 66 + mybulma/node_modules/fs.realpath/old.js | 303 + mybulma/node_modules/fs.realpath/package.json | 26 + .../node_modules/function-bind/.editorconfig | 20 + mybulma/node_modules/function-bind/.eslintrc | 15 + mybulma/node_modules/function-bind/.jscs.json | 176 + mybulma/node_modules/function-bind/.npmignore | 22 + .../node_modules/function-bind/.travis.yml | 168 + mybulma/node_modules/function-bind/LICENSE | 20 + mybulma/node_modules/function-bind/README.md | 48 + .../function-bind/implementation.js | 52 + mybulma/node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 63 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + mybulma/node_modules/gauge/LICENSE.md | 20 + mybulma/node_modules/gauge/lib/base-theme.js | 18 + mybulma/node_modules/gauge/lib/error.js | 24 + mybulma/node_modules/gauge/lib/has-color.js | 4 + mybulma/node_modules/gauge/lib/index.js | 289 + mybulma/node_modules/gauge/lib/plumbing.js | 50 + mybulma/node_modules/gauge/lib/process.js | 3 + .../node_modules/gauge/lib/progress-bar.js | 41 + .../node_modules/gauge/lib/render-template.js | 222 + .../node_modules/gauge/lib/set-immediate.js | 7 + .../node_modules/gauge/lib/set-interval.js | 3 + mybulma/node_modules/gauge/lib/spin.js | 5 + .../node_modules/gauge/lib/template-item.js | 87 + mybulma/node_modules/gauge/lib/theme-set.js | 122 + mybulma/node_modules/gauge/lib/themes.js | 56 + .../node_modules/gauge/lib/wide-truncate.js | 31 + mybulma/node_modules/gaze/lib/gaze.js | 469 + mybulma/node_modules/gaze/lib/helper.js | 84 + mybulma/node_modules/get-stdin/index.js | 49 + mybulma/node_modules/get-stdin/package.json | 35 + mybulma/node_modules/get-stdin/readme.md | 44 + mybulma/node_modules/globule/LICENSE | 22 + mybulma/node_modules/globule/README.md | 131 + mybulma/node_modules/globule/lib/globule.js | 192 + .../globule/node_modules/glob/LICENSE | 21 + .../globule/node_modules/glob/README.md | 375 + .../globule/node_modules/glob/changelog.md | 67 + .../globule/node_modules/glob/common.js | 234 + .../globule/node_modules/glob/glob.js | 788 + .../globule/node_modules/glob/package.json | 51 + .../globule/node_modules/glob/sync.js | 484 + .../globule/node_modules/minimatch/LICENSE | 15 + .../globule/node_modules/minimatch/README.md | 224 + .../node_modules/minimatch/minimatch.js | 947 + .../node_modules/minimatch/package.json | 33 + mybulma/node_modules/globule/package.json | 50 + mybulma/node_modules/graceful-fs/LICENSE | 15 + mybulma/node_modules/graceful-fs/README.md | 143 + mybulma/node_modules/graceful-fs/clone.js | 23 + .../node_modules/graceful-fs/graceful-fs.js | 448 + .../graceful-fs/legacy-streams.js | 118 + mybulma/node_modules/graceful-fs/package.json | 50 + mybulma/node_modules/graceful-fs/polyfills.js | 355 + .../node_modules/hard-rejection/index.d.ts | 15 + mybulma/node_modules/hard-rejection/index.js | 25 + mybulma/node_modules/hard-rejection/license | 9 + .../node_modules/hard-rejection/package.json | 47 + mybulma/node_modules/hard-rejection/readme.md | 77 + .../node_modules/hard-rejection/register.js | 2 + mybulma/node_modules/has-flag/index.d.ts | 39 + mybulma/node_modules/has-flag/index.js | 8 + mybulma/node_modules/has-flag/license | 9 + mybulma/node_modules/has-flag/package.json | 46 + mybulma/node_modules/has-flag/readme.md | 89 + mybulma/node_modules/has-unicode/LICENSE | 14 + mybulma/node_modules/has-unicode/README.md | 43 + mybulma/node_modules/has-unicode/index.js | 16 + mybulma/node_modules/has-unicode/package.json | 30 + mybulma/node_modules/has/src/index.js | 5 + mybulma/node_modules/has/test/index.js | 10 + .../node_modules/lru-cache/LICENSE | 15 + .../node_modules/lru-cache/README.md | 166 + .../node_modules/lru-cache/index.js | 334 + .../node_modules/lru-cache/package.json | 34 + .../node_modules/http-cache-semantics/LICENSE | 9 + .../http-cache-semantics/README.md | 203 + .../http-cache-semantics/index.js | 674 + .../http-cache-semantics/package.json | 18 + .../node_modules/http-proxy-agent/README.md | 74 + .../http-proxy-agent/dist/agent.d.ts | 32 + .../http-proxy-agent/dist/agent.js | 145 + .../http-proxy-agent/dist/agent.js.map | 1 + .../http-proxy-agent/dist/index.d.ts | 21 + .../http-proxy-agent/dist/index.js | 14 + .../http-proxy-agent/dist/index.js.map | 1 + .../http-proxy-agent/package.json | 57 + .../node_modules/https-proxy-agent/README.md | 137 + .../https-proxy-agent/dist/agent.d.ts | 30 + .../https-proxy-agent/dist/agent.js | 177 + .../https-proxy-agent/dist/agent.js.map | 1 + .../https-proxy-agent/dist/index.d.ts | 23 + .../https-proxy-agent/dist/index.js | 14 + .../https-proxy-agent/dist/index.js.map | 1 + .../dist/parse-proxy-response.d.ts | 7 + .../dist/parse-proxy-response.js | 66 + .../dist/parse-proxy-response.js.map | 1 + .../https-proxy-agent/package.json | 56 + mybulma/node_modules/humanize-ms/History.md | 25 + mybulma/node_modules/humanize-ms/LICENSE | 17 + mybulma/node_modules/humanize-ms/README.md | 40 + mybulma/node_modules/humanize-ms/index.js | 24 + mybulma/node_modules/humanize-ms/package.json | 37 + .../iconv-lite/.github/dependabot.yml | 11 + .../iconv-lite/.idea/codeStyles/Project.xml | 47 + .../.idea/codeStyles/codeStyleConfig.xml | 5 + .../iconv-lite/.idea/iconv-lite.iml | 12 + .../inspectionProfiles/Project_Default.xml | 6 + .../node_modules/iconv-lite/.idea/modules.xml | 8 + mybulma/node_modules/iconv-lite/.idea/vcs.xml | 6 + .../iconv-lite/encodings/dbcs-codec.js | 597 + .../iconv-lite/encodings/dbcs-data.js | 188 + .../iconv-lite/encodings/index.js | 23 + .../iconv-lite/encodings/internal.js | 198 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 179 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 56 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + .../iconv-lite/encodings/utf16.js | 197 + .../iconv-lite/encodings/utf32.js | 319 + .../node_modules/iconv-lite/encodings/utf7.js | 290 + .../iconv-lite/lib/bom-handling.js | 52 + .../node_modules/iconv-lite/lib/index.d.ts | 41 + mybulma/node_modules/iconv-lite/lib/index.js | 180 + .../node_modules/iconv-lite/lib/streams.js | 109 + mybulma/node_modules/imurmurhash/README.md | 122 + .../node_modules/imurmurhash/imurmurhash.js | 138 + .../imurmurhash/imurmurhash.min.js | 12 + mybulma/node_modules/imurmurhash/package.json | 40 + mybulma/node_modules/inflight/LICENSE | 15 + mybulma/node_modules/inflight/README.md | 37 + mybulma/node_modules/inflight/inflight.js | 54 + mybulma/node_modules/inflight/package.json | 29 + mybulma/node_modules/ip/README.md | 90 + mybulma/node_modules/ip/lib/ip.js | 422 + mybulma/node_modules/ip/package.json | 25 + .../node_modules/is-core-module/test/index.js | 133 + .../is-fullwidth-code-point/index.d.ts | 17 + .../is-fullwidth-code-point/index.js | 50 + .../is-fullwidth-code-point/license | 9 + .../is-fullwidth-code-point/package.json | 42 + .../is-fullwidth-code-point/readme.md | 39 + mybulma/node_modules/isexe/.npmignore | 2 + mybulma/node_modules/isexe/LICENSE | 15 + mybulma/node_modules/isexe/README.md | 51 + mybulma/node_modules/isexe/index.js | 57 + mybulma/node_modules/isexe/mode.js | 41 + mybulma/node_modules/isexe/package.json | 31 + mybulma/node_modules/isexe/test/basic.js | 221 + mybulma/node_modules/isexe/windows.js | 42 + mybulma/node_modules/js-tokens/CHANGELOG.md | 151 + mybulma/node_modules/js-tokens/LICENSE | 21 + mybulma/node_modules/js-tokens/README.md | 240 + mybulma/node_modules/js-tokens/index.js | 23 + mybulma/node_modules/js-tokens/package.json | 30 + .../lines-and-columns/build/index.d.ts | 13 + .../lines-and-columns/build/index.js | 62 + mybulma/node_modules/lodash/LICENSE | 47 + mybulma/node_modules/lodash/README.md | 39 + mybulma/node_modules/lodash/_DataView.js | 7 + mybulma/node_modules/lodash/_Hash.js | 32 + mybulma/node_modules/lodash/_LazyWrapper.js | 28 + mybulma/node_modules/lodash/_ListCache.js | 32 + mybulma/node_modules/lodash/_LodashWrapper.js | 22 + mybulma/node_modules/lodash/_Map.js | 7 + mybulma/node_modules/lodash/_MapCache.js | 32 + mybulma/node_modules/lodash/_Promise.js | 7 + mybulma/node_modules/lodash/_Set.js | 7 + mybulma/node_modules/lodash/_SetCache.js | 27 + mybulma/node_modules/lodash/_Stack.js | 27 + mybulma/node_modules/lodash/_Symbol.js | 6 + mybulma/node_modules/lodash/_Uint8Array.js | 6 + mybulma/node_modules/lodash/_WeakMap.js | 7 + mybulma/node_modules/lodash/_apply.js | 21 + .../node_modules/lodash/_arrayAggregator.js | 22 + mybulma/node_modules/lodash/_arrayEach.js | 22 + .../node_modules/lodash/_arrayEachRight.js | 21 + mybulma/node_modules/lodash/_arrayEvery.js | 23 + mybulma/node_modules/lodash/_arrayFilter.js | 25 + mybulma/node_modules/lodash/_arrayIncludes.js | 17 + .../node_modules/lodash/_arrayIncludesWith.js | 22 + mybulma/node_modules/lodash/_arrayLikeKeys.js | 49 + mybulma/node_modules/lodash/_arrayMap.js | 21 + mybulma/node_modules/lodash/_arrayPush.js | 20 + mybulma/node_modules/lodash/_arrayReduce.js | 26 + .../node_modules/lodash/_arrayReduceRight.js | 24 + mybulma/node_modules/lodash/_arraySample.js | 15 + .../node_modules/lodash/_arraySampleSize.js | 17 + mybulma/node_modules/lodash/_arrayShuffle.js | 15 + mybulma/node_modules/lodash/_arraySome.js | 23 + mybulma/node_modules/lodash/_asciiSize.js | 12 + mybulma/node_modules/lodash/_asciiToArray.js | 12 + mybulma/node_modules/lodash/_asciiWords.js | 15 + .../node_modules/lodash/_assignMergeValue.js | 20 + mybulma/node_modules/lodash/_assignValue.js | 28 + mybulma/node_modules/lodash/_assocIndexOf.js | 21 + .../node_modules/lodash/_baseAggregator.js | 21 + mybulma/node_modules/lodash/_baseAssign.js | 17 + mybulma/node_modules/lodash/_baseAssignIn.js | 17 + .../node_modules/lodash/_baseAssignValue.js | 25 + mybulma/node_modules/lodash/_baseAt.js | 23 + mybulma/node_modules/lodash/_baseClamp.js | 22 + mybulma/node_modules/lodash/_baseClone.js | 166 + mybulma/node_modules/lodash/_baseConforms.js | 18 + .../node_modules/lodash/_baseConformsTo.js | 27 + mybulma/node_modules/lodash/_baseCreate.js | 30 + mybulma/node_modules/lodash/_baseDelay.js | 21 + .../node_modules/lodash/_baseDifference.js | 67 + mybulma/node_modules/lodash/_baseEach.js | 14 + mybulma/node_modules/lodash/_baseEachRight.js | 14 + mybulma/node_modules/lodash/_baseEvery.js | 21 + mybulma/node_modules/lodash/_baseExtremum.js | 32 + mybulma/node_modules/lodash/_baseFill.js | 32 + mybulma/node_modules/lodash/_baseFilter.js | 21 + mybulma/node_modules/lodash/_baseFindIndex.js | 24 + mybulma/node_modules/lodash/_baseFindKey.js | 23 + mybulma/node_modules/lodash/_baseFlatten.js | 38 + mybulma/node_modules/lodash/_baseFor.js | 16 + mybulma/node_modules/lodash/_baseForOwn.js | 16 + .../node_modules/lodash/_baseForOwnRight.js | 16 + mybulma/node_modules/lodash/_baseForRight.js | 15 + mybulma/node_modules/lodash/_baseFunctions.js | 19 + mybulma/node_modules/lodash/_baseGet.js | 24 + .../node_modules/lodash/_baseGetAllKeys.js | 20 + mybulma/node_modules/lodash/_baseGetTag.js | 28 + mybulma/node_modules/lodash/_baseGt.js | 14 + mybulma/node_modules/lodash/_baseHas.js | 19 + mybulma/node_modules/lodash/_baseHasIn.js | 13 + mybulma/node_modules/lodash/_baseInRange.js | 18 + mybulma/node_modules/lodash/_baseIndexOf.js | 20 + .../node_modules/lodash/_baseIndexOfWith.js | 23 + .../node_modules/lodash/_baseIntersection.js | 74 + mybulma/node_modules/lodash/_baseInverter.js | 21 + mybulma/node_modules/lodash/_baseInvoke.js | 24 + .../node_modules/lodash/_baseIsArguments.js | 18 + .../node_modules/lodash/_baseIsArrayBuffer.js | 17 + mybulma/node_modules/lodash/_baseIsDate.js | 18 + mybulma/node_modules/lodash/_baseIsEqual.js | 28 + .../node_modules/lodash/_baseIsEqualDeep.js | 83 + mybulma/node_modules/lodash/_baseIsMap.js | 18 + mybulma/node_modules/lodash/_baseIsMatch.js | 62 + mybulma/node_modules/lodash/_baseIsNaN.js | 12 + mybulma/node_modules/lodash/_baseIsNative.js | 47 + mybulma/node_modules/lodash/_baseIsRegExp.js | 18 + mybulma/node_modules/lodash/_baseIsSet.js | 18 + .../node_modules/lodash/_baseIsTypedArray.js | 60 + mybulma/node_modules/lodash/_baseIteratee.js | 31 + mybulma/node_modules/lodash/_baseKeys.js | 30 + mybulma/node_modules/lodash/_baseKeysIn.js | 33 + mybulma/node_modules/lodash/_baseLodash.js | 10 + mybulma/node_modules/lodash/_baseLt.js | 14 + mybulma/node_modules/lodash/_baseMap.js | 22 + mybulma/node_modules/lodash/_baseMatches.js | 22 + .../lodash/_baseMatchesProperty.js | 33 + mybulma/node_modules/lodash/_baseMean.js | 20 + mybulma/node_modules/lodash/_baseMerge.js | 42 + mybulma/node_modules/lodash/_baseMergeDeep.js | 94 + mybulma/node_modules/lodash/_baseNth.js | 20 + mybulma/node_modules/lodash/_baseOrderBy.js | 49 + mybulma/node_modules/lodash/_basePick.js | 19 + mybulma/node_modules/lodash/_basePickBy.js | 30 + mybulma/node_modules/lodash/_baseProperty.js | 14 + .../node_modules/lodash/_basePropertyDeep.js | 16 + .../node_modules/lodash/_basePropertyOf.js | 14 + mybulma/node_modules/lodash/_basePullAll.js | 51 + mybulma/node_modules/lodash/_basePullAt.js | 37 + mybulma/node_modules/lodash/_baseRandom.js | 18 + mybulma/node_modules/lodash/_baseRange.js | 28 + mybulma/node_modules/lodash/_baseReduce.js | 23 + mybulma/node_modules/lodash/_baseRepeat.js | 35 + mybulma/node_modules/lodash/_baseRest.js | 17 + mybulma/node_modules/lodash/_baseSample.js | 15 + .../node_modules/lodash/_baseSampleSize.js | 18 + mybulma/node_modules/lodash/_baseSet.js | 51 + mybulma/node_modules/lodash/_baseSetData.js | 17 + .../node_modules/lodash/_baseSetToString.js | 22 + mybulma/node_modules/lodash/_baseShuffle.js | 15 + mybulma/node_modules/lodash/_baseSlice.js | 31 + mybulma/node_modules/lodash/_baseSome.js | 22 + mybulma/node_modules/lodash/_baseSortBy.js | 21 + .../node_modules/lodash/_baseSortedIndex.js | 42 + .../node_modules/lodash/_baseSortedIndexBy.js | 67 + .../node_modules/lodash/_baseSortedUniq.js | 30 + mybulma/node_modules/lodash/_baseSum.js | 24 + mybulma/node_modules/lodash/_baseTimes.js | 20 + mybulma/node_modules/lodash/_baseToNumber.js | 24 + mybulma/node_modules/lodash/_baseToPairs.js | 18 + mybulma/node_modules/lodash/_baseToString.js | 37 + mybulma/node_modules/lodash/_baseTrim.js | 19 + mybulma/node_modules/lodash/_baseUnary.js | 14 + mybulma/node_modules/lodash/_baseUniq.js | 72 + mybulma/node_modules/lodash/_baseUnset.js | 20 + mybulma/node_modules/lodash/_baseUpdate.js | 18 + mybulma/node_modules/lodash/_baseValues.js | 19 + mybulma/node_modules/lodash/_baseWhile.js | 26 + .../node_modules/lodash/_baseWrapperValue.js | 25 + mybulma/node_modules/lodash/_baseXor.js | 36 + mybulma/node_modules/lodash/_baseZipObject.js | 23 + mybulma/node_modules/lodash/_cacheHas.js | 13 + .../lodash/_castArrayLikeObject.js | 14 + mybulma/node_modules/lodash/_castFunction.js | 14 + mybulma/node_modules/lodash/_castPath.js | 21 + mybulma/node_modules/lodash/_castRest.js | 14 + mybulma/node_modules/lodash/_castSlice.js | 18 + mybulma/node_modules/lodash/_charsEndIndex.js | 19 + .../node_modules/lodash/_charsStartIndex.js | 20 + .../node_modules/lodash/_cloneArrayBuffer.js | 16 + mybulma/node_modules/lodash/_cloneBuffer.js | 35 + mybulma/node_modules/lodash/_cloneDataView.js | 16 + mybulma/node_modules/lodash/_cloneRegExp.js | 17 + mybulma/node_modules/lodash/_cloneSymbol.js | 18 + .../node_modules/lodash/_cloneTypedArray.js | 16 + .../node_modules/lodash/_compareAscending.js | 41 + .../node_modules/lodash/_compareMultiple.js | 44 + mybulma/node_modules/lodash/_composeArgs.js | 39 + .../node_modules/lodash/_composeArgsRight.js | 41 + mybulma/node_modules/lodash/_copyArray.js | 20 + mybulma/node_modules/lodash/_copyObject.js | 40 + mybulma/node_modules/lodash/_copySymbols.js | 16 + mybulma/node_modules/lodash/_copySymbolsIn.js | 16 + mybulma/node_modules/lodash/_coreJsData.js | 6 + mybulma/node_modules/lodash/_countHolders.js | 21 + .../node_modules/lodash/_createAggregator.js | 23 + .../node_modules/lodash/_createAssigner.js | 37 + .../node_modules/lodash/_createBaseEach.js | 32 + mybulma/node_modules/lodash/_createBaseFor.js | 25 + mybulma/node_modules/lodash/_createBind.js | 28 + .../node_modules/lodash/_createCaseFirst.js | 33 + .../node_modules/lodash/_createCompounder.js | 24 + mybulma/node_modules/lodash/_createCtor.js | 37 + mybulma/node_modules/lodash/_createCurry.js | 46 + mybulma/node_modules/lodash/_createFind.js | 25 + mybulma/node_modules/lodash/_createFlow.js | 78 + mybulma/node_modules/lodash/_createHybrid.js | 92 + .../node_modules/lodash/_createInverter.js | 17 + .../lodash/_createMathOperation.js | 38 + mybulma/node_modules/lodash/_createOver.js | 27 + mybulma/node_modules/lodash/_createPadding.js | 33 + mybulma/node_modules/lodash/_createPartial.js | 43 + mybulma/node_modules/lodash/_createRange.js | 30 + mybulma/node_modules/lodash/_createRecurry.js | 56 + .../lodash/_createRelationalOperation.js | 20 + mybulma/node_modules/lodash/_createRound.js | 35 + mybulma/node_modules/lodash/_createSet.js | 19 + mybulma/node_modules/lodash/_createToPairs.js | 30 + mybulma/node_modules/lodash/_createWrap.js | 106 + .../lodash/_customDefaultsAssignIn.js | 29 + .../lodash/_customDefaultsMerge.js | 28 + .../node_modules/lodash/_customOmitClone.js | 16 + mybulma/node_modules/lodash/_deburrLetter.js | 71 + .../node_modules/lodash/_defineProperty.js | 11 + mybulma/node_modules/lodash/_equalArrays.js | 84 + mybulma/node_modules/lodash/_equalByTag.js | 112 + mybulma/node_modules/lodash/_equalObjects.js | 90 + .../node_modules/lodash/_escapeHtmlChar.js | 21 + .../node_modules/lodash/_escapeStringChar.js | 22 + mybulma/node_modules/lodash/_flatRest.js | 16 + mybulma/node_modules/lodash/_freeGlobal.js | 4 + mybulma/node_modules/lodash/_getAllKeys.js | 16 + mybulma/node_modules/lodash/_getAllKeysIn.js | 17 + mybulma/node_modules/lodash/_getData.js | 15 + mybulma/node_modules/lodash/_getFuncName.js | 31 + mybulma/node_modules/lodash/_getHolder.js | 13 + mybulma/node_modules/lodash/_getMapData.js | 18 + mybulma/node_modules/lodash/_getMatchData.js | 24 + mybulma/node_modules/lodash/_getNative.js | 17 + mybulma/node_modules/lodash/_getPrototype.js | 6 + mybulma/node_modules/lodash/_getRawTag.js | 46 + mybulma/node_modules/lodash/_getSymbols.js | 30 + mybulma/node_modules/lodash/_getSymbolsIn.js | 25 + mybulma/node_modules/lodash/_getTag.js | 58 + mybulma/node_modules/lodash/_getValue.js | 13 + mybulma/node_modules/lodash/_getView.js | 33 + .../node_modules/lodash/_getWrapDetails.js | 17 + mybulma/node_modules/lodash/_hasPath.js | 39 + mybulma/node_modules/lodash/_hasUnicode.js | 26 + .../node_modules/lodash/_hasUnicodeWord.js | 15 + mybulma/node_modules/lodash/_hashClear.js | 15 + mybulma/node_modules/lodash/_hashDelete.js | 17 + mybulma/node_modules/lodash/_hashGet.js | 30 + mybulma/node_modules/lodash/_hashHas.js | 23 + mybulma/node_modules/lodash/_hashSet.js | 23 + .../node_modules/lodash/_initCloneArray.js | 26 + .../node_modules/lodash/_initCloneByTag.js | 77 + .../node_modules/lodash/_initCloneObject.js | 18 + .../node_modules/lodash/_insertWrapDetails.js | 23 + mybulma/node_modules/lodash/_isFlattenable.js | 20 + mybulma/node_modules/lodash/_isIndex.js | 25 + .../node_modules/lodash/_isIterateeCall.js | 30 + mybulma/node_modules/lodash/_isKey.js | 29 + mybulma/node_modules/lodash/_isKeyable.js | 15 + mybulma/node_modules/lodash/_isLaziable.js | 28 + mybulma/node_modules/lodash/_isMaskable.js | 14 + mybulma/node_modules/lodash/_isMasked.js | 20 + mybulma/node_modules/lodash/_isPrototype.js | 18 + .../lodash/_isStrictComparable.js | 15 + .../node_modules/lodash/_iteratorToArray.js | 18 + mybulma/node_modules/lodash/_lazyClone.js | 23 + mybulma/node_modules/lodash/_lazyReverse.js | 23 + mybulma/node_modules/lodash/_lazyValue.js | 69 + .../node_modules/lodash/_listCacheClear.js | 13 + .../node_modules/lodash/_listCacheDelete.js | 35 + mybulma/node_modules/lodash/_listCacheGet.js | 19 + mybulma/node_modules/lodash/_listCacheHas.js | 16 + mybulma/node_modules/lodash/_listCacheSet.js | 26 + mybulma/node_modules/lodash/_mapCacheClear.js | 21 + .../node_modules/lodash/_mapCacheDelete.js | 18 + mybulma/node_modules/lodash/_mapCacheGet.js | 16 + mybulma/node_modules/lodash/_mapCacheHas.js | 16 + mybulma/node_modules/lodash/_mapCacheSet.js | 22 + mybulma/node_modules/lodash/_mapToArray.js | 18 + .../lodash/_matchesStrictComparable.js | 20 + mybulma/node_modules/lodash/_memoizeCapped.js | 26 + mybulma/node_modules/lodash/_mergeData.js | 90 + mybulma/node_modules/lodash/_metaMap.js | 6 + mybulma/node_modules/lodash/_nativeCreate.js | 6 + mybulma/node_modules/lodash/_nativeKeys.js | 6 + mybulma/node_modules/lodash/_nativeKeysIn.js | 20 + mybulma/node_modules/lodash/_nodeUtil.js | 30 + .../node_modules/lodash/_objectToString.js | 22 + mybulma/node_modules/lodash/_overArg.js | 15 + mybulma/node_modules/lodash/_overRest.js | 36 + mybulma/node_modules/lodash/_parent.js | 16 + mybulma/node_modules/lodash/_reEscape.js | 4 + mybulma/node_modules/lodash/_reEvaluate.js | 4 + mybulma/node_modules/lodash/_reInterpolate.js | 4 + mybulma/node_modules/lodash/_realNames.js | 4 + mybulma/node_modules/lodash/_reorder.js | 29 + .../node_modules/lodash/_replaceHolders.js | 29 + mybulma/node_modules/lodash/_root.js | 9 + mybulma/node_modules/lodash/_safeGet.js | 21 + mybulma/node_modules/lodash/_setCacheAdd.js | 19 + mybulma/node_modules/lodash/_setCacheHas.js | 14 + mybulma/node_modules/lodash/_setData.js | 20 + mybulma/node_modules/lodash/_setToArray.js | 18 + mybulma/node_modules/lodash/_setToPairs.js | 18 + mybulma/node_modules/lodash/_setToString.js | 14 + .../node_modules/lodash/_setWrapToString.js | 21 + mybulma/node_modules/lodash/_shortOut.js | 37 + mybulma/node_modules/lodash/_shuffleSelf.js | 28 + mybulma/node_modules/lodash/_stackClear.js | 15 + mybulma/node_modules/lodash/_stackDelete.js | 18 + mybulma/node_modules/lodash/_stackGet.js | 14 + mybulma/node_modules/lodash/_stackHas.js | 14 + mybulma/node_modules/lodash/_stackSet.js | 34 + mybulma/node_modules/lodash/_strictIndexOf.js | 23 + .../node_modules/lodash/_strictLastIndexOf.js | 21 + mybulma/node_modules/lodash/_stringSize.js | 18 + mybulma/node_modules/lodash/_stringToArray.js | 18 + mybulma/node_modules/lodash/_stringToPath.js | 27 + mybulma/node_modules/lodash/_toKey.js | 21 + mybulma/node_modules/lodash/_toSource.js | 26 + .../node_modules/lodash/_trimmedEndIndex.js | 19 + .../node_modules/lodash/_unescapeHtmlChar.js | 21 + mybulma/node_modules/lodash/_unicodeSize.js | 44 + .../node_modules/lodash/_unicodeToArray.js | 40 + mybulma/node_modules/lodash/_unicodeWords.js | 69 + .../node_modules/lodash/_updateWrapDetails.js | 46 + mybulma/node_modules/lodash/_wrapperClone.js | 23 + mybulma/node_modules/lodash/add.js | 22 + mybulma/node_modules/lodash/after.js | 42 + mybulma/node_modules/lodash/array.js | 67 + mybulma/node_modules/lodash/ary.js | 29 + mybulma/node_modules/lodash/assign.js | 58 + mybulma/node_modules/lodash/assignIn.js | 40 + mybulma/node_modules/lodash/assignInWith.js | 38 + mybulma/node_modules/lodash/assignWith.js | 37 + mybulma/node_modules/lodash/at.js | 23 + mybulma/node_modules/lodash/attempt.js | 35 + mybulma/node_modules/lodash/before.js | 40 + mybulma/node_modules/lodash/bind.js | 57 + mybulma/node_modules/lodash/bindAll.js | 41 + mybulma/node_modules/lodash/bindKey.js | 68 + mybulma/node_modules/lodash/camelCase.js | 29 + mybulma/node_modules/lodash/capitalize.js | 23 + mybulma/node_modules/lodash/castArray.js | 44 + mybulma/node_modules/lodash/ceil.js | 26 + mybulma/node_modules/lodash/chain.js | 38 + mybulma/node_modules/lodash/chunk.js | 50 + mybulma/node_modules/lodash/clamp.js | 39 + mybulma/node_modules/lodash/clone.js | 36 + mybulma/node_modules/lodash/cloneDeep.js | 29 + mybulma/node_modules/lodash/cloneDeepWith.js | 40 + mybulma/node_modules/lodash/cloneWith.js | 42 + mybulma/node_modules/lodash/collection.js | 30 + mybulma/node_modules/lodash/commit.js | 33 + mybulma/node_modules/lodash/compact.js | 31 + mybulma/node_modules/lodash/concat.js | 43 + mybulma/node_modules/lodash/cond.js | 60 + mybulma/node_modules/lodash/conforms.js | 35 + mybulma/node_modules/lodash/conformsTo.js | 32 + mybulma/node_modules/lodash/constant.js | 26 + mybulma/node_modules/lodash/core.js | 3877 ++++ mybulma/node_modules/lodash/core.min.js | 29 + mybulma/node_modules/lodash/countBy.js | 40 + mybulma/node_modules/lodash/create.js | 43 + mybulma/node_modules/lodash/curry.js | 57 + mybulma/node_modules/lodash/curryRight.js | 54 + mybulma/node_modules/lodash/date.js | 3 + mybulma/node_modules/lodash/debounce.js | 191 + mybulma/node_modules/lodash/deburr.js | 45 + mybulma/node_modules/lodash/defaultTo.js | 25 + mybulma/node_modules/lodash/defaults.js | 64 + mybulma/node_modules/lodash/defaultsDeep.js | 30 + mybulma/node_modules/lodash/defer.js | 26 + mybulma/node_modules/lodash/delay.js | 28 + mybulma/node_modules/lodash/difference.js | 33 + mybulma/node_modules/lodash/differenceBy.js | 44 + mybulma/node_modules/lodash/differenceWith.js | 40 + mybulma/node_modules/lodash/divide.js | 22 + mybulma/node_modules/lodash/drop.js | 38 + mybulma/node_modules/lodash/dropRight.js | 39 + mybulma/node_modules/lodash/dropRightWhile.js | 45 + mybulma/node_modules/lodash/dropWhile.js | 45 + mybulma/node_modules/lodash/each.js | 1 + mybulma/node_modules/lodash/eachRight.js | 1 + mybulma/node_modules/lodash/endsWith.js | 43 + mybulma/node_modules/lodash/entries.js | 1 + mybulma/node_modules/lodash/entriesIn.js | 1 + mybulma/node_modules/lodash/eq.js | 37 + mybulma/node_modules/lodash/escape.js | 43 + mybulma/node_modules/lodash/escapeRegExp.js | 32 + mybulma/node_modules/lodash/every.js | 56 + mybulma/node_modules/lodash/extend.js | 1 + mybulma/node_modules/lodash/extendWith.js | 1 + mybulma/node_modules/lodash/fill.js | 45 + mybulma/node_modules/lodash/filter.js | 52 + mybulma/node_modules/lodash/find.js | 42 + mybulma/node_modules/lodash/findIndex.js | 55 + mybulma/node_modules/lodash/findKey.js | 44 + mybulma/node_modules/lodash/findLast.js | 25 + mybulma/node_modules/lodash/findLastIndex.js | 59 + mybulma/node_modules/lodash/findLastKey.js | 44 + mybulma/node_modules/lodash/first.js | 1 + mybulma/node_modules/lodash/flake.lock | 40 + mybulma/node_modules/lodash/flake.nix | 20 + mybulma/node_modules/lodash/flatMap.js | 29 + mybulma/node_modules/lodash/flatMapDeep.js | 31 + mybulma/node_modules/lodash/flatMapDepth.js | 31 + mybulma/node_modules/lodash/flatten.js | 22 + mybulma/node_modules/lodash/flattenDeep.js | 25 + mybulma/node_modules/lodash/flattenDepth.js | 33 + mybulma/node_modules/lodash/flip.js | 28 + mybulma/node_modules/lodash/floor.js | 26 + mybulma/node_modules/lodash/flow.js | 27 + mybulma/node_modules/lodash/flowRight.js | 26 + mybulma/node_modules/lodash/forEach.js | 41 + mybulma/node_modules/lodash/forEachRight.js | 31 + mybulma/node_modules/lodash/forIn.js | 39 + mybulma/node_modules/lodash/forInRight.js | 37 + mybulma/node_modules/lodash/forOwn.js | 36 + mybulma/node_modules/lodash/forOwnRight.js | 34 + mybulma/node_modules/lodash/fp.js | 2 + mybulma/node_modules/lodash/fromPairs.js | 28 + mybulma/node_modules/lodash/function.js | 25 + mybulma/node_modules/lodash/functions.js | 31 + mybulma/node_modules/lodash/functionsIn.js | 31 + mybulma/node_modules/lodash/get.js | 33 + mybulma/node_modules/lodash/groupBy.js | 41 + mybulma/node_modules/lodash/gt.js | 29 + mybulma/node_modules/lodash/gte.js | 30 + mybulma/node_modules/lodash/has.js | 35 + mybulma/node_modules/lodash/hasIn.js | 34 + mybulma/node_modules/lodash/head.js | 23 + mybulma/node_modules/lodash/identity.js | 21 + mybulma/node_modules/lodash/inRange.js | 55 + mybulma/node_modules/lodash/includes.js | 53 + mybulma/node_modules/lodash/index.js | 1 + mybulma/node_modules/lodash/indexOf.js | 42 + mybulma/node_modules/lodash/initial.js | 22 + mybulma/node_modules/lodash/intersection.js | 30 + mybulma/node_modules/lodash/intersectionBy.js | 45 + .../node_modules/lodash/intersectionWith.js | 41 + mybulma/node_modules/lodash/invert.js | 42 + mybulma/node_modules/lodash/invertBy.js | 56 + mybulma/node_modules/lodash/invoke.js | 24 + mybulma/node_modules/lodash/invokeMap.js | 41 + mybulma/node_modules/lodash/isArguments.js | 36 + mybulma/node_modules/lodash/isArray.js | 26 + mybulma/node_modules/lodash/isArrayBuffer.js | 27 + mybulma/node_modules/lodash/isArrayLike.js | 33 + .../node_modules/lodash/isArrayLikeObject.js | 33 + mybulma/node_modules/lodash/isBoolean.js | 29 + mybulma/node_modules/lodash/isBuffer.js | 38 + mybulma/node_modules/lodash/isDate.js | 27 + mybulma/node_modules/lodash/isElement.js | 25 + mybulma/node_modules/lodash/isEmpty.js | 77 + mybulma/node_modules/lodash/isEqual.js | 35 + mybulma/node_modules/lodash/isEqualWith.js | 41 + mybulma/node_modules/lodash/isError.js | 36 + mybulma/node_modules/lodash/isFinite.js | 36 + mybulma/node_modules/lodash/isFunction.js | 37 + mybulma/node_modules/lodash/isInteger.js | 33 + mybulma/node_modules/lodash/isLength.js | 35 + mybulma/node_modules/lodash/isMap.js | 27 + mybulma/node_modules/lodash/isMatch.js | 36 + mybulma/node_modules/lodash/isMatchWith.js | 41 + mybulma/node_modules/lodash/isNaN.js | 38 + mybulma/node_modules/lodash/isNative.js | 40 + mybulma/node_modules/lodash/isNil.js | 25 + mybulma/node_modules/lodash/isNull.js | 22 + mybulma/node_modules/lodash/isNumber.js | 38 + mybulma/node_modules/lodash/isObject.js | 31 + mybulma/node_modules/lodash/isObjectLike.js | 29 + mybulma/node_modules/lodash/isPlainObject.js | 62 + mybulma/node_modules/lodash/isRegExp.js | 27 + mybulma/node_modules/lodash/isSafeInteger.js | 37 + mybulma/node_modules/lodash/isSet.js | 27 + mybulma/node_modules/lodash/isString.js | 30 + mybulma/node_modules/lodash/isSymbol.js | 29 + mybulma/node_modules/lodash/isTypedArray.js | 27 + mybulma/node_modules/lodash/isUndefined.js | 22 + mybulma/node_modules/lodash/isWeakMap.js | 28 + mybulma/node_modules/lodash/isWeakSet.js | 28 + mybulma/node_modules/lodash/iteratee.js | 53 + mybulma/node_modules/lodash/join.js | 26 + mybulma/node_modules/lodash/kebabCase.js | 28 + mybulma/node_modules/lodash/keyBy.js | 36 + mybulma/node_modules/lodash/keys.js | 37 + mybulma/node_modules/lodash/keysIn.js | 32 + mybulma/node_modules/lodash/lang.js | 58 + mybulma/node_modules/lodash/last.js | 20 + mybulma/node_modules/lodash/lastIndexOf.js | 46 + mybulma/node_modules/lodash/lodash.js | 17209 ++++++++++++++++ mybulma/node_modules/lodash/lodash.min.js | 140 + mybulma/node_modules/lodash/lowerCase.js | 27 + mybulma/node_modules/lodash/lowerFirst.js | 22 + mybulma/node_modules/lodash/lt.js | 29 + mybulma/node_modules/lodash/lte.js | 30 + mybulma/node_modules/lodash/map.js | 53 + mybulma/node_modules/lodash/mapKeys.js | 36 + mybulma/node_modules/lodash/mapValues.js | 43 + mybulma/node_modules/lodash/matches.js | 46 + .../node_modules/lodash/matchesProperty.js | 44 + mybulma/node_modules/lodash/math.js | 17 + mybulma/node_modules/lodash/max.js | 29 + mybulma/node_modules/lodash/maxBy.js | 34 + mybulma/node_modules/lodash/mean.js | 22 + mybulma/node_modules/lodash/meanBy.js | 31 + mybulma/node_modules/lodash/memoize.js | 73 + mybulma/node_modules/lodash/merge.js | 39 + mybulma/node_modules/lodash/mergeWith.js | 39 + mybulma/node_modules/lodash/method.js | 34 + mybulma/node_modules/lodash/methodOf.js | 33 + mybulma/node_modules/lodash/min.js | 29 + mybulma/node_modules/lodash/minBy.js | 34 + mybulma/node_modules/lodash/mixin.js | 74 + mybulma/node_modules/lodash/multiply.js | 22 + mybulma/node_modules/lodash/negate.js | 40 + mybulma/node_modules/lodash/next.js | 35 + mybulma/node_modules/lodash/noop.js | 17 + mybulma/node_modules/lodash/now.js | 23 + mybulma/node_modules/lodash/nth.js | 29 + mybulma/node_modules/lodash/nthArg.js | 32 + mybulma/node_modules/lodash/number.js | 5 + mybulma/node_modules/lodash/object.js | 49 + mybulma/node_modules/lodash/omit.js | 57 + mybulma/node_modules/lodash/omitBy.js | 29 + mybulma/node_modules/lodash/once.js | 25 + mybulma/node_modules/lodash/orderBy.js | 47 + mybulma/node_modules/lodash/over.js | 24 + mybulma/node_modules/lodash/overArgs.js | 61 + mybulma/node_modules/lodash/overEvery.js | 34 + mybulma/node_modules/lodash/overSome.js | 37 + mybulma/node_modules/lodash/package.json | 17 + mybulma/node_modules/lodash/pad.js | 49 + mybulma/node_modules/lodash/padEnd.js | 39 + mybulma/node_modules/lodash/padStart.js | 39 + mybulma/node_modules/lodash/parseInt.js | 43 + mybulma/node_modules/lodash/partial.js | 50 + mybulma/node_modules/lodash/partialRight.js | 49 + mybulma/node_modules/lodash/partition.js | 43 + mybulma/node_modules/lodash/pick.js | 25 + mybulma/node_modules/lodash/pickBy.js | 37 + mybulma/node_modules/lodash/plant.js | 48 + mybulma/node_modules/lodash/property.js | 32 + mybulma/node_modules/lodash/propertyOf.js | 30 + mybulma/node_modules/lodash/pull.js | 29 + mybulma/node_modules/lodash/pullAll.js | 29 + mybulma/node_modules/lodash/pullAllBy.js | 33 + mybulma/node_modules/lodash/pullAllWith.js | 32 + mybulma/node_modules/lodash/pullAt.js | 43 + mybulma/node_modules/lodash/random.js | 82 + mybulma/node_modules/lodash/range.js | 46 + mybulma/node_modules/lodash/rangeRight.js | 41 + mybulma/node_modules/lodash/rearg.js | 33 + mybulma/node_modules/lodash/reduce.js | 51 + mybulma/node_modules/lodash/reduceRight.js | 36 + mybulma/node_modules/lodash/reject.js | 46 + mybulma/node_modules/lodash/release.md | 48 + mybulma/node_modules/lodash/remove.js | 53 + mybulma/node_modules/lodash/repeat.js | 37 + mybulma/node_modules/lodash/replace.js | 29 + mybulma/node_modules/lodash/rest.js | 40 + mybulma/node_modules/lodash/result.js | 56 + mybulma/node_modules/lodash/reverse.js | 34 + mybulma/node_modules/lodash/round.js | 26 + mybulma/node_modules/lodash/sample.js | 24 + mybulma/node_modules/lodash/sampleSize.js | 37 + mybulma/node_modules/lodash/seq.js | 16 + mybulma/node_modules/lodash/set.js | 35 + mybulma/node_modules/lodash/setWith.js | 32 + mybulma/node_modules/lodash/shuffle.js | 25 + mybulma/node_modules/lodash/size.js | 46 + mybulma/node_modules/lodash/slice.js | 37 + mybulma/node_modules/lodash/snakeCase.js | 28 + mybulma/node_modules/lodash/some.js | 51 + mybulma/node_modules/lodash/sortBy.js | 48 + mybulma/node_modules/lodash/sortedIndex.js | 24 + mybulma/node_modules/lodash/sortedIndexBy.js | 33 + mybulma/node_modules/lodash/sortedIndexOf.js | 31 + .../node_modules/lodash/sortedLastIndex.js | 25 + .../node_modules/lodash/sortedLastIndexBy.js | 33 + .../node_modules/lodash/sortedLastIndexOf.js | 31 + mybulma/node_modules/lodash/sortedUniq.js | 24 + mybulma/node_modules/lodash/sortedUniqBy.js | 26 + mybulma/node_modules/lodash/split.js | 52 + mybulma/node_modules/lodash/spread.js | 63 + mybulma/node_modules/lodash/startCase.js | 29 + mybulma/node_modules/lodash/startsWith.js | 39 + mybulma/node_modules/lodash/string.js | 33 + mybulma/node_modules/lodash/stubArray.js | 23 + mybulma/node_modules/lodash/stubFalse.js | 18 + mybulma/node_modules/lodash/stubObject.js | 23 + mybulma/node_modules/lodash/stubString.js | 18 + mybulma/node_modules/lodash/stubTrue.js | 18 + mybulma/node_modules/lodash/subtract.js | 22 + mybulma/node_modules/lodash/sum.js | 24 + mybulma/node_modules/lodash/sumBy.js | 33 + mybulma/node_modules/lodash/tail.js | 22 + mybulma/node_modules/lodash/take.js | 37 + mybulma/node_modules/lodash/takeRight.js | 39 + mybulma/node_modules/lodash/takeRightWhile.js | 45 + mybulma/node_modules/lodash/takeWhile.js | 45 + mybulma/node_modules/lodash/tap.js | 29 + mybulma/node_modules/lodash/template.js | 272 + .../node_modules/lodash/templateSettings.js | 67 + mybulma/node_modules/lodash/throttle.js | 69 + mybulma/node_modules/lodash/thru.js | 28 + mybulma/node_modules/lodash/times.js | 51 + mybulma/node_modules/lodash/toArray.js | 58 + mybulma/node_modules/lodash/toFinite.js | 42 + mybulma/node_modules/lodash/toInteger.js | 36 + mybulma/node_modules/lodash/toIterator.js | 23 + mybulma/node_modules/lodash/toJSON.js | 1 + mybulma/node_modules/lodash/toLength.js | 38 + mybulma/node_modules/lodash/toLower.js | 28 + mybulma/node_modules/lodash/toNumber.js | 64 + mybulma/node_modules/lodash/toPairs.js | 30 + mybulma/node_modules/lodash/toPairsIn.js | 30 + mybulma/node_modules/lodash/toPath.js | 33 + mybulma/node_modules/lodash/toPlainObject.js | 32 + mybulma/node_modules/lodash/toSafeInteger.js | 37 + mybulma/node_modules/lodash/toString.js | 28 + mybulma/node_modules/lodash/toUpper.js | 28 + mybulma/node_modules/lodash/transform.js | 65 + mybulma/node_modules/lodash/trim.js | 47 + mybulma/node_modules/lodash/trimEnd.js | 41 + mybulma/node_modules/lodash/trimStart.js | 43 + mybulma/node_modules/lodash/truncate.js | 111 + mybulma/node_modules/lodash/unary.js | 22 + mybulma/node_modules/lodash/unescape.js | 34 + mybulma/node_modules/lodash/union.js | 26 + mybulma/node_modules/lodash/unionBy.js | 39 + mybulma/node_modules/lodash/unionWith.js | 34 + mybulma/node_modules/lodash/uniq.js | 25 + mybulma/node_modules/lodash/uniqBy.js | 31 + mybulma/node_modules/lodash/uniqWith.js | 28 + mybulma/node_modules/lodash/uniqueId.js | 28 + mybulma/node_modules/lodash/unset.js | 34 + mybulma/node_modules/lodash/unzip.js | 45 + mybulma/node_modules/lodash/unzipWith.js | 39 + mybulma/node_modules/lodash/update.js | 35 + mybulma/node_modules/lodash/updateWith.js | 33 + mybulma/node_modules/lodash/upperCase.js | 27 + mybulma/node_modules/lodash/upperFirst.js | 22 + mybulma/node_modules/lodash/util.js | 34 + mybulma/node_modules/lodash/value.js | 1 + mybulma/node_modules/lodash/valueOf.js | 1 + mybulma/node_modules/lodash/values.js | 34 + mybulma/node_modules/lodash/valuesIn.js | 32 + mybulma/node_modules/lodash/without.js | 31 + mybulma/node_modules/lodash/words.js | 35 + mybulma/node_modules/lodash/wrap.js | 30 + mybulma/node_modules/lodash/wrapperAt.js | 48 + mybulma/node_modules/lodash/wrapperChain.js | 34 + mybulma/node_modules/lodash/wrapperLodash.js | 147 + mybulma/node_modules/lodash/wrapperReverse.js | 44 + mybulma/node_modules/lodash/wrapperValue.js | 21 + mybulma/node_modules/lodash/xor.js | 28 + mybulma/node_modules/lodash/xorBy.js | 39 + mybulma/node_modules/lodash/xorWith.js | 34 + mybulma/node_modules/lodash/zip.js | 22 + mybulma/node_modules/lodash/zipObject.js | 24 + mybulma/node_modules/lodash/zipObjectDeep.js | 23 + mybulma/node_modules/lodash/zipWith.js | 32 + mybulma/node_modules/lru-cache/LICENSE | 15 + mybulma/node_modules/lru-cache/README.md | 839 + mybulma/node_modules/lru-cache/index.d.ts | 601 + mybulma/node_modules/lru-cache/index.js | 1018 + mybulma/node_modules/lru-cache/package.json | 74 + .../make-fetch-happen/lib/agent.js | 214 + .../make-fetch-happen/lib/cache/entry.js | 444 + .../make-fetch-happen/lib/cache/errors.js | 11 + .../make-fetch-happen/lib/cache/index.js | 49 + .../make-fetch-happen/lib/cache/key.js | 17 + .../make-fetch-happen/lib/cache/policy.js | 161 + .../node_modules/make-fetch-happen/lib/dns.js | 49 + .../make-fetch-happen/lib/fetch.js | 118 + .../make-fetch-happen/lib/index.js | 41 + .../make-fetch-happen/lib/options.js | 52 + .../make-fetch-happen/lib/pipeline.js | 41 + .../make-fetch-happen/lib/remote.js | 121 + mybulma/node_modules/map-obj/index.d.ts | 151 + mybulma/node_modules/map-obj/index.js | 68 + mybulma/node_modules/map-obj/license | 9 + mybulma/node_modules/map-obj/package.json | 43 + mybulma/node_modules/map-obj/readme.md | 105 + mybulma/node_modules/meow/index.d.ts | 315 + mybulma/node_modules/meow/index.js | 236 + mybulma/node_modules/meow/license | 9 + mybulma/node_modules/meow/package.json | 77 + mybulma/node_modules/meow/readme.md | 352 + mybulma/node_modules/minimatch/LICENSE | 15 + mybulma/node_modules/minimatch/README.md | 230 + mybulma/node_modules/minimatch/minimatch.js | 947 + mybulma/node_modules/minimatch/package.json | 33 + .../node_modules/minimist-options/index.d.ts | 55 + .../node_modules/minimist-options/index.js | 117 + mybulma/node_modules/minimist-options/license | 21 + .../minimist-options/package.json | 34 + .../node_modules/minimist-options/readme.md | 112 + mybulma/node_modules/minipass-collect/LICENSE | 15 + .../node_modules/minipass-collect/README.md | 48 + .../node_modules/minipass-collect/index.js | 71 + .../minipass-collect/package.json | 29 + mybulma/node_modules/minipass-fetch/LICENSE | 28 + mybulma/node_modules/minipass-fetch/README.md | 29 + .../minipass-fetch/lib/abort-error.js | 17 + .../node_modules/minipass-fetch/lib/blob.js | 97 + .../node_modules/minipass-fetch/lib/body.js | 350 + .../minipass-fetch/lib/fetch-error.js | 32 + .../minipass-fetch/lib/headers.js | 267 + .../node_modules/minipass-fetch/lib/index.js | 365 + .../minipass-fetch/lib/request.js | 281 + .../minipass-fetch/lib/response.js | 90 + .../node_modules/minipass-fetch/package.json | 67 + mybulma/node_modules/minipass-flush/LICENSE | 15 + mybulma/node_modules/minipass-flush/README.md | 47 + mybulma/node_modules/minipass-flush/index.js | 39 + .../node_modules/minipass-flush/package.json | 39 + .../node_modules/minipass-pipeline/LICENSE | 15 + .../node_modules/minipass-pipeline/README.md | 69 + .../node_modules/minipass-pipeline/index.js | 128 + .../minipass-pipeline/package.json | 29 + .../node_modules/minipass-sized/.npmignore | 22 + mybulma/node_modules/minipass-sized/LICENSE | 15 + mybulma/node_modules/minipass-sized/README.md | 28 + mybulma/node_modules/minipass-sized/index.js | 67 + .../minipass-sized/package-lock.json | 3464 ++++ .../node_modules/minipass-sized/package.json | 39 + .../node_modules/minipass-sized/test/basic.js | 83 + mybulma/node_modules/minipass/LICENSE | 15 + mybulma/node_modules/minipass/README.md | 728 + mybulma/node_modules/minipass/index.d.ts | 155 + mybulma/node_modules/minipass/index.js | 649 + mybulma/node_modules/minipass/package.json | 56 + mybulma/node_modules/minizlib/LICENSE | 26 + mybulma/node_modules/minizlib/README.md | 60 + mybulma/node_modules/minizlib/constants.js | 115 + mybulma/node_modules/minizlib/index.js | 348 + mybulma/node_modules/minizlib/package.json | 42 + mybulma/node_modules/mkdirp/bin/cmd.js | 68 + mybulma/node_modules/mkdirp/lib/find-made.js | 29 + .../node_modules/mkdirp/lib/mkdirp-manual.js | 64 + .../node_modules/mkdirp/lib/mkdirp-native.js | 39 + mybulma/node_modules/mkdirp/lib/opts-arg.js | 23 + mybulma/node_modules/mkdirp/lib/path-arg.js | 29 + mybulma/node_modules/mkdirp/lib/use-native.js | 10 + mybulma/node_modules/ms/index.js | 162 + mybulma/node_modules/ms/license.md | 21 + mybulma/node_modules/ms/package.json | 37 + mybulma/node_modules/ms/readme.md | 60 + mybulma/node_modules/nan/CHANGELOG.md | 549 + mybulma/node_modules/nan/LICENSE.md | 9 + mybulma/node_modules/nan/README.md | 456 + mybulma/node_modules/nan/doc/asyncworker.md | 146 + mybulma/node_modules/nan/doc/buffers.md | 54 + mybulma/node_modules/nan/doc/callback.md | 76 + mybulma/node_modules/nan/doc/converters.md | 41 + mybulma/node_modules/nan/doc/errors.md | 226 + mybulma/node_modules/nan/doc/json.md | 62 + mybulma/node_modules/nan/doc/maybe_types.md | 583 + mybulma/node_modules/nan/doc/methods.md | 664 + mybulma/node_modules/nan/doc/new.md | 147 + mybulma/node_modules/nan/doc/node_misc.md | 123 + .../node_modules/nan/doc/object_wrappers.md | 263 + mybulma/node_modules/nan/doc/persistent.md | 296 + mybulma/node_modules/nan/doc/scopes.md | 73 + mybulma/node_modules/nan/doc/script.md | 58 + mybulma/node_modules/nan/doc/string_bytes.md | 62 + mybulma/node_modules/nan/doc/v8_internals.md | 199 + mybulma/node_modules/nan/doc/v8_misc.md | 85 + mybulma/node_modules/nan/include_dirs.js | 1 + mybulma/node_modules/nan/nan_callbacks.h | 92 + .../node_modules/nan/nan_callbacks_12_inl.h | 514 + .../nan/nan_callbacks_pre_12_inl.h | 520 + mybulma/node_modules/nan/nan_converters.h | 72 + .../node_modules/nan/nan_converters_43_inl.h | 68 + .../nan/nan_converters_pre_43_inl.h | 42 + .../nan/nan_define_own_property_helper.h | 29 + .../nan/nan_implementation_12_inl.h | 430 + .../nan/nan_implementation_pre_12_inl.h | 263 + mybulma/node_modules/nan/nan_json.h | 166 + mybulma/node_modules/nan/nan_maybe_43_inl.h | 356 + .../node_modules/nan/nan_maybe_pre_43_inl.h | 268 + mybulma/node_modules/nan/nan_new.h | 340 + mybulma/node_modules/nan/nan_object_wrap.h | 156 + .../node_modules/nan/nan_persistent_12_inl.h | 132 + .../nan/nan_persistent_pre_12_inl.h | 242 + mybulma/node_modules/nan/nan_private.h | 73 + mybulma/node_modules/nan/nan_scriptorigin.h | 76 + mybulma/node_modules/nan/nan_string_bytes.h | 305 + .../nan/nan_typedarray_contents.h | 96 + mybulma/node_modules/nan/nan_weak.h | 437 + mybulma/node_modules/nan/package.json | 37 + mybulma/node_modules/nan/tools/1to2.js | 412 + mybulma/node_modules/nan/tools/README.md | 14 + mybulma/node_modules/nan/tools/package.json | 19 + .../node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + .../node-gyp/.github/ISSUE_TEMPLATE.md | 52 + .../node-gyp/.github/PULL_REQUEST_TEMPLATE.md | 17 + .../.github/workflows/release-please.yml | 56 + .../node-gyp/.github/workflows/tests.yml | 45 + .../.github/workflows/visual-studio.yml | 25 + mybulma/node_modules/node-gyp/CHANGELOG.md | 687 + mybulma/node_modules/node-gyp/bin/node-gyp.js | 140 + .../node-gyp/docs/Common-issues.md | 14 + ...re-versions-of-node-cannot-be-installed.md | 94 + mybulma/node_modules/node-gyp/docs/Home.md | 7 + .../node-gyp/docs/Linking-to-OpenSSL.md | 86 + .../docs/Updating-npm-bundled-node-gyp.md | 45 + .../docs/binding.gyp-files-in-the-wild.md | 48 + mybulma/node_modules/node-gyp/gyp/.flake8 | 4 + .../gyp/.github/workflows/Python_tests.yml | 30 + .../gyp/.github/workflows/node-gyp.yml | 42 + .../gyp/.github/workflows/nodejs-windows.yml | 27 + .../gyp/.github/workflows/release-please.yml | 16 + mybulma/node_modules/node-gyp/gyp/AUTHORS | 16 + .../node_modules/node-gyp/gyp/CHANGELOG.md | 177 + .../node-gyp/gyp/CODE_OF_CONDUCT.md | 4 + .../node_modules/node-gyp/gyp/CONTRIBUTING.md | 32 + mybulma/node_modules/node-gyp/gyp/LICENSE | 28 + mybulma/node_modules/node-gyp/gyp/README.md | 7 + .../node-gyp/gyp/data/win/large-pdb-shim.cc | 12 + mybulma/node_modules/node-gyp/gyp/gyp | 8 + mybulma/node_modules/node-gyp/gyp/gyp.bat | 5 + mybulma/node_modules/node-gyp/gyp/gyp_main.py | 45 + .../node-gyp/gyp/pylib/gyp/MSVSNew.py | 367 + .../node-gyp/gyp/pylib/gyp/MSVSProject.py | 206 + .../node-gyp/gyp/pylib/gyp/MSVSSettings.py | 1270 ++ .../gyp/pylib/gyp/MSVSSettings_test.py | 1547 ++ .../node-gyp/gyp/pylib/gyp/MSVSToolFile.py | 59 + .../node-gyp/gyp/pylib/gyp/MSVSUserFile.py | 153 + .../node-gyp/gyp/pylib/gyp/MSVSUtil.py | 271 + .../node-gyp/gyp/pylib/gyp/MSVSVersion.py | 574 + .../node-gyp/gyp/pylib/gyp/__init__.py | 666 + .../node-gyp/gyp/pylib/gyp/common.py | 654 + .../node-gyp/gyp/pylib/gyp/common_test.py | 78 + .../node-gyp/gyp/pylib/gyp/easy_xml.py | 165 + .../node-gyp/gyp/pylib/gyp/easy_xml_test.py | 109 + .../node-gyp/gyp/pylib/gyp/flock_tool.py | 55 + .../gyp/pylib/gyp/generator/__init__.py | 0 .../gyp/pylib/gyp/generator/analyzer.py | 808 + .../gyp/pylib/gyp/generator/android.py | 1173 ++ .../node-gyp/gyp/pylib/gyp/generator/cmake.py | 1321 ++ .../gyp/generator/compile_commands_json.py | 120 + .../gyp/generator/dump_dependency_json.py | 103 + .../gyp/pylib/gyp/generator/eclipse.py | 464 + .../node-gyp/gyp/pylib/gyp/generator/gypd.py | 89 + .../node-gyp/gyp/pylib/gyp/generator/gypsh.py | 58 + .../node-gyp/gyp/pylib/gyp/generator/make.py | 2518 +++ .../node-gyp/gyp/pylib/gyp/generator/msvs.py | 3978 ++++ .../gyp/pylib/gyp/generator/msvs_test.py | 44 + .../node-gyp/gyp/pylib/gyp/generator/ninja.py | 2936 +++ .../gyp/pylib/gyp/generator/ninja_test.py | 55 + .../node-gyp/gyp/pylib/gyp/generator/xcode.py | 1394 ++ .../gyp/pylib/gyp/generator/xcode_test.py | 25 + .../node-gyp/gyp/pylib/gyp/input.py | 3137 +++ .../node-gyp/gyp/pylib/gyp/input_test.py | 98 + .../node-gyp/gyp/pylib/gyp/mac_tool.py | 771 + .../node-gyp/gyp/pylib/gyp/msvs_emulation.py | 1271 ++ .../node-gyp/gyp/pylib/gyp/ninja_syntax.py | 174 + .../node-gyp/gyp/pylib/gyp/simple_copy.py | 61 + .../node-gyp/gyp/pylib/gyp/win_tool.py | 374 + .../node-gyp/gyp/pylib/gyp/xcode_emulation.py | 1939 ++ .../node-gyp/gyp/pylib/gyp/xcode_ninja.py | 302 + .../node-gyp/gyp/pylib/gyp/xcodeproj_file.py | 3197 +++ .../node-gyp/gyp/pylib/gyp/xml_fix.py | 65 + .../node-gyp/gyp/requirements_dev.txt | 2 + mybulma/node_modules/node-gyp/gyp/setup.py | 42 + mybulma/node_modules/node-gyp/gyp/test_gyp.py | 260 + .../node_modules/node-gyp/gyp/tools/README | 15 + .../node-gyp/gyp/tools/Xcode/README | 5 + .../tools/Xcode/Specifications/gyp.pbfilespec | 27 + .../tools/Xcode/Specifications/gyp.xclangspec | 226 + .../node-gyp/gyp/tools/emacs/README | 12 + .../node-gyp/gyp/tools/emacs/gyp-tests.el | 63 + .../node-gyp/gyp/tools/emacs/gyp.el | 275 + .../gyp/tools/emacs/run-unit-tests.sh | 7 + .../gyp/tools/emacs/testdata/media.gyp | 1105 + .../tools/emacs/testdata/media.gyp.fontified | 1107 + .../node-gyp/gyp/tools/graphviz.py | 102 + .../node-gyp/gyp/tools/pretty_gyp.py | 156 + .../node-gyp/gyp/tools/pretty_sln.py | 181 + .../node-gyp/gyp/tools/pretty_vcproj.py | 339 + .../node-gyp/lib/Find-VisualStudio.cs | 250 + mybulma/node_modules/node-gyp/lib/build.js | 204 + mybulma/node_modules/node-gyp/lib/clean.js | 15 + .../node_modules/node-gyp/lib/configure.js | 294 + .../node-gyp/lib/create-config-gypi.js | 146 + .../node-gyp/lib/find-node-directory.js | 63 + .../node_modules/node-gyp/lib/find-python.js | 344 + .../node-gyp/lib/find-visualstudio.js | 446 + mybulma/node_modules/node-gyp/lib/install.js | 376 + mybulma/node_modules/node-gyp/lib/list.js | 27 + mybulma/node_modules/node-gyp/lib/node-gyp.js | 211 + .../node-gyp/lib/process-release.js | 147 + mybulma/node_modules/node-gyp/lib/rebuild.js | 13 + mybulma/node_modules/node-gyp/lib/remove.js | 46 + mybulma/node_modules/node-gyp/lib/util.js | 64 + .../node_modules/@npmcli/fs/LICENSE.md | 20 + .../node_modules/@npmcli/fs/README.md | 60 + .../fs/lib/common/file-url-to-path/index.js | 17 + .../lib/common/file-url-to-path/polyfill.js | 121 + .../@npmcli/fs/lib/common/get-options.js | 20 + .../@npmcli/fs/lib/common/node.js | 9 + .../@npmcli/fs/lib/common/owner.js | 92 + .../node_modules/@npmcli/fs/lib/copy-file.js | 22 + .../node_modules/@npmcli/fs/lib/cp/LICENSE | 15 + .../node_modules/@npmcli/fs/lib/cp/index.js | 22 + .../@npmcli/fs/lib/cp/polyfill.js | 428 + .../node_modules/@npmcli/fs/lib/errors.js | 129 + .../node_modules/@npmcli/fs/lib/fs.js | 8 + .../node_modules/@npmcli/fs/lib/index.js | 10 + .../@npmcli/fs/lib/mkdir/index.js | 32 + .../@npmcli/fs/lib/mkdir/polyfill.js | 81 + .../node_modules/@npmcli/fs/lib/mkdtemp.js | 28 + .../node_modules/@npmcli/fs/lib/rm/index.js | 22 + .../@npmcli/fs/lib/rm/polyfill.js | 239 + .../@npmcli/fs/lib/with-temp-dir.js | 39 + .../node_modules/@npmcli/fs/lib/write-file.js | 19 + .../node_modules/@npmcli/fs/package.json | 38 + .../node_modules/@npmcli/move-file/LICENSE.md | 22 + .../node_modules/@npmcli/move-file/README.md | 69 + .../node_modules/@npmcli/move-file/index.js | 162 + .../@npmcli/move-file/package.json | 34 + .../@tootallnate/once/dist/index.d.ts | 14 + .../@tootallnate/once/dist/index.js | 39 + .../@tootallnate/once/dist/index.js.map | 1 + .../@tootallnate/once/package.json | 45 + .../node-gyp/node_modules/cacache/LICENSE.md | 16 + .../node-gyp/node_modules/cacache/README.md | 703 + .../node-gyp/node_modules/cacache/get.js | 237 + .../node-gyp/node_modules/cacache/index.js | 46 + .../node_modules/cacache/lib/content/path.js | 29 + .../node_modules/cacache/lib/content/read.js | 244 + .../node_modules/cacache/lib/content/rm.js | 19 + .../node_modules/cacache/lib/content/write.js | 189 + .../node_modules/cacache/lib/entry-index.js | 394 + .../node_modules/cacache/lib/memoization.js | 73 + .../node_modules/cacache/lib/util/disposer.js | 30 + .../cacache/lib/util/fix-owner.js | 142 + .../cacache/lib/util/hash-to-segments.js | 7 + .../cacache/lib/util/move-file.js | 67 + .../node_modules/cacache/lib/util/tmp.js | 35 + .../node_modules/cacache/lib/verify.js | 287 + .../node-gyp/node_modules/cacache/ls.js | 6 + .../node_modules/cacache/package.json | 80 + .../node-gyp/node_modules/cacache/put.js | 83 + .../node-gyp/node_modules/cacache/rm.js | 31 + .../node-gyp/node_modules/cacache/verify.js | 3 + .../node_modules/http-proxy-agent/README.md | 74 + .../http-proxy-agent/dist/agent.d.ts | 32 + .../http-proxy-agent/dist/agent.js | 145 + .../http-proxy-agent/dist/agent.js.map | 1 + .../http-proxy-agent/dist/index.d.ts | 21 + .../http-proxy-agent/dist/index.js | 14 + .../http-proxy-agent/dist/index.js.map | 1 + .../http-proxy-agent/package.json | 57 + .../node-gyp/node_modules/lru-cache/LICENSE | 15 + .../node-gyp/node_modules/lru-cache/README.md | 166 + .../node-gyp/node_modules/lru-cache/index.js | 334 + .../node_modules/lru-cache/package.json | 34 + .../node_modules/make-fetch-happen/LICENSE | 16 + .../node_modules/make-fetch-happen/README.md | 395 + .../make-fetch-happen/lib/agent.js | 194 + .../make-fetch-happen/lib/cache/entry.js | 460 + .../make-fetch-happen/lib/cache/errors.js | 10 + .../make-fetch-happen/lib/cache/index.js | 45 + .../make-fetch-happen/lib/cache/key.js | 17 + .../make-fetch-happen/lib/cache/policy.js | 161 + .../make-fetch-happen/lib/fetch.js | 100 + .../make-fetch-happen/lib/index.js | 40 + .../make-fetch-happen/lib/options.js | 44 + .../make-fetch-happen/lib/remote.js | 102 + .../make-fetch-happen/package.json | 76 + .../node_modules/minipass-fetch/LICENSE | 28 + .../node_modules/minipass-fetch/README.md | 29 + .../node_modules/minipass-fetch/index.js | 1 + .../minipass-fetch/lib/abort-error.js | 17 + .../node_modules/minipass-fetch/lib/blob.js | 97 + .../node_modules/minipass-fetch/lib/body.js | 334 + .../minipass-fetch/lib/fetch-error.js | 31 + .../minipass-fetch/lib/headers.js | 250 + .../node_modules/minipass-fetch/lib/index.js | 341 + .../minipass-fetch/lib/request.js | 263 + .../minipass-fetch/lib/response.js | 89 + .../node_modules/minipass-fetch/package.json | 53 + .../node_modules/socks-proxy-agent/README.md | 152 + .../socks-proxy-agent/dist/index.d.ts | 38 + .../socks-proxy-agent/dist/index.js | 197 + .../socks-proxy-agent/dist/index.js.map | 1 + .../socks-proxy-agent/package.json | 181 + .../node-gyp/node_modules/ssri/CHANGELOG.md | 355 + .../node-gyp/node_modules/ssri/LICENSE.md | 16 + .../node-gyp/node_modules/ssri/README.md | 528 + .../node-gyp/node_modules/ssri/index.js | 470 + .../node-gyp/node_modules/ssri/package.json | 52 + .../unique-filename/.nyc_output/54942.json | 1 + .../unique-filename/.nyc_output/54944.json | 1 + .../node_modules/unique-filename/LICENSE | 5 + .../node_modules/unique-filename/README.md | 33 + .../coverage/__root__/index.html | 73 + .../coverage/__root__/index.js.html | 69 + .../unique-filename/coverage/base.css | 182 + .../unique-filename/coverage/index.html | 73 + .../unique-filename/coverage/prettify.css | 1 + .../unique-filename/coverage/prettify.js | 1 + .../coverage/sort-arrow-sprite.png | Bin 0 -> 209 bytes .../unique-filename/coverage/sorter.js | 156 + .../node_modules/unique-filename/index.js | 8 + .../node_modules/unique-filename/package.json | 27 + .../unique-filename/test/index.js | 23 + .../node_modules/unique-slug/.travis.yml | 10 + .../node-gyp/node_modules/unique-slug/LICENSE | 15 + .../node_modules/unique-slug/README.md | 19 + .../node_modules/unique-slug/index.js | 11 + .../node_modules/unique-slug/package.json | 23 + .../node_modules/unique-slug/test/index.js | 13 + .../node-gyp/src/win_delay_load_hook.cc | 39 + mybulma/node_modules/node-gyp/test/common.js | 3 + .../fixtures/VS_2017_BuildTools_minimal.txt | 1 + .../fixtures/VS_2017_Community_workload.txt | 1 + .../test/fixtures/VS_2017_Express.txt | 1 + .../test/fixtures/VS_2017_Unusable.txt | 1 + .../fixtures/VS_2019_BuildTools_minimal.txt | 1 + .../fixtures/VS_2019_Community_workload.txt | 1 + .../test/fixtures/VS_2019_Preview.txt | 1 + .../node-gyp/test/fixtures/ca-bundle.crt | 40 + .../node-gyp/test/fixtures/ca.crt | 21 + .../fixtures/nodedir/include/node/config.gypi | 6 + .../node-gyp/test/fixtures/server.crt | 21 + .../node-gyp/test/fixtures/server.key | 27 + .../node-gyp/test/fixtures/test-charmap.py | 31 + .../node-gyp/test/process-exec-sync.js | 140 + .../node-gyp/test/simple-proxy.js | 27 + .../node_modules/node-gyp/test/test-addon.js | 150 + .../node-gyp/test/test-configure-python.js | 82 + .../node-gyp/test/test-create-config-gypi.js | 70 + .../node-gyp/test/test-download.js | 207 + .../test/test-find-accessible-sync.js | 84 + .../node-gyp/test/test-find-node-directory.js | 119 + .../node-gyp/test/test-find-python.js | 226 + .../node-gyp/test/test-find-visualstudio.js | 676 + .../node-gyp/test/test-install.js | 46 + .../node-gyp/test/test-options.js | 31 + .../node-gyp/test/test-process-release.js | 434 + mybulma/node_modules/node-sass/LICENSE | 20 + mybulma/node_modules/node-sass/README.md | 652 + mybulma/node_modules/node-sass/bin/emcc | 12 + mybulma/node_modules/node-sass/bin/node-sass | 444 + mybulma/node_modules/node-sass/binding.gyp | 74 + mybulma/node_modules/node-sass/lib/binding.js | 20 + mybulma/node_modules/node-sass/lib/errors.js | 49 + .../node_modules/node-sass/lib/extensions.js | 456 + mybulma/node_modules/node-sass/lib/index.js | 458 + mybulma/node_modules/node-sass/lib/render.js | 120 + mybulma/node_modules/node-sass/lib/watcher.js | 93 + mybulma/node_modules/node-sass/package.json | 79 + .../node_modules/node-sass/scripts/build.js | 154 + .../node_modules/node-sass/scripts/install.js | 121 + .../node-sass/scripts/prepublish.js | 17 + .../node-sass/scripts/util/downloadoptions.js | 26 + .../node-sass/scripts/util/proxy.js | 22 + .../scripts/util/rejectUnauthorized.js | 46 + .../node-sass/scripts/util/useragent.js | 13 + .../node_modules/node-sass/src/binding.cpp | 358 + .../node-sass/src/callback_bridge.h | 228 + .../node-sass/src/create_string.cpp | 21 + .../node-sass/src/create_string.h | 8 + .../node-sass/src/custom_function_bridge.cpp | 27 + .../node-sass/src/custom_function_bridge.h | 18 + .../node-sass/src/custom_importer_bridge.cpp | 104 + .../node-sass/src/custom_importer_bridge.h | 22 + .../node_modules/node-sass/src/libsass.gyp | 114 + .../node-sass/src/libsass/.editorconfig | 15 + .../node-sass/src/libsass/.gitattributes | 2 + .../src/libsass/.github/CONTRIBUTING.md | 65 + .../src/libsass/.github/ISSUE_TEMPLATE.md | 54 + .../node-sass/src/libsass/.travis.yml | 64 + .../node-sass/src/libsass/COPYING | 25 + .../node-sass/src/libsass/GNUmakefile.am | 74 + .../node-sass/src/libsass/INSTALL | 1 + .../node-sass/src/libsass/LICENSE | 25 + .../node-sass/src/libsass/Makefile | 351 + .../node-sass/src/libsass/Makefile.conf | 55 + .../node-sass/src/libsass/Readme.md | 104 + .../node-sass/src/libsass/SECURITY.md | 10 + .../node-sass/src/libsass/appveyor.yml | 91 + .../node-sass/src/libsass/configure.ac | 134 + .../src/libsass/contrib/libsass.spec | 66 + .../node-sass/src/libsass/contrib/plugin.cpp | 60 + .../node-sass/src/libsass/docs/README.md | 20 + .../src/libsass/docs/api-context-example.md | 45 + .../src/libsass/docs/api-context-internal.md | 163 + .../node-sass/src/libsass/docs/api-context.md | 295 + .../node-sass/src/libsass/docs/api-doc.md | 215 + .../src/libsass/docs/api-function-example.md | 67 + .../src/libsass/docs/api-function-internal.md | 8 + .../src/libsass/docs/api-function.md | 74 + .../src/libsass/docs/api-importer-example.md | 112 + .../src/libsass/docs/api-importer-internal.md | 20 + .../src/libsass/docs/api-importer.md | 86 + .../src/libsass/docs/api-value-example.md | 55 + .../src/libsass/docs/api-value-internal.md | 76 + .../node-sass/src/libsass/docs/api-value.md | 154 + .../src/libsass/docs/build-on-darwin.md | 27 + .../src/libsass/docs/build-on-gentoo.md | 55 + .../src/libsass/docs/build-on-windows.md | 139 + .../src/libsass/docs/build-shared-library.md | 35 + .../src/libsass/docs/build-with-autotools.md | 78 + .../src/libsass/docs/build-with-makefiles.md | 68 + .../src/libsass/docs/build-with-mingw.md | 107 + .../libsass/docs/build-with-visual-studio.md | 90 + .../node-sass/src/libsass/docs/build.md | 97 + .../src/libsass/docs/compatibility-plan.md | 48 + .../src/libsass/docs/contributing.md | 17 + .../libsass/docs/custom-functions-internal.md | 122 + .../src/libsass/docs/dev-ast-memory.md | 223 + .../src/libsass/docs/implementations.md | 65 + .../node-sass/src/libsass/docs/plugins.md | 47 + .../src/libsass/docs/setup-environment.md | 68 + .../src/libsass/docs/source-map-internals.md | 51 + .../node-sass/src/libsass/docs/trace.md | 26 + .../node-sass/src/libsass/docs/triage.md | 17 + .../node-sass/src/libsass/docs/unicode.md | 45 + .../node-sass/src/libsass/extconf.rb | 6 + .../node-sass/src/libsass/include/sass.h | 15 + .../node-sass/src/libsass/include/sass/base.h | 89 + .../src/libsass/include/sass/context.h | 170 + .../src/libsass/include/sass/functions.h | 139 + .../src/libsass/include/sass/values.h | 145 + .../src/libsass/include/sass/version.h | 12 + .../src/libsass/include/sass/version.h.in | 12 + .../node-sass/src/libsass/include/sass2scss.h | 120 + .../node-sass/src/libsass/m4/.gitkeep | 0 .../libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 | 167 + .../node-sass/src/libsass/res/resource.rc | 35 + .../node-sass/src/libsass/script/bootstrap | 13 + .../node-sass/src/libsass/script/branding | 10 + .../src/libsass/script/ci-build-libsass | 134 + .../src/libsass/script/ci-build-plugin | 62 + .../src/libsass/script/ci-install-compiler | 6 + .../src/libsass/script/ci-install-deps | 20 + .../src/libsass/script/ci-report-coverage | 42 + .../node-sass/src/libsass/script/spec | 5 + .../node-sass/src/libsass/script/tap-driver | 652 + .../node-sass/src/libsass/script/tap-runner | 1 + .../src/libsass/script/test-leaks.pl | 103 + .../node-sass/src/libsass/src/GNUmakefile.am | 54 + .../node-sass/src/libsass/src/ast.cpp | 2226 ++ .../node-sass/src/libsass/src/ast.hpp | 3049 +++ .../src/libsass/src/ast_def_macros.hpp | 80 + .../src/libsass/src/ast_fwd_decl.cpp | 29 + .../src/libsass/src/ast_fwd_decl.hpp | 463 + .../node-sass/src/libsass/src/b64/cencode.h | 32 + .../node-sass/src/libsass/src/b64/encode.h | 79 + .../node-sass/src/libsass/src/backtrace.cpp | 46 + .../node-sass/src/libsass/src/backtrace.hpp | 29 + .../node-sass/src/libsass/src/base64vlq.cpp | 44 + .../node-sass/src/libsass/src/base64vlq.hpp | 30 + .../node-sass/src/libsass/src/bind.cpp | 311 + .../node-sass/src/libsass/src/bind.hpp | 13 + .../node-sass/src/libsass/src/c99func.c | 54 + .../node-sass/src/libsass/src/cencode.c | 108 + .../src/libsass/src/check_nesting.cpp | 398 + .../src/libsass/src/check_nesting.hpp | 65 + .../node-sass/src/libsass/src/color_maps.cpp | 648 + .../node-sass/src/libsass/src/color_maps.hpp | 331 + .../node-sass/src/libsass/src/constants.cpp | 179 + .../node-sass/src/libsass/src/constants.hpp | 181 + .../node-sass/src/libsass/src/context.cpp | 880 + .../node-sass/src/libsass/src/context.hpp | 152 + .../node-sass/src/libsass/src/cssize.cpp | 606 + .../node-sass/src/libsass/src/cssize.hpp | 77 + .../node-sass/src/libsass/src/debug.hpp | 43 + .../node-sass/src/libsass/src/debugger.hpp | 801 + .../node-sass/src/libsass/src/emitter.cpp | 297 + .../node-sass/src/libsass/src/emitter.hpp | 99 + .../node-sass/src/libsass/src/environment.cpp | 246 + .../node-sass/src/libsass/src/environment.hpp | 113 + .../src/libsass/src/error_handling.cpp | 235 + .../src/libsass/src/error_handling.hpp | 216 + .../node-sass/src/libsass/src/eval.cpp | 1663 ++ .../node-sass/src/libsass/src/eval.hpp | 103 + .../node-sass/src/libsass/src/expand.cpp | 817 + .../node-sass/src/libsass/src/expand.hpp | 82 + .../node-sass/src/libsass/src/extend.cpp | 2130 ++ .../node-sass/src/libsass/src/extend.hpp | 86 + .../node-sass/src/libsass/src/file.cpp | 485 + .../node-sass/src/libsass/src/file.hpp | 133 + .../node-sass/src/libsass/src/functions.cpp | 2234 ++ .../node-sass/src/libsass/src/functions.hpp | 198 + .../node-sass/src/libsass/src/inspect.cpp | 1138 + .../node-sass/src/libsass/src/inspect.hpp | 103 + .../node-sass/src/libsass/src/json.cpp | 1436 ++ .../node-sass/src/libsass/src/json.hpp | 117 + .../src/libsass/src/kwd_arg_macros.hpp | 28 + .../node-sass/src/libsass/src/lexer.cpp | 181 + .../node-sass/src/libsass/src/lexer.hpp | 315 + .../node-sass/src/libsass/src/listize.cpp | 86 + .../node-sass/src/libsass/src/listize.hpp | 34 + .../node-sass/src/libsass/src/mapping.hpp | 18 + .../src/libsass/src/memory/SharedPtr.cpp | 114 + .../src/libsass/src/memory/SharedPtr.hpp | 206 + .../node-sass/src/libsass/src/node.cpp | 319 + .../node-sass/src/libsass/src/node.hpp | 118 + .../node-sass/src/libsass/src/operation.hpp | 173 + .../node-sass/src/libsass/src/operators.cpp | 267 + .../node-sass/src/libsass/src/operators.hpp | 30 + .../node-sass/src/libsass/src/output.cpp | 336 + .../node-sass/src/libsass/src/output.hpp | 54 + .../node-sass/src/libsass/src/parser.cpp | 3137 +++ .../node-sass/src/libsass/src/parser.hpp | 400 + .../node-sass/src/libsass/src/paths.hpp | 71 + .../node-sass/src/libsass/src/plugins.cpp | 184 + .../node-sass/src/libsass/src/plugins.hpp | 57 + .../node-sass/src/libsass/src/position.cpp | 181 + .../node-sass/src/libsass/src/position.hpp | 124 + .../node-sass/src/libsass/src/prelexer.cpp | 1774 ++ .../node-sass/src/libsass/src/prelexer.hpp | 484 + .../src/libsass/src/remove_placeholders.cpp | 84 + .../src/libsass/src/remove_placeholders.hpp | 35 + .../node-sass/src/libsass/src/sass.cpp | 151 + .../node-sass/src/libsass/src/sass.hpp | 139 + .../node-sass/src/libsass/src/sass2scss.cpp | 864 + .../src/libsass/src/sass_context.cpp | 769 + .../src/libsass/src/sass_context.hpp | 129 + .../src/libsass/src/sass_functions.cpp | 207 + .../src/libsass/src/sass_functions.hpp | 50 + .../node-sass/src/libsass/src/sass_util.cpp | 149 + .../node-sass/src/libsass/src/sass_util.hpp | 256 + .../node-sass/src/libsass/src/sass_values.cpp | 357 + .../node-sass/src/libsass/src/sass_values.hpp | 82 + .../node-sass/src/libsass/src/source_map.cpp | 195 + .../node-sass/src/libsass/src/source_map.hpp | 62 + .../node-sass/src/libsass/src/subset_map.cpp | 55 + .../node-sass/src/libsass/src/subset_map.hpp | 76 + .../src/libsass/src/support/libsass.pc.in | 11 + .../node-sass/src/libsass/src/to_c.cpp | 74 + .../node-sass/src/libsass/src/to_c.hpp | 39 + .../node-sass/src/libsass/src/to_value.cpp | 112 + .../node-sass/src/libsass/src/to_value.hpp | 50 + .../node-sass/src/libsass/src/units.cpp | 501 + .../node-sass/src/libsass/src/units.hpp | 109 + .../node-sass/src/libsass/src/utf8.h | 34 + .../node-sass/src/libsass/src/utf8/checked.h | 334 + .../node-sass/src/libsass/src/utf8/core.h | 329 + .../src/libsass/src/utf8/unchecked.h | 235 + .../node-sass/src/libsass/src/utf8_string.cpp | 102 + .../node-sass/src/libsass/src/utf8_string.hpp | 37 + .../node-sass/src/libsass/src/util.cpp | 733 + .../node-sass/src/libsass/src/util.hpp | 56 + .../node-sass/src/libsass/src/values.cpp | 131 + .../node-sass/src/libsass/src/values.hpp | 12 + .../node-sass/src/libsass/test/test_node.cpp | 94 + .../node-sass/src/libsass/test/test_paths.cpp | 28 + .../libsass/test/test_selector_difference.cpp | 25 + .../src/libsass/test/test_specificity.cpp | 25 + .../src/libsass/test/test_subset_map.cpp | 472 + .../src/libsass/test/test_superselector.cpp | 69 + .../src/libsass/test/test_unification.cpp | 31 + .../node-sass/src/libsass/version.sh | 10 + .../node-sass/src/libsass/win/libsass.sln | 39 + .../src/libsass/win/libsass.sln.DotSettings | 9 + .../node-sass/src/libsass/win/libsass.targets | 118 + .../node-sass/src/libsass/win/libsass.vcxproj | 188 + .../src/libsass/win/libsass.vcxproj.filters | 357 + .../node-sass/src/sass_context_wrapper.cpp | 67 + .../node-sass/src/sass_context_wrapper.h | 57 + .../node-sass/src/sass_types/boolean.cpp | 73 + .../node-sass/src/sass_types/boolean.h | 31 + .../node-sass/src/sass_types/color.cpp | 127 + .../node-sass/src/sass_types/color.h | 34 + .../node-sass/src/sass_types/error.cpp | 24 + .../node-sass/src/sass_types/error.h | 19 + .../node-sass/src/sass_types/factory.cpp | 72 + .../node-sass/src/sass_types/factory.h | 20 + .../node-sass/src/sass_types/list.cpp | 101 + .../node-sass/src/sass_types/list.h | 25 + .../node-sass/src/sass_types/map.cpp | 118 + .../node-sass/src/sass_types/map.h | 25 + .../node-sass/src/sass_types/null.cpp | 57 + .../node-sass/src/sass_types/null.h | 29 + .../node-sass/src/sass_types/number.cpp | 75 + .../node-sass/src/sass_types/number.h | 25 + .../src/sass_types/sass_value_wrapper.h | 101 + .../node-sass/src/sass_types/string.cpp | 48 + .../node-sass/src/sass_types/string.h | 22 + .../node-sass/src/sass_types/value.h | 42 + mybulma/node_modules/node-sass/test/api.js | 2035 ++ .../node_modules/node-sass/test/binding.js | 129 + mybulma/node_modules/node-sass/test/cli.js | 793 + .../node-sass/test/downloadoptions.js | 129 + mybulma/node_modules/node-sass/test/errors.js | 53 + .../test/fixtures/compressed/expected.css | 1 + .../test/fixtures/compressed/index.scss | 16 + .../custom-functions/setter-expected.css | 3 + .../fixtures/custom-functions/setter.scss | 1 + .../string-conversion-expected.css | 2 + .../custom-functions/string-conversion.scss | 1 + .../fixtures/cwd-include-path/expected.css | 2 + .../fixtures/cwd-include-path/outside.scss | 3 + .../fixtures/cwd-include-path/root/index.scss | 1 + .../test/fixtures/depth-first/_common.scss | 6 + .../test/fixtures/depth-first/_struct.scss | 3 + .../test/fixtures/depth-first/_vars.scss | 5 + .../test/fixtures/depth-first/a.scss | 7 + .../test/fixtures/depth-first/a1.scss | 3 + .../test/fixtures/depth-first/b.scss | 5 + .../test/fixtures/depth-first/b1.scss | 3 + .../test/fixtures/depth-first/expected.css | 32 + .../test/fixtures/depth-first/index.scss | 8 + .../extras/my_custom_arrays_of_importers.js | 12 + .../extras/my_custom_functions_setter.js | 10 + .../my_custom_functions_string_conversion.js | 8 + .../extras/my_custom_importer_data.js | 5 + .../extras/my_custom_importer_data_cb.js | 5 + .../extras/my_custom_importer_error.js | 3 + .../extras/my_custom_importer_file.js | 7 + .../my_custom_importer_file_and_data.js | 6 + .../my_custom_importer_file_and_data_cb.js | 6 + .../extras/my_custom_importer_file_cb.js | 7 + .../test/fixtures/follow/foo/bar/index.scss | 16 + .../test/fixtures/include-files/bar.scss | 1 + .../chained-imports-with-custom-importer.scss | 1 + .../include-files/expected-data-importer.css | 5 + .../include-files/expected-file-importer.css | 2 + .../include-files/expected-importer.css | 5 + .../file-not-processed-by-loader.scss | 1 + .../file-processed-by-loader.scss | 3 + .../test/fixtures/include-files/foo.scss | 1 + .../test/fixtures/include-files/index.scss | 2 + .../test/fixtures/include-path/expected.css | 3 + .../include-path/functions/colorBlue.scss | 3 + .../test/fixtures/include-path/index.scss | 7 + .../test/fixtures/include-path/lib/vars.scss | 1 + .../test/fixtures/indent/expected.css | 2 + .../node-sass/test/fixtures/indent/index.sass | 3 + .../input-directory/sass/_skipped.scss | 16 + .../input-directory/sass/nested/three.scss | 16 + .../fixtures/input-directory/sass/one.scss | 16 + .../fixtures/input-directory/sass/two.scss | 16 + .../test/fixtures/invalid/index.scss | 3 + .../test/fixtures/output-directory/index.scss | 16 + .../test/fixtures/precision/expected.css | 2 + .../test/fixtures/precision/index.scss | 3 + .../fixtures/sass-path/expected-orange.css | 3 + .../test/fixtures/sass-path/expected-red.css | 3 + .../test/fixtures/sass-path/index.scss | 6 + .../fixtures/sass-path/orange/colors.scss | 1 + .../test/fixtures/sass-path/red/colors.scss | 1 + .../test/fixtures/simple/expected.css | 11 + .../node-sass/test/fixtures/simple/index.scss | 16 + .../fixtures/source-comments/expected.css | 15 + .../test/fixtures/source-comments/index.scss | 16 + .../fixtures/source-map-embed/expected.css | 13 + .../test/fixtures/source-map-embed/index.scss | 16 + .../test/fixtures/source-map/expected.css | 13 + .../test/fixtures/source-map/expected.map | 9 + .../test/fixtures/source-map/index.scss | 16 + .../test/fixtures/watcher/main/one.scss | 5 + .../fixtures/watcher/main/partials/_one.scss | 5 + .../watcher/main/partials/_three.scss | 3 + .../fixtures/watcher/main/partials/_two.scss | 5 + .../test/fixtures/watcher/main/three.scss | 3 + .../test/fixtures/watcher/main/two.scss | 3 + .../watcher/sibling/partials/_three.scss | 3 + .../test/fixtures/watcher/sibling/three.scss | 5 + .../test/fixtures/watching-dir-01/index.scss | 1 + .../test/fixtures/watching-dir-02/foo.scss | 1 + .../test/fixtures/watching-dir-02/index.scss | 1 + .../node-sass/test/fixtures/watching/bar.sass | 2 + .../test/fixtures/watching/index.sass | 1 + .../test/fixtures/watching/index.scss | 1 + .../test/fixtures/watching/white.scss | 1 + .../node_modules/node-sass/test/lowlevel.js | 243 + .../node_modules/node-sass/test/runtime.js | 185 + .../node-sass/test/scripts/util/proxy.js | 76 + mybulma/node_modules/node-sass/test/types.js | 708 + .../node_modules/node-sass/test/useragent.js | 15 + .../node_modules/node-sass/test/watcher.js | 503 + .../darwin-x64-108_binding.node | Bin 0 -> 2797624 bytes .../darwin-x64-111_binding.node | Bin 0 -> 2801600 bytes .../vendor/darwin-x64-93/binding.node | Bin 0 -> 2801136 bytes .../vendor/linux-x64-111/binding.node | Bin 0 -> 3473024 bytes .../vendor/linux-x64-83/binding.node | Bin 0 -> 3389088 bytes mybulma/node_modules/nopt/CHANGELOG.md | 58 + mybulma/node_modules/nopt/LICENSE | 15 + mybulma/node_modules/nopt/README.md | 213 + mybulma/node_modules/nopt/bin/nopt.js | 54 + mybulma/node_modules/nopt/lib/nopt.js | 441 + mybulma/node_modules/nopt/package.json | 34 + .../lib/extract_description.js | 22 + .../normalize-package-data/lib/fixer.js | 474 + .../lib/make_warning.js | 22 + .../normalize-package-data/lib/normalize.js | 48 + .../normalize-package-data/lib/safe_format.js | 11 + .../normalize-package-data/lib/typos.json | 25 + .../lib/warning_messages.json | 30 + mybulma/node_modules/npmlog/lib/log.js | 404 + mybulma/node_modules/p-locate/index.d.ts | 64 + mybulma/node_modules/p-locate/index.js | 52 + mybulma/node_modules/p-locate/license | 9 + mybulma/node_modules/p-locate/package.json | 53 + mybulma/node_modules/p-locate/readme.md | 90 + mybulma/node_modules/p-try/index.d.ts | 39 + mybulma/node_modules/p-try/index.js | 9 + mybulma/node_modules/p-try/license | 9 + mybulma/node_modules/p-try/package.json | 42 + mybulma/node_modules/p-try/readme.md | 58 + mybulma/node_modules/path-parse/LICENSE | 21 + mybulma/node_modules/path-parse/README.md | 42 + mybulma/node_modules/path-parse/index.js | 75 + mybulma/node_modules/path-parse/package.json | 33 + .../process-nextick-args/index.js | 45 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 25 + .../process-nextick-args/readme.md | 18 + .../node_modules/promise-retry/test/test.js | 263 + mybulma/node_modules/quick-lru/index.d.ts | 90 + mybulma/node_modules/quick-lru/index.js | 115 + mybulma/node_modules/quick-lru/license | 9 + mybulma/node_modules/quick-lru/package.json | 42 + mybulma/node_modules/quick-lru/readme.md | 93 + .../node_modules/type-fest/index.d.ts | 20 + .../node_modules/type-fest/license | 9 + .../node_modules/type-fest/package.json | 51 + .../node_modules/type-fest/readme.md | 635 + .../node_modules/type-fest/source/basic.d.ts | 67 + .../node_modules/type-fest/source/except.d.ts | 22 + .../type-fest/source/literal-union.d.ts | 33 + .../type-fest/source/merge-exclusive.d.ts | 39 + .../node_modules/type-fest/source/merge.d.ts | 22 + .../type-fest/source/mutable.d.ts | 22 + .../node_modules/type-fest/source/opaque.d.ts | 40 + .../type-fest/source/package-json.d.ts | 501 + .../type-fest/source/partial-deep.d.ts | 72 + .../type-fest/source/promisable.d.ts | 23 + .../type-fest/source/readonly-deep.d.ts | 59 + .../source/require-at-least-one.d.ts | 32 + .../type-fest/source/require-exactly-one.d.ts | 36 + .../type-fest/source/set-optional.d.ts | 32 + .../type-fest/source/set-required.d.ts | 32 + mybulma/node_modules/read-pkg/index.d.ts | 67 + mybulma/node_modules/read-pkg/index.js | 41 + mybulma/node_modules/read-pkg/license | 9 + .../read-pkg/node_modules/.bin/semver | 160 + .../node_modules/hosted-git-info/CHANGELOG.md | 151 + .../node_modules/hosted-git-info/LICENSE | 13 + .../node_modules/hosted-git-info/README.md | 133 + .../hosted-git-info/git-host-info.js | 79 + .../node_modules/hosted-git-info/git-host.js | 156 + .../node_modules/hosted-git-info/index.js | 148 + .../node_modules/hosted-git-info/package.json | 40 + .../normalize-package-data/AUTHORS | 4 + .../normalize-package-data/LICENSE | 30 + .../normalize-package-data/README.md | 106 + .../lib/extract_description.js | 14 + .../normalize-package-data/lib/fixer.js | 418 + .../lib/make_warning.js | 23 + .../normalize-package-data/lib/normalize.js | 39 + .../normalize-package-data/lib/safe_format.js | 9 + .../normalize-package-data/lib/typos.json | 25 + .../lib/warning_messages.json | 30 + .../normalize-package-data/package.json | 31 + .../read-pkg/node_modules/semver/CHANGELOG.md | 39 + .../read-pkg/node_modules/semver/LICENSE | 15 + .../read-pkg/node_modules/semver/README.md | 412 + .../read-pkg/node_modules/semver/bin/semver | 160 + .../read-pkg/node_modules/semver/package.json | 28 + .../read-pkg/node_modules/semver/range.bnf | 16 + .../read-pkg/node_modules/semver/semver.js | 1483 ++ .../node_modules/type-fest/index.d.ts | 15 + .../read-pkg/node_modules/type-fest/license | 9 + .../node_modules/type-fest/package.json | 51 + .../read-pkg/node_modules/type-fest/readme.md | 119 + .../node_modules/type-fest/source/basic.d.ts | 67 + .../node_modules/type-fest/source/except.d.ts | 22 + .../type-fest/source/literal-union.d.ts | 33 + .../type-fest/source/merge-exclusive.d.ts | 39 + .../node_modules/type-fest/source/merge.d.ts | 22 + .../type-fest/source/mutable.d.ts | 22 + .../type-fest/source/package-json.d.ts | 501 + .../type-fest/source/promisable.d.ts | 23 + .../type-fest/source/readonly-deep.d.ts | 59 + .../source/require-at-least-one.d.ts | 32 + mybulma/node_modules/read-pkg/package.json | 49 + mybulma/node_modules/read-pkg/readme.md | 81 + .../readable-stream/CONTRIBUTING.md | 38 + .../readable-stream/GOVERNANCE.md | 136 + mybulma/node_modules/readable-stream/LICENSE | 47 + .../node_modules/readable-stream/README.md | 106 + .../readable-stream/errors-browser.js | 127 + .../node_modules/readable-stream/errors.js | 116 + .../readable-stream/experimentalWarning.js | 17 + .../readable-stream/lib/_stream_duplex.js | 139 + .../lib/_stream_passthrough.js | 39 + .../readable-stream/lib/_stream_readable.js | 1124 + .../readable-stream/lib/_stream_transform.js | 201 + .../readable-stream/lib/_stream_writable.js | 697 + .../lib/internal/streams/async_iterator.js | 207 + .../lib/internal/streams/buffer_list.js | 210 + .../lib/internal/streams/destroy.js | 105 + .../lib/internal/streams/end-of-stream.js | 104 + .../lib/internal/streams/from-browser.js | 3 + .../lib/internal/streams/from.js | 64 + .../lib/internal/streams/pipeline.js | 97 + .../lib/internal/streams/state.js | 27 + .../lib/internal/streams/stream-browser.js | 1 + .../lib/internal/streams/stream.js | 1 + .../node_modules/readable-stream/package.json | 68 + .../readable-stream/readable-browser.js | 9 + .../node_modules/readable-stream/readable.js | 16 + .../node_modules/require-directory/.jshintrc | 67 + .../node_modules/require-directory/.npmignore | 1 + .../require-directory/.travis.yml | 3 + .../node_modules/require-directory/LICENSE | 22 + .../require-directory/README.markdown | 184 + .../node_modules/require-directory/index.js | 86 + .../require-directory/package.json | 40 + mybulma/node_modules/resolve/.editorconfig | 37 + mybulma/node_modules/resolve/.eslintrc | 65 + .../node_modules/resolve/.github/FUNDING.yml | 12 + mybulma/node_modules/resolve/LICENSE | 21 + mybulma/node_modules/resolve/SECURITY.md | 3 + mybulma/node_modules/resolve/async.js | 3 + mybulma/node_modules/resolve/bin/resolve | 50 + mybulma/node_modules/resolve/example/async.js | 5 + mybulma/node_modules/resolve/example/sync.js | 3 + mybulma/node_modules/resolve/index.js | 6 + mybulma/node_modules/resolve/lib/async.js | 329 + mybulma/node_modules/resolve/lib/caller.js | 8 + mybulma/node_modules/resolve/lib/core.js | 52 + mybulma/node_modules/resolve/lib/core.json | 153 + mybulma/node_modules/resolve/lib/homedir.js | 24 + mybulma/node_modules/resolve/lib/is-core.js | 5 + .../resolve/lib/node-modules-paths.js | 42 + .../resolve/lib/normalize-options.js | 10 + mybulma/node_modules/resolve/lib/sync.js | 208 + mybulma/node_modules/resolve/package.json | 71 + mybulma/node_modules/resolve/readme.markdown | 301 + mybulma/node_modules/resolve/sync.js | 3 + mybulma/node_modules/resolve/test/core.js | 88 + mybulma/node_modules/resolve/test/dotdot.js | 29 + .../resolve/test/dotdot/abc/index.js | 2 + .../node_modules/resolve/test/dotdot/index.js | 1 + .../resolve/test/faulty_basedir.js | 29 + mybulma/node_modules/resolve/test/filter.js | 34 + .../node_modules/resolve/test/filter_sync.js | 33 + .../node_modules/resolve/test/home_paths.js | 127 + .../resolve/test/home_paths_sync.js | 114 + mybulma/node_modules/resolve/test/mock.js | 315 + .../node_modules/resolve/test/mock_sync.js | 214 + .../node_modules/resolve/test/module_dir.js | 56 + .../test/module_dir/xmodules/aaa/index.js | 1 + .../test/module_dir/ymodules/aaa/index.js | 1 + .../test/module_dir/zmodules/bbb/main.js | 1 + .../test/module_dir/zmodules/bbb/package.json | 3 + .../resolve/test/node-modules-paths.js | 143 + .../node_modules/resolve/test/node_path.js | 70 + .../resolve/test/node_path/x/aaa/index.js | 1 + .../resolve/test/node_path/x/ccc/index.js | 1 + .../resolve/test/node_path/y/bbb/index.js | 1 + .../resolve/test/node_path/y/ccc/index.js | 1 + .../node_modules/resolve/test/nonstring.js | 9 + .../node_modules/resolve/test/pathfilter.js | 75 + .../resolve/test/pathfilter/deep_ref/main.js | 0 .../node_modules/resolve/test/precedence.js | 23 + .../resolve/test/precedence/aaa.js | 1 + .../resolve/test/precedence/aaa/index.js | 1 + .../resolve/test/precedence/aaa/main.js | 1 + .../resolve/test/precedence/bbb.js | 1 + .../resolve/test/precedence/bbb/main.js | 1 + mybulma/node_modules/resolve/test/resolver.js | 595 + .../resolve/test/resolver/baz/doom.js | 0 .../resolve/test/resolver/baz/package.json | 4 + .../resolve/test/resolver/baz/quux.js | 1 + .../resolve/test/resolver/browser_field/a.js | 0 .../resolve/test/resolver/browser_field/b.js | 0 .../test/resolver/browser_field/package.json | 5 + .../resolve/test/resolver/cup.coffee | 1 + .../resolve/test/resolver/dot_main/index.js | 1 + .../test/resolver/dot_main/package.json | 3 + .../test/resolver/dot_slash_main/index.js | 1 + .../test/resolver/dot_slash_main/package.json | 3 + .../resolve/test/resolver/false_main/index.js | 0 .../test/resolver/false_main/package.json | 4 + .../node_modules/resolve/test/resolver/foo.js | 1 + .../test/resolver/incorrect_main/index.js | 2 + .../test/resolver/incorrect_main/package.json | 3 + .../test/resolver/invalid_main/package.json | 7 + .../resolver/malformed_package_json/index.js | 0 .../malformed_package_json/package.json | 1 + .../resolve/test/resolver/mug.coffee | 0 .../node_modules/resolve/test/resolver/mug.js | 0 .../test/resolver/multirepo/lerna.json | 6 + .../test/resolver/multirepo/package.json | 20 + .../multirepo/packages/package-a/index.js | 35 + .../multirepo/packages/package-a/package.json | 14 + .../multirepo/packages/package-b/index.js | 0 .../multirepo/packages/package-b/package.json | 14 + .../resolver/nested_symlinks/mylib/async.js | 26 + .../nested_symlinks/mylib/package.json | 15 + .../resolver/nested_symlinks/mylib/sync.js | 12 + .../test/resolver/other_path/lib/other-lib.js | 0 .../resolve/test/resolver/other_path/root.js | 0 .../resolve/test/resolver/quux/foo/index.js | 1 + .../resolve/test/resolver/same_names/foo.js | 1 + .../test/resolver/same_names/foo/index.js | 1 + .../resolver/symlinked/_/node_modules/foo.js | 0 .../symlinked/_/symlink_target/.gitkeep | 0 .../test/resolver/symlinked/package/bar.js | 1 + .../resolver/symlinked/package/package.json | 3 + .../test/resolver/without_basedir/main.js | 5 + .../resolve/test/resolver_sync.js | 726 + .../resolve/test/shadowed_core.js | 54 + .../shadowed_core/node_modules/util/index.js | 0 mybulma/node_modules/resolve/test/subdirs.js | 13 + mybulma/node_modules/resolve/test/symlinks.js | 176 + mybulma/node_modules/retry/.npmignore | 3 + mybulma/node_modules/retry/.travis.yml | 15 + mybulma/node_modules/retry/License | 21 + mybulma/node_modules/retry/Makefile | 18 + mybulma/node_modules/retry/README.md | 227 + mybulma/node_modules/retry/equation.gif | Bin 0 -> 1209 bytes mybulma/node_modules/retry/example/dns.js | 31 + mybulma/node_modules/retry/example/stop.js | 40 + mybulma/node_modules/retry/index.js | 1 + mybulma/node_modules/retry/lib/retry.js | 100 + .../node_modules/retry/lib/retry_operation.js | 158 + mybulma/node_modules/retry/package.json | 32 + mybulma/node_modules/retry/test/common.js | 10 + .../retry/test/integration/test-forever.js | 24 + .../test/integration/test-retry-operation.js | 258 + .../retry/test/integration/test-retry-wrap.js | 101 + .../retry/test/integration/test-timeouts.js | 69 + mybulma/node_modules/rimraf/CHANGELOG.md | 65 + mybulma/node_modules/rimraf/LICENSE | 15 + mybulma/node_modules/rimraf/README.md | 101 + mybulma/node_modules/rimraf/bin.js | 68 + mybulma/node_modules/rimraf/package.json | 32 + mybulma/node_modules/rimraf/rimraf.js | 360 + mybulma/node_modules/safe-buffer/LICENSE | 21 + mybulma/node_modules/safe-buffer/README.md | 584 + mybulma/node_modules/safe-buffer/index.d.ts | 187 + mybulma/node_modules/safe-buffer/index.js | 65 + mybulma/node_modules/safe-buffer/package.json | 51 + mybulma/node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + mybulma/node_modules/safer-buffer/Readme.md | 156 + .../node_modules/safer-buffer/dangerous.js | 58 + .../node_modules/safer-buffer/package.json | 34 + mybulma/node_modules/safer-buffer/safer.js | 77 + mybulma/node_modules/safer-buffer/tests.js | 406 + mybulma/node_modules/sass-graph/LICENSE | 7 + mybulma/node_modules/sass-graph/bin/sassgraph | 122 + mybulma/node_modules/sass-graph/package.json | 41 + .../node_modules/sass-graph/parse-imports.js | 64 + mybulma/node_modules/sass-graph/readme.md | 130 + mybulma/node_modules/sass-graph/sass-graph.js | 171 + mybulma/node_modules/scss-tokenizer/LICENSE | 22 + mybulma/node_modules/scss-tokenizer/README.md | 50 + mybulma/node_modules/scss-tokenizer/index.js | 1 + .../node_modules/scss-tokenizer/lib/entry.js | 23 + .../node_modules/scss-tokenizer/lib/input.js | 64 + .../scss-tokenizer/lib/previous-map.js | 123 + .../scss-tokenizer/lib/tokenize-comment.js | 154 + .../lib/tokenize-interpolant.js | 304 + .../scss-tokenizer/lib/tokenize-string.js | 136 + .../scss-tokenizer/lib/tokenize.js | 312 + .../node_modules/scss-tokenizer/package.json | 46 + mybulma/node_modules/semver/bin/semver.js | 183 + .../node_modules/semver/classes/comparator.js | 136 + mybulma/node_modules/semver/classes/index.js | 5 + mybulma/node_modules/semver/classes/range.js | 522 + mybulma/node_modules/semver/classes/semver.js | 287 + .../node_modules/semver/functions/clean.js | 6 + mybulma/node_modules/semver/functions/cmp.js | 52 + .../node_modules/semver/functions/coerce.js | 52 + .../semver/functions/compare-build.js | 7 + .../semver/functions/compare-loose.js | 3 + .../node_modules/semver/functions/compare.js | 5 + mybulma/node_modules/semver/functions/diff.js | 23 + mybulma/node_modules/semver/functions/eq.js | 3 + mybulma/node_modules/semver/functions/gt.js | 3 + mybulma/node_modules/semver/functions/gte.js | 3 + mybulma/node_modules/semver/functions/inc.js | 18 + mybulma/node_modules/semver/functions/lt.js | 3 + mybulma/node_modules/semver/functions/lte.js | 3 + .../node_modules/semver/functions/major.js | 3 + .../node_modules/semver/functions/minor.js | 3 + mybulma/node_modules/semver/functions/neq.js | 3 + .../node_modules/semver/functions/parse.js | 33 + .../node_modules/semver/functions/patch.js | 3 + .../semver/functions/prerelease.js | 6 + .../node_modules/semver/functions/rcompare.js | 3 + .../node_modules/semver/functions/rsort.js | 3 + .../semver/functions/satisfies.js | 10 + mybulma/node_modules/semver/functions/sort.js | 3 + .../node_modules/semver/functions/valid.js | 6 + .../node_modules/semver/internal/constants.js | 17 + mybulma/node_modules/semver/internal/debug.js | 9 + .../semver/internal/identifiers.js | 23 + .../semver/internal/parse-options.js | 11 + mybulma/node_modules/semver/internal/re.js | 182 + .../semver/node_modules/lru-cache/LICENSE | 15 + .../semver/node_modules/lru-cache/README.md | 166 + .../semver/node_modules/lru-cache/index.js | 334 + .../node_modules/lru-cache/package.json | 34 + mybulma/node_modules/semver/ranges/gtr.js | 4 + .../node_modules/semver/ranges/intersects.js | 7 + mybulma/node_modules/semver/ranges/ltr.js | 4 + .../semver/ranges/max-satisfying.js | 25 + .../semver/ranges/min-satisfying.js | 24 + .../node_modules/semver/ranges/min-version.js | 61 + mybulma/node_modules/semver/ranges/outside.js | 80 + .../node_modules/semver/ranges/simplify.js | 47 + mybulma/node_modules/semver/ranges/subset.js | 244 + .../semver/ranges/to-comparators.js | 8 + mybulma/node_modules/semver/ranges/valid.js | 11 + .../node_modules/set-blocking/CHANGELOG.md | 26 + mybulma/node_modules/set-blocking/LICENSE.txt | 14 + mybulma/node_modules/set-blocking/README.md | 31 + mybulma/node_modules/set-blocking/index.js | 7 + .../node_modules/set-blocking/package.json | 42 + mybulma/node_modules/shebang-command/index.js | 19 + mybulma/node_modules/shebang-command/license | 9 + .../node_modules/shebang-command/package.json | 34 + .../node_modules/shebang-command/readme.md | 34 + mybulma/node_modules/shebang-regex/index.d.ts | 22 + mybulma/node_modules/shebang-regex/index.js | 2 + mybulma/node_modules/shebang-regex/license | 9 + .../node_modules/shebang-regex/package.json | 35 + mybulma/node_modules/shebang-regex/readme.md | 33 + .../smart-buffer/.prettierrc.yaml | 5 + mybulma/node_modules/smart-buffer/.travis.yml | 13 + mybulma/node_modules/smart-buffer/LICENSE | 20 + mybulma/node_modules/smart-buffer/README.md | 633 + .../smart-buffer/build/smartbuffer.js | 1233 ++ .../smart-buffer/build/smartbuffer.js.map | 1 + .../node_modules/smart-buffer/build/utils.js | 108 + .../smart-buffer/build/utils.js.map | 1 + .../smart-buffer/docs/CHANGELOG.md | 70 + .../smart-buffer/docs/README_v3.md | 367 + .../node_modules/smart-buffer/docs/ROADMAP.md | 0 .../node_modules/smart-buffer/package.json | 79 + .../smart-buffer/typings/smartbuffer.d.ts | 755 + .../smart-buffer/typings/utils.d.ts | 66 + .../socks-proxy-agent/dist/index.d.ts | 33 + .../socks-proxy-agent/dist/index.js | 197 + .../socks-proxy-agent/dist/index.js.map | 1 + mybulma/node_modules/socks/.eslintrc.cjs | 11 + mybulma/node_modules/socks/.prettierrc.yaml | 7 + mybulma/node_modules/socks/LICENSE | 20 + mybulma/node_modules/socks/README.md | 686 + .../socks/build/client/socksclient.js | 793 + .../socks/build/client/socksclient.js.map | 1 + .../socks/build/common/constants.js | 114 + .../socks/build/common/constants.js.map | 1 + .../socks/build/common/helpers.js | 128 + .../socks/build/common/helpers.js.map | 1 + .../socks/build/common/receivebuffer.js | 43 + .../socks/build/common/receivebuffer.js.map | 1 + .../node_modules/socks/build/common/util.js | 25 + .../socks/build/common/util.js.map | 1 + mybulma/node_modules/socks/build/index.js | 18 + mybulma/node_modules/socks/build/index.js.map | 1 + .../node_modules/socks/docs/examples/index.md | 17 + .../examples/javascript/associateExample.md | 90 + .../docs/examples/javascript/bindExample.md | 83 + .../examples/javascript/connectExample.md | 258 + .../examples/typescript/associateExample.md | 93 + .../docs/examples/typescript/bindExample.md | 86 + .../examples/typescript/connectExample.md | 265 + mybulma/node_modules/socks/docs/index.md | 5 + .../socks/docs/migratingFromV1.md | 86 + mybulma/node_modules/socks/package.json | 58 + .../socks/typings/client/socksclient.d.ts | 162 + .../socks/typings/common/constants.d.ts | 152 + .../socks/typings/common/helpers.d.ts | 13 + .../socks/typings/common/receivebuffer.d.ts | 12 + .../socks/typings/common/util.d.ts | 17 + mybulma/node_modules/socks/typings/index.d.ts | 1 + .../source-map/dist/source-map.js | 1 + .../node_modules/source-map/lib/array-set.js | 100 + .../node_modules/source-map/lib/base64-vlq.js | 111 + mybulma/node_modules/source-map/lib/base64.js | 18 + .../source-map/lib/binary-search.js | 107 + .../source-map/lib/mapping-list.js | 80 + .../node_modules/source-map/lib/mappings.wasm | Bin 0 -> 48693 bytes .../node_modules/source-map/lib/read-wasm.js | 49 + .../source-map/lib/source-map-consumer.js | 1237 ++ .../source-map/lib/source-map-generator.js | 413 + .../source-map/lib/source-node.js | 404 + mybulma/node_modules/source-map/lib/util.js | 546 + mybulma/node_modules/source-map/lib/wasm.js | 107 + .../node_modules/spdx-exceptions/README.md | 36 + .../node_modules/spdx-exceptions/index.json | 40 + .../node_modules/spdx-exceptions/package.json | 17 + .../node_modules/spdx-license-ids/README.md | 52 + .../spdx-license-ids/deprecated.json | 27 + .../node_modules/spdx-license-ids/index.json | 467 + .../spdx-license-ids/package.json | 39 + mybulma/node_modules/ssri/LICENSE.md | 16 + mybulma/node_modules/ssri/README.md | 528 + mybulma/node_modules/ssri/lib/index.js | 524 + mybulma/node_modules/ssri/package.json | 63 + .../node_modules/stdout-stream/.travis.yml | 6 + mybulma/node_modules/stdout-stream/LICENSE | 20 + mybulma/node_modules/stdout-stream/README.md | 45 + mybulma/node_modules/stdout-stream/index.js | 53 + .../node_modules/readable-stream/.travis.yml | 34 + .../readable-stream/CONTRIBUTING.md | 38 + .../readable-stream/GOVERNANCE.md | 136 + .../node_modules/readable-stream/LICENSE | 47 + .../node_modules/readable-stream/README.md | 58 + .../doc/wg-meetings/2015-01-30.md | 60 + .../readable-stream/duplex-browser.js | 1 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 131 + .../lib/_stream_passthrough.js | 47 + .../readable-stream/lib/_stream_readable.js | 1019 + .../readable-stream/lib/_stream_transform.js | 214 + .../readable-stream/lib/_stream_writable.js | 687 + .../lib/internal/streams/BufferList.js | 79 + .../lib/internal/streams/destroy.js | 74 + .../lib/internal/streams/stream-browser.js | 1 + .../lib/internal/streams/stream.js | 1 + .../node_modules/readable-stream/package.json | 52 + .../readable-stream/passthrough.js | 1 + .../readable-stream/readable-browser.js | 7 + .../node_modules/readable-stream/readable.js | 19 + .../node_modules/readable-stream/transform.js | 1 + .../readable-stream/writable-browser.js | 1 + .../node_modules/readable-stream/writable.js | 8 + .../node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 584 + .../node_modules/safe-buffer/index.d.ts | 187 + .../node_modules/safe-buffer/index.js | 62 + .../node_modules/safe-buffer/package.json | 37 + .../node_modules/string_decoder/.travis.yml | 50 + .../node_modules/string_decoder/LICENSE | 48 + .../node_modules/string_decoder/README.md | 47 + .../string_decoder/lib/string_decoder.js | 296 + .../node_modules/string_decoder/package.json | 31 + .../node_modules/stdout-stream/package.json | 16 + .../stdout-stream/test/fixtures/end.js | 8 + .../test/fixtures/hello-world.js | 4 + .../node_modules/stdout-stream/test/index.js | 33 + mybulma/node_modules/string-width/index.d.ts | 29 + mybulma/node_modules/string-width/index.js | 47 + mybulma/node_modules/string-width/license | 9 + .../node_modules/string-width/package.json | 56 + mybulma/node_modules/string-width/readme.md | 50 + .../string_decoder/lib/string_decoder.js | 296 + mybulma/node_modules/strip-indent/index.d.ts | 21 + mybulma/node_modules/strip-indent/index.js | 14 + mybulma/node_modules/strip-indent/license | 9 + .../node_modules/strip-indent/package.json | 42 + mybulma/node_modules/strip-indent/readme.md | 44 + .../.github/FUNDING.yml | 12 + .../test/index.js | 29 + mybulma/node_modules/tar/LICENSE | 15 + mybulma/node_modules/tar/README.md | 1070 + mybulma/node_modules/tar/index.js | 18 + mybulma/node_modules/tar/lib/create.js | 111 + mybulma/node_modules/tar/lib/extract.js | 113 + .../node_modules/tar/lib/get-write-flag.js | 20 + mybulma/node_modules/tar/lib/header.js | 304 + .../node_modules/tar/lib/high-level-opt.js | 29 + mybulma/node_modules/tar/lib/large-numbers.js | 104 + mybulma/node_modules/tar/lib/list.js | 139 + mybulma/node_modules/tar/lib/mkdir.js | 229 + mybulma/node_modules/tar/lib/mode-fix.js | 27 + .../node_modules/tar/lib/normalize-unicode.js | 12 + .../tar/lib/normalize-windows-path.js | 8 + mybulma/node_modules/tar/lib/pack.js | 420 + mybulma/node_modules/tar/lib/parse.js | 509 + .../node_modules/tar/lib/path-reservations.js | 156 + mybulma/node_modules/tar/lib/pax.js | 150 + mybulma/node_modules/tar/lib/read-entry.js | 107 + mybulma/node_modules/tar/lib/replace.js | 246 + .../tar/lib/strip-absolute-path.js | 24 + .../tar/lib/strip-trailing-slashes.js | 13 + mybulma/node_modules/tar/lib/types.js | 44 + mybulma/node_modules/tar/lib/unpack.js | 906 + mybulma/node_modules/tar/lib/update.js | 40 + mybulma/node_modules/tar/lib/warn-mixin.js | 24 + mybulma/node_modules/tar/lib/winchars.js | 23 + mybulma/node_modules/tar/lib/write-entry.js | 546 + .../tar/node_modules/minipass/LICENSE | 15 + .../tar/node_modules/minipass/README.md | 728 + .../tar/node_modules/minipass/index.d.ts | 147 + .../tar/node_modules/minipass/index.js | 657 + .../tar/node_modules/minipass/package.json | 56 + mybulma/node_modules/tar/package.json | 75 + .../node_modules/true-case-path/.prettierrc | 5 + .../node_modules/true-case-path/.travis.yml | 20 + .../true-case-path/.vscode/launch.json | 14 + .../node_modules/true-case-path/CHANGELOG.md | 60 + mybulma/node_modules/true-case-path/LICENSE | 201 + mybulma/node_modules/true-case-path/README.md | 49 + .../node_modules/true-case-path/index.d.ts | 6 + mybulma/node_modules/true-case-path/index.js | 94 + .../node_modules/true-case-path/package.json | 26 + .../true-case-path/test/fixture/fOoBaR/BAZ | 0 .../true-case-path/test/fixture/f[u&n%k)y | 0 .../node_modules/true-case-path/test/index.js | 73 + mybulma/node_modules/type-fest/index.d.ts | 35 + mybulma/node_modules/type-fest/license | 9 + mybulma/node_modules/type-fest/package.json | 45 + mybulma/node_modules/type-fest/readme.md | 648 + .../type-fest/source/async-return-type.d.ts | 23 + .../type-fest/source/asyncify.d.ts | 31 + .../node_modules/type-fest/source/basic.d.ts | 67 + .../type-fest/source/conditional-except.d.ts | 43 + .../type-fest/source/conditional-keys.d.ts | 43 + .../type-fest/source/conditional-pick.d.ts | 42 + .../type-fest/source/entries.d.ts | 57 + .../node_modules/type-fest/source/entry.d.ts | 60 + .../node_modules/type-fest/source/except.d.ts | 22 + .../type-fest/source/fixed-length-array.d.ts | 38 + .../type-fest/source/iterable-element.d.ts | 46 + .../type-fest/source/literal-union.d.ts | 33 + .../type-fest/source/merge-exclusive.d.ts | 39 + .../node_modules/type-fest/source/merge.d.ts | 22 + .../type-fest/source/mutable.d.ts | 22 + .../node_modules/type-fest/source/opaque.d.ts | 65 + .../type-fest/source/package-json.d.ts | 627 + .../type-fest/source/partial-deep.d.ts | 72 + .../type-fest/source/promisable.d.ts | 23 + .../type-fest/source/promise-value.d.ts | 27 + .../type-fest/source/readonly-deep.d.ts | 59 + .../source/require-at-least-one.d.ts | 32 + .../type-fest/source/require-exactly-one.d.ts | 35 + .../type-fest/source/set-optional.d.ts | 34 + .../type-fest/source/set-required.d.ts | 34 + .../type-fest/source/set-return-type.d.ts | 29 + .../type-fest/source/stringified.d.ts | 21 + .../type-fest/source/tsconfig-json.d.ts | 872 + .../source/union-to-intersection.d.ts | 58 + .../type-fest/source/value-of.d.ts | 40 + .../node_modules/unique-filename/lib/index.js | 7 + mybulma/node_modules/unique-slug/LICENSE | 15 + mybulma/node_modules/unique-slug/README.md | 19 + mybulma/node_modules/unique-slug/lib/index.js | 11 + mybulma/node_modules/unique-slug/package.json | 44 + .../node_modules/util-deprecate/History.md | 16 + mybulma/node_modules/util-deprecate/LICENSE | 24 + mybulma/node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + mybulma/node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 27 + .../validate-npm-package-license/LICENSE | 202 + .../validate-npm-package-license/README.md | 113 + .../validate-npm-package-license/index.js | 86 + .../validate-npm-package-license/package.json | 28 + mybulma/node_modules/which/CHANGELOG.md | 166 + mybulma/node_modules/which/LICENSE | 15 + mybulma/node_modules/which/README.md | 54 + mybulma/node_modules/which/bin/node-which | 52 + mybulma/node_modules/which/package.json | 43 + mybulma/node_modules/which/which.js | 125 + mybulma/node_modules/wrap-ansi/index.js | 216 + mybulma/node_modules/wrap-ansi/license | 9 + mybulma/node_modules/wrap-ansi/package.json | 62 + mybulma/node_modules/wrap-ansi/readme.md | 91 + mybulma/node_modules/y18n/CHANGELOG.md | 100 + mybulma/node_modules/y18n/LICENSE | 13 + mybulma/node_modules/y18n/README.md | 127 + mybulma/node_modules/y18n/build/index.cjs | 203 + mybulma/node_modules/y18n/build/lib/cjs.js | 6 + mybulma/node_modules/y18n/build/lib/index.js | 174 + .../y18n/build/lib/platform-shims/node.js | 19 + mybulma/node_modules/y18n/index.mjs | 8 + mybulma/node_modules/y18n/package.json | 70 + .../node_modules/yargs-parser/CHANGELOG.md | 263 + mybulma/node_modules/yargs-parser/LICENSE.txt | 14 + mybulma/node_modules/yargs-parser/README.md | 518 + mybulma/node_modules/yargs-parser/browser.js | 29 + .../node_modules/yargs-parser/build/index.cjs | 1042 + .../yargs-parser/build/lib/index.js | 59 + .../yargs-parser/build/lib/string-utils.js | 65 + .../build/lib/tokenize-arg-string.js | 40 + .../build/lib/yargs-parser-types.js | 12 + .../yargs-parser/build/lib/yargs-parser.js | 1037 + .../node_modules/yargs-parser/package.json | 87 + mybulma/node_modules/yargs/build/index.cjs | 1 + .../node_modules/yargs/build/lib/argsert.js | 62 + .../node_modules/yargs/build/lib/command.js | 447 + .../yargs/build/lib/completion-templates.js | 48 + .../yargs/build/lib/completion.js | 236 + .../yargs/build/lib/middleware.js | 88 + .../yargs/build/lib/parse-command.js | 32 + .../yargs/build/lib/typings/common-types.js | 9 + .../build/lib/typings/yargs-parser-types.js | 1 + mybulma/node_modules/yargs/build/lib/usage.js | 582 + .../yargs/build/lib/utils/apply-extends.js | 59 + .../yargs/build/lib/utils/is-promise.js | 5 + .../yargs/build/lib/utils/levenshtein.js | 34 + .../build/lib/utils/maybe-async-result.js | 17 + .../yargs/build/lib/utils/obj-filter.js | 10 + .../yargs/build/lib/utils/process-argv.js | 17 + .../yargs/build/lib/utils/set-blocking.js | 12 + .../yargs/build/lib/utils/which-module.js | 10 + .../yargs/build/lib/validation.js | 305 + .../yargs/build/lib/yargs-factory.js | 1501 ++ .../node_modules/yargs/build/lib/yerror.js | 9 + .../node_modules/yargs/helpers/helpers.mjs | 10 + mybulma/node_modules/yargs/helpers/index.js | 14 + .../node_modules/yargs/helpers/package.json | 3 + .../yargs/lib/platform-shims/browser.mjs | 95 + .../yargs/lib/platform-shims/esm.mjs | 73 + mybulma/node_modules/yargs/locales/be.json | 46 + mybulma/node_modules/yargs/locales/cs.json | 51 + mybulma/node_modules/yargs/locales/de.json | 46 + mybulma/node_modules/yargs/locales/en.json | 51 + mybulma/node_modules/yargs/locales/es.json | 46 + mybulma/node_modules/yargs/locales/fi.json | 49 + mybulma/node_modules/yargs/locales/fr.json | 53 + mybulma/node_modules/yargs/locales/hi.json | 49 + mybulma/node_modules/yargs/locales/hu.json | 46 + mybulma/node_modules/yargs/locales/id.json | 50 + mybulma/node_modules/yargs/locales/it.json | 46 + mybulma/node_modules/yargs/locales/ja.json | 51 + mybulma/node_modules/yargs/locales/ko.json | 49 + mybulma/node_modules/yargs/locales/nb.json | 44 + mybulma/node_modules/yargs/locales/nl.json | 49 + mybulma/node_modules/yargs/locales/nn.json | 44 + .../node_modules/yargs/locales/pirate.json | 13 + mybulma/node_modules/yargs/locales/pl.json | 49 + mybulma/node_modules/yargs/locales/pt.json | 45 + mybulma/node_modules/yargs/locales/pt_BR.json | 48 + mybulma/node_modules/yargs/locales/ru.json | 51 + mybulma/node_modules/yargs/locales/th.json | 46 + mybulma/node_modules/yargs/locales/tr.json | 48 + mybulma/node_modules/yargs/locales/uk_UA.json | 51 + mybulma/node_modules/yargs/locales/uz.json | 52 + mybulma/node_modules/yargs/locales/zh_CN.json | 48 + mybulma/node_modules/yargs/locales/zh_TW.json | 51 + .../node_modules/yargs-parser/CHANGELOG.md | 308 + .../node_modules/yargs-parser/LICENSE.txt | 14 + .../yargs/node_modules/yargs-parser/README.md | 518 + .../node_modules/yargs-parser/browser.js | 29 + .../node_modules/yargs-parser/build/index.cjs | 1050 + .../yargs-parser/build/lib/index.js | 62 + .../yargs-parser/build/lib/string-utils.js | 65 + .../build/lib/tokenize-arg-string.js | 40 + .../build/lib/yargs-parser-types.js | 12 + .../yargs-parser/build/lib/yargs-parser.js | 1045 + .../node_modules/yargs-parser/package.json | 92 + mybulma/package-lock.json | 4218 ++++ mybulma/package.json | 20 + mybulma/sass/mystyles.scss | 58 + old.html | 63 + 2616 files changed, 331928 insertions(+), 47 deletions(-) create mode 100644 mybulma/css/mystyles.css create mode 100644 mybulma/node_modules/.bin/color-support create mode 100644 mybulma/node_modules/.bin/mkdirp create mode 100644 mybulma/node_modules/.bin/node-gyp create mode 100644 mybulma/node_modules/.bin/node-sass create mode 100644 mybulma/node_modules/.bin/node-which create mode 100644 mybulma/node_modules/.bin/nopt create mode 100644 mybulma/node_modules/.bin/resolve create mode 100644 mybulma/node_modules/.bin/rimraf create mode 100644 mybulma/node_modules/.bin/sassgraph create mode 100644 mybulma/node_modules/.bin/semver create mode 100644 mybulma/node_modules/.package-lock.json create mode 100644 mybulma/node_modules/@babel/code-frame/LICENSE create mode 100644 mybulma/node_modules/@babel/code-frame/README.md create mode 100644 mybulma/node_modules/@babel/code-frame/lib/index.js create mode 100644 mybulma/node_modules/@babel/code-frame/package.json create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/LICENSE create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/README.md create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js.map create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/package.json create mode 100644 mybulma/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js create mode 100644 mybulma/node_modules/@babel/highlight/LICENSE create mode 100644 mybulma/node_modules/@babel/highlight/README.md create mode 100644 mybulma/node_modules/@babel/highlight/lib/index.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/index.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/license create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/package.json create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js.flow create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/chalk/license create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/chalk/package.json create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/chalk/readme.md create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/chalk/templates.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/chalk/types/index.d.ts create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-convert/CHANGELOG.md create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-convert/LICENSE create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-convert/README.md create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-convert/conversions.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-convert/index.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-convert/package.json create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-convert/route.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-name/.eslintrc.json create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-name/.npmignore create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-name/LICENSE create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-name/README.md create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-name/index.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-name/package.json create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/color-name/test.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/has-flag/index.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/has-flag/license create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/has-flag/package.json create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/has-flag/readme.md create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/supports-color/browser.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/supports-color/index.js create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/supports-color/license create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/supports-color/package.json create mode 100644 mybulma/node_modules/@babel/highlight/node_modules/supports-color/readme.md create mode 100644 mybulma/node_modules/@babel/highlight/package.json create mode 100644 mybulma/node_modules/@gar/promisify/LICENSE.md create mode 100644 mybulma/node_modules/@gar/promisify/README.md create mode 100644 mybulma/node_modules/@gar/promisify/index.js create mode 100644 mybulma/node_modules/@gar/promisify/package.json create mode 100644 mybulma/node_modules/@npmcli/fs/LICENSE.md create mode 100644 mybulma/node_modules/@npmcli/fs/README.md create mode 100644 mybulma/node_modules/@npmcli/fs/lib/common/get-options.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/common/node.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/common/owner-sync.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/common/owner.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/copy-file.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/cp/LICENSE create mode 100644 mybulma/node_modules/@npmcli/fs/lib/cp/index.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/cp/polyfill.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/errors.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/fs.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/index.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/mkdir.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/mkdtemp.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/rm/index.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/rm/polyfill.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/with-owner-sync.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/with-owner.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/with-temp-dir.js create mode 100644 mybulma/node_modules/@npmcli/fs/lib/write-file.js create mode 100644 mybulma/node_modules/@npmcli/fs/package.json create mode 100644 mybulma/node_modules/@npmcli/move-file/LICENSE.md create mode 100644 mybulma/node_modules/@npmcli/move-file/README.md create mode 100644 mybulma/node_modules/@npmcli/move-file/lib/index.js create mode 100644 mybulma/node_modules/@npmcli/move-file/package.json create mode 100644 mybulma/node_modules/@tootallnate/once/LICENSE create mode 100644 mybulma/node_modules/@tootallnate/once/README.md create mode 100644 mybulma/node_modules/@tootallnate/once/dist/index.d.ts create mode 100644 mybulma/node_modules/@tootallnate/once/dist/index.js create mode 100644 mybulma/node_modules/@tootallnate/once/dist/index.js.map create mode 100644 mybulma/node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts create mode 100644 mybulma/node_modules/@tootallnate/once/dist/overloaded-parameters.js create mode 100644 mybulma/node_modules/@tootallnate/once/dist/overloaded-parameters.js.map create mode 100644 mybulma/node_modules/@tootallnate/once/dist/types.d.ts create mode 100644 mybulma/node_modules/@tootallnate/once/dist/types.js create mode 100644 mybulma/node_modules/@tootallnate/once/dist/types.js.map create mode 100644 mybulma/node_modules/@tootallnate/once/package.json create mode 100644 mybulma/node_modules/@types/minimist/LICENSE create mode 100644 mybulma/node_modules/@types/minimist/README.md create mode 100644 mybulma/node_modules/@types/minimist/index.d.ts create mode 100644 mybulma/node_modules/@types/minimist/package.json create mode 100644 mybulma/node_modules/@types/normalize-package-data/LICENSE create mode 100644 mybulma/node_modules/@types/normalize-package-data/README.md create mode 100644 mybulma/node_modules/@types/normalize-package-data/index.d.ts create mode 100644 mybulma/node_modules/@types/normalize-package-data/package.json create mode 100644 mybulma/node_modules/abbrev/LICENSE create mode 100644 mybulma/node_modules/abbrev/README.md create mode 100644 mybulma/node_modules/abbrev/abbrev.js create mode 100644 mybulma/node_modules/abbrev/package.json create mode 100644 mybulma/node_modules/agent-base/README.md create mode 100644 mybulma/node_modules/agent-base/dist/src/index.d.ts create mode 100644 mybulma/node_modules/agent-base/dist/src/index.js create mode 100644 mybulma/node_modules/agent-base/dist/src/index.js.map create mode 100644 mybulma/node_modules/agent-base/dist/src/promisify.d.ts create mode 100644 mybulma/node_modules/agent-base/dist/src/promisify.js create mode 100644 mybulma/node_modules/agent-base/dist/src/promisify.js.map create mode 100644 mybulma/node_modules/agent-base/package.json create mode 100644 mybulma/node_modules/agent-base/src/index.ts create mode 100644 mybulma/node_modules/agent-base/src/promisify.ts create mode 100644 mybulma/node_modules/agentkeepalive/History.md create mode 100644 mybulma/node_modules/agentkeepalive/LICENSE create mode 100644 mybulma/node_modules/agentkeepalive/README.md create mode 100644 mybulma/node_modules/agentkeepalive/browser.js create mode 100644 mybulma/node_modules/agentkeepalive/index.d.ts create mode 100644 mybulma/node_modules/agentkeepalive/index.js create mode 100644 mybulma/node_modules/agentkeepalive/lib/agent.js create mode 100644 mybulma/node_modules/agentkeepalive/lib/constants.js create mode 100644 mybulma/node_modules/agentkeepalive/lib/https_agent.js create mode 100644 mybulma/node_modules/agentkeepalive/package.json create mode 100644 mybulma/node_modules/ansi-regex/index.d.ts create mode 100644 mybulma/node_modules/ansi-regex/index.js create mode 100644 mybulma/node_modules/ansi-regex/license create mode 100644 mybulma/node_modules/ansi-regex/package.json create mode 100644 mybulma/node_modules/ansi-regex/readme.md create mode 100644 mybulma/node_modules/ansi-styles/index.d.ts create mode 100644 mybulma/node_modules/ansi-styles/index.js create mode 100644 mybulma/node_modules/ansi-styles/license create mode 100644 mybulma/node_modules/ansi-styles/package.json create mode 100644 mybulma/node_modules/ansi-styles/readme.md create mode 100644 mybulma/node_modules/are-we-there-yet/LICENSE.md create mode 100644 mybulma/node_modules/are-we-there-yet/README.md create mode 100644 mybulma/node_modules/are-we-there-yet/lib/index.js create mode 100644 mybulma/node_modules/are-we-there-yet/lib/tracker-base.js create mode 100644 mybulma/node_modules/are-we-there-yet/lib/tracker-group.js create mode 100644 mybulma/node_modules/are-we-there-yet/lib/tracker-stream.js create mode 100644 mybulma/node_modules/are-we-there-yet/lib/tracker.js create mode 100644 mybulma/node_modules/are-we-there-yet/package.json create mode 100644 mybulma/node_modules/arrify/index.js create mode 100644 mybulma/node_modules/arrify/license create mode 100644 mybulma/node_modules/arrify/package.json create mode 100644 mybulma/node_modules/arrify/readme.md create mode 100644 mybulma/node_modules/async-foreach/dist/ba-foreach.js create mode 100644 mybulma/node_modules/async-foreach/dist/ba-foreach.min.js create mode 100644 mybulma/node_modules/async-foreach/lib/foreach.js create mode 100644 mybulma/node_modules/async-foreach/test/foreach_test.js create mode 100644 mybulma/node_modules/balanced-match/.github/FUNDING.yml create mode 100644 mybulma/node_modules/balanced-match/LICENSE.md create mode 100644 mybulma/node_modules/balanced-match/README.md create mode 100644 mybulma/node_modules/balanced-match/index.js create mode 100644 mybulma/node_modules/balanced-match/package.json create mode 100644 mybulma/node_modules/bulma-pageloader/CHANGELOG.md create mode 100644 mybulma/node_modules/bulma-pageloader/LICENSE create mode 100644 mybulma/node_modules/bulma-pageloader/README.md create mode 100644 mybulma/node_modules/bulma-pageloader/dist/css/bulma-pageloader.min.css create mode 100644 mybulma/node_modules/bulma-pageloader/dist/css/bulma-pageloader.sass create mode 100644 mybulma/node_modules/bulma-pageloader/package.json create mode 100644 mybulma/node_modules/bulma-pageloader/src/sass/index.sass create mode 100644 mybulma/node_modules/bulma/LICENSE create mode 100644 mybulma/node_modules/bulma/README.md create mode 100644 mybulma/node_modules/bulma/bulma.sass create mode 100644 mybulma/node_modules/bulma/css/bulma-rtl.css create mode 100644 mybulma/node_modules/bulma/css/bulma-rtl.css.map create mode 100644 mybulma/node_modules/bulma/css/bulma-rtl.min.css create mode 100644 mybulma/node_modules/bulma/css/bulma.css create mode 100644 mybulma/node_modules/bulma/css/bulma.css.map create mode 100644 mybulma/node_modules/bulma/css/bulma.min.css create mode 100644 mybulma/node_modules/bulma/package.json create mode 100644 mybulma/node_modules/bulma/sass/base/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/base/animations.sass create mode 100644 mybulma/node_modules/bulma/sass/base/generic.sass create mode 100644 mybulma/node_modules/bulma/sass/base/helpers.sass create mode 100644 mybulma/node_modules/bulma/sass/base/minireset.sass create mode 100644 mybulma/node_modules/bulma/sass/components/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/components/breadcrumb.sass create mode 100644 mybulma/node_modules/bulma/sass/components/card.sass create mode 100644 mybulma/node_modules/bulma/sass/components/dropdown.sass create mode 100644 mybulma/node_modules/bulma/sass/components/level.sass create mode 100644 mybulma/node_modules/bulma/sass/components/media.sass create mode 100644 mybulma/node_modules/bulma/sass/components/menu.sass create mode 100644 mybulma/node_modules/bulma/sass/components/message.sass create mode 100644 mybulma/node_modules/bulma/sass/components/modal.sass create mode 100644 mybulma/node_modules/bulma/sass/components/navbar.sass create mode 100644 mybulma/node_modules/bulma/sass/components/pagination.sass create mode 100644 mybulma/node_modules/bulma/sass/components/panel.sass create mode 100644 mybulma/node_modules/bulma/sass/components/tabs.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/box.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/button.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/container.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/content.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/form.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/icon.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/image.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/notification.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/other.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/progress.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/table.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/tag.sass create mode 100644 mybulma/node_modules/bulma/sass/elements/title.sass create mode 100644 mybulma/node_modules/bulma/sass/form/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/form/checkbox-radio.sass create mode 100644 mybulma/node_modules/bulma/sass/form/file.sass create mode 100644 mybulma/node_modules/bulma/sass/form/input-textarea.sass create mode 100644 mybulma/node_modules/bulma/sass/form/select.sass create mode 100644 mybulma/node_modules/bulma/sass/form/shared.sass create mode 100644 mybulma/node_modules/bulma/sass/form/tools.sass create mode 100644 mybulma/node_modules/bulma/sass/grid/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/grid/columns.sass create mode 100644 mybulma/node_modules/bulma/sass/grid/tiles.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/color.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/flexbox.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/float.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/other.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/overflow.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/position.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/spacing.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/typography.sass create mode 100644 mybulma/node_modules/bulma/sass/helpers/visibility.sass create mode 100644 mybulma/node_modules/bulma/sass/layout/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/layout/footer.sass create mode 100644 mybulma/node_modules/bulma/sass/layout/hero.sass create mode 100644 mybulma/node_modules/bulma/sass/layout/section.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/_all.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/animations.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/controls.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/derived-variables.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/extends.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/functions.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/initial-variables.sass create mode 100644 mybulma/node_modules/bulma/sass/utilities/mixins.sass create mode 100644 mybulma/node_modules/cacache/LICENSE.md create mode 100644 mybulma/node_modules/cacache/README.md create mode 100644 mybulma/node_modules/cacache/lib/content/path.js create mode 100644 mybulma/node_modules/cacache/lib/content/read.js create mode 100644 mybulma/node_modules/cacache/lib/content/rm.js create mode 100644 mybulma/node_modules/cacache/lib/content/write.js create mode 100644 mybulma/node_modules/cacache/lib/entry-index.js create mode 100644 mybulma/node_modules/cacache/lib/get.js create mode 100644 mybulma/node_modules/cacache/lib/index.js create mode 100644 mybulma/node_modules/cacache/lib/memoization.js create mode 100644 mybulma/node_modules/cacache/lib/put.js create mode 100644 mybulma/node_modules/cacache/lib/rm.js create mode 100644 mybulma/node_modules/cacache/lib/util/fix-owner.js create mode 100644 mybulma/node_modules/cacache/lib/util/hash-to-segments.js create mode 100644 mybulma/node_modules/cacache/lib/util/move-file.js create mode 100644 mybulma/node_modules/cacache/lib/util/tmp.js create mode 100644 mybulma/node_modules/cacache/lib/verify.js create mode 100644 mybulma/node_modules/cacache/node_modules/brace-expansion/.github/FUNDING.yml create mode 100644 mybulma/node_modules/cacache/node_modules/brace-expansion/LICENSE create mode 100644 mybulma/node_modules/cacache/node_modules/brace-expansion/README.md create mode 100644 mybulma/node_modules/cacache/node_modules/brace-expansion/index.js create mode 100644 mybulma/node_modules/cacache/node_modules/brace-expansion/package.json create mode 100644 mybulma/node_modules/cacache/node_modules/glob/LICENSE create mode 100644 mybulma/node_modules/cacache/node_modules/glob/README.md create mode 100644 mybulma/node_modules/cacache/node_modules/glob/common.js create mode 100644 mybulma/node_modules/cacache/node_modules/glob/glob.js create mode 100644 mybulma/node_modules/cacache/node_modules/glob/package.json create mode 100644 mybulma/node_modules/cacache/node_modules/glob/sync.js create mode 100644 mybulma/node_modules/cacache/node_modules/minimatch/LICENSE create mode 100644 mybulma/node_modules/cacache/node_modules/minimatch/README.md create mode 100644 mybulma/node_modules/cacache/node_modules/minimatch/lib/path.js create mode 100644 mybulma/node_modules/cacache/node_modules/minimatch/minimatch.js create mode 100644 mybulma/node_modules/cacache/node_modules/minimatch/package.json create mode 100644 mybulma/node_modules/cacache/package.json create mode 100644 mybulma/node_modules/camelcase-keys/index.d.ts create mode 100644 mybulma/node_modules/camelcase-keys/index.js create mode 100644 mybulma/node_modules/camelcase-keys/license create mode 100644 mybulma/node_modules/camelcase-keys/package.json create mode 100644 mybulma/node_modules/camelcase-keys/readme.md create mode 100644 mybulma/node_modules/camelcase/index.d.ts create mode 100644 mybulma/node_modules/camelcase/index.js create mode 100644 mybulma/node_modules/camelcase/license create mode 100644 mybulma/node_modules/camelcase/package.json create mode 100644 mybulma/node_modules/camelcase/readme.md create mode 100644 mybulma/node_modules/chalk/source/index.js create mode 100644 mybulma/node_modules/chalk/source/templates.js create mode 100644 mybulma/node_modules/chalk/source/util.js create mode 100644 mybulma/node_modules/chownr/LICENSE create mode 100644 mybulma/node_modules/chownr/README.md create mode 100644 mybulma/node_modules/chownr/chownr.js create mode 100644 mybulma/node_modules/chownr/package.json create mode 100644 mybulma/node_modules/clean-stack/index.d.ts create mode 100644 mybulma/node_modules/clean-stack/index.js create mode 100644 mybulma/node_modules/clean-stack/license create mode 100644 mybulma/node_modules/clean-stack/package.json create mode 100644 mybulma/node_modules/clean-stack/readme.md create mode 100644 mybulma/node_modules/cliui/CHANGELOG.md create mode 100644 mybulma/node_modules/cliui/LICENSE.txt create mode 100644 mybulma/node_modules/cliui/README.md create mode 100644 mybulma/node_modules/cliui/build/index.cjs create mode 100644 mybulma/node_modules/cliui/build/index.d.cts create mode 100644 mybulma/node_modules/cliui/build/lib/index.js create mode 100644 mybulma/node_modules/cliui/build/lib/string-utils.js create mode 100644 mybulma/node_modules/cliui/index.mjs create mode 100644 mybulma/node_modules/cliui/package.json create mode 100644 mybulma/node_modules/color-convert/CHANGELOG.md create mode 100644 mybulma/node_modules/color-convert/LICENSE create mode 100644 mybulma/node_modules/color-convert/README.md create mode 100644 mybulma/node_modules/color-convert/conversions.js create mode 100644 mybulma/node_modules/color-convert/index.js create mode 100644 mybulma/node_modules/color-convert/package.json create mode 100644 mybulma/node_modules/color-convert/route.js create mode 100644 mybulma/node_modules/color-name/LICENSE create mode 100644 mybulma/node_modules/color-name/README.md create mode 100644 mybulma/node_modules/color-name/index.js create mode 100644 mybulma/node_modules/color-name/package.json create mode 100644 mybulma/node_modules/color-support/LICENSE create mode 100644 mybulma/node_modules/color-support/README.md create mode 100644 mybulma/node_modules/color-support/bin.js create mode 100644 mybulma/node_modules/color-support/browser.js create mode 100644 mybulma/node_modules/color-support/index.js create mode 100644 mybulma/node_modules/color-support/package.json create mode 100644 mybulma/node_modules/concat-map/.travis.yml create mode 100644 mybulma/node_modules/concat-map/LICENSE create mode 100644 mybulma/node_modules/concat-map/README.markdown create mode 100644 mybulma/node_modules/concat-map/example/map.js create mode 100644 mybulma/node_modules/concat-map/index.js create mode 100644 mybulma/node_modules/concat-map/package.json create mode 100644 mybulma/node_modules/concat-map/test/map.js create mode 100644 mybulma/node_modules/core-util-is/lib/util.js create mode 100644 mybulma/node_modules/cross-spawn/CHANGELOG.md create mode 100644 mybulma/node_modules/cross-spawn/LICENSE create mode 100644 mybulma/node_modules/cross-spawn/README.md create mode 100644 mybulma/node_modules/cross-spawn/index.js create mode 100644 mybulma/node_modules/cross-spawn/lib/enoent.js create mode 100644 mybulma/node_modules/cross-spawn/lib/parse.js create mode 100644 mybulma/node_modules/cross-spawn/lib/util/escape.js create mode 100644 mybulma/node_modules/cross-spawn/lib/util/readShebang.js create mode 100644 mybulma/node_modules/cross-spawn/lib/util/resolveCommand.js create mode 100644 mybulma/node_modules/cross-spawn/package.json create mode 100644 mybulma/node_modules/debug/LICENSE create mode 100644 mybulma/node_modules/debug/README.md create mode 100644 mybulma/node_modules/debug/package.json create mode 100644 mybulma/node_modules/debug/src/browser.js create mode 100644 mybulma/node_modules/debug/src/common.js create mode 100644 mybulma/node_modules/debug/src/index.js create mode 100644 mybulma/node_modules/debug/src/node.js create mode 100644 mybulma/node_modules/decamelize-keys/index.js create mode 100644 mybulma/node_modules/decamelize-keys/license create mode 100644 mybulma/node_modules/decamelize-keys/node_modules/map-obj/index.js create mode 100644 mybulma/node_modules/decamelize-keys/node_modules/map-obj/license create mode 100644 mybulma/node_modules/decamelize-keys/node_modules/map-obj/package.json create mode 100644 mybulma/node_modules/decamelize-keys/node_modules/map-obj/readme.md create mode 100644 mybulma/node_modules/decamelize-keys/package.json create mode 100644 mybulma/node_modules/decamelize-keys/readme.md create mode 100644 mybulma/node_modules/delegates/test/index.js create mode 100644 mybulma/node_modules/depd/History.md create mode 100644 mybulma/node_modules/depd/LICENSE create mode 100644 mybulma/node_modules/depd/Readme.md create mode 100644 mybulma/node_modules/depd/index.js create mode 100644 mybulma/node_modules/depd/lib/browser/index.js create mode 100644 mybulma/node_modules/depd/lib/compat/callsite-tostring.js create mode 100644 mybulma/node_modules/depd/lib/compat/event-listener-count.js create mode 100644 mybulma/node_modules/depd/lib/compat/index.js create mode 100644 mybulma/node_modules/depd/package.json create mode 100644 mybulma/node_modules/emoji-regex/es2015/index.js create mode 100644 mybulma/node_modules/emoji-regex/es2015/text.js create mode 100644 mybulma/node_modules/encoding/lib/encoding.js create mode 100644 mybulma/node_modules/encoding/test/test.js create mode 100644 mybulma/node_modules/env-paths/index.d.ts create mode 100644 mybulma/node_modules/env-paths/index.js create mode 100644 mybulma/node_modules/env-paths/license create mode 100644 mybulma/node_modules/env-paths/package.json create mode 100644 mybulma/node_modules/env-paths/readme.md create mode 100644 mybulma/node_modules/err-code/.editorconfig create mode 100644 mybulma/node_modules/err-code/.eslintrc.json create mode 100644 mybulma/node_modules/err-code/.travis.yml create mode 100644 mybulma/node_modules/err-code/README.md create mode 100644 mybulma/node_modules/err-code/bower.json create mode 100644 mybulma/node_modules/err-code/index.js create mode 100644 mybulma/node_modules/err-code/index.umd.js create mode 100644 mybulma/node_modules/err-code/package.json create mode 100644 mybulma/node_modules/err-code/test/.eslintrc.json create mode 100644 mybulma/node_modules/err-code/test/test.js create mode 100644 mybulma/node_modules/error-ex/LICENSE create mode 100644 mybulma/node_modules/error-ex/README.md create mode 100644 mybulma/node_modules/error-ex/index.js create mode 100644 mybulma/node_modules/error-ex/package.json create mode 100644 mybulma/node_modules/escalade/dist/index.js create mode 100644 mybulma/node_modules/escalade/dist/index.mjs create mode 100644 mybulma/node_modules/escalade/sync/index.d.ts create mode 100644 mybulma/node_modules/escalade/sync/index.js create mode 100644 mybulma/node_modules/escalade/sync/index.mjs create mode 100644 mybulma/node_modules/escape-string-regexp/index.js create mode 100644 mybulma/node_modules/escape-string-regexp/license create mode 100644 mybulma/node_modules/escape-string-regexp/package.json create mode 100644 mybulma/node_modules/escape-string-regexp/readme.md create mode 100644 mybulma/node_modules/find-up/index.d.ts create mode 100644 mybulma/node_modules/find-up/index.js create mode 100644 mybulma/node_modules/find-up/license create mode 100644 mybulma/node_modules/find-up/package.json create mode 100644 mybulma/node_modules/find-up/readme.md create mode 100644 mybulma/node_modules/fs.realpath/LICENSE create mode 100644 mybulma/node_modules/fs.realpath/README.md create mode 100644 mybulma/node_modules/fs.realpath/index.js create mode 100644 mybulma/node_modules/fs.realpath/old.js create mode 100644 mybulma/node_modules/fs.realpath/package.json create mode 100644 mybulma/node_modules/function-bind/.editorconfig create mode 100644 mybulma/node_modules/function-bind/.eslintrc create mode 100644 mybulma/node_modules/function-bind/.jscs.json create mode 100644 mybulma/node_modules/function-bind/.npmignore create mode 100644 mybulma/node_modules/function-bind/.travis.yml create mode 100644 mybulma/node_modules/function-bind/LICENSE create mode 100644 mybulma/node_modules/function-bind/README.md create mode 100644 mybulma/node_modules/function-bind/implementation.js create mode 100644 mybulma/node_modules/function-bind/index.js create mode 100644 mybulma/node_modules/function-bind/package.json create mode 100644 mybulma/node_modules/function-bind/test/.eslintrc create mode 100644 mybulma/node_modules/function-bind/test/index.js create mode 100644 mybulma/node_modules/gauge/LICENSE.md create mode 100644 mybulma/node_modules/gauge/lib/base-theme.js create mode 100644 mybulma/node_modules/gauge/lib/error.js create mode 100644 mybulma/node_modules/gauge/lib/has-color.js create mode 100644 mybulma/node_modules/gauge/lib/index.js create mode 100644 mybulma/node_modules/gauge/lib/plumbing.js create mode 100644 mybulma/node_modules/gauge/lib/process.js create mode 100644 mybulma/node_modules/gauge/lib/progress-bar.js create mode 100644 mybulma/node_modules/gauge/lib/render-template.js create mode 100644 mybulma/node_modules/gauge/lib/set-immediate.js create mode 100644 mybulma/node_modules/gauge/lib/set-interval.js create mode 100644 mybulma/node_modules/gauge/lib/spin.js create mode 100644 mybulma/node_modules/gauge/lib/template-item.js create mode 100644 mybulma/node_modules/gauge/lib/theme-set.js create mode 100644 mybulma/node_modules/gauge/lib/themes.js create mode 100644 mybulma/node_modules/gauge/lib/wide-truncate.js create mode 100644 mybulma/node_modules/gaze/lib/gaze.js create mode 100644 mybulma/node_modules/gaze/lib/helper.js create mode 100644 mybulma/node_modules/get-stdin/index.js create mode 100644 mybulma/node_modules/get-stdin/package.json create mode 100644 mybulma/node_modules/get-stdin/readme.md create mode 100644 mybulma/node_modules/globule/LICENSE create mode 100644 mybulma/node_modules/globule/README.md create mode 100644 mybulma/node_modules/globule/lib/globule.js create mode 100644 mybulma/node_modules/globule/node_modules/glob/LICENSE create mode 100644 mybulma/node_modules/globule/node_modules/glob/README.md create mode 100644 mybulma/node_modules/globule/node_modules/glob/changelog.md create mode 100644 mybulma/node_modules/globule/node_modules/glob/common.js create mode 100644 mybulma/node_modules/globule/node_modules/glob/glob.js create mode 100644 mybulma/node_modules/globule/node_modules/glob/package.json create mode 100644 mybulma/node_modules/globule/node_modules/glob/sync.js create mode 100644 mybulma/node_modules/globule/node_modules/minimatch/LICENSE create mode 100644 mybulma/node_modules/globule/node_modules/minimatch/README.md create mode 100644 mybulma/node_modules/globule/node_modules/minimatch/minimatch.js create mode 100644 mybulma/node_modules/globule/node_modules/minimatch/package.json create mode 100644 mybulma/node_modules/globule/package.json create mode 100644 mybulma/node_modules/graceful-fs/LICENSE create mode 100644 mybulma/node_modules/graceful-fs/README.md create mode 100644 mybulma/node_modules/graceful-fs/clone.js create mode 100644 mybulma/node_modules/graceful-fs/graceful-fs.js create mode 100644 mybulma/node_modules/graceful-fs/legacy-streams.js create mode 100644 mybulma/node_modules/graceful-fs/package.json create mode 100644 mybulma/node_modules/graceful-fs/polyfills.js create mode 100644 mybulma/node_modules/hard-rejection/index.d.ts create mode 100644 mybulma/node_modules/hard-rejection/index.js create mode 100644 mybulma/node_modules/hard-rejection/license create mode 100644 mybulma/node_modules/hard-rejection/package.json create mode 100644 mybulma/node_modules/hard-rejection/readme.md create mode 100644 mybulma/node_modules/hard-rejection/register.js create mode 100644 mybulma/node_modules/has-flag/index.d.ts create mode 100644 mybulma/node_modules/has-flag/index.js create mode 100644 mybulma/node_modules/has-flag/license create mode 100644 mybulma/node_modules/has-flag/package.json create mode 100644 mybulma/node_modules/has-flag/readme.md create mode 100644 mybulma/node_modules/has-unicode/LICENSE create mode 100644 mybulma/node_modules/has-unicode/README.md create mode 100644 mybulma/node_modules/has-unicode/index.js create mode 100644 mybulma/node_modules/has-unicode/package.json create mode 100644 mybulma/node_modules/has/src/index.js create mode 100644 mybulma/node_modules/has/test/index.js create mode 100644 mybulma/node_modules/hosted-git-info/node_modules/lru-cache/LICENSE create mode 100644 mybulma/node_modules/hosted-git-info/node_modules/lru-cache/README.md create mode 100644 mybulma/node_modules/hosted-git-info/node_modules/lru-cache/index.js create mode 100644 mybulma/node_modules/hosted-git-info/node_modules/lru-cache/package.json create mode 100644 mybulma/node_modules/http-cache-semantics/LICENSE create mode 100644 mybulma/node_modules/http-cache-semantics/README.md create mode 100644 mybulma/node_modules/http-cache-semantics/index.js create mode 100644 mybulma/node_modules/http-cache-semantics/package.json create mode 100644 mybulma/node_modules/http-proxy-agent/README.md create mode 100644 mybulma/node_modules/http-proxy-agent/dist/agent.d.ts create mode 100644 mybulma/node_modules/http-proxy-agent/dist/agent.js create mode 100644 mybulma/node_modules/http-proxy-agent/dist/agent.js.map create mode 100644 mybulma/node_modules/http-proxy-agent/dist/index.d.ts create mode 100644 mybulma/node_modules/http-proxy-agent/dist/index.js create mode 100644 mybulma/node_modules/http-proxy-agent/dist/index.js.map create mode 100644 mybulma/node_modules/http-proxy-agent/package.json create mode 100644 mybulma/node_modules/https-proxy-agent/README.md create mode 100644 mybulma/node_modules/https-proxy-agent/dist/agent.d.ts create mode 100644 mybulma/node_modules/https-proxy-agent/dist/agent.js create mode 100644 mybulma/node_modules/https-proxy-agent/dist/agent.js.map create mode 100644 mybulma/node_modules/https-proxy-agent/dist/index.d.ts create mode 100644 mybulma/node_modules/https-proxy-agent/dist/index.js create mode 100644 mybulma/node_modules/https-proxy-agent/dist/index.js.map create mode 100644 mybulma/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts create mode 100644 mybulma/node_modules/https-proxy-agent/dist/parse-proxy-response.js create mode 100644 mybulma/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map create mode 100644 mybulma/node_modules/https-proxy-agent/package.json create mode 100644 mybulma/node_modules/humanize-ms/History.md create mode 100644 mybulma/node_modules/humanize-ms/LICENSE create mode 100644 mybulma/node_modules/humanize-ms/README.md create mode 100644 mybulma/node_modules/humanize-ms/index.js create mode 100644 mybulma/node_modules/humanize-ms/package.json create mode 100644 mybulma/node_modules/iconv-lite/.github/dependabot.yml create mode 100644 mybulma/node_modules/iconv-lite/.idea/codeStyles/Project.xml create mode 100644 mybulma/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml create mode 100644 mybulma/node_modules/iconv-lite/.idea/iconv-lite.iml create mode 100644 mybulma/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml create mode 100644 mybulma/node_modules/iconv-lite/.idea/modules.xml create mode 100644 mybulma/node_modules/iconv-lite/.idea/vcs.xml create mode 100644 mybulma/node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/index.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/internal.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 mybulma/node_modules/iconv-lite/encodings/utf16.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/utf32.js create mode 100644 mybulma/node_modules/iconv-lite/encodings/utf7.js create mode 100644 mybulma/node_modules/iconv-lite/lib/bom-handling.js create mode 100644 mybulma/node_modules/iconv-lite/lib/index.d.ts create mode 100644 mybulma/node_modules/iconv-lite/lib/index.js create mode 100644 mybulma/node_modules/iconv-lite/lib/streams.js create mode 100644 mybulma/node_modules/imurmurhash/README.md create mode 100644 mybulma/node_modules/imurmurhash/imurmurhash.js create mode 100644 mybulma/node_modules/imurmurhash/imurmurhash.min.js create mode 100644 mybulma/node_modules/imurmurhash/package.json create mode 100644 mybulma/node_modules/inflight/LICENSE create mode 100644 mybulma/node_modules/inflight/README.md create mode 100644 mybulma/node_modules/inflight/inflight.js create mode 100644 mybulma/node_modules/inflight/package.json create mode 100644 mybulma/node_modules/ip/README.md create mode 100644 mybulma/node_modules/ip/lib/ip.js create mode 100644 mybulma/node_modules/ip/package.json create mode 100644 mybulma/node_modules/is-core-module/test/index.js create mode 100644 mybulma/node_modules/is-fullwidth-code-point/index.d.ts create mode 100644 mybulma/node_modules/is-fullwidth-code-point/index.js create mode 100644 mybulma/node_modules/is-fullwidth-code-point/license create mode 100644 mybulma/node_modules/is-fullwidth-code-point/package.json create mode 100644 mybulma/node_modules/is-fullwidth-code-point/readme.md create mode 100644 mybulma/node_modules/isexe/.npmignore create mode 100644 mybulma/node_modules/isexe/LICENSE create mode 100644 mybulma/node_modules/isexe/README.md create mode 100644 mybulma/node_modules/isexe/index.js create mode 100644 mybulma/node_modules/isexe/mode.js create mode 100644 mybulma/node_modules/isexe/package.json create mode 100644 mybulma/node_modules/isexe/test/basic.js create mode 100644 mybulma/node_modules/isexe/windows.js create mode 100644 mybulma/node_modules/js-tokens/CHANGELOG.md create mode 100644 mybulma/node_modules/js-tokens/LICENSE create mode 100644 mybulma/node_modules/js-tokens/README.md create mode 100644 mybulma/node_modules/js-tokens/index.js create mode 100644 mybulma/node_modules/js-tokens/package.json create mode 100644 mybulma/node_modules/lines-and-columns/build/index.d.ts create mode 100644 mybulma/node_modules/lines-and-columns/build/index.js create mode 100644 mybulma/node_modules/lodash/LICENSE create mode 100644 mybulma/node_modules/lodash/README.md create mode 100644 mybulma/node_modules/lodash/_DataView.js create mode 100644 mybulma/node_modules/lodash/_Hash.js create mode 100644 mybulma/node_modules/lodash/_LazyWrapper.js create mode 100644 mybulma/node_modules/lodash/_ListCache.js create mode 100644 mybulma/node_modules/lodash/_LodashWrapper.js create mode 100644 mybulma/node_modules/lodash/_Map.js create mode 100644 mybulma/node_modules/lodash/_MapCache.js create mode 100644 mybulma/node_modules/lodash/_Promise.js create mode 100644 mybulma/node_modules/lodash/_Set.js create mode 100644 mybulma/node_modules/lodash/_SetCache.js create mode 100644 mybulma/node_modules/lodash/_Stack.js create mode 100644 mybulma/node_modules/lodash/_Symbol.js create mode 100644 mybulma/node_modules/lodash/_Uint8Array.js create mode 100644 mybulma/node_modules/lodash/_WeakMap.js create mode 100644 mybulma/node_modules/lodash/_apply.js create mode 100644 mybulma/node_modules/lodash/_arrayAggregator.js create mode 100644 mybulma/node_modules/lodash/_arrayEach.js create mode 100644 mybulma/node_modules/lodash/_arrayEachRight.js create mode 100644 mybulma/node_modules/lodash/_arrayEvery.js create mode 100644 mybulma/node_modules/lodash/_arrayFilter.js create mode 100644 mybulma/node_modules/lodash/_arrayIncludes.js create mode 100644 mybulma/node_modules/lodash/_arrayIncludesWith.js create mode 100644 mybulma/node_modules/lodash/_arrayLikeKeys.js create mode 100644 mybulma/node_modules/lodash/_arrayMap.js create mode 100644 mybulma/node_modules/lodash/_arrayPush.js create mode 100644 mybulma/node_modules/lodash/_arrayReduce.js create mode 100644 mybulma/node_modules/lodash/_arrayReduceRight.js create mode 100644 mybulma/node_modules/lodash/_arraySample.js create mode 100644 mybulma/node_modules/lodash/_arraySampleSize.js create mode 100644 mybulma/node_modules/lodash/_arrayShuffle.js create mode 100644 mybulma/node_modules/lodash/_arraySome.js create mode 100644 mybulma/node_modules/lodash/_asciiSize.js create mode 100644 mybulma/node_modules/lodash/_asciiToArray.js create mode 100644 mybulma/node_modules/lodash/_asciiWords.js create mode 100644 mybulma/node_modules/lodash/_assignMergeValue.js create mode 100644 mybulma/node_modules/lodash/_assignValue.js create mode 100644 mybulma/node_modules/lodash/_assocIndexOf.js create mode 100644 mybulma/node_modules/lodash/_baseAggregator.js create mode 100644 mybulma/node_modules/lodash/_baseAssign.js create mode 100644 mybulma/node_modules/lodash/_baseAssignIn.js create mode 100644 mybulma/node_modules/lodash/_baseAssignValue.js create mode 100644 mybulma/node_modules/lodash/_baseAt.js create mode 100644 mybulma/node_modules/lodash/_baseClamp.js create mode 100644 mybulma/node_modules/lodash/_baseClone.js create mode 100644 mybulma/node_modules/lodash/_baseConforms.js create mode 100644 mybulma/node_modules/lodash/_baseConformsTo.js create mode 100644 mybulma/node_modules/lodash/_baseCreate.js create mode 100644 mybulma/node_modules/lodash/_baseDelay.js create mode 100644 mybulma/node_modules/lodash/_baseDifference.js create mode 100644 mybulma/node_modules/lodash/_baseEach.js create mode 100644 mybulma/node_modules/lodash/_baseEachRight.js create mode 100644 mybulma/node_modules/lodash/_baseEvery.js create mode 100644 mybulma/node_modules/lodash/_baseExtremum.js create mode 100644 mybulma/node_modules/lodash/_baseFill.js create mode 100644 mybulma/node_modules/lodash/_baseFilter.js create mode 100644 mybulma/node_modules/lodash/_baseFindIndex.js create mode 100644 mybulma/node_modules/lodash/_baseFindKey.js create mode 100644 mybulma/node_modules/lodash/_baseFlatten.js create mode 100644 mybulma/node_modules/lodash/_baseFor.js create mode 100644 mybulma/node_modules/lodash/_baseForOwn.js create mode 100644 mybulma/node_modules/lodash/_baseForOwnRight.js create mode 100644 mybulma/node_modules/lodash/_baseForRight.js create mode 100644 mybulma/node_modules/lodash/_baseFunctions.js create mode 100644 mybulma/node_modules/lodash/_baseGet.js create mode 100644 mybulma/node_modules/lodash/_baseGetAllKeys.js create mode 100644 mybulma/node_modules/lodash/_baseGetTag.js create mode 100644 mybulma/node_modules/lodash/_baseGt.js create mode 100644 mybulma/node_modules/lodash/_baseHas.js create mode 100644 mybulma/node_modules/lodash/_baseHasIn.js create mode 100644 mybulma/node_modules/lodash/_baseInRange.js create mode 100644 mybulma/node_modules/lodash/_baseIndexOf.js create mode 100644 mybulma/node_modules/lodash/_baseIndexOfWith.js create mode 100644 mybulma/node_modules/lodash/_baseIntersection.js create mode 100644 mybulma/node_modules/lodash/_baseInverter.js create mode 100644 mybulma/node_modules/lodash/_baseInvoke.js create mode 100644 mybulma/node_modules/lodash/_baseIsArguments.js create mode 100644 mybulma/node_modules/lodash/_baseIsArrayBuffer.js create mode 100644 mybulma/node_modules/lodash/_baseIsDate.js create mode 100644 mybulma/node_modules/lodash/_baseIsEqual.js create mode 100644 mybulma/node_modules/lodash/_baseIsEqualDeep.js create mode 100644 mybulma/node_modules/lodash/_baseIsMap.js create mode 100644 mybulma/node_modules/lodash/_baseIsMatch.js create mode 100644 mybulma/node_modules/lodash/_baseIsNaN.js create mode 100644 mybulma/node_modules/lodash/_baseIsNative.js create mode 100644 mybulma/node_modules/lodash/_baseIsRegExp.js create mode 100644 mybulma/node_modules/lodash/_baseIsSet.js create mode 100644 mybulma/node_modules/lodash/_baseIsTypedArray.js create mode 100644 mybulma/node_modules/lodash/_baseIteratee.js create mode 100644 mybulma/node_modules/lodash/_baseKeys.js create mode 100644 mybulma/node_modules/lodash/_baseKeysIn.js create mode 100644 mybulma/node_modules/lodash/_baseLodash.js create mode 100644 mybulma/node_modules/lodash/_baseLt.js create mode 100644 mybulma/node_modules/lodash/_baseMap.js create mode 100644 mybulma/node_modules/lodash/_baseMatches.js create mode 100644 mybulma/node_modules/lodash/_baseMatchesProperty.js create mode 100644 mybulma/node_modules/lodash/_baseMean.js create mode 100644 mybulma/node_modules/lodash/_baseMerge.js create mode 100644 mybulma/node_modules/lodash/_baseMergeDeep.js create mode 100644 mybulma/node_modules/lodash/_baseNth.js create mode 100644 mybulma/node_modules/lodash/_baseOrderBy.js create mode 100644 mybulma/node_modules/lodash/_basePick.js create mode 100644 mybulma/node_modules/lodash/_basePickBy.js create mode 100644 mybulma/node_modules/lodash/_baseProperty.js create mode 100644 mybulma/node_modules/lodash/_basePropertyDeep.js create mode 100644 mybulma/node_modules/lodash/_basePropertyOf.js create mode 100644 mybulma/node_modules/lodash/_basePullAll.js create mode 100644 mybulma/node_modules/lodash/_basePullAt.js create mode 100644 mybulma/node_modules/lodash/_baseRandom.js create mode 100644 mybulma/node_modules/lodash/_baseRange.js create mode 100644 mybulma/node_modules/lodash/_baseReduce.js create mode 100644 mybulma/node_modules/lodash/_baseRepeat.js create mode 100644 mybulma/node_modules/lodash/_baseRest.js create mode 100644 mybulma/node_modules/lodash/_baseSample.js create mode 100644 mybulma/node_modules/lodash/_baseSampleSize.js create mode 100644 mybulma/node_modules/lodash/_baseSet.js create mode 100644 mybulma/node_modules/lodash/_baseSetData.js create mode 100644 mybulma/node_modules/lodash/_baseSetToString.js create mode 100644 mybulma/node_modules/lodash/_baseShuffle.js create mode 100644 mybulma/node_modules/lodash/_baseSlice.js create mode 100644 mybulma/node_modules/lodash/_baseSome.js create mode 100644 mybulma/node_modules/lodash/_baseSortBy.js create mode 100644 mybulma/node_modules/lodash/_baseSortedIndex.js create mode 100644 mybulma/node_modules/lodash/_baseSortedIndexBy.js create mode 100644 mybulma/node_modules/lodash/_baseSortedUniq.js create mode 100644 mybulma/node_modules/lodash/_baseSum.js create mode 100644 mybulma/node_modules/lodash/_baseTimes.js create mode 100644 mybulma/node_modules/lodash/_baseToNumber.js create mode 100644 mybulma/node_modules/lodash/_baseToPairs.js create mode 100644 mybulma/node_modules/lodash/_baseToString.js create mode 100644 mybulma/node_modules/lodash/_baseTrim.js create mode 100644 mybulma/node_modules/lodash/_baseUnary.js create mode 100644 mybulma/node_modules/lodash/_baseUniq.js create mode 100644 mybulma/node_modules/lodash/_baseUnset.js create mode 100644 mybulma/node_modules/lodash/_baseUpdate.js create mode 100644 mybulma/node_modules/lodash/_baseValues.js create mode 100644 mybulma/node_modules/lodash/_baseWhile.js create mode 100644 mybulma/node_modules/lodash/_baseWrapperValue.js create mode 100644 mybulma/node_modules/lodash/_baseXor.js create mode 100644 mybulma/node_modules/lodash/_baseZipObject.js create mode 100644 mybulma/node_modules/lodash/_cacheHas.js create mode 100644 mybulma/node_modules/lodash/_castArrayLikeObject.js create mode 100644 mybulma/node_modules/lodash/_castFunction.js create mode 100644 mybulma/node_modules/lodash/_castPath.js create mode 100644 mybulma/node_modules/lodash/_castRest.js create mode 100644 mybulma/node_modules/lodash/_castSlice.js create mode 100644 mybulma/node_modules/lodash/_charsEndIndex.js create mode 100644 mybulma/node_modules/lodash/_charsStartIndex.js create mode 100644 mybulma/node_modules/lodash/_cloneArrayBuffer.js create mode 100644 mybulma/node_modules/lodash/_cloneBuffer.js create mode 100644 mybulma/node_modules/lodash/_cloneDataView.js create mode 100644 mybulma/node_modules/lodash/_cloneRegExp.js create mode 100644 mybulma/node_modules/lodash/_cloneSymbol.js create mode 100644 mybulma/node_modules/lodash/_cloneTypedArray.js create mode 100644 mybulma/node_modules/lodash/_compareAscending.js create mode 100644 mybulma/node_modules/lodash/_compareMultiple.js create mode 100644 mybulma/node_modules/lodash/_composeArgs.js create mode 100644 mybulma/node_modules/lodash/_composeArgsRight.js create mode 100644 mybulma/node_modules/lodash/_copyArray.js create mode 100644 mybulma/node_modules/lodash/_copyObject.js create mode 100644 mybulma/node_modules/lodash/_copySymbols.js create mode 100644 mybulma/node_modules/lodash/_copySymbolsIn.js create mode 100644 mybulma/node_modules/lodash/_coreJsData.js create mode 100644 mybulma/node_modules/lodash/_countHolders.js create mode 100644 mybulma/node_modules/lodash/_createAggregator.js create mode 100644 mybulma/node_modules/lodash/_createAssigner.js create mode 100644 mybulma/node_modules/lodash/_createBaseEach.js create mode 100644 mybulma/node_modules/lodash/_createBaseFor.js create mode 100644 mybulma/node_modules/lodash/_createBind.js create mode 100644 mybulma/node_modules/lodash/_createCaseFirst.js create mode 100644 mybulma/node_modules/lodash/_createCompounder.js create mode 100644 mybulma/node_modules/lodash/_createCtor.js create mode 100644 mybulma/node_modules/lodash/_createCurry.js create mode 100644 mybulma/node_modules/lodash/_createFind.js create mode 100644 mybulma/node_modules/lodash/_createFlow.js create mode 100644 mybulma/node_modules/lodash/_createHybrid.js create mode 100644 mybulma/node_modules/lodash/_createInverter.js create mode 100644 mybulma/node_modules/lodash/_createMathOperation.js create mode 100644 mybulma/node_modules/lodash/_createOver.js create mode 100644 mybulma/node_modules/lodash/_createPadding.js create mode 100644 mybulma/node_modules/lodash/_createPartial.js create mode 100644 mybulma/node_modules/lodash/_createRange.js create mode 100644 mybulma/node_modules/lodash/_createRecurry.js create mode 100644 mybulma/node_modules/lodash/_createRelationalOperation.js create mode 100644 mybulma/node_modules/lodash/_createRound.js create mode 100644 mybulma/node_modules/lodash/_createSet.js create mode 100644 mybulma/node_modules/lodash/_createToPairs.js create mode 100644 mybulma/node_modules/lodash/_createWrap.js create mode 100644 mybulma/node_modules/lodash/_customDefaultsAssignIn.js create mode 100644 mybulma/node_modules/lodash/_customDefaultsMerge.js create mode 100644 mybulma/node_modules/lodash/_customOmitClone.js create mode 100644 mybulma/node_modules/lodash/_deburrLetter.js create mode 100644 mybulma/node_modules/lodash/_defineProperty.js create mode 100644 mybulma/node_modules/lodash/_equalArrays.js create mode 100644 mybulma/node_modules/lodash/_equalByTag.js create mode 100644 mybulma/node_modules/lodash/_equalObjects.js create mode 100644 mybulma/node_modules/lodash/_escapeHtmlChar.js create mode 100644 mybulma/node_modules/lodash/_escapeStringChar.js create mode 100644 mybulma/node_modules/lodash/_flatRest.js create mode 100644 mybulma/node_modules/lodash/_freeGlobal.js create mode 100644 mybulma/node_modules/lodash/_getAllKeys.js create mode 100644 mybulma/node_modules/lodash/_getAllKeysIn.js create mode 100644 mybulma/node_modules/lodash/_getData.js create mode 100644 mybulma/node_modules/lodash/_getFuncName.js create mode 100644 mybulma/node_modules/lodash/_getHolder.js create mode 100644 mybulma/node_modules/lodash/_getMapData.js create mode 100644 mybulma/node_modules/lodash/_getMatchData.js create mode 100644 mybulma/node_modules/lodash/_getNative.js create mode 100644 mybulma/node_modules/lodash/_getPrototype.js create mode 100644 mybulma/node_modules/lodash/_getRawTag.js create mode 100644 mybulma/node_modules/lodash/_getSymbols.js create mode 100644 mybulma/node_modules/lodash/_getSymbolsIn.js create mode 100644 mybulma/node_modules/lodash/_getTag.js create mode 100644 mybulma/node_modules/lodash/_getValue.js create mode 100644 mybulma/node_modules/lodash/_getView.js create mode 100644 mybulma/node_modules/lodash/_getWrapDetails.js create mode 100644 mybulma/node_modules/lodash/_hasPath.js create mode 100644 mybulma/node_modules/lodash/_hasUnicode.js create mode 100644 mybulma/node_modules/lodash/_hasUnicodeWord.js create mode 100644 mybulma/node_modules/lodash/_hashClear.js create mode 100644 mybulma/node_modules/lodash/_hashDelete.js create mode 100644 mybulma/node_modules/lodash/_hashGet.js create mode 100644 mybulma/node_modules/lodash/_hashHas.js create mode 100644 mybulma/node_modules/lodash/_hashSet.js create mode 100644 mybulma/node_modules/lodash/_initCloneArray.js create mode 100644 mybulma/node_modules/lodash/_initCloneByTag.js create mode 100644 mybulma/node_modules/lodash/_initCloneObject.js create mode 100644 mybulma/node_modules/lodash/_insertWrapDetails.js create mode 100644 mybulma/node_modules/lodash/_isFlattenable.js create mode 100644 mybulma/node_modules/lodash/_isIndex.js create mode 100644 mybulma/node_modules/lodash/_isIterateeCall.js create mode 100644 mybulma/node_modules/lodash/_isKey.js create mode 100644 mybulma/node_modules/lodash/_isKeyable.js create mode 100644 mybulma/node_modules/lodash/_isLaziable.js create mode 100644 mybulma/node_modules/lodash/_isMaskable.js create mode 100644 mybulma/node_modules/lodash/_isMasked.js create mode 100644 mybulma/node_modules/lodash/_isPrototype.js create mode 100644 mybulma/node_modules/lodash/_isStrictComparable.js create mode 100644 mybulma/node_modules/lodash/_iteratorToArray.js create mode 100644 mybulma/node_modules/lodash/_lazyClone.js create mode 100644 mybulma/node_modules/lodash/_lazyReverse.js create mode 100644 mybulma/node_modules/lodash/_lazyValue.js create mode 100644 mybulma/node_modules/lodash/_listCacheClear.js create mode 100644 mybulma/node_modules/lodash/_listCacheDelete.js create mode 100644 mybulma/node_modules/lodash/_listCacheGet.js create mode 100644 mybulma/node_modules/lodash/_listCacheHas.js create mode 100644 mybulma/node_modules/lodash/_listCacheSet.js create mode 100644 mybulma/node_modules/lodash/_mapCacheClear.js create mode 100644 mybulma/node_modules/lodash/_mapCacheDelete.js create mode 100644 mybulma/node_modules/lodash/_mapCacheGet.js create mode 100644 mybulma/node_modules/lodash/_mapCacheHas.js create mode 100644 mybulma/node_modules/lodash/_mapCacheSet.js create mode 100644 mybulma/node_modules/lodash/_mapToArray.js create mode 100644 mybulma/node_modules/lodash/_matchesStrictComparable.js create mode 100644 mybulma/node_modules/lodash/_memoizeCapped.js create mode 100644 mybulma/node_modules/lodash/_mergeData.js create mode 100644 mybulma/node_modules/lodash/_metaMap.js create mode 100644 mybulma/node_modules/lodash/_nativeCreate.js create mode 100644 mybulma/node_modules/lodash/_nativeKeys.js create mode 100644 mybulma/node_modules/lodash/_nativeKeysIn.js create mode 100644 mybulma/node_modules/lodash/_nodeUtil.js create mode 100644 mybulma/node_modules/lodash/_objectToString.js create mode 100644 mybulma/node_modules/lodash/_overArg.js create mode 100644 mybulma/node_modules/lodash/_overRest.js create mode 100644 mybulma/node_modules/lodash/_parent.js create mode 100644 mybulma/node_modules/lodash/_reEscape.js create mode 100644 mybulma/node_modules/lodash/_reEvaluate.js create mode 100644 mybulma/node_modules/lodash/_reInterpolate.js create mode 100644 mybulma/node_modules/lodash/_realNames.js create mode 100644 mybulma/node_modules/lodash/_reorder.js create mode 100644 mybulma/node_modules/lodash/_replaceHolders.js create mode 100644 mybulma/node_modules/lodash/_root.js create mode 100644 mybulma/node_modules/lodash/_safeGet.js create mode 100644 mybulma/node_modules/lodash/_setCacheAdd.js create mode 100644 mybulma/node_modules/lodash/_setCacheHas.js create mode 100644 mybulma/node_modules/lodash/_setData.js create mode 100644 mybulma/node_modules/lodash/_setToArray.js create mode 100644 mybulma/node_modules/lodash/_setToPairs.js create mode 100644 mybulma/node_modules/lodash/_setToString.js create mode 100644 mybulma/node_modules/lodash/_setWrapToString.js create mode 100644 mybulma/node_modules/lodash/_shortOut.js create mode 100644 mybulma/node_modules/lodash/_shuffleSelf.js create mode 100644 mybulma/node_modules/lodash/_stackClear.js create mode 100644 mybulma/node_modules/lodash/_stackDelete.js create mode 100644 mybulma/node_modules/lodash/_stackGet.js create mode 100644 mybulma/node_modules/lodash/_stackHas.js create mode 100644 mybulma/node_modules/lodash/_stackSet.js create mode 100644 mybulma/node_modules/lodash/_strictIndexOf.js create mode 100644 mybulma/node_modules/lodash/_strictLastIndexOf.js create mode 100644 mybulma/node_modules/lodash/_stringSize.js create mode 100644 mybulma/node_modules/lodash/_stringToArray.js create mode 100644 mybulma/node_modules/lodash/_stringToPath.js create mode 100644 mybulma/node_modules/lodash/_toKey.js create mode 100644 mybulma/node_modules/lodash/_toSource.js create mode 100644 mybulma/node_modules/lodash/_trimmedEndIndex.js create mode 100644 mybulma/node_modules/lodash/_unescapeHtmlChar.js create mode 100644 mybulma/node_modules/lodash/_unicodeSize.js create mode 100644 mybulma/node_modules/lodash/_unicodeToArray.js create mode 100644 mybulma/node_modules/lodash/_unicodeWords.js create mode 100644 mybulma/node_modules/lodash/_updateWrapDetails.js create mode 100644 mybulma/node_modules/lodash/_wrapperClone.js create mode 100644 mybulma/node_modules/lodash/add.js create mode 100644 mybulma/node_modules/lodash/after.js create mode 100644 mybulma/node_modules/lodash/array.js create mode 100644 mybulma/node_modules/lodash/ary.js create mode 100644 mybulma/node_modules/lodash/assign.js create mode 100644 mybulma/node_modules/lodash/assignIn.js create mode 100644 mybulma/node_modules/lodash/assignInWith.js create mode 100644 mybulma/node_modules/lodash/assignWith.js create mode 100644 mybulma/node_modules/lodash/at.js create mode 100644 mybulma/node_modules/lodash/attempt.js create mode 100644 mybulma/node_modules/lodash/before.js create mode 100644 mybulma/node_modules/lodash/bind.js create mode 100644 mybulma/node_modules/lodash/bindAll.js create mode 100644 mybulma/node_modules/lodash/bindKey.js create mode 100644 mybulma/node_modules/lodash/camelCase.js create mode 100644 mybulma/node_modules/lodash/capitalize.js create mode 100644 mybulma/node_modules/lodash/castArray.js create mode 100644 mybulma/node_modules/lodash/ceil.js create mode 100644 mybulma/node_modules/lodash/chain.js create mode 100644 mybulma/node_modules/lodash/chunk.js create mode 100644 mybulma/node_modules/lodash/clamp.js create mode 100644 mybulma/node_modules/lodash/clone.js create mode 100644 mybulma/node_modules/lodash/cloneDeep.js create mode 100644 mybulma/node_modules/lodash/cloneDeepWith.js create mode 100644 mybulma/node_modules/lodash/cloneWith.js create mode 100644 mybulma/node_modules/lodash/collection.js create mode 100644 mybulma/node_modules/lodash/commit.js create mode 100644 mybulma/node_modules/lodash/compact.js create mode 100644 mybulma/node_modules/lodash/concat.js create mode 100644 mybulma/node_modules/lodash/cond.js create mode 100644 mybulma/node_modules/lodash/conforms.js create mode 100644 mybulma/node_modules/lodash/conformsTo.js create mode 100644 mybulma/node_modules/lodash/constant.js create mode 100644 mybulma/node_modules/lodash/core.js create mode 100644 mybulma/node_modules/lodash/core.min.js create mode 100644 mybulma/node_modules/lodash/countBy.js create mode 100644 mybulma/node_modules/lodash/create.js create mode 100644 mybulma/node_modules/lodash/curry.js create mode 100644 mybulma/node_modules/lodash/curryRight.js create mode 100644 mybulma/node_modules/lodash/date.js create mode 100644 mybulma/node_modules/lodash/debounce.js create mode 100644 mybulma/node_modules/lodash/deburr.js create mode 100644 mybulma/node_modules/lodash/defaultTo.js create mode 100644 mybulma/node_modules/lodash/defaults.js create mode 100644 mybulma/node_modules/lodash/defaultsDeep.js create mode 100644 mybulma/node_modules/lodash/defer.js create mode 100644 mybulma/node_modules/lodash/delay.js create mode 100644 mybulma/node_modules/lodash/difference.js create mode 100644 mybulma/node_modules/lodash/differenceBy.js create mode 100644 mybulma/node_modules/lodash/differenceWith.js create mode 100644 mybulma/node_modules/lodash/divide.js create mode 100644 mybulma/node_modules/lodash/drop.js create mode 100644 mybulma/node_modules/lodash/dropRight.js create mode 100644 mybulma/node_modules/lodash/dropRightWhile.js create mode 100644 mybulma/node_modules/lodash/dropWhile.js create mode 100644 mybulma/node_modules/lodash/each.js create mode 100644 mybulma/node_modules/lodash/eachRight.js create mode 100644 mybulma/node_modules/lodash/endsWith.js create mode 100644 mybulma/node_modules/lodash/entries.js create mode 100644 mybulma/node_modules/lodash/entriesIn.js create mode 100644 mybulma/node_modules/lodash/eq.js create mode 100644 mybulma/node_modules/lodash/escape.js create mode 100644 mybulma/node_modules/lodash/escapeRegExp.js create mode 100644 mybulma/node_modules/lodash/every.js create mode 100644 mybulma/node_modules/lodash/extend.js create mode 100644 mybulma/node_modules/lodash/extendWith.js create mode 100644 mybulma/node_modules/lodash/fill.js create mode 100644 mybulma/node_modules/lodash/filter.js create mode 100644 mybulma/node_modules/lodash/find.js create mode 100644 mybulma/node_modules/lodash/findIndex.js create mode 100644 mybulma/node_modules/lodash/findKey.js create mode 100644 mybulma/node_modules/lodash/findLast.js create mode 100644 mybulma/node_modules/lodash/findLastIndex.js create mode 100644 mybulma/node_modules/lodash/findLastKey.js create mode 100644 mybulma/node_modules/lodash/first.js create mode 100644 mybulma/node_modules/lodash/flake.lock create mode 100644 mybulma/node_modules/lodash/flake.nix create mode 100644 mybulma/node_modules/lodash/flatMap.js create mode 100644 mybulma/node_modules/lodash/flatMapDeep.js create mode 100644 mybulma/node_modules/lodash/flatMapDepth.js create mode 100644 mybulma/node_modules/lodash/flatten.js create mode 100644 mybulma/node_modules/lodash/flattenDeep.js create mode 100644 mybulma/node_modules/lodash/flattenDepth.js create mode 100644 mybulma/node_modules/lodash/flip.js create mode 100644 mybulma/node_modules/lodash/floor.js create mode 100644 mybulma/node_modules/lodash/flow.js create mode 100644 mybulma/node_modules/lodash/flowRight.js create mode 100644 mybulma/node_modules/lodash/forEach.js create mode 100644 mybulma/node_modules/lodash/forEachRight.js create mode 100644 mybulma/node_modules/lodash/forIn.js create mode 100644 mybulma/node_modules/lodash/forInRight.js create mode 100644 mybulma/node_modules/lodash/forOwn.js create mode 100644 mybulma/node_modules/lodash/forOwnRight.js create mode 100644 mybulma/node_modules/lodash/fp.js create mode 100644 mybulma/node_modules/lodash/fromPairs.js create mode 100644 mybulma/node_modules/lodash/function.js create mode 100644 mybulma/node_modules/lodash/functions.js create mode 100644 mybulma/node_modules/lodash/functionsIn.js create mode 100644 mybulma/node_modules/lodash/get.js create mode 100644 mybulma/node_modules/lodash/groupBy.js create mode 100644 mybulma/node_modules/lodash/gt.js create mode 100644 mybulma/node_modules/lodash/gte.js create mode 100644 mybulma/node_modules/lodash/has.js create mode 100644 mybulma/node_modules/lodash/hasIn.js create mode 100644 mybulma/node_modules/lodash/head.js create mode 100644 mybulma/node_modules/lodash/identity.js create mode 100644 mybulma/node_modules/lodash/inRange.js create mode 100644 mybulma/node_modules/lodash/includes.js create mode 100644 mybulma/node_modules/lodash/index.js create mode 100644 mybulma/node_modules/lodash/indexOf.js create mode 100644 mybulma/node_modules/lodash/initial.js create mode 100644 mybulma/node_modules/lodash/intersection.js create mode 100644 mybulma/node_modules/lodash/intersectionBy.js create mode 100644 mybulma/node_modules/lodash/intersectionWith.js create mode 100644 mybulma/node_modules/lodash/invert.js create mode 100644 mybulma/node_modules/lodash/invertBy.js create mode 100644 mybulma/node_modules/lodash/invoke.js create mode 100644 mybulma/node_modules/lodash/invokeMap.js create mode 100644 mybulma/node_modules/lodash/isArguments.js create mode 100644 mybulma/node_modules/lodash/isArray.js create mode 100644 mybulma/node_modules/lodash/isArrayBuffer.js create mode 100644 mybulma/node_modules/lodash/isArrayLike.js create mode 100644 mybulma/node_modules/lodash/isArrayLikeObject.js create mode 100644 mybulma/node_modules/lodash/isBoolean.js create mode 100644 mybulma/node_modules/lodash/isBuffer.js create mode 100644 mybulma/node_modules/lodash/isDate.js create mode 100644 mybulma/node_modules/lodash/isElement.js create mode 100644 mybulma/node_modules/lodash/isEmpty.js create mode 100644 mybulma/node_modules/lodash/isEqual.js create mode 100644 mybulma/node_modules/lodash/isEqualWith.js create mode 100644 mybulma/node_modules/lodash/isError.js create mode 100644 mybulma/node_modules/lodash/isFinite.js create mode 100644 mybulma/node_modules/lodash/isFunction.js create mode 100644 mybulma/node_modules/lodash/isInteger.js create mode 100644 mybulma/node_modules/lodash/isLength.js create mode 100644 mybulma/node_modules/lodash/isMap.js create mode 100644 mybulma/node_modules/lodash/isMatch.js create mode 100644 mybulma/node_modules/lodash/isMatchWith.js create mode 100644 mybulma/node_modules/lodash/isNaN.js create mode 100644 mybulma/node_modules/lodash/isNative.js create mode 100644 mybulma/node_modules/lodash/isNil.js create mode 100644 mybulma/node_modules/lodash/isNull.js create mode 100644 mybulma/node_modules/lodash/isNumber.js create mode 100644 mybulma/node_modules/lodash/isObject.js create mode 100644 mybulma/node_modules/lodash/isObjectLike.js create mode 100644 mybulma/node_modules/lodash/isPlainObject.js create mode 100644 mybulma/node_modules/lodash/isRegExp.js create mode 100644 mybulma/node_modules/lodash/isSafeInteger.js create mode 100644 mybulma/node_modules/lodash/isSet.js create mode 100644 mybulma/node_modules/lodash/isString.js create mode 100644 mybulma/node_modules/lodash/isSymbol.js create mode 100644 mybulma/node_modules/lodash/isTypedArray.js create mode 100644 mybulma/node_modules/lodash/isUndefined.js create mode 100644 mybulma/node_modules/lodash/isWeakMap.js create mode 100644 mybulma/node_modules/lodash/isWeakSet.js create mode 100644 mybulma/node_modules/lodash/iteratee.js create mode 100644 mybulma/node_modules/lodash/join.js create mode 100644 mybulma/node_modules/lodash/kebabCase.js create mode 100644 mybulma/node_modules/lodash/keyBy.js create mode 100644 mybulma/node_modules/lodash/keys.js create mode 100644 mybulma/node_modules/lodash/keysIn.js create mode 100644 mybulma/node_modules/lodash/lang.js create mode 100644 mybulma/node_modules/lodash/last.js create mode 100644 mybulma/node_modules/lodash/lastIndexOf.js create mode 100644 mybulma/node_modules/lodash/lodash.js create mode 100644 mybulma/node_modules/lodash/lodash.min.js create mode 100644 mybulma/node_modules/lodash/lowerCase.js create mode 100644 mybulma/node_modules/lodash/lowerFirst.js create mode 100644 mybulma/node_modules/lodash/lt.js create mode 100644 mybulma/node_modules/lodash/lte.js create mode 100644 mybulma/node_modules/lodash/map.js create mode 100644 mybulma/node_modules/lodash/mapKeys.js create mode 100644 mybulma/node_modules/lodash/mapValues.js create mode 100644 mybulma/node_modules/lodash/matches.js create mode 100644 mybulma/node_modules/lodash/matchesProperty.js create mode 100644 mybulma/node_modules/lodash/math.js create mode 100644 mybulma/node_modules/lodash/max.js create mode 100644 mybulma/node_modules/lodash/maxBy.js create mode 100644 mybulma/node_modules/lodash/mean.js create mode 100644 mybulma/node_modules/lodash/meanBy.js create mode 100644 mybulma/node_modules/lodash/memoize.js create mode 100644 mybulma/node_modules/lodash/merge.js create mode 100644 mybulma/node_modules/lodash/mergeWith.js create mode 100644 mybulma/node_modules/lodash/method.js create mode 100644 mybulma/node_modules/lodash/methodOf.js create mode 100644 mybulma/node_modules/lodash/min.js create mode 100644 mybulma/node_modules/lodash/minBy.js create mode 100644 mybulma/node_modules/lodash/mixin.js create mode 100644 mybulma/node_modules/lodash/multiply.js create mode 100644 mybulma/node_modules/lodash/negate.js create mode 100644 mybulma/node_modules/lodash/next.js create mode 100644 mybulma/node_modules/lodash/noop.js create mode 100644 mybulma/node_modules/lodash/now.js create mode 100644 mybulma/node_modules/lodash/nth.js create mode 100644 mybulma/node_modules/lodash/nthArg.js create mode 100644 mybulma/node_modules/lodash/number.js create mode 100644 mybulma/node_modules/lodash/object.js create mode 100644 mybulma/node_modules/lodash/omit.js create mode 100644 mybulma/node_modules/lodash/omitBy.js create mode 100644 mybulma/node_modules/lodash/once.js create mode 100644 mybulma/node_modules/lodash/orderBy.js create mode 100644 mybulma/node_modules/lodash/over.js create mode 100644 mybulma/node_modules/lodash/overArgs.js create mode 100644 mybulma/node_modules/lodash/overEvery.js create mode 100644 mybulma/node_modules/lodash/overSome.js create mode 100644 mybulma/node_modules/lodash/package.json create mode 100644 mybulma/node_modules/lodash/pad.js create mode 100644 mybulma/node_modules/lodash/padEnd.js create mode 100644 mybulma/node_modules/lodash/padStart.js create mode 100644 mybulma/node_modules/lodash/parseInt.js create mode 100644 mybulma/node_modules/lodash/partial.js create mode 100644 mybulma/node_modules/lodash/partialRight.js create mode 100644 mybulma/node_modules/lodash/partition.js create mode 100644 mybulma/node_modules/lodash/pick.js create mode 100644 mybulma/node_modules/lodash/pickBy.js create mode 100644 mybulma/node_modules/lodash/plant.js create mode 100644 mybulma/node_modules/lodash/property.js create mode 100644 mybulma/node_modules/lodash/propertyOf.js create mode 100644 mybulma/node_modules/lodash/pull.js create mode 100644 mybulma/node_modules/lodash/pullAll.js create mode 100644 mybulma/node_modules/lodash/pullAllBy.js create mode 100644 mybulma/node_modules/lodash/pullAllWith.js create mode 100644 mybulma/node_modules/lodash/pullAt.js create mode 100644 mybulma/node_modules/lodash/random.js create mode 100644 mybulma/node_modules/lodash/range.js create mode 100644 mybulma/node_modules/lodash/rangeRight.js create mode 100644 mybulma/node_modules/lodash/rearg.js create mode 100644 mybulma/node_modules/lodash/reduce.js create mode 100644 mybulma/node_modules/lodash/reduceRight.js create mode 100644 mybulma/node_modules/lodash/reject.js create mode 100644 mybulma/node_modules/lodash/release.md create mode 100644 mybulma/node_modules/lodash/remove.js create mode 100644 mybulma/node_modules/lodash/repeat.js create mode 100644 mybulma/node_modules/lodash/replace.js create mode 100644 mybulma/node_modules/lodash/rest.js create mode 100644 mybulma/node_modules/lodash/result.js create mode 100644 mybulma/node_modules/lodash/reverse.js create mode 100644 mybulma/node_modules/lodash/round.js create mode 100644 mybulma/node_modules/lodash/sample.js create mode 100644 mybulma/node_modules/lodash/sampleSize.js create mode 100644 mybulma/node_modules/lodash/seq.js create mode 100644 mybulma/node_modules/lodash/set.js create mode 100644 mybulma/node_modules/lodash/setWith.js create mode 100644 mybulma/node_modules/lodash/shuffle.js create mode 100644 mybulma/node_modules/lodash/size.js create mode 100644 mybulma/node_modules/lodash/slice.js create mode 100644 mybulma/node_modules/lodash/snakeCase.js create mode 100644 mybulma/node_modules/lodash/some.js create mode 100644 mybulma/node_modules/lodash/sortBy.js create mode 100644 mybulma/node_modules/lodash/sortedIndex.js create mode 100644 mybulma/node_modules/lodash/sortedIndexBy.js create mode 100644 mybulma/node_modules/lodash/sortedIndexOf.js create mode 100644 mybulma/node_modules/lodash/sortedLastIndex.js create mode 100644 mybulma/node_modules/lodash/sortedLastIndexBy.js create mode 100644 mybulma/node_modules/lodash/sortedLastIndexOf.js create mode 100644 mybulma/node_modules/lodash/sortedUniq.js create mode 100644 mybulma/node_modules/lodash/sortedUniqBy.js create mode 100644 mybulma/node_modules/lodash/split.js create mode 100644 mybulma/node_modules/lodash/spread.js create mode 100644 mybulma/node_modules/lodash/startCase.js create mode 100644 mybulma/node_modules/lodash/startsWith.js create mode 100644 mybulma/node_modules/lodash/string.js create mode 100644 mybulma/node_modules/lodash/stubArray.js create mode 100644 mybulma/node_modules/lodash/stubFalse.js create mode 100644 mybulma/node_modules/lodash/stubObject.js create mode 100644 mybulma/node_modules/lodash/stubString.js create mode 100644 mybulma/node_modules/lodash/stubTrue.js create mode 100644 mybulma/node_modules/lodash/subtract.js create mode 100644 mybulma/node_modules/lodash/sum.js create mode 100644 mybulma/node_modules/lodash/sumBy.js create mode 100644 mybulma/node_modules/lodash/tail.js create mode 100644 mybulma/node_modules/lodash/take.js create mode 100644 mybulma/node_modules/lodash/takeRight.js create mode 100644 mybulma/node_modules/lodash/takeRightWhile.js create mode 100644 mybulma/node_modules/lodash/takeWhile.js create mode 100644 mybulma/node_modules/lodash/tap.js create mode 100644 mybulma/node_modules/lodash/template.js create mode 100644 mybulma/node_modules/lodash/templateSettings.js create mode 100644 mybulma/node_modules/lodash/throttle.js create mode 100644 mybulma/node_modules/lodash/thru.js create mode 100644 mybulma/node_modules/lodash/times.js create mode 100644 mybulma/node_modules/lodash/toArray.js create mode 100644 mybulma/node_modules/lodash/toFinite.js create mode 100644 mybulma/node_modules/lodash/toInteger.js create mode 100644 mybulma/node_modules/lodash/toIterator.js create mode 100644 mybulma/node_modules/lodash/toJSON.js create mode 100644 mybulma/node_modules/lodash/toLength.js create mode 100644 mybulma/node_modules/lodash/toLower.js create mode 100644 mybulma/node_modules/lodash/toNumber.js create mode 100644 mybulma/node_modules/lodash/toPairs.js create mode 100644 mybulma/node_modules/lodash/toPairsIn.js create mode 100644 mybulma/node_modules/lodash/toPath.js create mode 100644 mybulma/node_modules/lodash/toPlainObject.js create mode 100644 mybulma/node_modules/lodash/toSafeInteger.js create mode 100644 mybulma/node_modules/lodash/toString.js create mode 100644 mybulma/node_modules/lodash/toUpper.js create mode 100644 mybulma/node_modules/lodash/transform.js create mode 100644 mybulma/node_modules/lodash/trim.js create mode 100644 mybulma/node_modules/lodash/trimEnd.js create mode 100644 mybulma/node_modules/lodash/trimStart.js create mode 100644 mybulma/node_modules/lodash/truncate.js create mode 100644 mybulma/node_modules/lodash/unary.js create mode 100644 mybulma/node_modules/lodash/unescape.js create mode 100644 mybulma/node_modules/lodash/union.js create mode 100644 mybulma/node_modules/lodash/unionBy.js create mode 100644 mybulma/node_modules/lodash/unionWith.js create mode 100644 mybulma/node_modules/lodash/uniq.js create mode 100644 mybulma/node_modules/lodash/uniqBy.js create mode 100644 mybulma/node_modules/lodash/uniqWith.js create mode 100644 mybulma/node_modules/lodash/uniqueId.js create mode 100644 mybulma/node_modules/lodash/unset.js create mode 100644 mybulma/node_modules/lodash/unzip.js create mode 100644 mybulma/node_modules/lodash/unzipWith.js create mode 100644 mybulma/node_modules/lodash/update.js create mode 100644 mybulma/node_modules/lodash/updateWith.js create mode 100644 mybulma/node_modules/lodash/upperCase.js create mode 100644 mybulma/node_modules/lodash/upperFirst.js create mode 100644 mybulma/node_modules/lodash/util.js create mode 100644 mybulma/node_modules/lodash/value.js create mode 100644 mybulma/node_modules/lodash/valueOf.js create mode 100644 mybulma/node_modules/lodash/values.js create mode 100644 mybulma/node_modules/lodash/valuesIn.js create mode 100644 mybulma/node_modules/lodash/without.js create mode 100644 mybulma/node_modules/lodash/words.js create mode 100644 mybulma/node_modules/lodash/wrap.js create mode 100644 mybulma/node_modules/lodash/wrapperAt.js create mode 100644 mybulma/node_modules/lodash/wrapperChain.js create mode 100644 mybulma/node_modules/lodash/wrapperLodash.js create mode 100644 mybulma/node_modules/lodash/wrapperReverse.js create mode 100644 mybulma/node_modules/lodash/wrapperValue.js create mode 100644 mybulma/node_modules/lodash/xor.js create mode 100644 mybulma/node_modules/lodash/xorBy.js create mode 100644 mybulma/node_modules/lodash/xorWith.js create mode 100644 mybulma/node_modules/lodash/zip.js create mode 100644 mybulma/node_modules/lodash/zipObject.js create mode 100644 mybulma/node_modules/lodash/zipObjectDeep.js create mode 100644 mybulma/node_modules/lodash/zipWith.js create mode 100644 mybulma/node_modules/lru-cache/LICENSE create mode 100644 mybulma/node_modules/lru-cache/README.md create mode 100644 mybulma/node_modules/lru-cache/index.d.ts create mode 100644 mybulma/node_modules/lru-cache/index.js create mode 100644 mybulma/node_modules/lru-cache/package.json create mode 100644 mybulma/node_modules/make-fetch-happen/lib/agent.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/cache/entry.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/cache/errors.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/cache/index.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/cache/key.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/cache/policy.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/dns.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/fetch.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/index.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/options.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/pipeline.js create mode 100644 mybulma/node_modules/make-fetch-happen/lib/remote.js create mode 100644 mybulma/node_modules/map-obj/index.d.ts create mode 100644 mybulma/node_modules/map-obj/index.js create mode 100644 mybulma/node_modules/map-obj/license create mode 100644 mybulma/node_modules/map-obj/package.json create mode 100644 mybulma/node_modules/map-obj/readme.md create mode 100644 mybulma/node_modules/meow/index.d.ts create mode 100644 mybulma/node_modules/meow/index.js create mode 100644 mybulma/node_modules/meow/license create mode 100644 mybulma/node_modules/meow/package.json create mode 100644 mybulma/node_modules/meow/readme.md create mode 100644 mybulma/node_modules/minimatch/LICENSE create mode 100644 mybulma/node_modules/minimatch/README.md create mode 100644 mybulma/node_modules/minimatch/minimatch.js create mode 100644 mybulma/node_modules/minimatch/package.json create mode 100644 mybulma/node_modules/minimist-options/index.d.ts create mode 100644 mybulma/node_modules/minimist-options/index.js create mode 100644 mybulma/node_modules/minimist-options/license create mode 100644 mybulma/node_modules/minimist-options/package.json create mode 100644 mybulma/node_modules/minimist-options/readme.md create mode 100644 mybulma/node_modules/minipass-collect/LICENSE create mode 100644 mybulma/node_modules/minipass-collect/README.md create mode 100644 mybulma/node_modules/minipass-collect/index.js create mode 100644 mybulma/node_modules/minipass-collect/package.json create mode 100644 mybulma/node_modules/minipass-fetch/LICENSE create mode 100644 mybulma/node_modules/minipass-fetch/README.md create mode 100644 mybulma/node_modules/minipass-fetch/lib/abort-error.js create mode 100644 mybulma/node_modules/minipass-fetch/lib/blob.js create mode 100644 mybulma/node_modules/minipass-fetch/lib/body.js create mode 100644 mybulma/node_modules/minipass-fetch/lib/fetch-error.js create mode 100644 mybulma/node_modules/minipass-fetch/lib/headers.js create mode 100644 mybulma/node_modules/minipass-fetch/lib/index.js create mode 100644 mybulma/node_modules/minipass-fetch/lib/request.js create mode 100644 mybulma/node_modules/minipass-fetch/lib/response.js create mode 100644 mybulma/node_modules/minipass-fetch/package.json create mode 100644 mybulma/node_modules/minipass-flush/LICENSE create mode 100644 mybulma/node_modules/minipass-flush/README.md create mode 100644 mybulma/node_modules/minipass-flush/index.js create mode 100644 mybulma/node_modules/minipass-flush/package.json create mode 100644 mybulma/node_modules/minipass-pipeline/LICENSE create mode 100644 mybulma/node_modules/minipass-pipeline/README.md create mode 100644 mybulma/node_modules/minipass-pipeline/index.js create mode 100644 mybulma/node_modules/minipass-pipeline/package.json create mode 100644 mybulma/node_modules/minipass-sized/.npmignore create mode 100644 mybulma/node_modules/minipass-sized/LICENSE create mode 100644 mybulma/node_modules/minipass-sized/README.md create mode 100644 mybulma/node_modules/minipass-sized/index.js create mode 100644 mybulma/node_modules/minipass-sized/package-lock.json create mode 100644 mybulma/node_modules/minipass-sized/package.json create mode 100644 mybulma/node_modules/minipass-sized/test/basic.js create mode 100644 mybulma/node_modules/minipass/LICENSE create mode 100644 mybulma/node_modules/minipass/README.md create mode 100644 mybulma/node_modules/minipass/index.d.ts create mode 100644 mybulma/node_modules/minipass/index.js create mode 100644 mybulma/node_modules/minipass/package.json create mode 100644 mybulma/node_modules/minizlib/LICENSE create mode 100644 mybulma/node_modules/minizlib/README.md create mode 100644 mybulma/node_modules/minizlib/constants.js create mode 100644 mybulma/node_modules/minizlib/index.js create mode 100644 mybulma/node_modules/minizlib/package.json create mode 100644 mybulma/node_modules/mkdirp/bin/cmd.js create mode 100644 mybulma/node_modules/mkdirp/lib/find-made.js create mode 100644 mybulma/node_modules/mkdirp/lib/mkdirp-manual.js create mode 100644 mybulma/node_modules/mkdirp/lib/mkdirp-native.js create mode 100644 mybulma/node_modules/mkdirp/lib/opts-arg.js create mode 100644 mybulma/node_modules/mkdirp/lib/path-arg.js create mode 100644 mybulma/node_modules/mkdirp/lib/use-native.js create mode 100644 mybulma/node_modules/ms/index.js create mode 100644 mybulma/node_modules/ms/license.md create mode 100644 mybulma/node_modules/ms/package.json create mode 100644 mybulma/node_modules/ms/readme.md create mode 100644 mybulma/node_modules/nan/CHANGELOG.md create mode 100644 mybulma/node_modules/nan/LICENSE.md create mode 100644 mybulma/node_modules/nan/README.md create mode 100644 mybulma/node_modules/nan/doc/asyncworker.md create mode 100644 mybulma/node_modules/nan/doc/buffers.md create mode 100644 mybulma/node_modules/nan/doc/callback.md create mode 100644 mybulma/node_modules/nan/doc/converters.md create mode 100644 mybulma/node_modules/nan/doc/errors.md create mode 100644 mybulma/node_modules/nan/doc/json.md create mode 100644 mybulma/node_modules/nan/doc/maybe_types.md create mode 100644 mybulma/node_modules/nan/doc/methods.md create mode 100644 mybulma/node_modules/nan/doc/new.md create mode 100644 mybulma/node_modules/nan/doc/node_misc.md create mode 100644 mybulma/node_modules/nan/doc/object_wrappers.md create mode 100644 mybulma/node_modules/nan/doc/persistent.md create mode 100644 mybulma/node_modules/nan/doc/scopes.md create mode 100644 mybulma/node_modules/nan/doc/script.md create mode 100644 mybulma/node_modules/nan/doc/string_bytes.md create mode 100644 mybulma/node_modules/nan/doc/v8_internals.md create mode 100644 mybulma/node_modules/nan/doc/v8_misc.md create mode 100644 mybulma/node_modules/nan/include_dirs.js create mode 100644 mybulma/node_modules/nan/nan_callbacks.h create mode 100644 mybulma/node_modules/nan/nan_callbacks_12_inl.h create mode 100644 mybulma/node_modules/nan/nan_callbacks_pre_12_inl.h create mode 100644 mybulma/node_modules/nan/nan_converters.h create mode 100644 mybulma/node_modules/nan/nan_converters_43_inl.h create mode 100644 mybulma/node_modules/nan/nan_converters_pre_43_inl.h create mode 100644 mybulma/node_modules/nan/nan_define_own_property_helper.h create mode 100644 mybulma/node_modules/nan/nan_implementation_12_inl.h create mode 100644 mybulma/node_modules/nan/nan_implementation_pre_12_inl.h create mode 100644 mybulma/node_modules/nan/nan_json.h create mode 100644 mybulma/node_modules/nan/nan_maybe_43_inl.h create mode 100644 mybulma/node_modules/nan/nan_maybe_pre_43_inl.h create mode 100644 mybulma/node_modules/nan/nan_new.h create mode 100644 mybulma/node_modules/nan/nan_object_wrap.h create mode 100644 mybulma/node_modules/nan/nan_persistent_12_inl.h create mode 100644 mybulma/node_modules/nan/nan_persistent_pre_12_inl.h create mode 100644 mybulma/node_modules/nan/nan_private.h create mode 100644 mybulma/node_modules/nan/nan_scriptorigin.h create mode 100644 mybulma/node_modules/nan/nan_string_bytes.h create mode 100644 mybulma/node_modules/nan/nan_typedarray_contents.h create mode 100644 mybulma/node_modules/nan/nan_weak.h create mode 100644 mybulma/node_modules/nan/package.json create mode 100644 mybulma/node_modules/nan/tools/1to2.js create mode 100644 mybulma/node_modules/nan/tools/README.md create mode 100644 mybulma/node_modules/nan/tools/package.json create mode 100644 mybulma/node_modules/negotiator/lib/charset.js create mode 100644 mybulma/node_modules/negotiator/lib/encoding.js create mode 100644 mybulma/node_modules/negotiator/lib/language.js create mode 100644 mybulma/node_modules/negotiator/lib/mediaType.js create mode 100644 mybulma/node_modules/node-gyp/.github/ISSUE_TEMPLATE.md create mode 100644 mybulma/node_modules/node-gyp/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 mybulma/node_modules/node-gyp/.github/workflows/release-please.yml create mode 100644 mybulma/node_modules/node-gyp/.github/workflows/tests.yml create mode 100644 mybulma/node_modules/node-gyp/.github/workflows/visual-studio.yml create mode 100644 mybulma/node_modules/node-gyp/CHANGELOG.md create mode 100644 mybulma/node_modules/node-gyp/bin/node-gyp.js create mode 100644 mybulma/node_modules/node-gyp/docs/Common-issues.md create mode 100644 mybulma/node_modules/node-gyp/docs/Error-pre-versions-of-node-cannot-be-installed.md create mode 100644 mybulma/node_modules/node-gyp/docs/Home.md create mode 100644 mybulma/node_modules/node-gyp/docs/Linking-to-OpenSSL.md create mode 100644 mybulma/node_modules/node-gyp/docs/Updating-npm-bundled-node-gyp.md create mode 100644 mybulma/node_modules/node-gyp/docs/binding.gyp-files-in-the-wild.md create mode 100644 mybulma/node_modules/node-gyp/gyp/.flake8 create mode 100644 mybulma/node_modules/node-gyp/gyp/.github/workflows/Python_tests.yml create mode 100644 mybulma/node_modules/node-gyp/gyp/.github/workflows/node-gyp.yml create mode 100644 mybulma/node_modules/node-gyp/gyp/.github/workflows/nodejs-windows.yml create mode 100644 mybulma/node_modules/node-gyp/gyp/.github/workflows/release-please.yml create mode 100644 mybulma/node_modules/node-gyp/gyp/AUTHORS create mode 100644 mybulma/node_modules/node-gyp/gyp/CHANGELOG.md create mode 100644 mybulma/node_modules/node-gyp/gyp/CODE_OF_CONDUCT.md create mode 100644 mybulma/node_modules/node-gyp/gyp/CONTRIBUTING.md create mode 100644 mybulma/node_modules/node-gyp/gyp/LICENSE create mode 100644 mybulma/node_modules/node-gyp/gyp/README.md create mode 100644 mybulma/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc create mode 100644 mybulma/node_modules/node-gyp/gyp/gyp create mode 100644 mybulma/node_modules/node-gyp/gyp/gyp.bat create mode 100644 mybulma/node_modules/node-gyp/gyp/gyp_main.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/__init__.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/common.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/common_test.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/input.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/input_test.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py create mode 100644 mybulma/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py create mode 100644 mybulma/node_modules/node-gyp/gyp/requirements_dev.txt create mode 100644 mybulma/node_modules/node-gyp/gyp/setup.py create mode 100644 mybulma/node_modules/node-gyp/gyp/test_gyp.py create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/README create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/Xcode/README create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.pbfilespec create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/emacs/README create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/emacs/gyp-tests.el create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/emacs/gyp.el create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/emacs/run-unit-tests.sh create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/graphviz.py create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/pretty_gyp.py create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/pretty_sln.py create mode 100644 mybulma/node_modules/node-gyp/gyp/tools/pretty_vcproj.py create mode 100644 mybulma/node_modules/node-gyp/lib/Find-VisualStudio.cs create mode 100644 mybulma/node_modules/node-gyp/lib/build.js create mode 100644 mybulma/node_modules/node-gyp/lib/clean.js create mode 100644 mybulma/node_modules/node-gyp/lib/configure.js create mode 100644 mybulma/node_modules/node-gyp/lib/create-config-gypi.js create mode 100644 mybulma/node_modules/node-gyp/lib/find-node-directory.js create mode 100644 mybulma/node_modules/node-gyp/lib/find-python.js create mode 100644 mybulma/node_modules/node-gyp/lib/find-visualstudio.js create mode 100644 mybulma/node_modules/node-gyp/lib/install.js create mode 100644 mybulma/node_modules/node-gyp/lib/list.js create mode 100644 mybulma/node_modules/node-gyp/lib/node-gyp.js create mode 100644 mybulma/node_modules/node-gyp/lib/process-release.js create mode 100644 mybulma/node_modules/node-gyp/lib/rebuild.js create mode 100644 mybulma/node_modules/node-gyp/lib/remove.js create mode 100644 mybulma/node_modules/node-gyp/lib/util.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/LICENSE.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/common/file-url-to-path/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/common/file-url-to-path/polyfill.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/common/get-options.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/common/node.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/common/owner.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/copy-file.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/cp/LICENSE create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/cp/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/cp/polyfill.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/errors.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/fs.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/mkdir/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/mkdir/polyfill.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/mkdtemp.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/rm/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/rm/polyfill.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/with-temp-dir.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/lib/write-file.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/fs/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/move-file/LICENSE.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/move-file/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/move-file/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@npmcli/move-file/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/@tootallnate/once/dist/index.d.ts create mode 100644 mybulma/node_modules/node-gyp/node_modules/@tootallnate/once/dist/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/@tootallnate/once/dist/index.js.map create mode 100644 mybulma/node_modules/node-gyp/node_modules/@tootallnate/once/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/LICENSE.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/get.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/content/path.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/content/read.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/content/rm.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/content/write.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/entry-index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/memoization.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/util/disposer.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/util/fix-owner.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/util/hash-to-segments.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/util/move-file.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/util/tmp.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/lib/verify.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/ls.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/put.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/rm.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/cacache/verify.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/dist/agent.d.ts create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/dist/agent.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/dist/agent.js.map create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/dist/index.d.ts create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/dist/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/dist/index.js.map create mode 100644 mybulma/node_modules/node-gyp/node_modules/http-proxy-agent/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/lru-cache/LICENSE create mode 100644 mybulma/node_modules/node-gyp/node_modules/lru-cache/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/lru-cache/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/lru-cache/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/LICENSE create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/agent.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/entry.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/errors.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/key.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/policy.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/fetch.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/options.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/lib/remote.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/make-fetch-happen/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/LICENSE create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/abort-error.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/blob.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/body.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/fetch-error.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/headers.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/request.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/lib/response.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/minipass-fetch/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/socks-proxy-agent/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/socks-proxy-agent/dist/index.d.ts create mode 100644 mybulma/node_modules/node-gyp/node_modules/socks-proxy-agent/dist/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/socks-proxy-agent/dist/index.js.map create mode 100644 mybulma/node_modules/node-gyp/node_modules/socks-proxy-agent/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/ssri/CHANGELOG.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/ssri/LICENSE.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/ssri/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/ssri/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/ssri/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/.nyc_output/54942.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/.nyc_output/54944.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/LICENSE create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/__root__/index.html create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/__root__/index.js.html create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/base.css create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/index.html create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.css create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/sort-arrow-sprite.png create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/sorter.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-filename/test/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-slug/.travis.yml create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-slug/LICENSE create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-slug/README.md create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-slug/index.js create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-slug/package.json create mode 100644 mybulma/node_modules/node-gyp/node_modules/unique-slug/test/index.js create mode 100644 mybulma/node_modules/node-gyp/src/win_delay_load_hook.cc create mode 100644 mybulma/node_modules/node-gyp/test/common.js create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Express.txt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/ca-bundle.crt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/ca.crt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/nodedir/include/node/config.gypi create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/server.crt create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/server.key create mode 100644 mybulma/node_modules/node-gyp/test/fixtures/test-charmap.py create mode 100644 mybulma/node_modules/node-gyp/test/process-exec-sync.js create mode 100644 mybulma/node_modules/node-gyp/test/simple-proxy.js create mode 100644 mybulma/node_modules/node-gyp/test/test-addon.js create mode 100644 mybulma/node_modules/node-gyp/test/test-configure-python.js create mode 100644 mybulma/node_modules/node-gyp/test/test-create-config-gypi.js create mode 100644 mybulma/node_modules/node-gyp/test/test-download.js create mode 100644 mybulma/node_modules/node-gyp/test/test-find-accessible-sync.js create mode 100644 mybulma/node_modules/node-gyp/test/test-find-node-directory.js create mode 100644 mybulma/node_modules/node-gyp/test/test-find-python.js create mode 100644 mybulma/node_modules/node-gyp/test/test-find-visualstudio.js create mode 100644 mybulma/node_modules/node-gyp/test/test-install.js create mode 100644 mybulma/node_modules/node-gyp/test/test-options.js create mode 100644 mybulma/node_modules/node-gyp/test/test-process-release.js create mode 100644 mybulma/node_modules/node-sass/LICENSE create mode 100644 mybulma/node_modules/node-sass/README.md create mode 100644 mybulma/node_modules/node-sass/bin/emcc create mode 100644 mybulma/node_modules/node-sass/bin/node-sass create mode 100644 mybulma/node_modules/node-sass/binding.gyp create mode 100644 mybulma/node_modules/node-sass/lib/binding.js create mode 100644 mybulma/node_modules/node-sass/lib/errors.js create mode 100644 mybulma/node_modules/node-sass/lib/extensions.js create mode 100644 mybulma/node_modules/node-sass/lib/index.js create mode 100644 mybulma/node_modules/node-sass/lib/render.js create mode 100644 mybulma/node_modules/node-sass/lib/watcher.js create mode 100644 mybulma/node_modules/node-sass/package.json create mode 100644 mybulma/node_modules/node-sass/scripts/build.js create mode 100644 mybulma/node_modules/node-sass/scripts/install.js create mode 100644 mybulma/node_modules/node-sass/scripts/prepublish.js create mode 100644 mybulma/node_modules/node-sass/scripts/util/downloadoptions.js create mode 100644 mybulma/node_modules/node-sass/scripts/util/proxy.js create mode 100644 mybulma/node_modules/node-sass/scripts/util/rejectUnauthorized.js create mode 100644 mybulma/node_modules/node-sass/scripts/util/useragent.js create mode 100644 mybulma/node_modules/node-sass/src/binding.cpp create mode 100644 mybulma/node_modules/node-sass/src/callback_bridge.h create mode 100644 mybulma/node_modules/node-sass/src/create_string.cpp create mode 100644 mybulma/node_modules/node-sass/src/create_string.h create mode 100644 mybulma/node_modules/node-sass/src/custom_function_bridge.cpp create mode 100644 mybulma/node_modules/node-sass/src/custom_function_bridge.h create mode 100644 mybulma/node_modules/node-sass/src/custom_importer_bridge.cpp create mode 100644 mybulma/node_modules/node-sass/src/custom_importer_bridge.h create mode 100644 mybulma/node_modules/node-sass/src/libsass.gyp create mode 100644 mybulma/node_modules/node-sass/src/libsass/.editorconfig create mode 100644 mybulma/node_modules/node-sass/src/libsass/.gitattributes create mode 100644 mybulma/node_modules/node-sass/src/libsass/.github/CONTRIBUTING.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/.github/ISSUE_TEMPLATE.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/.travis.yml create mode 100644 mybulma/node_modules/node-sass/src/libsass/COPYING create mode 100644 mybulma/node_modules/node-sass/src/libsass/GNUmakefile.am create mode 100644 mybulma/node_modules/node-sass/src/libsass/INSTALL create mode 100644 mybulma/node_modules/node-sass/src/libsass/LICENSE create mode 100644 mybulma/node_modules/node-sass/src/libsass/Makefile create mode 100644 mybulma/node_modules/node-sass/src/libsass/Makefile.conf create mode 100644 mybulma/node_modules/node-sass/src/libsass/Readme.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/SECURITY.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/appveyor.yml create mode 100644 mybulma/node_modules/node-sass/src/libsass/configure.ac create mode 100644 mybulma/node_modules/node-sass/src/libsass/contrib/libsass.spec create mode 100644 mybulma/node_modules/node-sass/src/libsass/contrib/plugin.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/README.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-context-example.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-context-internal.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-context.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-doc.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-function-example.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-function-internal.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-function.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-importer-example.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-importer-internal.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-importer.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-value-example.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-value-internal.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/api-value.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-on-darwin.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-on-gentoo.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-on-windows.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-shared-library.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-with-autotools.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-with-makefiles.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-with-mingw.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build-with-visual-studio.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/build.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/compatibility-plan.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/contributing.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/custom-functions-internal.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/dev-ast-memory.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/implementations.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/plugins.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/setup-environment.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/source-map-internals.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/trace.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/triage.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/docs/unicode.md create mode 100644 mybulma/node_modules/node-sass/src/libsass/extconf.rb create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass/base.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass/context.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass/functions.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass/values.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass/version.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass/version.h.in create mode 100644 mybulma/node_modules/node-sass/src/libsass/include/sass2scss.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/m4/.gitkeep create mode 100644 mybulma/node_modules/node-sass/src/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 create mode 100644 mybulma/node_modules/node-sass/src/libsass/res/resource.rc create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/bootstrap create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/branding create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/ci-build-libsass create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/ci-build-plugin create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/ci-install-compiler create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/ci-install-deps create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/ci-report-coverage create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/spec create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/tap-driver create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/tap-runner create mode 100644 mybulma/node_modules/node-sass/src/libsass/script/test-leaks.pl create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/GNUmakefile.am create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/ast.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/ast.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/ast_def_macros.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/b64/cencode.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/b64/encode.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/backtrace.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/backtrace.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/base64vlq.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/base64vlq.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/bind.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/bind.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/c99func.c create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/cencode.c create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/check_nesting.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/check_nesting.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/color_maps.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/color_maps.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/constants.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/constants.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/context.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/context.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/cssize.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/cssize.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/debug.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/debugger.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/emitter.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/emitter.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/environment.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/environment.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/error_handling.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/error_handling.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/eval.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/eval.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/expand.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/expand.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/extend.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/extend.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/file.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/file.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/functions.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/functions.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/inspect.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/inspect.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/json.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/json.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/kwd_arg_macros.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/lexer.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/lexer.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/listize.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/listize.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/mapping.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/node.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/node.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/operation.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/operators.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/operators.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/output.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/output.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/parser.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/parser.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/paths.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/plugins.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/plugins.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/position.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/position.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/prelexer.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/prelexer.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass2scss.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_context.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_context.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_functions.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_functions.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_util.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_util.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_values.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/sass_values.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/source_map.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/source_map.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/subset_map.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/subset_map.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/support/libsass.pc.in create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/to_c.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/to_c.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/to_value.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/to_value.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/units.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/units.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/utf8.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/utf8/checked.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/utf8/core.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/utf8/unchecked.h create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/utf8_string.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/utf8_string.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/util.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/util.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/values.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/src/values.hpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/test/test_node.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/test/test_paths.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/test/test_selector_difference.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/test/test_specificity.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/test/test_subset_map.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/test/test_superselector.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/test/test_unification.cpp create mode 100644 mybulma/node_modules/node-sass/src/libsass/version.sh create mode 100644 mybulma/node_modules/node-sass/src/libsass/win/libsass.sln create mode 100644 mybulma/node_modules/node-sass/src/libsass/win/libsass.sln.DotSettings create mode 100644 mybulma/node_modules/node-sass/src/libsass/win/libsass.targets create mode 100644 mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj create mode 100644 mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj.filters create mode 100644 mybulma/node_modules/node-sass/src/sass_context_wrapper.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_context_wrapper.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/boolean.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/boolean.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/color.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/color.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/error.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/error.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/factory.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/factory.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/list.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/list.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/map.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/map.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/null.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/null.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/number.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/number.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/sass_value_wrapper.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/string.cpp create mode 100644 mybulma/node_modules/node-sass/src/sass_types/string.h create mode 100644 mybulma/node_modules/node-sass/src/sass_types/value.h create mode 100644 mybulma/node_modules/node-sass/test/api.js create mode 100644 mybulma/node_modules/node-sass/test/binding.js create mode 100644 mybulma/node_modules/node-sass/test/cli.js create mode 100644 mybulma/node_modules/node-sass/test/downloadoptions.js create mode 100644 mybulma/node_modules/node-sass/test/errors.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/compressed/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/compressed/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter-expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion-expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/outside.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/root/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/_common.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/_struct.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/_vars.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/a.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/a1.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/b.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/b1.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/depth-first/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_arrays_of_importers.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_setter.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_string_conversion.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data_cb.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_error.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data_cb.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_cb.js create mode 100644 mybulma/node_modules/node-sass/test/fixtures/follow/foo/bar/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/bar.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/chained-imports-with-custom-importer.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/expected-data-importer.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/expected-file-importer.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/expected-importer.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/file-not-processed-by-loader.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/file-processed-by-loader.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/foo.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-files/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-path/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-path/functions/colorBlue.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-path/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/include-path/lib/vars.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/indent/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/indent/index.sass create mode 100644 mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/_skipped.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/nested/three.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/one.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/two.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/invalid/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/output-directory/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/precision/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/precision/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-orange.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-red.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/sass-path/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/sass-path/orange/colors.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/sass-path/red/colors.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/simple/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/simple/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/source-comments/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/source-comments/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/source-map-embed/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/source-map-embed/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/source-map/expected.css create mode 100644 mybulma/node_modules/node-sass/test/fixtures/source-map/expected.map create mode 100644 mybulma/node_modules/node-sass/test/fixtures/source-map/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/main/one.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_one.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_three.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_two.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/main/three.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/main/two.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/partials/_three.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/three.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watching-dir-01/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/foo.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watching/bar.sass create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watching/index.sass create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watching/index.scss create mode 100644 mybulma/node_modules/node-sass/test/fixtures/watching/white.scss create mode 100644 mybulma/node_modules/node-sass/test/lowlevel.js create mode 100644 mybulma/node_modules/node-sass/test/runtime.js create mode 100644 mybulma/node_modules/node-sass/test/scripts/util/proxy.js create mode 100644 mybulma/node_modules/node-sass/test/types.js create mode 100644 mybulma/node_modules/node-sass/test/useragent.js create mode 100644 mybulma/node_modules/node-sass/test/watcher.js create mode 100644 mybulma/node_modules/node-sass/vendor/darwin-x64-108/darwin-x64-108_binding.node create mode 100644 mybulma/node_modules/node-sass/vendor/darwin-x64-111/darwin-x64-111_binding.node create mode 100644 mybulma/node_modules/node-sass/vendor/darwin-x64-93/binding.node create mode 100644 mybulma/node_modules/node-sass/vendor/linux-x64-111/binding.node create mode 100644 mybulma/node_modules/node-sass/vendor/linux-x64-83/binding.node create mode 100644 mybulma/node_modules/nopt/CHANGELOG.md create mode 100644 mybulma/node_modules/nopt/LICENSE create mode 100644 mybulma/node_modules/nopt/README.md create mode 100644 mybulma/node_modules/nopt/bin/nopt.js create mode 100644 mybulma/node_modules/nopt/lib/nopt.js create mode 100644 mybulma/node_modules/nopt/package.json create mode 100644 mybulma/node_modules/normalize-package-data/lib/extract_description.js create mode 100644 mybulma/node_modules/normalize-package-data/lib/fixer.js create mode 100644 mybulma/node_modules/normalize-package-data/lib/make_warning.js create mode 100644 mybulma/node_modules/normalize-package-data/lib/normalize.js create mode 100644 mybulma/node_modules/normalize-package-data/lib/safe_format.js create mode 100644 mybulma/node_modules/normalize-package-data/lib/typos.json create mode 100644 mybulma/node_modules/normalize-package-data/lib/warning_messages.json create mode 100644 mybulma/node_modules/npmlog/lib/log.js create mode 100644 mybulma/node_modules/p-locate/index.d.ts create mode 100644 mybulma/node_modules/p-locate/index.js create mode 100644 mybulma/node_modules/p-locate/license create mode 100644 mybulma/node_modules/p-locate/package.json create mode 100644 mybulma/node_modules/p-locate/readme.md create mode 100644 mybulma/node_modules/p-try/index.d.ts create mode 100644 mybulma/node_modules/p-try/index.js create mode 100644 mybulma/node_modules/p-try/license create mode 100644 mybulma/node_modules/p-try/package.json create mode 100644 mybulma/node_modules/p-try/readme.md create mode 100644 mybulma/node_modules/path-parse/LICENSE create mode 100644 mybulma/node_modules/path-parse/README.md create mode 100644 mybulma/node_modules/path-parse/index.js create mode 100644 mybulma/node_modules/path-parse/package.json create mode 100644 mybulma/node_modules/process-nextick-args/index.js create mode 100644 mybulma/node_modules/process-nextick-args/license.md create mode 100644 mybulma/node_modules/process-nextick-args/package.json create mode 100644 mybulma/node_modules/process-nextick-args/readme.md create mode 100644 mybulma/node_modules/promise-retry/test/test.js create mode 100644 mybulma/node_modules/quick-lru/index.d.ts create mode 100644 mybulma/node_modules/quick-lru/index.js create mode 100644 mybulma/node_modules/quick-lru/license create mode 100644 mybulma/node_modules/quick-lru/package.json create mode 100644 mybulma/node_modules/quick-lru/readme.md create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/index.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/license create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/package.json create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/readme.md create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/basic.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/except.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/literal-union.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge-exclusive.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/mutable.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/opaque.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/package-json.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/partial-deep.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/promisable.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/readonly-deep.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-at-least-one.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-exactly-one.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-optional.d.ts create mode 100644 mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-required.d.ts create mode 100644 mybulma/node_modules/read-pkg/index.d.ts create mode 100644 mybulma/node_modules/read-pkg/index.js create mode 100644 mybulma/node_modules/read-pkg/license create mode 100644 mybulma/node_modules/read-pkg/node_modules/.bin/semver create mode 100644 mybulma/node_modules/read-pkg/node_modules/hosted-git-info/CHANGELOG.md create mode 100644 mybulma/node_modules/read-pkg/node_modules/hosted-git-info/LICENSE create mode 100644 mybulma/node_modules/read-pkg/node_modules/hosted-git-info/README.md create mode 100644 mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host-info.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/hosted-git-info/index.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/hosted-git-info/package.json create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/AUTHORS create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/LICENSE create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/README.md create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/extract_description.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/fixer.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/make_warning.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/normalize.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/safe_format.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/typos.json create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/warning_messages.json create mode 100644 mybulma/node_modules/read-pkg/node_modules/normalize-package-data/package.json create mode 100644 mybulma/node_modules/read-pkg/node_modules/semver/CHANGELOG.md create mode 100644 mybulma/node_modules/read-pkg/node_modules/semver/LICENSE create mode 100644 mybulma/node_modules/read-pkg/node_modules/semver/README.md create mode 100644 mybulma/node_modules/read-pkg/node_modules/semver/bin/semver create mode 100644 mybulma/node_modules/read-pkg/node_modules/semver/package.json create mode 100644 mybulma/node_modules/read-pkg/node_modules/semver/range.bnf create mode 100644 mybulma/node_modules/read-pkg/node_modules/semver/semver.js create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/index.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/license create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/package.json create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/readme.md create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts create mode 100644 mybulma/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts create mode 100644 mybulma/node_modules/read-pkg/package.json create mode 100644 mybulma/node_modules/read-pkg/readme.md create mode 100644 mybulma/node_modules/readable-stream/CONTRIBUTING.md create mode 100644 mybulma/node_modules/readable-stream/GOVERNANCE.md create mode 100644 mybulma/node_modules/readable-stream/LICENSE create mode 100644 mybulma/node_modules/readable-stream/README.md create mode 100644 mybulma/node_modules/readable-stream/errors-browser.js create mode 100644 mybulma/node_modules/readable-stream/errors.js create mode 100644 mybulma/node_modules/readable-stream/experimentalWarning.js create mode 100644 mybulma/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 mybulma/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 mybulma/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 mybulma/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 mybulma/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/async_iterator.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/buffer_list.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/destroy.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/end-of-stream.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/from-browser.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/from.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/pipeline.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/state.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/stream-browser.js create mode 100644 mybulma/node_modules/readable-stream/lib/internal/streams/stream.js create mode 100644 mybulma/node_modules/readable-stream/package.json create mode 100644 mybulma/node_modules/readable-stream/readable-browser.js create mode 100644 mybulma/node_modules/readable-stream/readable.js create mode 100644 mybulma/node_modules/require-directory/.jshintrc create mode 100644 mybulma/node_modules/require-directory/.npmignore create mode 100644 mybulma/node_modules/require-directory/.travis.yml create mode 100644 mybulma/node_modules/require-directory/LICENSE create mode 100644 mybulma/node_modules/require-directory/README.markdown create mode 100644 mybulma/node_modules/require-directory/index.js create mode 100644 mybulma/node_modules/require-directory/package.json create mode 100644 mybulma/node_modules/resolve/.editorconfig create mode 100644 mybulma/node_modules/resolve/.eslintrc create mode 100644 mybulma/node_modules/resolve/.github/FUNDING.yml create mode 100644 mybulma/node_modules/resolve/LICENSE create mode 100644 mybulma/node_modules/resolve/SECURITY.md create mode 100644 mybulma/node_modules/resolve/async.js create mode 100644 mybulma/node_modules/resolve/bin/resolve create mode 100644 mybulma/node_modules/resolve/example/async.js create mode 100644 mybulma/node_modules/resolve/example/sync.js create mode 100644 mybulma/node_modules/resolve/index.js create mode 100644 mybulma/node_modules/resolve/lib/async.js create mode 100644 mybulma/node_modules/resolve/lib/caller.js create mode 100644 mybulma/node_modules/resolve/lib/core.js create mode 100644 mybulma/node_modules/resolve/lib/core.json create mode 100644 mybulma/node_modules/resolve/lib/homedir.js create mode 100644 mybulma/node_modules/resolve/lib/is-core.js create mode 100644 mybulma/node_modules/resolve/lib/node-modules-paths.js create mode 100644 mybulma/node_modules/resolve/lib/normalize-options.js create mode 100644 mybulma/node_modules/resolve/lib/sync.js create mode 100644 mybulma/node_modules/resolve/package.json create mode 100644 mybulma/node_modules/resolve/readme.markdown create mode 100644 mybulma/node_modules/resolve/sync.js create mode 100644 mybulma/node_modules/resolve/test/core.js create mode 100644 mybulma/node_modules/resolve/test/dotdot.js create mode 100644 mybulma/node_modules/resolve/test/dotdot/abc/index.js create mode 100644 mybulma/node_modules/resolve/test/dotdot/index.js create mode 100644 mybulma/node_modules/resolve/test/faulty_basedir.js create mode 100644 mybulma/node_modules/resolve/test/filter.js create mode 100644 mybulma/node_modules/resolve/test/filter_sync.js create mode 100644 mybulma/node_modules/resolve/test/home_paths.js create mode 100644 mybulma/node_modules/resolve/test/home_paths_sync.js create mode 100644 mybulma/node_modules/resolve/test/mock.js create mode 100644 mybulma/node_modules/resolve/test/mock_sync.js create mode 100644 mybulma/node_modules/resolve/test/module_dir.js create mode 100644 mybulma/node_modules/resolve/test/module_dir/xmodules/aaa/index.js create mode 100644 mybulma/node_modules/resolve/test/module_dir/ymodules/aaa/index.js create mode 100644 mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/main.js create mode 100644 mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/package.json create mode 100644 mybulma/node_modules/resolve/test/node-modules-paths.js create mode 100644 mybulma/node_modules/resolve/test/node_path.js create mode 100644 mybulma/node_modules/resolve/test/node_path/x/aaa/index.js create mode 100644 mybulma/node_modules/resolve/test/node_path/x/ccc/index.js create mode 100644 mybulma/node_modules/resolve/test/node_path/y/bbb/index.js create mode 100644 mybulma/node_modules/resolve/test/node_path/y/ccc/index.js create mode 100644 mybulma/node_modules/resolve/test/nonstring.js create mode 100644 mybulma/node_modules/resolve/test/pathfilter.js create mode 100644 mybulma/node_modules/resolve/test/pathfilter/deep_ref/main.js create mode 100644 mybulma/node_modules/resolve/test/precedence.js create mode 100644 mybulma/node_modules/resolve/test/precedence/aaa.js create mode 100644 mybulma/node_modules/resolve/test/precedence/aaa/index.js create mode 100644 mybulma/node_modules/resolve/test/precedence/aaa/main.js create mode 100644 mybulma/node_modules/resolve/test/precedence/bbb.js create mode 100644 mybulma/node_modules/resolve/test/precedence/bbb/main.js create mode 100644 mybulma/node_modules/resolve/test/resolver.js create mode 100644 mybulma/node_modules/resolve/test/resolver/baz/doom.js create mode 100644 mybulma/node_modules/resolve/test/resolver/baz/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/baz/quux.js create mode 100644 mybulma/node_modules/resolve/test/resolver/browser_field/a.js create mode 100644 mybulma/node_modules/resolve/test/resolver/browser_field/b.js create mode 100644 mybulma/node_modules/resolve/test/resolver/browser_field/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/cup.coffee create mode 100644 mybulma/node_modules/resolve/test/resolver/dot_main/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/dot_main/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/dot_slash_main/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/dot_slash_main/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/false_main/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/false_main/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/foo.js create mode 100644 mybulma/node_modules/resolve/test/resolver/incorrect_main/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/incorrect_main/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/invalid_main/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/malformed_package_json/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/malformed_package_json/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/mug.coffee create mode 100644 mybulma/node_modules/resolve/test/resolver/mug.js create mode 100644 mybulma/node_modules/resolve/test/resolver/multirepo/lerna.json create mode 100644 mybulma/node_modules/resolve/test/resolver/multirepo/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js create mode 100644 mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js create mode 100644 mybulma/node_modules/resolve/test/resolver/other_path/lib/other-lib.js create mode 100644 mybulma/node_modules/resolve/test/resolver/other_path/root.js create mode 100644 mybulma/node_modules/resolve/test/resolver/quux/foo/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/same_names/foo.js create mode 100644 mybulma/node_modules/resolve/test/resolver/same_names/foo/index.js create mode 100644 mybulma/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js create mode 100644 mybulma/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep create mode 100644 mybulma/node_modules/resolve/test/resolver/symlinked/package/bar.js create mode 100644 mybulma/node_modules/resolve/test/resolver/symlinked/package/package.json create mode 100644 mybulma/node_modules/resolve/test/resolver/without_basedir/main.js create mode 100644 mybulma/node_modules/resolve/test/resolver_sync.js create mode 100644 mybulma/node_modules/resolve/test/shadowed_core.js create mode 100644 mybulma/node_modules/resolve/test/shadowed_core/node_modules/util/index.js create mode 100644 mybulma/node_modules/resolve/test/subdirs.js create mode 100644 mybulma/node_modules/resolve/test/symlinks.js create mode 100644 mybulma/node_modules/retry/.npmignore create mode 100644 mybulma/node_modules/retry/.travis.yml create mode 100644 mybulma/node_modules/retry/License create mode 100644 mybulma/node_modules/retry/Makefile create mode 100644 mybulma/node_modules/retry/README.md create mode 100644 mybulma/node_modules/retry/equation.gif create mode 100644 mybulma/node_modules/retry/example/dns.js create mode 100644 mybulma/node_modules/retry/example/stop.js create mode 100644 mybulma/node_modules/retry/index.js create mode 100644 mybulma/node_modules/retry/lib/retry.js create mode 100644 mybulma/node_modules/retry/lib/retry_operation.js create mode 100644 mybulma/node_modules/retry/package.json create mode 100644 mybulma/node_modules/retry/test/common.js create mode 100644 mybulma/node_modules/retry/test/integration/test-forever.js create mode 100644 mybulma/node_modules/retry/test/integration/test-retry-operation.js create mode 100644 mybulma/node_modules/retry/test/integration/test-retry-wrap.js create mode 100644 mybulma/node_modules/retry/test/integration/test-timeouts.js create mode 100644 mybulma/node_modules/rimraf/CHANGELOG.md create mode 100644 mybulma/node_modules/rimraf/LICENSE create mode 100644 mybulma/node_modules/rimraf/README.md create mode 100644 mybulma/node_modules/rimraf/bin.js create mode 100644 mybulma/node_modules/rimraf/package.json create mode 100644 mybulma/node_modules/rimraf/rimraf.js create mode 100644 mybulma/node_modules/safe-buffer/LICENSE create mode 100644 mybulma/node_modules/safe-buffer/README.md create mode 100644 mybulma/node_modules/safe-buffer/index.d.ts create mode 100644 mybulma/node_modules/safe-buffer/index.js create mode 100644 mybulma/node_modules/safe-buffer/package.json create mode 100644 mybulma/node_modules/safer-buffer/LICENSE create mode 100644 mybulma/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 mybulma/node_modules/safer-buffer/Readme.md create mode 100644 mybulma/node_modules/safer-buffer/dangerous.js create mode 100644 mybulma/node_modules/safer-buffer/package.json create mode 100644 mybulma/node_modules/safer-buffer/safer.js create mode 100644 mybulma/node_modules/safer-buffer/tests.js create mode 100644 mybulma/node_modules/sass-graph/LICENSE create mode 100644 mybulma/node_modules/sass-graph/bin/sassgraph create mode 100644 mybulma/node_modules/sass-graph/package.json create mode 100644 mybulma/node_modules/sass-graph/parse-imports.js create mode 100644 mybulma/node_modules/sass-graph/readme.md create mode 100644 mybulma/node_modules/sass-graph/sass-graph.js create mode 100644 mybulma/node_modules/scss-tokenizer/LICENSE create mode 100644 mybulma/node_modules/scss-tokenizer/README.md create mode 100644 mybulma/node_modules/scss-tokenizer/index.js create mode 100644 mybulma/node_modules/scss-tokenizer/lib/entry.js create mode 100644 mybulma/node_modules/scss-tokenizer/lib/input.js create mode 100644 mybulma/node_modules/scss-tokenizer/lib/previous-map.js create mode 100644 mybulma/node_modules/scss-tokenizer/lib/tokenize-comment.js create mode 100644 mybulma/node_modules/scss-tokenizer/lib/tokenize-interpolant.js create mode 100644 mybulma/node_modules/scss-tokenizer/lib/tokenize-string.js create mode 100644 mybulma/node_modules/scss-tokenizer/lib/tokenize.js create mode 100644 mybulma/node_modules/scss-tokenizer/package.json create mode 100644 mybulma/node_modules/semver/bin/semver.js create mode 100644 mybulma/node_modules/semver/classes/comparator.js create mode 100644 mybulma/node_modules/semver/classes/index.js create mode 100644 mybulma/node_modules/semver/classes/range.js create mode 100644 mybulma/node_modules/semver/classes/semver.js create mode 100644 mybulma/node_modules/semver/functions/clean.js create mode 100644 mybulma/node_modules/semver/functions/cmp.js create mode 100644 mybulma/node_modules/semver/functions/coerce.js create mode 100644 mybulma/node_modules/semver/functions/compare-build.js create mode 100644 mybulma/node_modules/semver/functions/compare-loose.js create mode 100644 mybulma/node_modules/semver/functions/compare.js create mode 100644 mybulma/node_modules/semver/functions/diff.js create mode 100644 mybulma/node_modules/semver/functions/eq.js create mode 100644 mybulma/node_modules/semver/functions/gt.js create mode 100644 mybulma/node_modules/semver/functions/gte.js create mode 100644 mybulma/node_modules/semver/functions/inc.js create mode 100644 mybulma/node_modules/semver/functions/lt.js create mode 100644 mybulma/node_modules/semver/functions/lte.js create mode 100644 mybulma/node_modules/semver/functions/major.js create mode 100644 mybulma/node_modules/semver/functions/minor.js create mode 100644 mybulma/node_modules/semver/functions/neq.js create mode 100644 mybulma/node_modules/semver/functions/parse.js create mode 100644 mybulma/node_modules/semver/functions/patch.js create mode 100644 mybulma/node_modules/semver/functions/prerelease.js create mode 100644 mybulma/node_modules/semver/functions/rcompare.js create mode 100644 mybulma/node_modules/semver/functions/rsort.js create mode 100644 mybulma/node_modules/semver/functions/satisfies.js create mode 100644 mybulma/node_modules/semver/functions/sort.js create mode 100644 mybulma/node_modules/semver/functions/valid.js create mode 100644 mybulma/node_modules/semver/internal/constants.js create mode 100644 mybulma/node_modules/semver/internal/debug.js create mode 100644 mybulma/node_modules/semver/internal/identifiers.js create mode 100644 mybulma/node_modules/semver/internal/parse-options.js create mode 100644 mybulma/node_modules/semver/internal/re.js create mode 100644 mybulma/node_modules/semver/node_modules/lru-cache/LICENSE create mode 100644 mybulma/node_modules/semver/node_modules/lru-cache/README.md create mode 100644 mybulma/node_modules/semver/node_modules/lru-cache/index.js create mode 100644 mybulma/node_modules/semver/node_modules/lru-cache/package.json create mode 100644 mybulma/node_modules/semver/ranges/gtr.js create mode 100644 mybulma/node_modules/semver/ranges/intersects.js create mode 100644 mybulma/node_modules/semver/ranges/ltr.js create mode 100644 mybulma/node_modules/semver/ranges/max-satisfying.js create mode 100644 mybulma/node_modules/semver/ranges/min-satisfying.js create mode 100644 mybulma/node_modules/semver/ranges/min-version.js create mode 100644 mybulma/node_modules/semver/ranges/outside.js create mode 100644 mybulma/node_modules/semver/ranges/simplify.js create mode 100644 mybulma/node_modules/semver/ranges/subset.js create mode 100644 mybulma/node_modules/semver/ranges/to-comparators.js create mode 100644 mybulma/node_modules/semver/ranges/valid.js create mode 100644 mybulma/node_modules/set-blocking/CHANGELOG.md create mode 100644 mybulma/node_modules/set-blocking/LICENSE.txt create mode 100644 mybulma/node_modules/set-blocking/README.md create mode 100644 mybulma/node_modules/set-blocking/index.js create mode 100644 mybulma/node_modules/set-blocking/package.json create mode 100644 mybulma/node_modules/shebang-command/index.js create mode 100644 mybulma/node_modules/shebang-command/license create mode 100644 mybulma/node_modules/shebang-command/package.json create mode 100644 mybulma/node_modules/shebang-command/readme.md create mode 100644 mybulma/node_modules/shebang-regex/index.d.ts create mode 100644 mybulma/node_modules/shebang-regex/index.js create mode 100644 mybulma/node_modules/shebang-regex/license create mode 100644 mybulma/node_modules/shebang-regex/package.json create mode 100644 mybulma/node_modules/shebang-regex/readme.md create mode 100644 mybulma/node_modules/smart-buffer/.prettierrc.yaml create mode 100644 mybulma/node_modules/smart-buffer/.travis.yml create mode 100644 mybulma/node_modules/smart-buffer/LICENSE create mode 100644 mybulma/node_modules/smart-buffer/README.md create mode 100644 mybulma/node_modules/smart-buffer/build/smartbuffer.js create mode 100644 mybulma/node_modules/smart-buffer/build/smartbuffer.js.map create mode 100644 mybulma/node_modules/smart-buffer/build/utils.js create mode 100644 mybulma/node_modules/smart-buffer/build/utils.js.map create mode 100644 mybulma/node_modules/smart-buffer/docs/CHANGELOG.md create mode 100644 mybulma/node_modules/smart-buffer/docs/README_v3.md create mode 100644 mybulma/node_modules/smart-buffer/docs/ROADMAP.md create mode 100644 mybulma/node_modules/smart-buffer/package.json create mode 100644 mybulma/node_modules/smart-buffer/typings/smartbuffer.d.ts create mode 100644 mybulma/node_modules/smart-buffer/typings/utils.d.ts create mode 100644 mybulma/node_modules/socks-proxy-agent/dist/index.d.ts create mode 100644 mybulma/node_modules/socks-proxy-agent/dist/index.js create mode 100644 mybulma/node_modules/socks-proxy-agent/dist/index.js.map create mode 100644 mybulma/node_modules/socks/.eslintrc.cjs create mode 100644 mybulma/node_modules/socks/.prettierrc.yaml create mode 100644 mybulma/node_modules/socks/LICENSE create mode 100644 mybulma/node_modules/socks/README.md create mode 100644 mybulma/node_modules/socks/build/client/socksclient.js create mode 100644 mybulma/node_modules/socks/build/client/socksclient.js.map create mode 100644 mybulma/node_modules/socks/build/common/constants.js create mode 100644 mybulma/node_modules/socks/build/common/constants.js.map create mode 100644 mybulma/node_modules/socks/build/common/helpers.js create mode 100644 mybulma/node_modules/socks/build/common/helpers.js.map create mode 100644 mybulma/node_modules/socks/build/common/receivebuffer.js create mode 100644 mybulma/node_modules/socks/build/common/receivebuffer.js.map create mode 100644 mybulma/node_modules/socks/build/common/util.js create mode 100644 mybulma/node_modules/socks/build/common/util.js.map create mode 100644 mybulma/node_modules/socks/build/index.js create mode 100644 mybulma/node_modules/socks/build/index.js.map create mode 100644 mybulma/node_modules/socks/docs/examples/index.md create mode 100644 mybulma/node_modules/socks/docs/examples/javascript/associateExample.md create mode 100644 mybulma/node_modules/socks/docs/examples/javascript/bindExample.md create mode 100644 mybulma/node_modules/socks/docs/examples/javascript/connectExample.md create mode 100644 mybulma/node_modules/socks/docs/examples/typescript/associateExample.md create mode 100644 mybulma/node_modules/socks/docs/examples/typescript/bindExample.md create mode 100644 mybulma/node_modules/socks/docs/examples/typescript/connectExample.md create mode 100644 mybulma/node_modules/socks/docs/index.md create mode 100644 mybulma/node_modules/socks/docs/migratingFromV1.md create mode 100644 mybulma/node_modules/socks/package.json create mode 100644 mybulma/node_modules/socks/typings/client/socksclient.d.ts create mode 100644 mybulma/node_modules/socks/typings/common/constants.d.ts create mode 100644 mybulma/node_modules/socks/typings/common/helpers.d.ts create mode 100644 mybulma/node_modules/socks/typings/common/receivebuffer.d.ts create mode 100644 mybulma/node_modules/socks/typings/common/util.d.ts create mode 100644 mybulma/node_modules/socks/typings/index.d.ts create mode 100644 mybulma/node_modules/source-map/dist/source-map.js create mode 100644 mybulma/node_modules/source-map/lib/array-set.js create mode 100644 mybulma/node_modules/source-map/lib/base64-vlq.js create mode 100644 mybulma/node_modules/source-map/lib/base64.js create mode 100644 mybulma/node_modules/source-map/lib/binary-search.js create mode 100644 mybulma/node_modules/source-map/lib/mapping-list.js create mode 100644 mybulma/node_modules/source-map/lib/mappings.wasm create mode 100644 mybulma/node_modules/source-map/lib/read-wasm.js create mode 100644 mybulma/node_modules/source-map/lib/source-map-consumer.js create mode 100644 mybulma/node_modules/source-map/lib/source-map-generator.js create mode 100644 mybulma/node_modules/source-map/lib/source-node.js create mode 100644 mybulma/node_modules/source-map/lib/util.js create mode 100644 mybulma/node_modules/source-map/lib/wasm.js create mode 100644 mybulma/node_modules/spdx-exceptions/README.md create mode 100644 mybulma/node_modules/spdx-exceptions/index.json create mode 100644 mybulma/node_modules/spdx-exceptions/package.json create mode 100644 mybulma/node_modules/spdx-license-ids/README.md create mode 100644 mybulma/node_modules/spdx-license-ids/deprecated.json create mode 100644 mybulma/node_modules/spdx-license-ids/index.json create mode 100644 mybulma/node_modules/spdx-license-ids/package.json create mode 100644 mybulma/node_modules/ssri/LICENSE.md create mode 100644 mybulma/node_modules/ssri/README.md create mode 100644 mybulma/node_modules/ssri/lib/index.js create mode 100644 mybulma/node_modules/ssri/package.json create mode 100644 mybulma/node_modules/stdout-stream/.travis.yml create mode 100644 mybulma/node_modules/stdout-stream/LICENSE create mode 100644 mybulma/node_modules/stdout-stream/README.md create mode 100644 mybulma/node_modules/stdout-stream/index.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/.travis.yml create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/CONTRIBUTING.md create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/GOVERNANCE.md create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/LICENSE create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/README.md create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/duplex-browser.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/duplex.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/internal/streams/destroy.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/lib/internal/streams/stream.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/package.json create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/passthrough.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/readable-browser.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/readable.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/transform.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/writable-browser.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/readable-stream/writable.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/safe-buffer/LICENSE create mode 100644 mybulma/node_modules/stdout-stream/node_modules/safe-buffer/README.md create mode 100644 mybulma/node_modules/stdout-stream/node_modules/safe-buffer/index.d.ts create mode 100644 mybulma/node_modules/stdout-stream/node_modules/safe-buffer/index.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/safe-buffer/package.json create mode 100644 mybulma/node_modules/stdout-stream/node_modules/string_decoder/.travis.yml create mode 100644 mybulma/node_modules/stdout-stream/node_modules/string_decoder/LICENSE create mode 100644 mybulma/node_modules/stdout-stream/node_modules/string_decoder/README.md create mode 100644 mybulma/node_modules/stdout-stream/node_modules/string_decoder/lib/string_decoder.js create mode 100644 mybulma/node_modules/stdout-stream/node_modules/string_decoder/package.json create mode 100644 mybulma/node_modules/stdout-stream/package.json create mode 100644 mybulma/node_modules/stdout-stream/test/fixtures/end.js create mode 100644 mybulma/node_modules/stdout-stream/test/fixtures/hello-world.js create mode 100644 mybulma/node_modules/stdout-stream/test/index.js create mode 100644 mybulma/node_modules/string-width/index.d.ts create mode 100644 mybulma/node_modules/string-width/index.js create mode 100644 mybulma/node_modules/string-width/license create mode 100644 mybulma/node_modules/string-width/package.json create mode 100644 mybulma/node_modules/string-width/readme.md create mode 100644 mybulma/node_modules/string_decoder/lib/string_decoder.js create mode 100644 mybulma/node_modules/strip-indent/index.d.ts create mode 100644 mybulma/node_modules/strip-indent/index.js create mode 100644 mybulma/node_modules/strip-indent/license create mode 100644 mybulma/node_modules/strip-indent/package.json create mode 100644 mybulma/node_modules/strip-indent/readme.md create mode 100644 mybulma/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml create mode 100644 mybulma/node_modules/supports-preserve-symlinks-flag/test/index.js create mode 100644 mybulma/node_modules/tar/LICENSE create mode 100644 mybulma/node_modules/tar/README.md create mode 100644 mybulma/node_modules/tar/index.js create mode 100644 mybulma/node_modules/tar/lib/create.js create mode 100644 mybulma/node_modules/tar/lib/extract.js create mode 100644 mybulma/node_modules/tar/lib/get-write-flag.js create mode 100644 mybulma/node_modules/tar/lib/header.js create mode 100644 mybulma/node_modules/tar/lib/high-level-opt.js create mode 100644 mybulma/node_modules/tar/lib/large-numbers.js create mode 100644 mybulma/node_modules/tar/lib/list.js create mode 100644 mybulma/node_modules/tar/lib/mkdir.js create mode 100644 mybulma/node_modules/tar/lib/mode-fix.js create mode 100644 mybulma/node_modules/tar/lib/normalize-unicode.js create mode 100644 mybulma/node_modules/tar/lib/normalize-windows-path.js create mode 100644 mybulma/node_modules/tar/lib/pack.js create mode 100644 mybulma/node_modules/tar/lib/parse.js create mode 100644 mybulma/node_modules/tar/lib/path-reservations.js create mode 100644 mybulma/node_modules/tar/lib/pax.js create mode 100644 mybulma/node_modules/tar/lib/read-entry.js create mode 100644 mybulma/node_modules/tar/lib/replace.js create mode 100644 mybulma/node_modules/tar/lib/strip-absolute-path.js create mode 100644 mybulma/node_modules/tar/lib/strip-trailing-slashes.js create mode 100644 mybulma/node_modules/tar/lib/types.js create mode 100644 mybulma/node_modules/tar/lib/unpack.js create mode 100644 mybulma/node_modules/tar/lib/update.js create mode 100644 mybulma/node_modules/tar/lib/warn-mixin.js create mode 100644 mybulma/node_modules/tar/lib/winchars.js create mode 100644 mybulma/node_modules/tar/lib/write-entry.js create mode 100644 mybulma/node_modules/tar/node_modules/minipass/LICENSE create mode 100644 mybulma/node_modules/tar/node_modules/minipass/README.md create mode 100644 mybulma/node_modules/tar/node_modules/minipass/index.d.ts create mode 100644 mybulma/node_modules/tar/node_modules/minipass/index.js create mode 100644 mybulma/node_modules/tar/node_modules/minipass/package.json create mode 100644 mybulma/node_modules/tar/package.json create mode 100644 mybulma/node_modules/true-case-path/.prettierrc create mode 100644 mybulma/node_modules/true-case-path/.travis.yml create mode 100644 mybulma/node_modules/true-case-path/.vscode/launch.json create mode 100644 mybulma/node_modules/true-case-path/CHANGELOG.md create mode 100644 mybulma/node_modules/true-case-path/LICENSE create mode 100644 mybulma/node_modules/true-case-path/README.md create mode 100644 mybulma/node_modules/true-case-path/index.d.ts create mode 100644 mybulma/node_modules/true-case-path/index.js create mode 100644 mybulma/node_modules/true-case-path/package.json create mode 100644 mybulma/node_modules/true-case-path/test/fixture/fOoBaR/BAZ create mode 100644 mybulma/node_modules/true-case-path/test/fixture/f[u&n%k)y create mode 100644 mybulma/node_modules/true-case-path/test/index.js create mode 100644 mybulma/node_modules/type-fest/index.d.ts create mode 100644 mybulma/node_modules/type-fest/license create mode 100644 mybulma/node_modules/type-fest/package.json create mode 100644 mybulma/node_modules/type-fest/readme.md create mode 100644 mybulma/node_modules/type-fest/source/async-return-type.d.ts create mode 100644 mybulma/node_modules/type-fest/source/asyncify.d.ts create mode 100644 mybulma/node_modules/type-fest/source/basic.d.ts create mode 100644 mybulma/node_modules/type-fest/source/conditional-except.d.ts create mode 100644 mybulma/node_modules/type-fest/source/conditional-keys.d.ts create mode 100644 mybulma/node_modules/type-fest/source/conditional-pick.d.ts create mode 100644 mybulma/node_modules/type-fest/source/entries.d.ts create mode 100644 mybulma/node_modules/type-fest/source/entry.d.ts create mode 100644 mybulma/node_modules/type-fest/source/except.d.ts create mode 100644 mybulma/node_modules/type-fest/source/fixed-length-array.d.ts create mode 100644 mybulma/node_modules/type-fest/source/iterable-element.d.ts create mode 100644 mybulma/node_modules/type-fest/source/literal-union.d.ts create mode 100644 mybulma/node_modules/type-fest/source/merge-exclusive.d.ts create mode 100644 mybulma/node_modules/type-fest/source/merge.d.ts create mode 100644 mybulma/node_modules/type-fest/source/mutable.d.ts create mode 100644 mybulma/node_modules/type-fest/source/opaque.d.ts create mode 100644 mybulma/node_modules/type-fest/source/package-json.d.ts create mode 100644 mybulma/node_modules/type-fest/source/partial-deep.d.ts create mode 100644 mybulma/node_modules/type-fest/source/promisable.d.ts create mode 100644 mybulma/node_modules/type-fest/source/promise-value.d.ts create mode 100644 mybulma/node_modules/type-fest/source/readonly-deep.d.ts create mode 100644 mybulma/node_modules/type-fest/source/require-at-least-one.d.ts create mode 100644 mybulma/node_modules/type-fest/source/require-exactly-one.d.ts create mode 100644 mybulma/node_modules/type-fest/source/set-optional.d.ts create mode 100644 mybulma/node_modules/type-fest/source/set-required.d.ts create mode 100644 mybulma/node_modules/type-fest/source/set-return-type.d.ts create mode 100644 mybulma/node_modules/type-fest/source/stringified.d.ts create mode 100644 mybulma/node_modules/type-fest/source/tsconfig-json.d.ts create mode 100644 mybulma/node_modules/type-fest/source/union-to-intersection.d.ts create mode 100644 mybulma/node_modules/type-fest/source/value-of.d.ts create mode 100644 mybulma/node_modules/unique-filename/lib/index.js create mode 100644 mybulma/node_modules/unique-slug/LICENSE create mode 100644 mybulma/node_modules/unique-slug/README.md create mode 100644 mybulma/node_modules/unique-slug/lib/index.js create mode 100644 mybulma/node_modules/unique-slug/package.json create mode 100644 mybulma/node_modules/util-deprecate/History.md create mode 100644 mybulma/node_modules/util-deprecate/LICENSE create mode 100644 mybulma/node_modules/util-deprecate/README.md create mode 100644 mybulma/node_modules/util-deprecate/browser.js create mode 100644 mybulma/node_modules/util-deprecate/node.js create mode 100644 mybulma/node_modules/util-deprecate/package.json create mode 100644 mybulma/node_modules/validate-npm-package-license/LICENSE create mode 100644 mybulma/node_modules/validate-npm-package-license/README.md create mode 100644 mybulma/node_modules/validate-npm-package-license/index.js create mode 100644 mybulma/node_modules/validate-npm-package-license/package.json create mode 100644 mybulma/node_modules/which/CHANGELOG.md create mode 100644 mybulma/node_modules/which/LICENSE create mode 100644 mybulma/node_modules/which/README.md create mode 100644 mybulma/node_modules/which/bin/node-which create mode 100644 mybulma/node_modules/which/package.json create mode 100644 mybulma/node_modules/which/which.js create mode 100644 mybulma/node_modules/wrap-ansi/index.js create mode 100644 mybulma/node_modules/wrap-ansi/license create mode 100644 mybulma/node_modules/wrap-ansi/package.json create mode 100644 mybulma/node_modules/wrap-ansi/readme.md create mode 100644 mybulma/node_modules/y18n/CHANGELOG.md create mode 100644 mybulma/node_modules/y18n/LICENSE create mode 100644 mybulma/node_modules/y18n/README.md create mode 100644 mybulma/node_modules/y18n/build/index.cjs create mode 100644 mybulma/node_modules/y18n/build/lib/cjs.js create mode 100644 mybulma/node_modules/y18n/build/lib/index.js create mode 100644 mybulma/node_modules/y18n/build/lib/platform-shims/node.js create mode 100644 mybulma/node_modules/y18n/index.mjs create mode 100644 mybulma/node_modules/y18n/package.json create mode 100644 mybulma/node_modules/yargs-parser/CHANGELOG.md create mode 100644 mybulma/node_modules/yargs-parser/LICENSE.txt create mode 100644 mybulma/node_modules/yargs-parser/README.md create mode 100644 mybulma/node_modules/yargs-parser/browser.js create mode 100644 mybulma/node_modules/yargs-parser/build/index.cjs create mode 100644 mybulma/node_modules/yargs-parser/build/lib/index.js create mode 100644 mybulma/node_modules/yargs-parser/build/lib/string-utils.js create mode 100644 mybulma/node_modules/yargs-parser/build/lib/tokenize-arg-string.js create mode 100644 mybulma/node_modules/yargs-parser/build/lib/yargs-parser-types.js create mode 100644 mybulma/node_modules/yargs-parser/build/lib/yargs-parser.js create mode 100644 mybulma/node_modules/yargs-parser/package.json create mode 100644 mybulma/node_modules/yargs/build/index.cjs create mode 100644 mybulma/node_modules/yargs/build/lib/argsert.js create mode 100644 mybulma/node_modules/yargs/build/lib/command.js create mode 100644 mybulma/node_modules/yargs/build/lib/completion-templates.js create mode 100644 mybulma/node_modules/yargs/build/lib/completion.js create mode 100644 mybulma/node_modules/yargs/build/lib/middleware.js create mode 100644 mybulma/node_modules/yargs/build/lib/parse-command.js create mode 100644 mybulma/node_modules/yargs/build/lib/typings/common-types.js create mode 100644 mybulma/node_modules/yargs/build/lib/typings/yargs-parser-types.js create mode 100644 mybulma/node_modules/yargs/build/lib/usage.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/apply-extends.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/is-promise.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/levenshtein.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/maybe-async-result.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/obj-filter.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/process-argv.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/set-blocking.js create mode 100644 mybulma/node_modules/yargs/build/lib/utils/which-module.js create mode 100644 mybulma/node_modules/yargs/build/lib/validation.js create mode 100644 mybulma/node_modules/yargs/build/lib/yargs-factory.js create mode 100644 mybulma/node_modules/yargs/build/lib/yerror.js create mode 100644 mybulma/node_modules/yargs/helpers/helpers.mjs create mode 100644 mybulma/node_modules/yargs/helpers/index.js create mode 100644 mybulma/node_modules/yargs/helpers/package.json create mode 100644 mybulma/node_modules/yargs/lib/platform-shims/browser.mjs create mode 100644 mybulma/node_modules/yargs/lib/platform-shims/esm.mjs create mode 100644 mybulma/node_modules/yargs/locales/be.json create mode 100644 mybulma/node_modules/yargs/locales/cs.json create mode 100644 mybulma/node_modules/yargs/locales/de.json create mode 100644 mybulma/node_modules/yargs/locales/en.json create mode 100644 mybulma/node_modules/yargs/locales/es.json create mode 100644 mybulma/node_modules/yargs/locales/fi.json create mode 100644 mybulma/node_modules/yargs/locales/fr.json create mode 100644 mybulma/node_modules/yargs/locales/hi.json create mode 100644 mybulma/node_modules/yargs/locales/hu.json create mode 100644 mybulma/node_modules/yargs/locales/id.json create mode 100644 mybulma/node_modules/yargs/locales/it.json create mode 100644 mybulma/node_modules/yargs/locales/ja.json create mode 100644 mybulma/node_modules/yargs/locales/ko.json create mode 100644 mybulma/node_modules/yargs/locales/nb.json create mode 100644 mybulma/node_modules/yargs/locales/nl.json create mode 100644 mybulma/node_modules/yargs/locales/nn.json create mode 100644 mybulma/node_modules/yargs/locales/pirate.json create mode 100644 mybulma/node_modules/yargs/locales/pl.json create mode 100644 mybulma/node_modules/yargs/locales/pt.json create mode 100644 mybulma/node_modules/yargs/locales/pt_BR.json create mode 100644 mybulma/node_modules/yargs/locales/ru.json create mode 100644 mybulma/node_modules/yargs/locales/th.json create mode 100644 mybulma/node_modules/yargs/locales/tr.json create mode 100644 mybulma/node_modules/yargs/locales/uk_UA.json create mode 100644 mybulma/node_modules/yargs/locales/uz.json create mode 100644 mybulma/node_modules/yargs/locales/zh_CN.json create mode 100644 mybulma/node_modules/yargs/locales/zh_TW.json create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/CHANGELOG.md create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/README.md create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/browser.js create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/build/index.cjs create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/index.js create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js create mode 100644 mybulma/node_modules/yargs/node_modules/yargs-parser/package.json create mode 100644 mybulma/package-lock.json create mode 100644 mybulma/package.json create mode 100644 mybulma/sass/mystyles.scss create mode 100644 old.html diff --git a/index.html b/index.html index ed2d0ea..dfe6ddd 100644 --- a/index.html +++ b/index.html @@ -1,36 +1,29 @@ - - - - -
- -
-
+ + + + \ No newline at end of file diff --git a/mybulma/css/mystyles.css b/mybulma/css/mystyles.css new file mode 100644 index 0000000..cb11790 --- /dev/null +++ b/mybulma/css/mystyles.css @@ -0,0 +1,3415 @@ +@import url("https://fonts.googleapis.com/css?family=Nunito:400,700"); +/* Bulma Utilities */ +.button, .input, .textarea, .select select, .file-cta, +.file-name { + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 2px solid transparent; + border-radius: 4px; + box-shadow: none; + display: inline-flex; + font-size: 1rem; + height: 2.5em; + justify-content: flex-start; + line-height: 1.5; + padding-bottom: calc(0.5em - 2px); + padding-left: calc(0.75em - 2px); + padding-right: calc(0.75em - 2px); + padding-top: calc(0.5em - 2px); + position: relative; + vertical-align: top; } + .button:focus, .input:focus, .textarea:focus, .select select:focus, .file-cta:focus, + .file-name:focus, .is-focused.button, .is-focused.input, .is-focused.textarea, .select select.is-focused, .is-focused.file-cta, + .is-focused.file-name, .button:active, .input:active, .textarea:active, .select select:active, .file-cta:active, + .file-name:active, .is-active.button, .is-active.input, .is-active.textarea, .select select.is-active, .is-active.file-cta, + .is-active.file-name { + outline: none; } + .button[disabled], .input[disabled], .textarea[disabled], .select select[disabled], .file-cta[disabled], + .file-name[disabled], + fieldset[disabled] .button, + fieldset[disabled] .input, + fieldset[disabled] .textarea, + fieldset[disabled] .select select, + .select fieldset[disabled] select, + fieldset[disabled] .file-cta, + fieldset[disabled] .file-name { + cursor: not-allowed; } + +.button, .file { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after { + border: 3px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: 0.625em; + margin-top: -0.4375em; + pointer-events: none; + position: absolute; + top: 50%; + transform: rotate(-45deg); + transform-origin: center; + width: 0.625em; } + +.title:not(:last-child), +.subtitle:not(:last-child) { + margin-bottom: 1.5rem; } + +.button.is-loading::after, .select.is-loading::after, .control.is-loading::after { + animation: spinAround 500ms infinite linear; + border: 2px solid #dbdbdb; + border-radius: 9999px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: 1em; + position: relative; + width: 1em; } + +.hero-video { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; } + +.navbar-burger { + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + background: none; + border: none; + color: currentColor; + font-family: inherit; + font-size: 1em; + margin: 0; + padding: 0; } + +/* Bulma Base */ +/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; } + +ul { + list-style: none; } + +button, +input, +select, +textarea { + margin: 0; } + +html { + box-sizing: border-box; } + +*, *::before, *::after { + box-sizing: inherit; } + +img, +video { + height: auto; + max-width: 100%; } + +iframe { + border: 0; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + td:not([align]), + th:not([align]) { + text-align: inherit; } + +html { + background-color: #303446; + font-size: 16px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + min-width: 300px; + overflow-x: hidden; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; } + +article, +aside, +figure, +footer, +header, +hgroup, +section { + display: block; } + +body, +button, +input, +optgroup, +select, +textarea { + font-family: "Nunito", sans-serif; } + +code, +pre { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; + font-family: monospace; } + +body { + color: #c6d0f5; + font-size: 1em; + font-weight: 400; + line-height: 1.5; } + +a { + color: #81c8be; + cursor: pointer; + text-decoration: none; } + a strong { + color: currentColor; } + a:hover { + color: #363636; } + +code { + background-color: whitesmoke; + color: #da1039; + font-size: 0.875em; + font-weight: normal; + padding: 0.25em 0.5em 0.25em; } + +hr { + background-color: whitesmoke; + border: none; + display: block; + height: 2px; + margin: 1.5rem 0; } + +img { + height: auto; + max-width: 100%; } + +input[type="checkbox"], +input[type="radio"] { + vertical-align: baseline; } + +small { + font-size: 0.875em; } + +span { + font-style: inherit; + font-weight: inherit; } + +strong { + color: #b5bfe2; + font-weight: 700; } + +fieldset { + border: none; } + +pre { + -webkit-overflow-scrolling: touch; + background-color: whitesmoke; + color: #c6d0f5; + font-size: 0.875em; + overflow-x: auto; + padding: 1.25rem 1.5rem; + white-space: pre; + word-wrap: normal; } + pre code { + background-color: transparent; + color: currentColor; + font-size: 1em; + padding: 0; } + +table td, +table th { + vertical-align: top; } + table td:not([align]), + table th:not([align]) { + text-align: inherit; } + +table th { + color: #b5bfe2; } + +@keyframes spinAround { + from { + transform: rotate(0deg); } + to { + transform: rotate(359deg); } } + +.button { + background-color: white; + border-color: #dbdbdb; + border-width: 2px; + color: #b5bfe2; + cursor: pointer; + justify-content: center; + padding-bottom: calc(0.5em - 2px); + padding-left: 1em; + padding-right: 1em; + padding-top: calc(0.5em - 2px); + text-align: center; + white-space: nowrap; } + .button strong { + color: inherit; } + .button .icon, .button .icon.is-small, .button .icon.is-medium, .button .icon.is-large { + height: 1.5em; + width: 1.5em; } + .button .icon:first-child:not(:last-child) { + margin-left: calc(-0.5em - 2px); + margin-right: 0.25em; } + .button .icon:last-child:not(:first-child) { + margin-left: 0.25em; + margin-right: calc(-0.5em - 2px); } + .button .icon:first-child:last-child { + margin-left: calc(-0.5em - 2px); + margin-right: calc(-0.5em - 2px); } + .button:hover, .button.is-hovered { + border-color: #51576d; + color: #363636; } + .button:focus, .button.is-focused { + border-color: #485fc7; + color: #363636; } + .button:focus:not(:active), .button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(129, 200, 190, 0.25); } + .button:active, .button.is-active { + border-color: #414559; + color: #363636; } + .button.is-text { + background-color: transparent; + border-color: transparent; + color: #c6d0f5; + text-decoration: underline; } + .button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused { + background-color: whitesmoke; + color: #b5bfe2; } + .button.is-text:active, .button.is-text.is-active { + background-color: #e8e8e8; + color: #b5bfe2; } + .button.is-text[disabled], + fieldset[disabled] .button.is-text { + background-color: transparent; + border-color: transparent; + box-shadow: none; } + .button.is-ghost { + background: none; + border-color: transparent; + color: #81c8be; + text-decoration: none; } + .button.is-ghost:hover, .button.is-ghost.is-hovered { + color: #81c8be; + text-decoration: underline; } + .button.is-white { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + .button.is-white:hover, .button.is-white.is-hovered { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + .button.is-white:focus, .button.is-white.is-focused { + border-color: transparent; + color: #0a0a0a; } + .button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .button.is-white:active, .button.is-white.is-active { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + .button.is-white[disabled], + fieldset[disabled] .button.is-white { + background-color: white; + border-color: white; + box-shadow: none; } + .button.is-white.is-inverted { + background-color: #0a0a0a; + color: white; } + .button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered { + background-color: black; } + .button.is-white.is-inverted[disabled], + fieldset[disabled] .button.is-white.is-inverted { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; + color: white; } + .button.is-white.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + .button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused { + background-color: white; + border-color: white; + color: #0a0a0a; } + .button.is-white.is-outlined.is-loading::after { + border-color: transparent transparent white white !important; } + .button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-white.is-outlined[disabled], + fieldset[disabled] .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + .button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused { + background-color: #0a0a0a; + color: white; } + .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + .button.is-white.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + .button.is-black:hover, .button.is-black.is-hovered { + background-color: #040404; + border-color: transparent; + color: white; } + .button.is-black:focus, .button.is-black.is-focused { + border-color: transparent; + color: white; } + .button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .button.is-black:active, .button.is-black.is-active { + background-color: black; + border-color: transparent; + color: white; } + .button.is-black[disabled], + fieldset[disabled] .button.is-black { + background-color: #0a0a0a; + border-color: #0a0a0a; + box-shadow: none; } + .button.is-black.is-inverted { + background-color: white; + color: #0a0a0a; } + .button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-black.is-inverted[disabled], + fieldset[disabled] .button.is-black.is-inverted { + background-color: white; + border-color: transparent; + box-shadow: none; + color: #0a0a0a; } + .button.is-black.is-loading::after { + border-color: transparent transparent white white !important; } + .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + .button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .button.is-black.is-outlined.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + .button.is-black.is-outlined[disabled], + fieldset[disabled] .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + .button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused { + background-color: white; + color: #0a0a0a; } + .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-black.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + .button.is-light { + background-color: whitesmoke; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-light:hover, .button.is-light.is-hovered { + background-color: #eeeeee; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-light:focus, .button.is-light.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .button.is-light:active, .button.is-light.is-active { + background-color: #e8e8e8; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-light[disabled], + fieldset[disabled] .button.is-light { + background-color: whitesmoke; + border-color: whitesmoke; + box-shadow: none; } + .button.is-light.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: whitesmoke; } + .button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); } + .button.is-light.is-inverted[disabled], + fieldset[disabled] .button.is-light.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: whitesmoke; } + .button.is-light.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + color: whitesmoke; } + .button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused { + background-color: whitesmoke; + border-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); } + .button.is-light.is-outlined.is-loading::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-light.is-outlined[disabled], + fieldset[disabled] .button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + box-shadow: none; + color: whitesmoke; } + .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); } + .button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: whitesmoke; } + .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-light.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); } + .button.is-dark { + background-color: #363636; + border-color: transparent; + color: #fff; } + .button.is-dark:hover, .button.is-dark.is-hovered { + background-color: #2f2f2f; + border-color: transparent; + color: #fff; } + .button.is-dark:focus, .button.is-dark.is-focused { + border-color: transparent; + color: #fff; } + .button.is-dark:focus:not(:active), .button.is-dark.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .button.is-dark:active, .button.is-dark.is-active { + background-color: #292929; + border-color: transparent; + color: #fff; } + .button.is-dark[disabled], + fieldset[disabled] .button.is-dark { + background-color: #363636; + border-color: #363636; + box-shadow: none; } + .button.is-dark.is-inverted { + background-color: #fff; + color: #363636; } + .button.is-dark.is-inverted:hover, .button.is-dark.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-dark.is-inverted[disabled], + fieldset[disabled] .button.is-dark.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #363636; } + .button.is-dark.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-dark.is-outlined { + background-color: transparent; + border-color: #363636; + color: #363636; } + .button.is-dark.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .button.is-dark.is-outlined.is-focused { + background-color: #363636; + border-color: #363636; + color: #fff; } + .button.is-dark.is-outlined.is-loading::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-dark.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-dark.is-outlined[disabled], + fieldset[disabled] .button.is-dark.is-outlined { + background-color: transparent; + border-color: #363636; + box-shadow: none; + color: #363636; } + .button.is-dark.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-dark.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #363636; } + .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-dark.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-dark.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-primary { + background-color: #c6d0f5; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-primary:hover, .button.is-primary.is-hovered { + background-color: #bbc7f3; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-primary:focus, .button.is-primary.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-primary:focus:not(:active), .button.is-primary.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(198, 208, 245, 0.25); } + .button.is-primary:active, .button.is-primary.is-active { + background-color: #b0bef1; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-primary[disabled], + fieldset[disabled] .button.is-primary { + background-color: #c6d0f5; + border-color: #c6d0f5; + box-shadow: none; } + .button.is-primary.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: #c6d0f5; } + .button.is-primary.is-inverted:hover, .button.is-primary.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); } + .button.is-primary.is-inverted[disabled], + fieldset[disabled] .button.is-primary.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: #c6d0f5; } + .button.is-primary.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-primary.is-outlined { + background-color: transparent; + border-color: #c6d0f5; + color: #c6d0f5; } + .button.is-primary.is-outlined:hover, .button.is-primary.is-outlined.is-hovered, .button.is-primary.is-outlined:focus, .button.is-primary.is-outlined.is-focused { + background-color: #c6d0f5; + border-color: #c6d0f5; + color: rgba(0, 0, 0, 0.7); } + .button.is-primary.is-outlined.is-loading::after { + border-color: transparent transparent #c6d0f5 #c6d0f5 !important; } + .button.is-primary.is-outlined.is-loading:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-outlined.is-loading:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-primary.is-outlined[disabled], + fieldset[disabled] .button.is-primary.is-outlined { + background-color: transparent; + border-color: #c6d0f5; + box-shadow: none; + color: #c6d0f5; } + .button.is-primary.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); } + .button.is-primary.is-inverted.is-outlined:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .button.is-primary.is-inverted.is-outlined:focus, .button.is-primary.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: #c6d0f5; } + .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #c6d0f5 #c6d0f5 !important; } + .button.is-primary.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-primary.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); } + .button.is-primary.is-light { + background-color: #eef1fc; + color: #162c7e; } + .button.is-primary.is-light:hover, .button.is-primary.is-light.is-hovered { + background-color: #e3e8fa; + border-color: transparent; + color: #162c7e; } + .button.is-primary.is-light:active, .button.is-primary.is-light.is-active { + background-color: #d8dff8; + border-color: transparent; + color: #162c7e; } + .button.is-link { + background-color: #81c8be; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-link:hover, .button.is-link.is-hovered { + background-color: #78c4b9; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-link:focus, .button.is-link.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(129, 200, 190, 0.25); } + .button.is-link:active, .button.is-link.is-active { + background-color: #6fc0b5; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-link[disabled], + fieldset[disabled] .button.is-link { + background-color: #81c8be; + border-color: #81c8be; + box-shadow: none; } + .button.is-link.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: #81c8be; } + .button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); } + .button.is-link.is-inverted[disabled], + fieldset[disabled] .button.is-link.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: #81c8be; } + .button.is-link.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-link.is-outlined { + background-color: transparent; + border-color: #81c8be; + color: #81c8be; } + .button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused { + background-color: #81c8be; + border-color: #81c8be; + color: rgba(0, 0, 0, 0.7); } + .button.is-link.is-outlined.is-loading::after { + border-color: transparent transparent #81c8be #81c8be !important; } + .button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-link.is-outlined[disabled], + fieldset[disabled] .button.is-link.is-outlined { + background-color: transparent; + border-color: #81c8be; + box-shadow: none; + color: #81c8be; } + .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); } + .button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: #81c8be; } + .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #81c8be #81c8be !important; } + .button.is-link.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); } + .button.is-link.is-light { + background-color: #f1f9f8; + color: #2d675f; } + .button.is-link.is-light:hover, .button.is-link.is-light.is-hovered { + background-color: #e8f5f3; + border-color: transparent; + color: #2d675f; } + .button.is-link.is-light:active, .button.is-link.is-light.is-active { + background-color: #dff1ef; + border-color: transparent; + color: #2d675f; } + .button.is-info { + background-color: #3e8ed0; + border-color: transparent; + color: #fff; } + .button.is-info:hover, .button.is-info.is-hovered { + background-color: #3488ce; + border-color: transparent; + color: #fff; } + .button.is-info:focus, .button.is-info.is-focused { + border-color: transparent; + color: #fff; } + .button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(62, 142, 208, 0.25); } + .button.is-info:active, .button.is-info.is-active { + background-color: #3082c5; + border-color: transparent; + color: #fff; } + .button.is-info[disabled], + fieldset[disabled] .button.is-info { + background-color: #3e8ed0; + border-color: #3e8ed0; + box-shadow: none; } + .button.is-info.is-inverted { + background-color: #fff; + color: #3e8ed0; } + .button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-info.is-inverted[disabled], + fieldset[disabled] .button.is-info.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #3e8ed0; } + .button.is-info.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-info.is-outlined { + background-color: transparent; + border-color: #3e8ed0; + color: #3e8ed0; } + .button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused { + background-color: #3e8ed0; + border-color: #3e8ed0; + color: #fff; } + .button.is-info.is-outlined.is-loading::after { + border-color: transparent transparent #3e8ed0 #3e8ed0 !important; } + .button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-info.is-outlined[disabled], + fieldset[disabled] .button.is-info.is-outlined { + background-color: transparent; + border-color: #3e8ed0; + box-shadow: none; + color: #3e8ed0; } + .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #3e8ed0; } + .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #3e8ed0 #3e8ed0 !important; } + .button.is-info.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-info.is-light { + background-color: #eff5fb; + color: #296fa8; } + .button.is-info.is-light:hover, .button.is-info.is-light.is-hovered { + background-color: #e4eff9; + border-color: transparent; + color: #296fa8; } + .button.is-info.is-light:active, .button.is-info.is-light.is-active { + background-color: #dae9f6; + border-color: transparent; + color: #296fa8; } + .button.is-success { + background-color: #48c78e; + border-color: transparent; + color: #fff; } + .button.is-success:hover, .button.is-success.is-hovered { + background-color: #3ec487; + border-color: transparent; + color: #fff; } + .button.is-success:focus, .button.is-success.is-focused { + border-color: transparent; + color: #fff; } + .button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(72, 199, 142, 0.25); } + .button.is-success:active, .button.is-success.is-active { + background-color: #3abb81; + border-color: transparent; + color: #fff; } + .button.is-success[disabled], + fieldset[disabled] .button.is-success { + background-color: #48c78e; + border-color: #48c78e; + box-shadow: none; } + .button.is-success.is-inverted { + background-color: #fff; + color: #48c78e; } + .button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-success.is-inverted[disabled], + fieldset[disabled] .button.is-success.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #48c78e; } + .button.is-success.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-success.is-outlined { + background-color: transparent; + border-color: #48c78e; + color: #48c78e; } + .button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused { + background-color: #48c78e; + border-color: #48c78e; + color: #fff; } + .button.is-success.is-outlined.is-loading::after { + border-color: transparent transparent #48c78e #48c78e !important; } + .button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-success.is-outlined[disabled], + fieldset[disabled] .button.is-success.is-outlined { + background-color: transparent; + border-color: #48c78e; + box-shadow: none; + color: #48c78e; } + .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #48c78e; } + .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #48c78e #48c78e !important; } + .button.is-success.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-success.is-light { + background-color: #effaf5; + color: #257953; } + .button.is-success.is-light:hover, .button.is-success.is-light.is-hovered { + background-color: #e6f7ef; + border-color: transparent; + color: #257953; } + .button.is-success.is-light:active, .button.is-success.is-light.is-active { + background-color: #dcf4e9; + border-color: transparent; + color: #257953; } + .button.is-warning { + background-color: #ffe08a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:hover, .button.is-warning.is-hovered { + background-color: #ffdc7d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:focus, .button.is-warning.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 224, 138, 0.25); } + .button.is-warning:active, .button.is-warning.is-active { + background-color: #ffd970; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning[disabled], + fieldset[disabled] .button.is-warning { + background-color: #ffe08a; + border-color: #ffe08a; + box-shadow: none; } + .button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: #ffe08a; } + .button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-inverted[disabled], + fieldset[disabled] .button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: #ffe08a; } + .button.is-warning.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffe08a; + color: #ffe08a; } + .button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused { + background-color: #ffe08a; + border-color: #ffe08a; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-outlined.is-loading::after { + border-color: transparent transparent #ffe08a #ffe08a !important; } + .button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-warning.is-outlined[disabled], + fieldset[disabled] .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffe08a; + box-shadow: none; + color: #ffe08a; } + .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: #ffe08a; } + .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ffe08a #ffe08a !important; } + .button.is-warning.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-light { + background-color: #fffaeb; + color: #946c00; } + .button.is-warning.is-light:hover, .button.is-warning.is-light.is-hovered { + background-color: #fff6de; + border-color: transparent; + color: #946c00; } + .button.is-warning.is-light:active, .button.is-warning.is-light.is-active { + background-color: #fff3d1; + border-color: transparent; + color: #946c00; } + .button.is-danger { + background-color: #f14668; + border-color: transparent; + color: #fff; } + .button.is-danger:hover, .button.is-danger.is-hovered { + background-color: #f03a5f; + border-color: transparent; + color: #fff; } + .button.is-danger:focus, .button.is-danger.is-focused { + border-color: transparent; + color: #fff; } + .button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); } + .button.is-danger:active, .button.is-danger.is-active { + background-color: #ef2e55; + border-color: transparent; + color: #fff; } + .button.is-danger[disabled], + fieldset[disabled] .button.is-danger { + background-color: #f14668; + border-color: #f14668; + box-shadow: none; } + .button.is-danger.is-inverted { + background-color: #fff; + color: #f14668; } + .button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-danger.is-inverted[disabled], + fieldset[disabled] .button.is-danger.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #f14668; } + .button.is-danger.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-danger.is-outlined { + background-color: transparent; + border-color: #f14668; + color: #f14668; } + .button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused { + background-color: #f14668; + border-color: #f14668; + color: #fff; } + .button.is-danger.is-outlined.is-loading::after { + border-color: transparent transparent #f14668 #f14668 !important; } + .button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-danger.is-outlined[disabled], + fieldset[disabled] .button.is-danger.is-outlined { + background-color: transparent; + border-color: #f14668; + box-shadow: none; + color: #f14668; } + .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #f14668; } + .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #f14668 #f14668 !important; } + .button.is-danger.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-danger.is-light { + background-color: #feecf0; + color: #cc0f35; } + .button.is-danger.is-light:hover, .button.is-danger.is-light.is-hovered { + background-color: #fde0e6; + border-color: transparent; + color: #cc0f35; } + .button.is-danger.is-light:active, .button.is-danger.is-light.is-active { + background-color: #fcd4dc; + border-color: transparent; + color: #cc0f35; } + .button.is-small { + font-size: 0.75rem; } + .button.is-small:not(.is-rounded) { + border-radius: 2px; } + .button.is-normal { + font-size: 1rem; } + .button.is-medium { + font-size: 1.25rem; } + .button.is-large { + font-size: 1.5rem; } + .button[disabled], + fieldset[disabled] .button { + background-color: white; + border-color: #dbdbdb; + box-shadow: none; + opacity: 0.5; } + .button.is-fullwidth { + display: flex; + width: 100%; } + .button.is-loading { + color: transparent !important; + pointer-events: none; } + .button.is-loading::after { + position: absolute; + left: calc(50% - (1em * 0.5)); + top: calc(50% - (1em * 0.5)); + position: absolute !important; } + .button.is-static { + background-color: whitesmoke; + border-color: #dbdbdb; + color: #7a7a7a; + box-shadow: none; + pointer-events: none; } + .button.is-rounded { + border-radius: 9999px; + padding-left: calc(1em + 0.25em); + padding-right: calc(1em + 0.25em); } + +.buttons { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .buttons .button { + margin-bottom: 0.5rem; } + .buttons .button:not(:last-child):not(.is-fullwidth) { + margin-right: 0.5rem; } + .buttons:last-child { + margin-bottom: -0.5rem; } + .buttons:not(:last-child) { + margin-bottom: 1rem; } + .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { + font-size: 0.75rem; } + .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded) { + border-radius: 2px; } + .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { + font-size: 1.25rem; } + .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { + font-size: 1.5rem; } + .buttons.has-addons .button:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .buttons.has-addons .button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + margin-right: -1px; } + .buttons.has-addons .button:last-child { + margin-right: 0; } + .buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered { + z-index: 2; } + .buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected { + z-index: 3; } + .buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover { + z-index: 4; } + .buttons.has-addons .button.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .buttons.is-centered { + justify-content: center; } + .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + .buttons.is-right { + justify-content: flex-end; } + .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +@media screen and (max-width: 768px) { + .button.is-responsive.is-small { + font-size: 0.5625rem; } + .button.is-responsive, + .button.is-responsive.is-normal { + font-size: 0.65625rem; } + .button.is-responsive.is-medium { + font-size: 0.75rem; } + .button.is-responsive.is-large { + font-size: 1rem; } } + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .button.is-responsive.is-small { + font-size: 0.65625rem; } + .button.is-responsive, + .button.is-responsive.is-normal { + font-size: 0.75rem; } + .button.is-responsive.is-medium { + font-size: 1rem; } + .button.is-responsive.is-large { + font-size: 1.25rem; } } + +.container { + flex-grow: 1; + margin: 0 auto; + position: relative; + width: auto; } + .container.is-fluid { + max-width: none !important; + padding-left: 32px; + padding-right: 32px; + width: 100%; } + @media screen and (min-width: 1024px) { + .container { + max-width: 960px; } } + +.title, +.subtitle { + word-break: break-word; } + .title em, + .title span, + .subtitle em, + .subtitle span { + font-weight: inherit; } + .title sub, + .subtitle sub { + font-size: 0.75em; } + .title sup, + .subtitle sup { + font-size: 0.75em; } + .title .tag, + .subtitle .tag { + vertical-align: middle; } + +.title { + color: #81c8be; + font-size: 2rem; + font-weight: 600; + line-height: 1.125; } + .title strong { + color: inherit; + font-weight: inherit; } + .title:not(.is-spaced) + .subtitle { + margin-top: -1.25rem; } + .title.is-1 { + font-size: 3rem; } + .title.is-2 { + font-size: 2.5rem; } + .title.is-3 { + font-size: 2rem; } + .title.is-4 { + font-size: 1.5rem; } + .title.is-5 { + font-size: 1.25rem; } + .title.is-6 { + font-size: 1rem; } + .title.is-7 { + font-size: 0.75rem; } + +.subtitle { + color: #c6d0f5; + font-size: 1.25rem; + font-weight: 400; + line-height: 1.25; } + .subtitle strong { + color: #b5bfe2; + font-weight: 600; } + .subtitle:not(.is-spaced) + .title { + margin-top: -1.25rem; } + .subtitle.is-1 { + font-size: 3rem; } + .subtitle.is-2 { + font-size: 2.5rem; } + .subtitle.is-3 { + font-size: 2rem; } + .subtitle.is-4 { + font-size: 1.5rem; } + .subtitle.is-5 { + font-size: 1.25rem; } + .subtitle.is-6 { + font-size: 1rem; } + .subtitle.is-7 { + font-size: 0.75rem; } + +/* Bulma Form */ +.input, .textarea, .select select { + background-color: white; + border-color: transparent; + border-radius: 4px; + color: #b5bfe2; } + .input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder { + color: rgba(181, 191, 226, 0.3); } + .input::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .select select::-webkit-input-placeholder { + color: rgba(181, 191, 226, 0.3); } + .input:-moz-placeholder, .textarea:-moz-placeholder, .select select:-moz-placeholder { + color: rgba(181, 191, 226, 0.3); } + .input:-ms-input-placeholder, .textarea:-ms-input-placeholder, .select select:-ms-input-placeholder { + color: rgba(181, 191, 226, 0.3); } + .input:hover, .textarea:hover, .select select:hover, .is-hovered.input, .is-hovered.textarea, .select select.is-hovered { + border-color: #51576d; } + .input:focus, .textarea:focus, .select select:focus, .is-focused.input, .is-focused.textarea, .select select.is-focused, .input:active, .textarea:active, .select select:active, .is-active.input, .is-active.textarea, .select select.is-active { + border-color: #81c8be; + box-shadow: 0 0 0 0.125em rgba(129, 200, 190, 0.25); } + .input[disabled], .textarea[disabled], .select select[disabled], + fieldset[disabled] .input, + fieldset[disabled] .textarea, + fieldset[disabled] .select select, + .select fieldset[disabled] select { + background-color: whitesmoke; + border-color: whitesmoke; + box-shadow: none; + color: #7a7a7a; } + .input[disabled]::-moz-placeholder, .textarea[disabled]::-moz-placeholder, .select select[disabled]::-moz-placeholder, + fieldset[disabled] .input::-moz-placeholder, + fieldset[disabled] .textarea::-moz-placeholder, + fieldset[disabled] .select select::-moz-placeholder, + .select fieldset[disabled] select::-moz-placeholder { + color: rgba(122, 122, 122, 0.3); } + .input[disabled]::-webkit-input-placeholder, .textarea[disabled]::-webkit-input-placeholder, .select select[disabled]::-webkit-input-placeholder, + fieldset[disabled] .input::-webkit-input-placeholder, + fieldset[disabled] .textarea::-webkit-input-placeholder, + fieldset[disabled] .select select::-webkit-input-placeholder, + .select fieldset[disabled] select::-webkit-input-placeholder { + color: rgba(122, 122, 122, 0.3); } + .input[disabled]:-moz-placeholder, .textarea[disabled]:-moz-placeholder, .select select[disabled]:-moz-placeholder, + fieldset[disabled] .input:-moz-placeholder, + fieldset[disabled] .textarea:-moz-placeholder, + fieldset[disabled] .select select:-moz-placeholder, + .select fieldset[disabled] select:-moz-placeholder { + color: rgba(122, 122, 122, 0.3); } + .input[disabled]:-ms-input-placeholder, .textarea[disabled]:-ms-input-placeholder, .select select[disabled]:-ms-input-placeholder, + fieldset[disabled] .input:-ms-input-placeholder, + fieldset[disabled] .textarea:-ms-input-placeholder, + fieldset[disabled] .select select:-ms-input-placeholder, + .select fieldset[disabled] select:-ms-input-placeholder { + color: rgba(122, 122, 122, 0.3); } + +.input, .textarea { + box-shadow: none; + max-width: 100%; + width: 100%; } + .input[readonly], .textarea[readonly] { + box-shadow: none; } + .is-white.input, .is-white.textarea { + border-color: white; } + .is-white.input:focus, .is-white.textarea:focus, .is-white.is-focused.input, .is-white.is-focused.textarea, .is-white.input:active, .is-white.textarea:active, .is-white.is-active.input, .is-white.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .is-black.input, .is-black.textarea { + border-color: #0a0a0a; } + .is-black.input:focus, .is-black.textarea:focus, .is-black.is-focused.input, .is-black.is-focused.textarea, .is-black.input:active, .is-black.textarea:active, .is-black.is-active.input, .is-black.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .is-light.input, .is-light.textarea { + border-color: whitesmoke; } + .is-light.input:focus, .is-light.textarea:focus, .is-light.is-focused.input, .is-light.is-focused.textarea, .is-light.input:active, .is-light.textarea:active, .is-light.is-active.input, .is-light.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .is-dark.input, .is-dark.textarea { + border-color: #363636; } + .is-dark.input:focus, .is-dark.textarea:focus, .is-dark.is-focused.input, .is-dark.is-focused.textarea, .is-dark.input:active, .is-dark.textarea:active, .is-dark.is-active.input, .is-dark.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .is-primary.input, .is-primary.textarea { + border-color: #c6d0f5; } + .is-primary.input:focus, .is-primary.textarea:focus, .is-primary.is-focused.input, .is-primary.is-focused.textarea, .is-primary.input:active, .is-primary.textarea:active, .is-primary.is-active.input, .is-primary.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(198, 208, 245, 0.25); } + .is-link.input, .is-link.textarea { + border-color: #81c8be; } + .is-link.input:focus, .is-link.textarea:focus, .is-link.is-focused.input, .is-link.is-focused.textarea, .is-link.input:active, .is-link.textarea:active, .is-link.is-active.input, .is-link.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(129, 200, 190, 0.25); } + .is-info.input, .is-info.textarea { + border-color: #3e8ed0; } + .is-info.input:focus, .is-info.textarea:focus, .is-info.is-focused.input, .is-info.is-focused.textarea, .is-info.input:active, .is-info.textarea:active, .is-info.is-active.input, .is-info.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(62, 142, 208, 0.25); } + .is-success.input, .is-success.textarea { + border-color: #48c78e; } + .is-success.input:focus, .is-success.textarea:focus, .is-success.is-focused.input, .is-success.is-focused.textarea, .is-success.input:active, .is-success.textarea:active, .is-success.is-active.input, .is-success.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(72, 199, 142, 0.25); } + .is-warning.input, .is-warning.textarea { + border-color: #ffe08a; } + .is-warning.input:focus, .is-warning.textarea:focus, .is-warning.is-focused.input, .is-warning.is-focused.textarea, .is-warning.input:active, .is-warning.textarea:active, .is-warning.is-active.input, .is-warning.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(255, 224, 138, 0.25); } + .is-danger.input, .is-danger.textarea { + border-color: #f14668; } + .is-danger.input:focus, .is-danger.textarea:focus, .is-danger.is-focused.input, .is-danger.is-focused.textarea, .is-danger.input:active, .is-danger.textarea:active, .is-danger.is-active.input, .is-danger.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); } + .is-small.input, .is-small.textarea { + border-radius: 2px; + font-size: 0.75rem; } + .is-medium.input, .is-medium.textarea { + font-size: 1.25rem; } + .is-large.input, .is-large.textarea { + font-size: 1.5rem; } + .is-fullwidth.input, .is-fullwidth.textarea { + display: block; + width: 100%; } + .is-inline.input, .is-inline.textarea { + display: inline; + width: auto; } + +.input.is-rounded { + border-radius: 9999px; + padding-left: calc(calc(0.75em - 2px) + 0.375em); + padding-right: calc(calc(0.75em - 2px) + 0.375em); } + +.input.is-static { + background-color: transparent; + border-color: transparent; + box-shadow: none; + padding-left: 0; + padding-right: 0; } + +.textarea { + display: block; + max-width: 100%; + min-width: 100%; + padding: calc(0.75em - 2px); + resize: vertical; } + .textarea:not([rows]) { + max-height: 40em; + min-height: 8em; } + .textarea[rows] { + height: initial; } + .textarea.has-fixed-size { + resize: none; } + +.checkbox, .radio { + cursor: pointer; + display: inline-block; + line-height: 1.25; + position: relative; } + .checkbox input, .radio input { + cursor: pointer; } + .checkbox:hover, .radio:hover { + color: #b5bfe2; } + .checkbox[disabled], .radio[disabled], + fieldset[disabled] .checkbox, + fieldset[disabled] .radio, + .checkbox input[disabled], + .radio input[disabled] { + color: #7a7a7a; + cursor: not-allowed; } + +.radio + .radio { + margin-left: 0.5em; } + +.select { + display: inline-block; + max-width: 100%; + position: relative; + vertical-align: top; } + .select:not(.is-multiple) { + height: 2.5em; } + .select:not(.is-multiple):not(.is-loading)::after { + border-color: #81c8be; + right: 1.125em; + z-index: 4; } + .select.is-rounded select { + border-radius: 9999px; + padding-left: 1em; } + .select select { + cursor: pointer; + display: block; + font-size: 1em; + max-width: 100%; + outline: none; } + .select select::-ms-expand { + display: none; } + .select select[disabled]:hover, + fieldset[disabled] .select select:hover { + border-color: whitesmoke; } + .select select:not([multiple]) { + padding-right: 2.5em; } + .select select[multiple] { + height: auto; + padding: 0; } + .select select[multiple] option { + padding: 0.5em 1em; } + .select:not(.is-multiple):not(.is-loading):hover::after { + border-color: #b5bfe2; } + .select.is-white:not(:hover)::after { + border-color: white; } + .select.is-white select { + border-color: white; } + .select.is-white select:hover, .select.is-white select.is-hovered { + border-color: #f2f2f2; } + .select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .select.is-black:not(:hover)::after { + border-color: #0a0a0a; } + .select.is-black select { + border-color: #0a0a0a; } + .select.is-black select:hover, .select.is-black select.is-hovered { + border-color: black; } + .select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .select.is-light:not(:hover)::after { + border-color: whitesmoke; } + .select.is-light select { + border-color: whitesmoke; } + .select.is-light select:hover, .select.is-light select.is-hovered { + border-color: #e8e8e8; } + .select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .select.is-dark:not(:hover)::after { + border-color: #363636; } + .select.is-dark select { + border-color: #363636; } + .select.is-dark select:hover, .select.is-dark select.is-hovered { + border-color: #292929; } + .select.is-dark select:focus, .select.is-dark select.is-focused, .select.is-dark select:active, .select.is-dark select.is-active { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .select.is-primary:not(:hover)::after { + border-color: #c6d0f5; } + .select.is-primary select { + border-color: #c6d0f5; } + .select.is-primary select:hover, .select.is-primary select.is-hovered { + border-color: #b0bef1; } + .select.is-primary select:focus, .select.is-primary select.is-focused, .select.is-primary select:active, .select.is-primary select.is-active { + box-shadow: 0 0 0 0.125em rgba(198, 208, 245, 0.25); } + .select.is-link:not(:hover)::after { + border-color: #81c8be; } + .select.is-link select { + border-color: #81c8be; } + .select.is-link select:hover, .select.is-link select.is-hovered { + border-color: #6fc0b5; } + .select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { + box-shadow: 0 0 0 0.125em rgba(129, 200, 190, 0.25); } + .select.is-info:not(:hover)::after { + border-color: #3e8ed0; } + .select.is-info select { + border-color: #3e8ed0; } + .select.is-info select:hover, .select.is-info select.is-hovered { + border-color: #3082c5; } + .select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { + box-shadow: 0 0 0 0.125em rgba(62, 142, 208, 0.25); } + .select.is-success:not(:hover)::after { + border-color: #48c78e; } + .select.is-success select { + border-color: #48c78e; } + .select.is-success select:hover, .select.is-success select.is-hovered { + border-color: #3abb81; } + .select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { + box-shadow: 0 0 0 0.125em rgba(72, 199, 142, 0.25); } + .select.is-warning:not(:hover)::after { + border-color: #ffe08a; } + .select.is-warning select { + border-color: #ffe08a; } + .select.is-warning select:hover, .select.is-warning select.is-hovered { + border-color: #ffd970; } + .select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 224, 138, 0.25); } + .select.is-danger:not(:hover)::after { + border-color: #f14668; } + .select.is-danger select { + border-color: #f14668; } + .select.is-danger select:hover, .select.is-danger select.is-hovered { + border-color: #ef2e55; } + .select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { + box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); } + .select.is-small { + border-radius: 2px; + font-size: 0.75rem; } + .select.is-medium { + font-size: 1.25rem; } + .select.is-large { + font-size: 1.5rem; } + .select.is-disabled::after { + border-color: #7a7a7a !important; + opacity: 0.5; } + .select.is-fullwidth { + width: 100%; } + .select.is-fullwidth select { + width: 100%; } + .select.is-loading::after { + margin-top: 0; + position: absolute; + right: 0.625em; + top: 0.625em; + transform: none; } + .select.is-loading.is-small:after { + font-size: 0.75rem; } + .select.is-loading.is-medium:after { + font-size: 1.25rem; } + .select.is-loading.is-large:after { + font-size: 1.5rem; } + +.file { + align-items: stretch; + display: flex; + justify-content: flex-start; + position: relative; } + .file.is-white .file-cta { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + .file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + .file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); + color: #0a0a0a; } + .file.is-white:active .file-cta, .file.is-white.is-active .file-cta { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + .file.is-black .file-cta { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + .file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { + background-color: #040404; + border-color: transparent; + color: white; } + .file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); + color: white; } + .file.is-black:active .file-cta, .file.is-black.is-active .file-cta { + background-color: black; + border-color: transparent; + color: white; } + .file.is-light .file-cta { + background-color: whitesmoke; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { + background-color: #eeeeee; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); + color: rgba(0, 0, 0, 0.7); } + .file.is-light:active .file-cta, .file.is-light.is-active .file-cta { + background-color: #e8e8e8; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-dark .file-cta { + background-color: #363636; + border-color: transparent; + color: #fff; } + .file.is-dark:hover .file-cta, .file.is-dark.is-hovered .file-cta { + background-color: #2f2f2f; + border-color: transparent; + color: #fff; } + .file.is-dark:focus .file-cta, .file.is-dark.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); + color: #fff; } + .file.is-dark:active .file-cta, .file.is-dark.is-active .file-cta { + background-color: #292929; + border-color: transparent; + color: #fff; } + .file.is-primary .file-cta { + background-color: #c6d0f5; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-primary:hover .file-cta, .file.is-primary.is-hovered .file-cta { + background-color: #bbc7f3; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-primary:focus .file-cta, .file.is-primary.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(198, 208, 245, 0.25); + color: rgba(0, 0, 0, 0.7); } + .file.is-primary:active .file-cta, .file.is-primary.is-active .file-cta { + background-color: #b0bef1; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-link .file-cta { + background-color: #81c8be; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { + background-color: #78c4b9; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(129, 200, 190, 0.25); + color: rgba(0, 0, 0, 0.7); } + .file.is-link:active .file-cta, .file.is-link.is-active .file-cta { + background-color: #6fc0b5; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-info .file-cta { + background-color: #3e8ed0; + border-color: transparent; + color: #fff; } + .file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { + background-color: #3488ce; + border-color: transparent; + color: #fff; } + .file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(62, 142, 208, 0.25); + color: #fff; } + .file.is-info:active .file-cta, .file.is-info.is-active .file-cta { + background-color: #3082c5; + border-color: transparent; + color: #fff; } + .file.is-success .file-cta { + background-color: #48c78e; + border-color: transparent; + color: #fff; } + .file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { + background-color: #3ec487; + border-color: transparent; + color: #fff; } + .file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(72, 199, 142, 0.25); + color: #fff; } + .file.is-success:active .file-cta, .file.is-success.is-active .file-cta { + background-color: #3abb81; + border-color: transparent; + color: #fff; } + .file.is-warning .file-cta { + background-color: #ffe08a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { + background-color: #ffdc7d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 224, 138, 0.25); + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { + background-color: #ffd970; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-danger .file-cta { + background-color: #f14668; + border-color: transparent; + color: #fff; } + .file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { + background-color: #f03a5f; + border-color: transparent; + color: #fff; } + .file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(241, 70, 104, 0.25); + color: #fff; } + .file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { + background-color: #ef2e55; + border-color: transparent; + color: #fff; } + .file.is-small { + font-size: 0.75rem; } + .file.is-normal { + font-size: 1rem; } + .file.is-medium { + font-size: 1.25rem; } + .file.is-medium .file-icon .fa { + font-size: 21px; } + .file.is-large { + font-size: 1.5rem; } + .file.is-large .file-icon .fa { + font-size: 28px; } + .file.has-name .file-cta { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + .file.has-name .file-name { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .file.has-name.is-empty .file-cta { + border-radius: 4px; } + .file.has-name.is-empty .file-name { + display: none; } + .file.is-boxed .file-label { + flex-direction: column; } + .file.is-boxed .file-cta { + flex-direction: column; + height: auto; + padding: 1em 3em; } + .file.is-boxed .file-name { + border-width: 0 1px 1px; } + .file.is-boxed .file-icon { + height: 1.5em; + width: 1.5em; } + .file.is-boxed .file-icon .fa { + font-size: 21px; } + .file.is-boxed.is-small .file-icon .fa { + font-size: 14px; } + .file.is-boxed.is-medium .file-icon .fa { + font-size: 28px; } + .file.is-boxed.is-large .file-icon .fa { + font-size: 35px; } + .file.is-boxed.has-name .file-cta { + border-radius: 4px 4px 0 0; } + .file.is-boxed.has-name .file-name { + border-radius: 0 0 4px 4px; + border-width: 0 1px 1px; } + .file.is-centered { + justify-content: center; } + .file.is-fullwidth .file-label { + width: 100%; } + .file.is-fullwidth .file-name { + flex-grow: 1; + max-width: none; } + .file.is-right { + justify-content: flex-end; } + .file.is-right .file-cta { + border-radius: 0 4px 4px 0; } + .file.is-right .file-name { + border-radius: 4px 0 0 4px; + border-width: 1px 0 1px 1px; + order: -1; } + +.file-label { + align-items: stretch; + display: flex; + cursor: pointer; + justify-content: flex-start; + overflow: hidden; + position: relative; } + .file-label:hover .file-cta { + background-color: #eeeeee; + color: #b5bfe2; } + .file-label:hover .file-name { + border-color: #d5d5d5; } + .file-label:active .file-cta { + background-color: #e8e8e8; + color: #b5bfe2; } + .file-label:active .file-name { + border-color: #cfcfcf; } + +.file-input { + height: 100%; + left: 0; + opacity: 0; + outline: none; + position: absolute; + top: 0; + width: 100%; } + +.file-cta, +.file-name { + border-color: #dbdbdb; + border-radius: 4px; + font-size: 1em; + padding-left: 1em; + padding-right: 1em; + white-space: nowrap; } + +.file-cta { + background-color: whitesmoke; + color: #c6d0f5; } + +.file-name { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px 1px 1px 0; + display: block; + max-width: 16em; + overflow: hidden; + text-align: inherit; + text-overflow: ellipsis; } + +.file-icon { + align-items: center; + display: flex; + height: 1em; + justify-content: center; + margin-right: 0.5em; + width: 1em; } + .file-icon .fa { + font-size: 14px; } + +.label { + color: #b5bfe2; + display: block; + font-size: 1rem; + font-weight: 700; } + .label:not(:last-child) { + margin-bottom: 0.5em; } + .label.is-small { + font-size: 0.75rem; } + .label.is-medium { + font-size: 1.25rem; } + .label.is-large { + font-size: 1.5rem; } + +.help { + display: block; + font-size: 0.75rem; + margin-top: 0.25rem; } + .help.is-white { + color: white; } + .help.is-black { + color: #0a0a0a; } + .help.is-light { + color: whitesmoke; } + .help.is-dark { + color: #363636; } + .help.is-primary { + color: #c6d0f5; } + .help.is-link { + color: #81c8be; } + .help.is-info { + color: #3e8ed0; } + .help.is-success { + color: #48c78e; } + .help.is-warning { + color: #ffe08a; } + .help.is-danger { + color: #f14668; } + +.field:not(:last-child) { + margin-bottom: 0.75rem; } + +.field.has-addons { + display: flex; + justify-content: flex-start; } + .field.has-addons .control:not(:last-child) { + margin-right: -1px; } + .field.has-addons .control:not(:first-child):not(:last-child) .button, + .field.has-addons .control:not(:first-child):not(:last-child) .input, + .field.has-addons .control:not(:first-child):not(:last-child) .select select { + border-radius: 0; } + .field.has-addons .control:first-child:not(:only-child) .button, + .field.has-addons .control:first-child:not(:only-child) .input, + .field.has-addons .control:first-child:not(:only-child) .select select { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + .field.has-addons .control:last-child:not(:only-child) .button, + .field.has-addons .control:last-child:not(:only-child) .input, + .field.has-addons .control:last-child:not(:only-child) .select select { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered, + .field.has-addons .control .input:not([disabled]):hover, + .field.has-addons .control .input:not([disabled]).is-hovered, + .field.has-addons .control .select select:not([disabled]):hover, + .field.has-addons .control .select select:not([disabled]).is-hovered { + z-index: 2; } + .field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active, + .field.has-addons .control .input:not([disabled]):focus, + .field.has-addons .control .input:not([disabled]).is-focused, + .field.has-addons .control .input:not([disabled]):active, + .field.has-addons .control .input:not([disabled]).is-active, + .field.has-addons .control .select select:not([disabled]):focus, + .field.has-addons .control .select select:not([disabled]).is-focused, + .field.has-addons .control .select select:not([disabled]):active, + .field.has-addons .control .select select:not([disabled]).is-active { + z-index: 3; } + .field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover, + .field.has-addons .control .input:not([disabled]):focus:hover, + .field.has-addons .control .input:not([disabled]).is-focused:hover, + .field.has-addons .control .input:not([disabled]):active:hover, + .field.has-addons .control .input:not([disabled]).is-active:hover, + .field.has-addons .control .select select:not([disabled]):focus:hover, + .field.has-addons .control .select select:not([disabled]).is-focused:hover, + .field.has-addons .control .select select:not([disabled]):active:hover, + .field.has-addons .control .select select:not([disabled]).is-active:hover { + z-index: 4; } + .field.has-addons .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .field.has-addons.has-addons-centered { + justify-content: center; } + .field.has-addons.has-addons-right { + justify-content: flex-end; } + .field.has-addons.has-addons-fullwidth .control { + flex-grow: 1; + flex-shrink: 0; } + +.field.is-grouped { + display: flex; + justify-content: flex-start; } + .field.is-grouped > .control { + flex-shrink: 0; } + .field.is-grouped > .control:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + .field.is-grouped > .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .field.is-grouped.is-grouped-centered { + justify-content: center; } + .field.is-grouped.is-grouped-right { + justify-content: flex-end; } + .field.is-grouped.is-grouped-multiline { + flex-wrap: wrap; } + .field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { + margin-bottom: 0.75rem; } + .field.is-grouped.is-grouped-multiline:last-child { + margin-bottom: -0.75rem; } + .field.is-grouped.is-grouped-multiline:not(:last-child) { + margin-bottom: 0; } + +@media screen and (min-width: 769px), print { + .field.is-horizontal { + display: flex; } } + +.field-label .label { + font-size: inherit; } + +@media screen and (max-width: 768px) { + .field-label { + margin-bottom: 0.5rem; } } + +@media screen and (min-width: 769px), print { + .field-label { + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + margin-right: 1.5rem; + text-align: right; } + .field-label.is-small { + font-size: 0.75rem; + padding-top: 0.375em; } + .field-label.is-normal { + padding-top: 0.375em; } + .field-label.is-medium { + font-size: 1.25rem; + padding-top: 0.375em; } + .field-label.is-large { + font-size: 1.5rem; + padding-top: 0.375em; } } + +.field-body .field .field { + margin-bottom: 0; } + +@media screen and (min-width: 769px), print { + .field-body { + display: flex; + flex-basis: 0; + flex-grow: 5; + flex-shrink: 1; } + .field-body .field { + margin-bottom: 0; } + .field-body > .field { + flex-shrink: 1; } + .field-body > .field:not(.is-narrow) { + flex-grow: 1; } + .field-body > .field:not(:last-child) { + margin-right: 0.75rem; } } + +.control { + box-sizing: border-box; + clear: both; + font-size: 1rem; + position: relative; + text-align: inherit; } + .control.has-icons-left .input:focus ~ .icon, + .control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, + .control.has-icons-right .select:focus ~ .icon { + color: #c6d0f5; } + .control.has-icons-left .input.is-small ~ .icon, + .control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon, + .control.has-icons-right .select.is-small ~ .icon { + font-size: 0.75rem; } + .control.has-icons-left .input.is-medium ~ .icon, + .control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, + .control.has-icons-right .select.is-medium ~ .icon { + font-size: 1.25rem; } + .control.has-icons-left .input.is-large ~ .icon, + .control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, + .control.has-icons-right .select.is-large ~ .icon { + font-size: 1.5rem; } + .control.has-icons-left .icon, .control.has-icons-right .icon { + color: #dbdbdb; + height: 2.5em; + pointer-events: none; + position: absolute; + top: 0; + width: 2.5em; + z-index: 4; } + .control.has-icons-left .input, + .control.has-icons-left .select select { + padding-left: 2.5em; } + .control.has-icons-left .icon.is-left { + left: 0; } + .control.has-icons-right .input, + .control.has-icons-right .select select { + padding-right: 2.5em; } + .control.has-icons-right .icon.is-right { + right: 0; } + .control.is-loading::after { + position: absolute !important; + right: 0.625em; + top: 0.625em; + z-index: 4; } + .control.is-loading.is-small:after { + font-size: 0.75rem; } + .control.is-loading.is-medium:after { + font-size: 1.25rem; } + .control.is-loading.is-large:after { + font-size: 1.5rem; } + +.navbar { + background-color: #303446; + min-height: 3.25rem; + position: relative; + z-index: 30; } + .navbar.is-white { + background-color: white; + color: #0a0a0a; } + .navbar.is-white .navbar-brand > .navbar-item, + .navbar.is-white .navbar-brand .navbar-link { + color: #0a0a0a; } + .navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, + .navbar.is-white .navbar-brand .navbar-link:focus, + .navbar.is-white .navbar-brand .navbar-link:hover, + .navbar.is-white .navbar-brand .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-brand .navbar-link::after { + border-color: #0a0a0a; } + .navbar.is-white .navbar-burger { + color: #0a0a0a; } + @media screen and (min-width: 1024px) { + .navbar.is-white .navbar-start > .navbar-item, + .navbar.is-white .navbar-start .navbar-link, + .navbar.is-white .navbar-end > .navbar-item, + .navbar.is-white .navbar-end .navbar-link { + color: #0a0a0a; } + .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, + .navbar.is-white .navbar-start .navbar-link:focus, + .navbar.is-white .navbar-start .navbar-link:hover, + .navbar.is-white .navbar-start .navbar-link.is-active, + .navbar.is-white .navbar-end > a.navbar-item:focus, + .navbar.is-white .navbar-end > a.navbar-item:hover, + .navbar.is-white .navbar-end > a.navbar-item.is-active, + .navbar.is-white .navbar-end .navbar-link:focus, + .navbar.is-white .navbar-end .navbar-link:hover, + .navbar.is-white .navbar-end .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-start .navbar-link::after, + .navbar.is-white .navbar-end .navbar-link::after { + border-color: #0a0a0a; } + .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-dropdown a.navbar-item.is-active { + background-color: white; + color: #0a0a0a; } } + .navbar.is-black { + background-color: #0a0a0a; + color: white; } + .navbar.is-black .navbar-brand > .navbar-item, + .navbar.is-black .navbar-brand .navbar-link { + color: white; } + .navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, + .navbar.is-black .navbar-brand .navbar-link:focus, + .navbar.is-black .navbar-brand .navbar-link:hover, + .navbar.is-black .navbar-brand .navbar-link.is-active { + background-color: black; + color: white; } + .navbar.is-black .navbar-brand .navbar-link::after { + border-color: white; } + .navbar.is-black .navbar-burger { + color: white; } + @media screen and (min-width: 1024px) { + .navbar.is-black .navbar-start > .navbar-item, + .navbar.is-black .navbar-start .navbar-link, + .navbar.is-black .navbar-end > .navbar-item, + .navbar.is-black .navbar-end .navbar-link { + color: white; } + .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, + .navbar.is-black .navbar-start .navbar-link:focus, + .navbar.is-black .navbar-start .navbar-link:hover, + .navbar.is-black .navbar-start .navbar-link.is-active, + .navbar.is-black .navbar-end > a.navbar-item:focus, + .navbar.is-black .navbar-end > a.navbar-item:hover, + .navbar.is-black .navbar-end > a.navbar-item.is-active, + .navbar.is-black .navbar-end .navbar-link:focus, + .navbar.is-black .navbar-end .navbar-link:hover, + .navbar.is-black .navbar-end .navbar-link.is-active { + background-color: black; + color: white; } + .navbar.is-black .navbar-start .navbar-link::after, + .navbar.is-black .navbar-end .navbar-link::after { + border-color: white; } + .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { + background-color: black; + color: white; } + .navbar.is-black .navbar-dropdown a.navbar-item.is-active { + background-color: #0a0a0a; + color: white; } } + .navbar.is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-brand > .navbar-item, + .navbar.is-light .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, + .navbar.is-light .navbar-brand .navbar-link:focus, + .navbar.is-light .navbar-brand .navbar-link:hover, + .navbar.is-light .navbar-brand .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-burger { + color: rgba(0, 0, 0, 0.7); } + @media screen and (min-width: 1024px) { + .navbar.is-light .navbar-start > .navbar-item, + .navbar.is-light .navbar-start .navbar-link, + .navbar.is-light .navbar-end > .navbar-item, + .navbar.is-light .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, + .navbar.is-light .navbar-start .navbar-link:focus, + .navbar.is-light .navbar-start .navbar-link:hover, + .navbar.is-light .navbar-start .navbar-link.is-active, + .navbar.is-light .navbar-end > a.navbar-item:focus, + .navbar.is-light .navbar-end > a.navbar-item:hover, + .navbar.is-light .navbar-end > a.navbar-item.is-active, + .navbar.is-light .navbar-end .navbar-link:focus, + .navbar.is-light .navbar-end .navbar-link:hover, + .navbar.is-light .navbar-end .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-start .navbar-link::after, + .navbar.is-light .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-light .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); } } + .navbar.is-dark { + background-color: #363636; + color: #fff; } + .navbar.is-dark .navbar-brand > .navbar-item, + .navbar.is-dark .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-dark .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, + .navbar.is-dark .navbar-brand .navbar-link:focus, + .navbar.is-dark .navbar-brand .navbar-link:hover, + .navbar.is-dark .navbar-brand .navbar-link.is-active { + background-color: #292929; + color: #fff; } + .navbar.is-dark .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-dark .navbar-burger { + color: #fff; } + @media screen and (min-width: 1024px) { + .navbar.is-dark .navbar-start > .navbar-item, + .navbar.is-dark .navbar-start .navbar-link, + .navbar.is-dark .navbar-end > .navbar-item, + .navbar.is-dark .navbar-end .navbar-link { + color: #fff; } + .navbar.is-dark .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, + .navbar.is-dark .navbar-start .navbar-link:focus, + .navbar.is-dark .navbar-start .navbar-link:hover, + .navbar.is-dark .navbar-start .navbar-link.is-active, + .navbar.is-dark .navbar-end > a.navbar-item:focus, + .navbar.is-dark .navbar-end > a.navbar-item:hover, + .navbar.is-dark .navbar-end > a.navbar-item.is-active, + .navbar.is-dark .navbar-end .navbar-link:focus, + .navbar.is-dark .navbar-end .navbar-link:hover, + .navbar.is-dark .navbar-end .navbar-link.is-active { + background-color: #292929; + color: #fff; } + .navbar.is-dark .navbar-start .navbar-link::after, + .navbar.is-dark .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #292929; + color: #fff; } + .navbar.is-dark .navbar-dropdown a.navbar-item.is-active { + background-color: #363636; + color: #fff; } } + .navbar.is-primary { + background-color: #c6d0f5; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-brand > .navbar-item, + .navbar.is-primary .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, + .navbar.is-primary .navbar-brand .navbar-link:focus, + .navbar.is-primary .navbar-brand .navbar-link:hover, + .navbar.is-primary .navbar-brand .navbar-link.is-active { + background-color: #b0bef1; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-burger { + color: rgba(0, 0, 0, 0.7); } + @media screen and (min-width: 1024px) { + .navbar.is-primary .navbar-start > .navbar-item, + .navbar.is-primary .navbar-start .navbar-link, + .navbar.is-primary .navbar-end > .navbar-item, + .navbar.is-primary .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, + .navbar.is-primary .navbar-start .navbar-link:focus, + .navbar.is-primary .navbar-start .navbar-link:hover, + .navbar.is-primary .navbar-start .navbar-link.is-active, + .navbar.is-primary .navbar-end > a.navbar-item:focus, + .navbar.is-primary .navbar-end > a.navbar-item:hover, + .navbar.is-primary .navbar-end > a.navbar-item.is-active, + .navbar.is-primary .navbar-end .navbar-link:focus, + .navbar.is-primary .navbar-end .navbar-link:hover, + .navbar.is-primary .navbar-end .navbar-link.is-active { + background-color: #b0bef1; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-start .navbar-link::after, + .navbar.is-primary .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #b0bef1; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-primary .navbar-dropdown a.navbar-item.is-active { + background-color: #c6d0f5; + color: rgba(0, 0, 0, 0.7); } } + .navbar.is-link { + background-color: #81c8be; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-brand > .navbar-item, + .navbar.is-link .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, + .navbar.is-link .navbar-brand .navbar-link:focus, + .navbar.is-link .navbar-brand .navbar-link:hover, + .navbar.is-link .navbar-brand .navbar-link.is-active { + background-color: #6fc0b5; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-burger { + color: rgba(0, 0, 0, 0.7); } + @media screen and (min-width: 1024px) { + .navbar.is-link .navbar-start > .navbar-item, + .navbar.is-link .navbar-start .navbar-link, + .navbar.is-link .navbar-end > .navbar-item, + .navbar.is-link .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, + .navbar.is-link .navbar-start .navbar-link:focus, + .navbar.is-link .navbar-start .navbar-link:hover, + .navbar.is-link .navbar-start .navbar-link.is-active, + .navbar.is-link .navbar-end > a.navbar-item:focus, + .navbar.is-link .navbar-end > a.navbar-item:hover, + .navbar.is-link .navbar-end > a.navbar-item.is-active, + .navbar.is-link .navbar-end .navbar-link:focus, + .navbar.is-link .navbar-end .navbar-link:hover, + .navbar.is-link .navbar-end .navbar-link.is-active { + background-color: #6fc0b5; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-start .navbar-link::after, + .navbar.is-link .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #6fc0b5; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-link .navbar-dropdown a.navbar-item.is-active { + background-color: #81c8be; + color: rgba(0, 0, 0, 0.7); } } + .navbar.is-info { + background-color: #3e8ed0; + color: #fff; } + .navbar.is-info .navbar-brand > .navbar-item, + .navbar.is-info .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, + .navbar.is-info .navbar-brand .navbar-link:focus, + .navbar.is-info .navbar-brand .navbar-link:hover, + .navbar.is-info .navbar-brand .navbar-link.is-active { + background-color: #3082c5; + color: #fff; } + .navbar.is-info .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-info .navbar-burger { + color: #fff; } + @media screen and (min-width: 1024px) { + .navbar.is-info .navbar-start > .navbar-item, + .navbar.is-info .navbar-start .navbar-link, + .navbar.is-info .navbar-end > .navbar-item, + .navbar.is-info .navbar-end .navbar-link { + color: #fff; } + .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, + .navbar.is-info .navbar-start .navbar-link:focus, + .navbar.is-info .navbar-start .navbar-link:hover, + .navbar.is-info .navbar-start .navbar-link.is-active, + .navbar.is-info .navbar-end > a.navbar-item:focus, + .navbar.is-info .navbar-end > a.navbar-item:hover, + .navbar.is-info .navbar-end > a.navbar-item.is-active, + .navbar.is-info .navbar-end .navbar-link:focus, + .navbar.is-info .navbar-end .navbar-link:hover, + .navbar.is-info .navbar-end .navbar-link.is-active { + background-color: #3082c5; + color: #fff; } + .navbar.is-info .navbar-start .navbar-link::after, + .navbar.is-info .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #3082c5; + color: #fff; } + .navbar.is-info .navbar-dropdown a.navbar-item.is-active { + background-color: #3e8ed0; + color: #fff; } } + .navbar.is-success { + background-color: #48c78e; + color: #fff; } + .navbar.is-success .navbar-brand > .navbar-item, + .navbar.is-success .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, + .navbar.is-success .navbar-brand .navbar-link:focus, + .navbar.is-success .navbar-brand .navbar-link:hover, + .navbar.is-success .navbar-brand .navbar-link.is-active { + background-color: #3abb81; + color: #fff; } + .navbar.is-success .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-success .navbar-burger { + color: #fff; } + @media screen and (min-width: 1024px) { + .navbar.is-success .navbar-start > .navbar-item, + .navbar.is-success .navbar-start .navbar-link, + .navbar.is-success .navbar-end > .navbar-item, + .navbar.is-success .navbar-end .navbar-link { + color: #fff; } + .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, + .navbar.is-success .navbar-start .navbar-link:focus, + .navbar.is-success .navbar-start .navbar-link:hover, + .navbar.is-success .navbar-start .navbar-link.is-active, + .navbar.is-success .navbar-end > a.navbar-item:focus, + .navbar.is-success .navbar-end > a.navbar-item:hover, + .navbar.is-success .navbar-end > a.navbar-item.is-active, + .navbar.is-success .navbar-end .navbar-link:focus, + .navbar.is-success .navbar-end .navbar-link:hover, + .navbar.is-success .navbar-end .navbar-link.is-active { + background-color: #3abb81; + color: #fff; } + .navbar.is-success .navbar-start .navbar-link::after, + .navbar.is-success .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #3abb81; + color: #fff; } + .navbar.is-success .navbar-dropdown a.navbar-item.is-active { + background-color: #48c78e; + color: #fff; } } + .navbar.is-warning { + background-color: #ffe08a; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand > .navbar-item, + .navbar.is-warning .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, + .navbar.is-warning .navbar-brand .navbar-link:focus, + .navbar.is-warning .navbar-brand .navbar-link:hover, + .navbar.is-warning .navbar-brand .navbar-link.is-active { + background-color: #ffd970; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-burger { + color: rgba(0, 0, 0, 0.7); } + @media screen and (min-width: 1024px) { + .navbar.is-warning .navbar-start > .navbar-item, + .navbar.is-warning .navbar-start .navbar-link, + .navbar.is-warning .navbar-end > .navbar-item, + .navbar.is-warning .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, + .navbar.is-warning .navbar-start .navbar-link:focus, + .navbar.is-warning .navbar-start .navbar-link:hover, + .navbar.is-warning .navbar-start .navbar-link.is-active, + .navbar.is-warning .navbar-end > a.navbar-item:focus, + .navbar.is-warning .navbar-end > a.navbar-item:hover, + .navbar.is-warning .navbar-end > a.navbar-item.is-active, + .navbar.is-warning .navbar-end .navbar-link:focus, + .navbar.is-warning .navbar-end .navbar-link:hover, + .navbar.is-warning .navbar-end .navbar-link.is-active { + background-color: #ffd970; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-start .navbar-link::after, + .navbar.is-warning .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #ffd970; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { + background-color: #ffe08a; + color: rgba(0, 0, 0, 0.7); } } + .navbar.is-danger { + background-color: #f14668; + color: #fff; } + .navbar.is-danger .navbar-brand > .navbar-item, + .navbar.is-danger .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, + .navbar.is-danger .navbar-brand .navbar-link:focus, + .navbar.is-danger .navbar-brand .navbar-link:hover, + .navbar.is-danger .navbar-brand .navbar-link.is-active { + background-color: #ef2e55; + color: #fff; } + .navbar.is-danger .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-danger .navbar-burger { + color: #fff; } + @media screen and (min-width: 1024px) { + .navbar.is-danger .navbar-start > .navbar-item, + .navbar.is-danger .navbar-start .navbar-link, + .navbar.is-danger .navbar-end > .navbar-item, + .navbar.is-danger .navbar-end .navbar-link { + color: #fff; } + .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, + .navbar.is-danger .navbar-start .navbar-link:focus, + .navbar.is-danger .navbar-start .navbar-link:hover, + .navbar.is-danger .navbar-start .navbar-link.is-active, + .navbar.is-danger .navbar-end > a.navbar-item:focus, + .navbar.is-danger .navbar-end > a.navbar-item:hover, + .navbar.is-danger .navbar-end > a.navbar-item.is-active, + .navbar.is-danger .navbar-end .navbar-link:focus, + .navbar.is-danger .navbar-end .navbar-link:hover, + .navbar.is-danger .navbar-end .navbar-link.is-active { + background-color: #ef2e55; + color: #fff; } + .navbar.is-danger .navbar-start .navbar-link::after, + .navbar.is-danger .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #ef2e55; + color: #fff; } + .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { + background-color: #f14668; + color: #fff; } } + .navbar > .container { + align-items: stretch; + display: flex; + min-height: 3.25rem; + width: 100%; } + .navbar.has-shadow { + box-shadow: 0 2px 0 0 whitesmoke; } + .navbar.is-fixed-bottom, .navbar.is-fixed-top { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom { + bottom: 0; } + .navbar.is-fixed-bottom.has-shadow { + box-shadow: 0 -2px 0 0 whitesmoke; } + .navbar.is-fixed-top { + top: 0; } + +html.has-navbar-fixed-top, +body.has-navbar-fixed-top { + padding-top: 3.25rem; } + +html.has-navbar-fixed-bottom, +body.has-navbar-fixed-bottom { + padding-bottom: 3.25rem; } + +.navbar-brand, +.navbar-tabs { + align-items: stretch; + display: flex; + flex-shrink: 0; + min-height: 3.25rem; } + +.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { + background-color: transparent; } + +.navbar-tabs { + -webkit-overflow-scrolling: touch; + max-width: 100vw; + overflow-x: auto; + overflow-y: hidden; } + +.navbar-burger { + color: #81c8be; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + background: none; + border: none; + cursor: pointer; + display: block; + height: 3.25rem; + position: relative; + width: 3.25rem; + margin-left: auto; } + .navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: calc(50% - 8px); + position: absolute; + transform-origin: center; + transition-duration: 86ms; + transition-property: background-color, opacity, transform; + transition-timing-function: ease-out; + width: 16px; } + .navbar-burger span:nth-child(1) { + top: calc(50% - 6px); } + .navbar-burger span:nth-child(2) { + top: calc(50% - 1px); } + .navbar-burger span:nth-child(3) { + top: calc(50% + 4px); } + .navbar-burger:hover { + background-color: rgba(0, 0, 0, 0.05); } + .navbar-burger.is-active span:nth-child(1) { + transform: translateY(5px) rotate(45deg); } + .navbar-burger.is-active span:nth-child(2) { + opacity: 0; } + .navbar-burger.is-active span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); } + +.navbar-menu { + display: none; } + +.navbar-item, +.navbar-link { + color: #81c8be; + display: block; + line-height: 1.5; + padding: 0.5rem 0.75rem; + position: relative; } + .navbar-item .icon:only-child, + .navbar-link .icon:only-child { + margin-left: -0.25rem; + margin-right: -0.25rem; } + +a.navbar-item, +.navbar-link { + cursor: pointer; } + a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, + .navbar-link:focus, + .navbar-link:focus-within, + .navbar-link:hover, + .navbar-link.is-active { + background-color: #414559; + color: #81c8be; } + +.navbar-item { + flex-grow: 0; + flex-shrink: 0; } + .navbar-item img { + max-height: 1.75rem; } + .navbar-item.has-dropdown { + padding: 0; } + .navbar-item.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .navbar-item.is-tab { + border-bottom: 1px solid transparent; + min-height: 3.25rem; + padding-bottom: calc(0.5rem - 1px); } + .navbar-item.is-tab:focus, .navbar-item.is-tab:hover { + background-color: transparent; + border-bottom-color: #81c8be; } + .navbar-item.is-tab.is-active { + background-color: transparent; + border-bottom-color: #81c8be; + border-bottom-style: solid; + border-bottom-width: 3px; + color: #81c8be; + padding-bottom: calc(0.5rem - 3px); } + +.navbar-content { + flex-grow: 1; + flex-shrink: 1; } + +.navbar-link:not(.is-arrowless) { + padding-right: 2.5em; } + .navbar-link:not(.is-arrowless)::after { + border-color: #81c8be; + margin-top: -0.375em; + right: 1.125em; } + +.navbar-dropdown { + font-size: 0.875rem; + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + .navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; } + +.navbar-divider { + background-color: #51576d; + border: none; + display: none; + height: 2px; + margin: 0.5rem 0; } + +@media screen and (max-width: 1023px) { + .navbar > .container { + display: block; } + .navbar-brand .navbar-item, + .navbar-tabs .navbar-item { + align-items: center; + display: flex; } + .navbar-link::after { + display: none; } + .navbar-menu { + background-color: #303446; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + padding: 0.5rem 0; } + .navbar-menu.is-active { + display: block; } + .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom-touch { + bottom: 0; } + .navbar.is-fixed-bottom-touch.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + .navbar.is-fixed-top-touch { + top: 0; } + .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { + -webkit-overflow-scrolling: touch; + max-height: calc(100vh - 3.25rem); + overflow: auto; } + html.has-navbar-fixed-top-touch, + body.has-navbar-fixed-top-touch { + padding-top: 3.25rem; } + html.has-navbar-fixed-bottom-touch, + body.has-navbar-fixed-bottom-touch { + padding-bottom: 3.25rem; } } + +@media screen and (min-width: 1024px) { + .navbar, + .navbar-menu, + .navbar-start, + .navbar-end { + align-items: stretch; + display: flex; } + .navbar { + min-height: 3.25rem; } + .navbar.is-spaced { + padding: 1rem 2rem; } + .navbar.is-spaced .navbar-start, + .navbar.is-spaced .navbar-end { + align-items: center; } + .navbar.is-spaced a.navbar-item, + .navbar.is-spaced .navbar-link { + border-radius: 4px; } + .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, + .navbar.is-transparent .navbar-link:focus, + .navbar.is-transparent .navbar-link:hover, + .navbar.is-transparent .navbar-link.is-active { + background-color: transparent !important; } + .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { + background-color: transparent !important; } + .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { + background-color: #414559; + color: #81c8be; } + .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #81c8be; } + .navbar-burger { + display: none; } + .navbar-item, + .navbar-link { + align-items: center; + display: flex; } + .navbar-item.has-dropdown { + align-items: stretch; } + .navbar-item.has-dropdown-up .navbar-link::after { + transform: rotate(135deg) translate(0.25em, -0.25em); } + .navbar-item.has-dropdown-up .navbar-dropdown { + border-bottom: 2px solid #dbdbdb; + border-radius: 6px 6px 0 0; + border-top: none; + bottom: 100%; + box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); + top: auto; } + .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; } + .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { + opacity: 1; + pointer-events: auto; + transform: translateY(0); } + .navbar-menu { + flex-grow: 1; + flex-shrink: 0; } + .navbar-start { + justify-content: flex-start; + margin-right: auto; } + .navbar-end { + justify-content: flex-end; + margin-left: auto; } + .navbar-dropdown { + background-color: #414559; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 2px solid #dbdbdb; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); + display: none; + font-size: 0.875rem; + left: 0; + min-width: 100%; + position: absolute; + top: 100%; + z-index: 20; } + .navbar-dropdown .navbar-item { + padding: 0.375rem 1rem; + white-space: nowrap; } + .navbar-dropdown a.navbar-item { + padding-right: 3rem; } + .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { + background-color: #414559; + color: #81c8be; } + .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #81c8be; } + .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { + border-radius: 6px; + border-top: none; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + display: block; + opacity: 0; + pointer-events: none; + top: calc(100% + (-4px)); + transform: translateY(-5px); + transition-duration: 86ms; + transition-property: opacity, transform; } + .navbar-dropdown.is-right { + left: auto; + right: 0; } + .navbar-divider { + display: block; } + .navbar > .container .navbar-brand, + .container > .navbar .navbar-brand { + margin-left: -0.75rem; } + .navbar > .container .navbar-menu, + .container > .navbar .navbar-menu { + margin-right: -0.75rem; } + .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom-desktop { + bottom: 0; } + .navbar.is-fixed-bottom-desktop.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + .navbar.is-fixed-top-desktop { + top: 0; } + html.has-navbar-fixed-top-desktop, + body.has-navbar-fixed-top-desktop { + padding-top: 3.25rem; } + html.has-navbar-fixed-bottom-desktop, + body.has-navbar-fixed-bottom-desktop { + padding-bottom: 3.25rem; } + html.has-spaced-navbar-fixed-top, + body.has-spaced-navbar-fixed-top { + padding-top: 5.25rem; } + html.has-spaced-navbar-fixed-bottom, + body.has-spaced-navbar-fixed-bottom { + padding-bottom: 5.25rem; } + a.navbar-item.is-active, + .navbar-link.is-active { + color: #0a0a0a; } + a.navbar-item.is-active:not(:focus):not(:hover), + .navbar-link.is-active:not(:focus):not(:hover) { + background-color: transparent; } + .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #414559; } } + +.hero.is-fullheight-with-navbar { + min-height: calc(100vh - 3.25rem); } + +.hero { + align-items: stretch; + display: flex; + flex-direction: column; + justify-content: space-between; } + .hero .navbar { + background: none; } + .hero .tabs ul { + border-bottom: none; } + .hero.is-white { + background-color: white; + color: #0a0a0a; } + .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-white strong { + color: inherit; } + .hero.is-white .title { + color: #0a0a0a; } + .hero.is-white .subtitle { + color: rgba(10, 10, 10, 0.9); } + .hero.is-white .subtitle a:not(.button), + .hero.is-white .subtitle strong { + color: #0a0a0a; } + @media screen and (max-width: 1023px) { + .hero.is-white .navbar-menu { + background-color: white; } } + .hero.is-white .navbar-item, + .hero.is-white .navbar-link { + color: rgba(10, 10, 10, 0.7); } + .hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, + .hero.is-white .navbar-link:hover, + .hero.is-white .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .hero.is-white .tabs a { + color: #0a0a0a; + opacity: 0.9; } + .hero.is-white .tabs a:hover { + opacity: 1; } + .hero.is-white .tabs li.is-active a { + color: white !important; + opacity: 1; } + .hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { + color: #0a0a0a; } + .hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .hero.is-white.is-bold { + background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } + @media screen and (max-width: 768px) { + .hero.is-white.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } } + .hero.is-black { + background-color: #0a0a0a; + color: white; } + .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-black strong { + color: inherit; } + .hero.is-black .title { + color: white; } + .hero.is-black .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-black .subtitle a:not(.button), + .hero.is-black .subtitle strong { + color: white; } + @media screen and (max-width: 1023px) { + .hero.is-black .navbar-menu { + background-color: #0a0a0a; } } + .hero.is-black .navbar-item, + .hero.is-black .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, + .hero.is-black .navbar-link:hover, + .hero.is-black .navbar-link.is-active { + background-color: black; + color: white; } + .hero.is-black .tabs a { + color: white; + opacity: 0.9; } + .hero.is-black .tabs a:hover { + opacity: 1; } + .hero.is-black .tabs li.is-active a { + color: #0a0a0a !important; + opacity: 1; } + .hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { + color: white; } + .hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { + background-color: white; + border-color: white; + color: #0a0a0a; } + .hero.is-black.is-bold { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } + @media screen and (max-width: 768px) { + .hero.is-black.is-bold .navbar-menu { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } + .hero.is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); } + .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-light strong { + color: inherit; } + .hero.is-light .title { + color: rgba(0, 0, 0, 0.7); } + .hero.is-light .subtitle { + color: rgba(0, 0, 0, 0.9); } + .hero.is-light .subtitle a:not(.button), + .hero.is-light .subtitle strong { + color: rgba(0, 0, 0, 0.7); } + @media screen and (max-width: 1023px) { + .hero.is-light .navbar-menu { + background-color: whitesmoke; } } + .hero.is-light .navbar-item, + .hero.is-light .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, + .hero.is-light .navbar-link:hover, + .hero.is-light .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); } + .hero.is-light .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; } + .hero.is-light .tabs a:hover { + opacity: 1; } + .hero.is-light .tabs li.is-active a { + color: whitesmoke !important; + opacity: 1; } + .hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); } + .hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: whitesmoke; } + .hero.is-light.is-bold { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } + @media screen and (max-width: 768px) { + .hero.is-light.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } } + .hero.is-dark { + background-color: #363636; + color: #fff; } + .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-dark strong { + color: inherit; } + .hero.is-dark .title { + color: #fff; } + .hero.is-dark .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-dark .subtitle a:not(.button), + .hero.is-dark .subtitle strong { + color: #fff; } + @media screen and (max-width: 1023px) { + .hero.is-dark .navbar-menu { + background-color: #363636; } } + .hero.is-dark .navbar-item, + .hero.is-dark .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-dark a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, + .hero.is-dark .navbar-link:hover, + .hero.is-dark .navbar-link.is-active { + background-color: #292929; + color: #fff; } + .hero.is-dark .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-dark .tabs a:hover { + opacity: 1; } + .hero.is-dark .tabs li.is-active a { + color: #363636 !important; + opacity: 1; } + .hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a { + color: #fff; } + .hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #363636; } + .hero.is-dark.is-bold { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } + @media screen and (max-width: 768px) { + .hero.is-dark.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } } + .hero.is-primary { + background-color: #c6d0f5; + color: rgba(0, 0, 0, 0.7); } + .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-primary strong { + color: inherit; } + .hero.is-primary .title { + color: rgba(0, 0, 0, 0.7); } + .hero.is-primary .subtitle { + color: rgba(0, 0, 0, 0.9); } + .hero.is-primary .subtitle a:not(.button), + .hero.is-primary .subtitle strong { + color: rgba(0, 0, 0, 0.7); } + @media screen and (max-width: 1023px) { + .hero.is-primary .navbar-menu { + background-color: #c6d0f5; } } + .hero.is-primary .navbar-item, + .hero.is-primary .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .hero.is-primary a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, + .hero.is-primary .navbar-link:hover, + .hero.is-primary .navbar-link.is-active { + background-color: #b0bef1; + color: rgba(0, 0, 0, 0.7); } + .hero.is-primary .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; } + .hero.is-primary .tabs a:hover { + opacity: 1; } + .hero.is-primary .tabs li.is-active a { + color: #c6d0f5 !important; + opacity: 1; } + .hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); } + .hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #c6d0f5; } + .hero.is-primary.is-bold { + background-image: linear-gradient(141deg, #95b9f3 0%, #c6d0f5 71%, #dbdcfa 100%); } + @media screen and (max-width: 768px) { + .hero.is-primary.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #95b9f3 0%, #c6d0f5 71%, #dbdcfa 100%); } } + .hero.is-link { + background-color: #81c8be; + color: rgba(0, 0, 0, 0.7); } + .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-link strong { + color: inherit; } + .hero.is-link .title { + color: rgba(0, 0, 0, 0.7); } + .hero.is-link .subtitle { + color: rgba(0, 0, 0, 0.9); } + .hero.is-link .subtitle a:not(.button), + .hero.is-link .subtitle strong { + color: rgba(0, 0, 0, 0.7); } + @media screen and (max-width: 1023px) { + .hero.is-link .navbar-menu { + background-color: #81c8be; } } + .hero.is-link .navbar-item, + .hero.is-link .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, + .hero.is-link .navbar-link:hover, + .hero.is-link .navbar-link.is-active { + background-color: #6fc0b5; + color: rgba(0, 0, 0, 0.7); } + .hero.is-link .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; } + .hero.is-link .tabs a:hover { + opacity: 1; } + .hero.is-link .tabs li.is-active a { + color: #81c8be !important; + opacity: 1; } + .hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); } + .hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #81c8be; } + .hero.is-link.is-bold { + background-image: linear-gradient(141deg, #52c4a1 0%, #81c8be 71%, #8fd2d4 100%); } + @media screen and (max-width: 768px) { + .hero.is-link.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #52c4a1 0%, #81c8be 71%, #8fd2d4 100%); } } + .hero.is-info { + background-color: #3e8ed0; + color: #fff; } + .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-info strong { + color: inherit; } + .hero.is-info .title { + color: #fff; } + .hero.is-info .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-info .subtitle a:not(.button), + .hero.is-info .subtitle strong { + color: #fff; } + @media screen and (max-width: 1023px) { + .hero.is-info .navbar-menu { + background-color: #3e8ed0; } } + .hero.is-info .navbar-item, + .hero.is-info .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, + .hero.is-info .navbar-link:hover, + .hero.is-info .navbar-link.is-active { + background-color: #3082c5; + color: #fff; } + .hero.is-info .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-info .tabs a:hover { + opacity: 1; } + .hero.is-info .tabs li.is-active a { + color: #3e8ed0 !important; + opacity: 1; } + .hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { + color: #fff; } + .hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #3e8ed0; } + .hero.is-info.is-bold { + background-image: linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%); } + @media screen and (max-width: 768px) { + .hero.is-info.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%); } } + .hero.is-success { + background-color: #48c78e; + color: #fff; } + .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-success strong { + color: inherit; } + .hero.is-success .title { + color: #fff; } + .hero.is-success .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-success .subtitle a:not(.button), + .hero.is-success .subtitle strong { + color: #fff; } + @media screen and (max-width: 1023px) { + .hero.is-success .navbar-menu { + background-color: #48c78e; } } + .hero.is-success .navbar-item, + .hero.is-success .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, + .hero.is-success .navbar-link:hover, + .hero.is-success .navbar-link.is-active { + background-color: #3abb81; + color: #fff; } + .hero.is-success .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-success .tabs a:hover { + opacity: 1; } + .hero.is-success .tabs li.is-active a { + color: #48c78e !important; + opacity: 1; } + .hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { + color: #fff; } + .hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #48c78e; } + .hero.is-success.is-bold { + background-image: linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%); } + @media screen and (max-width: 768px) { + .hero.is-success.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%); } } + .hero.is-warning { + background-color: #ffe08a; + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-warning strong { + color: inherit; } + .hero.is-warning .title { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .subtitle { + color: rgba(0, 0, 0, 0.9); } + .hero.is-warning .subtitle a:not(.button), + .hero.is-warning .subtitle strong { + color: rgba(0, 0, 0, 0.7); } + @media screen and (max-width: 1023px) { + .hero.is-warning .navbar-menu { + background-color: #ffe08a; } } + .hero.is-warning .navbar-item, + .hero.is-warning .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, + .hero.is-warning .navbar-link:hover, + .hero.is-warning .navbar-link.is-active { + background-color: #ffd970; + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; } + .hero.is-warning .tabs a:hover { + opacity: 1; } + .hero.is-warning .tabs li.is-active a { + color: #ffe08a !important; + opacity: 1; } + .hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #ffe08a; } + .hero.is-warning.is-bold { + background-image: linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%); } + @media screen and (max-width: 768px) { + .hero.is-warning.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%); } } + .hero.is-danger { + background-color: #f14668; + color: #fff; } + .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-danger strong { + color: inherit; } + .hero.is-danger .title { + color: #fff; } + .hero.is-danger .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-danger .subtitle a:not(.button), + .hero.is-danger .subtitle strong { + color: #fff; } + @media screen and (max-width: 1023px) { + .hero.is-danger .navbar-menu { + background-color: #f14668; } } + .hero.is-danger .navbar-item, + .hero.is-danger .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, + .hero.is-danger .navbar-link:hover, + .hero.is-danger .navbar-link.is-active { + background-color: #ef2e55; + color: #fff; } + .hero.is-danger .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-danger .tabs a:hover { + opacity: 1; } + .hero.is-danger .tabs li.is-active a { + color: #f14668 !important; + opacity: 1; } + .hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { + color: #fff; } + .hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #f14668; } + .hero.is-danger.is-bold { + background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); } + @media screen and (max-width: 768px) { + .hero.is-danger.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); } } + .hero.is-small .hero-body { + padding: 1.5rem; } + @media screen and (min-width: 769px), print { + .hero.is-medium .hero-body { + padding: 9rem 4.5rem; } } + @media screen and (min-width: 769px), print { + .hero.is-large .hero-body { + padding: 18rem 6rem; } } + .hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { + align-items: center; + display: flex; } + .hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { + flex-grow: 1; + flex-shrink: 1; } + .hero.is-halfheight { + min-height: 50vh; } + .hero.is-fullheight { + min-height: 100vh; } + +.hero-video { + overflow: hidden; } + .hero-video video { + left: 50%; + min-height: 100%; + min-width: 100%; + position: absolute; + top: 50%; + transform: translate3d(-50%, -50%, 0); } + .hero-video.is-transparent { + opacity: 0.3; } + @media screen and (max-width: 768px) { + .hero-video { + display: none; } } + +.hero-buttons { + margin-top: 1.5rem; } + @media screen and (max-width: 768px) { + .hero-buttons .button { + display: flex; } + .hero-buttons .button:not(:last-child) { + margin-bottom: 0.75rem; } } + @media screen and (min-width: 769px), print { + .hero-buttons { + display: flex; + justify-content: center; } + .hero-buttons .button:not(:last-child) { + margin-right: 1.5rem; } } + +.hero-head, +.hero-foot { + flex-grow: 0; + flex-shrink: 0; } + +.hero-body { + flex-grow: 1; + flex-shrink: 0; + padding: 3rem 1.5rem; } + @media screen and (min-width: 769px), print { + .hero-body { + padding: 3rem 3rem; } } + +.section { + padding: 3rem 1.5rem; } + @media screen and (min-width: 1024px) { + .section { + padding: 3rem 3rem; } + .section.is-medium { + padding: 9rem 4.5rem; } + .section.is-large { + padding: 18rem 6rem; } } diff --git a/mybulma/node_modules/.bin/color-support b/mybulma/node_modules/.bin/color-support new file mode 100644 index 0000000..3c0a967 --- /dev/null +++ b/mybulma/node_modules/.bin/color-support @@ -0,0 +1,3 @@ +#!/usr/bin/env node +var colorSupport = require('./')({alwaysReturn: true }) +console.log(JSON.stringify(colorSupport, null, 2)) diff --git a/mybulma/node_modules/.bin/mkdirp b/mybulma/node_modules/.bin/mkdirp new file mode 100644 index 0000000..6e0aa8d --- /dev/null +++ b/mybulma/node_modules/.bin/mkdirp @@ -0,0 +1,68 @@ +#!/usr/bin/env node + +const usage = () => ` +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories + that don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m If a directory needs to be created, set the mode as an octal + --mode= permission string. + + -v --version Print the mkdirp version number + + -h --help Print this helpful banner + + -p --print Print the first directories created for each path provided + + --manual Use manual implementation, even if native is available +` + +const dirs = [] +const opts = {} +let print = false +let dashdash = false +let manual = false +for (const arg of process.argv.slice(2)) { + if (dashdash) + dirs.push(arg) + else if (arg === '--') + dashdash = true + else if (arg === '--manual') + manual = true + else if (/^-h/.test(arg) || /^--help/.test(arg)) { + console.log(usage()) + process.exit(0) + } else if (arg === '-v' || arg === '--version') { + console.log(require('../package.json').version) + process.exit(0) + } else if (arg === '-p' || arg === '--print') { + print = true + } else if (/^-m/.test(arg) || /^--mode=/.test(arg)) { + const mode = parseInt(arg.replace(/^(-m|--mode=)/, ''), 8) + if (isNaN(mode)) { + console.error(`invalid mode argument: ${arg}\nMust be an octal number.`) + process.exit(1) + } + opts.mode = mode + } else + dirs.push(arg) +} + +const mkdirp = require('../') +const impl = manual ? mkdirp.manual : mkdirp +if (dirs.length === 0) + console.error(usage()) + +Promise.all(dirs.map(dir => impl(dir, opts))) + .then(made => print ? made.forEach(m => m && console.log(m)) : null) + .catch(er => { + console.error(er.message) + if (er.code) + console.error(' code: ' + er.code) + process.exit(1) + }) diff --git a/mybulma/node_modules/.bin/node-gyp b/mybulma/node_modules/.bin/node-gyp new file mode 100644 index 0000000..8652ea2 --- /dev/null +++ b/mybulma/node_modules/.bin/node-gyp @@ -0,0 +1,140 @@ +#!/usr/bin/env node + +'use strict' + +process.title = 'node-gyp' + +const envPaths = require('env-paths') +const gyp = require('../') +const log = require('npmlog') +const os = require('os') + +/** + * Process and execute the selected commands. + */ + +const prog = gyp() +var completed = false +prog.parseArgv(process.argv) +prog.devDir = prog.opts.devdir + +var homeDir = os.homedir() +if (prog.devDir) { + prog.devDir = prog.devDir.replace(/^~/, homeDir) +} else if (homeDir) { + prog.devDir = envPaths('node-gyp', { suffix: '' }).cache +} else { + throw new Error( + "node-gyp requires that the user's home directory is specified " + + 'in either of the environmental variables HOME or USERPROFILE. ' + + 'Overide with: --devdir /path/to/.node-gyp') +} + +if (prog.todo.length === 0) { + if (~process.argv.indexOf('-v') || ~process.argv.indexOf('--version')) { + console.log('v%s', prog.version) + } else { + console.log('%s', prog.usage()) + } + process.exit(0) +} + +log.info('it worked if it ends with', 'ok') +log.verbose('cli', process.argv) +log.info('using', 'node-gyp@%s', prog.version) +log.info('using', 'node@%s | %s | %s', process.versions.node, process.platform, process.arch) + +/** + * Change dir if -C/--directory was passed. + */ + +var dir = prog.opts.directory +if (dir) { + var fs = require('fs') + try { + var stat = fs.statSync(dir) + if (stat.isDirectory()) { + log.info('chdir', dir) + process.chdir(dir) + } else { + log.warn('chdir', dir + ' is not a directory') + } + } catch (e) { + if (e.code === 'ENOENT') { + log.warn('chdir', dir + ' is not a directory') + } else { + log.warn('chdir', 'error during chdir() "%s"', e.message) + } + } +} + +function run () { + var command = prog.todo.shift() + if (!command) { + // done! + completed = true + log.info('ok') + return + } + + prog.commands[command.name](command.args, function (err) { + if (err) { + log.error(command.name + ' error') + log.error('stack', err.stack) + errorMessage() + log.error('not ok') + return process.exit(1) + } + if (command.name === 'list') { + var versions = arguments[1] + if (versions.length > 0) { + versions.forEach(function (version) { + console.log(version) + }) + } else { + console.log('No node development files installed. Use `node-gyp install` to install a version.') + } + } else if (arguments.length >= 2) { + console.log.apply(console, [].slice.call(arguments, 1)) + } + + // now run the next command in the queue + process.nextTick(run) + }) +} + +process.on('exit', function (code) { + if (!completed && !code) { + log.error('Completion callback never invoked!') + issueMessage() + process.exit(6) + } +}) + +process.on('uncaughtException', function (err) { + log.error('UNCAUGHT EXCEPTION') + log.error('stack', err.stack) + issueMessage() + process.exit(7) +}) + +function errorMessage () { + // copied from npm's lib/utils/error-handler.js + var os = require('os') + log.error('System', os.type() + ' ' + os.release()) + log.error('command', process.argv + .map(JSON.stringify).join(' ')) + log.error('cwd', process.cwd()) + log.error('node -v', process.version) + log.error('node-gyp -v', 'v' + prog.package.version) +} + +function issueMessage () { + errorMessage() + log.error('', ['Node-gyp failed to build your package.', + 'Try to update npm and/or node-gyp and if it does not help file an issue with the package author.' + ].join('\n')) +} + +// start running the given commands! +run() diff --git a/mybulma/node_modules/.bin/node-sass b/mybulma/node_modules/.bin/node-sass new file mode 100644 index 0000000..7645ecb --- /dev/null +++ b/mybulma/node_modules/.bin/node-sass @@ -0,0 +1,444 @@ +#!/usr/bin/env node + +var Emitter = require('events').EventEmitter, + forEach = require('async-foreach').forEach, + Gaze = require('gaze'), + meow = require('meow'), + util = require('util'), + path = require('path'), + glob = require('glob'), + sass = require('../lib'), + render = require('../lib/render'), + watcher = require('../lib/watcher'), + stdout = require('stdout-stream'), + stdin = require('get-stdin'), + fs = require('fs'); + +/** + * Initialize CLI + */ + +var cli = meow(` + Usage: + node-sass [options] + cat | node-sass [options] > output.css + + Example: Compile foobar.scss to foobar.css + node-sass --output-style compressed foobar.scss > foobar.css + cat foobar.scss | node-sass --output-style compressed > foobar.css + + Example: Watch the sass directory for changes, compile with sourcemaps to the css directory + node-sass --watch --recursive --output css + --source-map true --source-map-contents sass + + Options + -w, --watch Watch a directory or file + -r, --recursive Recursively watch directories or files + -o, --output Output directory + -x, --omit-source-map-url Omit source map URL comment from output + -i, --indented-syntax Treat data from stdin as sass code (versus scss) + -q, --quiet Suppress log output except on error + -v, --version Prints version info + --output-style CSS output style (nested | expanded | compact | compressed) + --indent-type Indent type for output CSS (space | tab) + --indent-width Indent width; number of spaces or tabs (maximum value: 10) + --linefeed Linefeed style (cr | crlf | lf | lfcr) + --source-comments Include debug info in output + --source-map Emit source map (boolean, or path to output .map file) + --source-map-contents Embed include contents in map + --source-map-embed Embed sourceMappingUrl as data URI + --source-map-root Base path, will be emitted in source-map as is + --include-path Path to look for imported files + --follow Follow symlinked directories + --precision The amount of precision allowed in decimal numbers + --error-bell Output a bell character on errors + --importer Path to .js file containing custom importer + --functions Path to .js file containing custom functions + --help Print usage info +`, { + version: sass.info, + flags: { + errorBell: { + type: 'boolean', + }, + functions: { + type: 'string', + }, + follow: { + type: 'boolean', + }, + importer: { + type: 'string', + }, + includePath: { + type: 'string', + default: [process.cwd()], + isMultiple: true, + }, + indentType: { + type: 'string', + default: 'space', + }, + indentWidth: { + type: 'number', + default: 2, + }, + indentedSyntax: { + type: 'boolean', + alias: 'i', + }, + linefeed: { + type: 'string', + default: 'lf', + }, + omitSourceMapUrl: { + type: 'boolean', + alias: 'x', + }, + output: { + type: 'string', + alias: 'o', + }, + outputStyle: { + type: 'string', + default: 'nested', + }, + precision: { + type: 'number', + default: 5, + }, + quiet: { + type: 'boolean', + default: false, + alias: 'q', + }, + recursive: { + type: 'boolean', + default: true, + alias: 'r', + }, + sourceMapContents: { + type: 'boolean', + }, + sourceMapEmbed: { + type: 'boolean', + }, + sourceMapRoot: { + type: 'string', + }, + sourceComments: { + type: 'boolean', + alias: 'c', + }, + version: { + type: 'boolean', + alias: 'v', + }, + watch: { + type: 'boolean', + alias: 'w', + }, + }, +}); + +/** + * Is a Directory + * + * @param {String} filePath + * @returns {Boolean} + * @api private + */ + +function isDirectory(filePath) { + var isDir = false; + try { + var absolutePath = path.resolve(filePath); + isDir = fs.statSync(absolutePath).isDirectory(); + } catch (e) { + isDir = e.code === 'ENOENT'; + } + return isDir; +} + +/** + * Get correct glob pattern + * + * @param {Object} options + * @returns {String} + * @api private + */ + +function globPattern(options) { + return options.recursive ? '**/*.{sass,scss}' : '*.{sass,scss}'; +} + +/** + * Create emitter + * + * @api private + */ + +function getEmitter() { + var emitter = new Emitter(); + + emitter.on('error', function(err) { + if (options.errorBell) { + err += '\x07'; + } + console.error(err); + if (!options.watch) { + process.exit(1); + } + }); + + emitter.on('warn', function(data) { + if (!options.quiet) { + console.warn(data); + } + }); + + emitter.on('info', function(data) { + if (!options.quiet) { + console.info(data); + } + }); + + emitter.on('log', stdout.write.bind(stdout)); + + return emitter; +} + +/** + * Construct options + * + * @param {Array} arguments + * @param {Object} options + * @api private + */ + +function getOptions(args, options) { + var cssDir, sassDir, file, mapDir; + options.src = args[0]; + + if (args[1]) { + options.dest = path.resolve(args[1]); + } else if (options.output) { + options.dest = path.join( + path.resolve(options.output), + [path.basename(options.src, path.extname(options.src)), '.css'].join('')); // replace ext. + } + + if (options.directory) { + sassDir = path.resolve(options.directory); + file = path.relative(sassDir, args[0]); + cssDir = path.resolve(options.output); + options.dest = path.join(cssDir, file).replace(path.extname(file), '.css'); + } + + if (options.sourceMap) { + if(!options.sourceMapOriginal) { + options.sourceMapOriginal = options.sourceMap; + } + + if (options.sourceMapOriginal === 'true') { + options.sourceMap = options.dest + '.map'; + } else { + // check if sourceMap path ends with .map to avoid isDirectory false-positive + var sourceMapIsDirectory = options.sourceMapOriginal.indexOf('.map', options.sourceMapOriginal.length - 4) === -1 && isDirectory(options.sourceMapOriginal); + + if (!sourceMapIsDirectory) { + options.sourceMap = path.resolve(options.sourceMapOriginal); + } else if (!options.directory) { + options.sourceMap = path.resolve(options.sourceMapOriginal, path.basename(options.dest) + '.map'); + } else { + sassDir = path.resolve(options.directory); + file = path.relative(sassDir, args[0]); + mapDir = path.resolve(options.sourceMapOriginal); + options.sourceMap = path.join(mapDir, file).replace(path.extname(file), '.css.map'); + } + } + } + + return options; +} + +/** + * Watch + * + * @param {Object} options + * @param {Object} emitter + * @api private + */ + +function watch(options, emitter) { + var handler = function(files) { + files.added.forEach(function(file) { + var watch = gaze.watched(); + Object.keys(watch).forEach(function (dir) { + if (watch[dir].indexOf(file) !== -1) { + gaze.add(file); + } + }); + }); + + files.changed.forEach(function(file) { + if (path.basename(file)[0] !== '_') { + renderFile(file, options, emitter); + } + }); + + files.removed.forEach(function(file) { + gaze.remove(file); + }); + }; + + var gaze = new Gaze(); + gaze.add(watcher.reset(options)); + gaze.on('error', emitter.emit.bind(emitter, 'error')); + + gaze.on('changed', function(file) { + handler(watcher.changed(file)); + }); + + gaze.on('added', function(file) { + handler(watcher.added(file)); + }); + + gaze.on('deleted', function(file) { + handler(watcher.removed(file)); + }); +} + +/** + * Run + * + * @param {Object} options + * @param {Object} emitter + * @api private + */ + +function run(options, emitter) { + if (options.directory) { + if (!options.output) { + emitter.emit('error', 'An output directory must be specified when compiling a directory'); + } + if (!isDirectory(options.output)) { + emitter.emit('error', 'An output directory must be specified when compiling a directory'); + } + } + + if (options.sourceMapOriginal && options.directory && !isDirectory(options.sourceMapOriginal) && options.sourceMapOriginal !== 'true') { + emitter.emit('error', 'The --source-map option must be either a boolean or directory when compiling a directory'); + } + + if (options.importer) { + if ((path.resolve(options.importer) === path.normalize(options.importer).replace(/(.+)([/|\\])$/, '$1'))) { + options.importer = require(options.importer); + } else { + options.importer = require(path.resolve(options.importer)); + } + } + + if (options.functions) { + if ((path.resolve(options.functions) === path.normalize(options.functions).replace(/(.+)([/|\\])$/, '$1'))) { + options.functions = require(options.functions); + } else { + options.functions = require(path.resolve(options.functions)); + } + } + + if (options.watch) { + watch(options, emitter); + } else if (options.directory) { + renderDir(options, emitter); + } else { + render(options, emitter); + } +} + +/** + * Render a file + * + * @param {String} file + * @param {Object} options + * @param {Object} emitter + * @api private + */ +function renderFile(file, options, emitter) { + options = getOptions([path.resolve(file)], options); + if (options.watch && !options.quiet) { + emitter.emit('info', util.format('=> changed: %s', file)); + } + render(options, emitter); +} + +/** + * Render all sass files in a directory + * + * @param {Object} options + * @param {Object} emitter + * @api private + */ +function renderDir(options, emitter) { + var globPath = path.resolve(options.directory, globPattern(options)); + glob(globPath, { ignore: '**/_*', follow: options.follow }, function(err, files) { + if (err) { + return emitter.emit('error', util.format('You do not have permission to access this path: %s.', err.path)); + } else if (!files.length) { + return emitter.emit('error', 'No input file was found.'); + } + + forEach(files, function(subject) { + emitter.once('done', this.async()); + renderFile(subject, options, emitter); + }, function(successful, arr) { + var outputDir = path.join(process.cwd(), options.output); + if (!options.quiet) { + emitter.emit('info', util.format('Wrote %s CSS files to %s', arr.length, outputDir)); + } + process.exit(); + }); + }); +} + +/** + * Arguments and options + */ + +var options = getOptions(cli.input, cli.flags); +var emitter = getEmitter(); + +/** + * Show usage if no arguments are supplied + */ + +if (!options.src && process.stdin.isTTY) { + emitter.emit('error', [ + 'Provide a Sass file to render', + '', + 'Example: Compile foobar.scss to foobar.css', + ' node-sass --output-style compressed foobar.scss > foobar.css', + ' cat foobar.scss | node-sass --output-style compressed > foobar.css', + '', + 'Example: Watch the sass directory for changes, compile with sourcemaps to the css directory', + ' node-sass --watch --recursive --output css', + ' --source-map true --source-map-contents sass', + ].join('\n')); +} + +/** + * Apply arguments + */ + +if (options.src) { + if (isDirectory(options.src)) { + options.directory = options.src; + } + run(options, emitter); +} else if (!process.stdin.isTTY) { + stdin(function(data) { + options.data = data; + options.stdin = true; + run(options, emitter); + }); +} diff --git a/mybulma/node_modules/.bin/node-which b/mybulma/node_modules/.bin/node-which new file mode 100644 index 0000000..7cee372 --- /dev/null +++ b/mybulma/node_modules/.bin/node-which @@ -0,0 +1,52 @@ +#!/usr/bin/env node +var which = require("../") +if (process.argv.length < 3) + usage() + +function usage () { + console.error('usage: which [-as] program ...') + process.exit(1) +} + +var all = false +var silent = false +var dashdash = false +var args = process.argv.slice(2).filter(function (arg) { + if (dashdash || !/^-/.test(arg)) + return true + + if (arg === '--') { + dashdash = true + return false + } + + var flags = arg.substr(1).split('') + for (var f = 0; f < flags.length; f++) { + var flag = flags[f] + switch (flag) { + case 's': + silent = true + break + case 'a': + all = true + break + default: + console.error('which: illegal option -- ' + flag) + usage() + } + } + return false +}) + +process.exit(args.reduce(function (pv, current) { + try { + var f = which.sync(current, { all: all }) + if (all) + f = f.join('\n') + if (!silent) + console.log(f) + return pv; + } catch (e) { + return 1; + } +}, 0)) diff --git a/mybulma/node_modules/.bin/nopt b/mybulma/node_modules/.bin/nopt new file mode 100644 index 0000000..3232d4c --- /dev/null +++ b/mybulma/node_modules/.bin/nopt @@ -0,0 +1,54 @@ +#!/usr/bin/env node +var nopt = require("../lib/nopt") + , path = require("path") + , types = { num: Number + , bool: Boolean + , help: Boolean + , list: Array + , "num-list": [Number, Array] + , "str-list": [String, Array] + , "bool-list": [Boolean, Array] + , str: String + , clear: Boolean + , config: Boolean + , length: Number + , file: path + } + , shorthands = { s: [ "--str", "astring" ] + , b: [ "--bool" ] + , nb: [ "--no-bool" ] + , tft: [ "--bool-list", "--no-bool-list", "--bool-list", "true" ] + , "?": ["--help"] + , h: ["--help"] + , H: ["--help"] + , n: [ "--num", "125" ] + , c: ["--config"] + , l: ["--length"] + , f: ["--file"] + } + , parsed = nopt( types + , shorthands + , process.argv + , 2 ) + +console.log("parsed", parsed) + +if (parsed.help) { + console.log("") + console.log("nopt cli tester") + console.log("") + console.log("types") + console.log(Object.keys(types).map(function M (t) { + var type = types[t] + if (Array.isArray(type)) { + return [t, type.map(function (type) { return type.name })] + } + return [t, type && type.name] + }).reduce(function (s, i) { + s[i[0]] = i[1] + return s + }, {})) + console.log("") + console.log("shorthands") + console.log(shorthands) +} diff --git a/mybulma/node_modules/.bin/resolve b/mybulma/node_modules/.bin/resolve new file mode 100644 index 0000000..5ee329a --- /dev/null +++ b/mybulma/node_modules/.bin/resolve @@ -0,0 +1,50 @@ +#!/usr/bin/env node + +'use strict'; + +var path = require('path'); +var fs = require('fs'); + +if ( + String(process.env.npm_lifecycle_script).slice(0, 8) !== 'resolve ' + && ( + !process.argv + || process.argv.length < 2 + || (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino) + || (process.env._ && path.resolve(process.env._) !== __filename) + ) +) { + console.error('Error: `resolve` must be run directly as an executable'); + process.exit(1); +} + +var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag'); + +var preserveSymlinks = false; +for (var i = 2; i < process.argv.length; i += 1) { + if (process.argv[i].slice(0, 2) === '--') { + if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') { + preserveSymlinks = true; + } else if (process.argv[i].length > 2) { + console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, '')); + process.exit(2); + } + process.argv.splice(i, 1); + i -= 1; + if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax + } +} + +if (process.argv.length < 3) { + console.error('Error: `resolve` expects a specifier'); + process.exit(2); +} + +var resolve = require('../'); + +var result = resolve.sync(process.argv[2], { + basedir: process.cwd(), + preserveSymlinks: preserveSymlinks +}); + +console.log(result); diff --git a/mybulma/node_modules/.bin/rimraf b/mybulma/node_modules/.bin/rimraf new file mode 100644 index 0000000..023814c --- /dev/null +++ b/mybulma/node_modules/.bin/rimraf @@ -0,0 +1,68 @@ +#!/usr/bin/env node + +const rimraf = require('./') + +const path = require('path') + +const isRoot = arg => /^(\/|[a-zA-Z]:\\)$/.test(path.resolve(arg)) +const filterOutRoot = arg => { + const ok = preserveRoot === false || !isRoot(arg) + if (!ok) { + console.error(`refusing to remove ${arg}`) + console.error('Set --no-preserve-root to allow this') + } + return ok +} + +let help = false +let dashdash = false +let noglob = false +let preserveRoot = true +const args = process.argv.slice(2).filter(arg => { + if (dashdash) + return !!arg + else if (arg === '--') + dashdash = true + else if (arg === '--no-glob' || arg === '-G') + noglob = true + else if (arg === '--glob' || arg === '-g') + noglob = false + else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/)) + help = true + else if (arg === '--preserve-root') + preserveRoot = true + else if (arg === '--no-preserve-root') + preserveRoot = false + else + return !!arg +}).filter(arg => !preserveRoot || filterOutRoot(arg)) + +const go = n => { + if (n >= args.length) + return + const options = noglob ? { glob: false } : {} + rimraf(args[n], options, er => { + if (er) + throw er + go(n+1) + }) +} + +if (help || args.length === 0) { + // If they didn't ask for help, then this is not a "success" + const log = help ? console.log : console.error + log('Usage: rimraf [ ...]') + log('') + log(' Deletes all files and folders at "path" recursively.') + log('') + log('Options:') + log('') + log(' -h, --help Display this usage info') + log(' -G, --no-glob Do not expand glob patterns in arguments') + log(' -g, --glob Expand glob patterns in arguments (default)') + log(' --preserve-root Do not remove \'/\' (default)') + log(' --no-preserve-root Do not treat \'/\' specially') + log(' -- Stop parsing flags') + process.exit(help ? 0 : 1) +} else + go(0) diff --git a/mybulma/node_modules/.bin/sassgraph b/mybulma/node_modules/.bin/sassgraph new file mode 100644 index 0000000..0d6f842 --- /dev/null +++ b/mybulma/node_modules/.bin/sassgraph @@ -0,0 +1,122 @@ +#!/usr/bin/env node +var fs = require('fs'); +var path = require('path'); + +var command, directory, file; + +var yargs = require('yargs') + .usage('Usage: $0 [options] [file]') + // .demand(1) + + .command('ancestors', 'Output the ancestors') + .command('descendents', 'Output the descendents') + + .example('$0 ancestors -I src src/ src/_footer.scss', 'outputs the ancestors of src/_footer.scss') + + .option('I', { + alias: 'load-path', + default: [process.cwd()], + describe: 'Add directories to the sass load path', + type: 'array', + }) + + .option('e', { + alias: 'extensions', + default: ['scss', 'sass'], + describe: 'File extensions to include in the graph', + type: 'array', + }) + + .option('f', { + alias: 'follow', + default: false, + describe: 'Follow symbolic links', + type: 'bool', + }) + + .option('j', { + alias: 'json', + default: false, + describe: 'Output the index in json', + type: 'bool', + }) + + .version() + .alias('v', 'version') + + .help('h') + .alias('h', 'help'); + +var argv = yargs.argv; + +if (argv._.length === 0) { + yargs.showHelp(); + process.exit(1); +} + +if (['ancestors', 'descendents'].indexOf(argv._[0]) !== -1) { + command = argv._.shift(); +} + +if (argv._.length && path.extname(argv._[0]) === '') { + directory = argv._.shift(); +} + +if (argv._.length && path.extname(argv._[0])) { + file = argv._.shift(); +} + + +try { + if (!directory) { + throw new Error('Missing directory'); + } + + if (!command && !argv.json) { + throw new Error('Missing command'); + } + + if (!file && (command === 'ancestors' || command === 'descendents')) { + throw new Error(command + ' command requires a file'); + } + + var loadPaths = argv.loadPath; + if(process.env.SASS_PATH) { + loadPaths = loadPaths.concat(process.env.SASS_PATH.split(/:/).map(function(f) { + return path.resolve(f); + })); + } + + var graph = require('../').parseDir(directory, { + extensions: argv.extensions, + loadPaths: loadPaths, + follow: argv.follow, + }); + + if(argv.json) { + console.log(JSON.stringify(graph.index, null, 4)); + process.exit(0); + } + + if (command === 'ancestors') { + graph.visitAncestors(path.resolve(file), function(f) { + console.log(f); + }); + } + + if (command === 'descendents') { + graph.visitDescendents(path.resolve(file), function(f) { + console.log(f); + }); + } +} catch(e) { + if (e.code === 'ENOENT') { + console.error('Error: no such file or directory "' + e.path + '"'); + } + else { + console.log('Error: ' + e.message); + } + + // console.log(e.stack); + process.exit(1); +} diff --git a/mybulma/node_modules/.bin/semver b/mybulma/node_modules/.bin/semver new file mode 100644 index 0000000..8d1b557 --- /dev/null +++ b/mybulma/node_modules/.bin/semver @@ -0,0 +1,183 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +const argv = process.argv.slice(2) + +let versions = [] + +const range = [] + +let inc = null + +const version = require('../package.json').version + +let loose = false + +let includePrerelease = false + +let coerce = false + +let rtl = false + +let identifier + +const semver = require('../') + +let reverse = false + +let options = {} + +const main = () => { + if (!argv.length) { + return help() + } + while (argv.length) { + let a = argv.shift() + const indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + const value = a.slice(indexOfEqualSign + 1) + a = a.slice(0, indexOfEqualSign) + argv.unshift(value) + } + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + switch (argv[0]) { + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': + inc = argv.shift() + break + default: + inc = 'patch' + break + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-c': case '--coerce': + coerce = true + break + case '--rtl': + rtl = true + break + case '--ltr': + rtl = false + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl } + + versions = versions.map((v) => { + return coerce ? (semver.coerce(v, options) || { version: v }).version : v + }).filter((v) => { + return semver.valid(v) + }) + if (!versions.length) { + return fail() + } + if (inc && (versions.length !== 1 || range.length)) { + return failInc() + } + + for (let i = 0, l = range.length; i < l; i++) { + versions = versions.filter((v) => { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) { + return fail() + } + } + return success(versions) +} + +const failInc = () => { + console.error('--inc can only be used on a single version with no range') + fail() +} + +const fail = () => process.exit(1) + +const success = () => { + const compare = reverse ? 'rcompare' : 'compare' + versions.sort((a, b) => { + return semver[compare](a, b, options) + }).map((v) => { + return semver.clean(v, options) + }).map((v) => { + return inc ? semver.inc(v, inc, options, identifier) : v + }).forEach((v, i, _) => { + console.log(v) + }) +} + +const help = () => console.log( +`SemVer ${version} + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, or prerelease. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them.`) + +main() diff --git a/mybulma/node_modules/.package-lock.json b/mybulma/node_modules/.package-lock.json new file mode 100644 index 0000000..1d48317 --- /dev/null +++ b/mybulma/node_modules/.package-lock.json @@ -0,0 +1,2357 @@ +{ + "name": "mybulma", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "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/bulma": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", + "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==", + "dev": true + }, + "node_modules/bulma-pageloader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bulma-pageloader/-/bulma-pageloader-0.3.0.tgz", + "integrity": "sha512-lbahiqhBCov5AYdziHFnC5/JOhCrJWFTpdRiAkwW49IM/mf0whCWHVe8MuejZFu2PEs1mtH8Gnz8exEks4Q+7g==" + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "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/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globule": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globule/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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/globule/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "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": "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/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "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/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/node-gyp/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/node-sass": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-8.0.0.tgz", + "integrity": "sha512-jPzqCF2/e6JXw6r3VxfIqYc8tKQdkj5Z/BDATYyG6FL6b/LuYBNFGFVhus0mthcWifHm/JzBpKAd+3eXsWeK/A==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "make-fetch-happen": "^10.0.4", + "meow": "^9.0.0", + "nan": "^2.17.0", + "node-gyp": "^8.4.1", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^2.2.1" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "node_modules/sass-graph": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", + "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.4.3", + "yargs": "^17.2.1" + }, + "bin": { + "sassgraph": "bin/sassgraph" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/scss-tokenizer": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", + "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", + "dev": true, + "dependencies": { + "js-base64": "^2.4.9", + "source-map": "^0.7.3" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stdout-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stdout-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stdout-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/mybulma/node_modules/@babel/code-frame/LICENSE b/mybulma/node_modules/@babel/code-frame/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/mybulma/node_modules/@babel/code-frame/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/@babel/code-frame/README.md b/mybulma/node_modules/@babel/code-frame/README.md new file mode 100644 index 0000000..08cacb0 --- /dev/null +++ b/mybulma/node_modules/@babel/code-frame/README.md @@ -0,0 +1,19 @@ +# @babel/code-frame + +> Generate errors that contain a code frame that point to source locations. + +See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/code-frame +``` + +or using yarn: + +```sh +yarn add @babel/code-frame --dev +``` diff --git a/mybulma/node_modules/@babel/code-frame/lib/index.js b/mybulma/node_modules/@babel/code-frame/lib/index.js new file mode 100644 index 0000000..cba3f83 --- /dev/null +++ b/mybulma/node_modules/@babel/code-frame/lib/index.js @@ -0,0 +1,163 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.codeFrameColumns = codeFrameColumns; +exports.default = _default; + +var _highlight = require("@babel/highlight"); + +let deprecationWarningShown = false; + +function getDefs(chalk) { + return { + gutter: chalk.grey, + marker: chalk.red.bold, + message: chalk.red.bold + }; +} + +const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + +function getMarkerLines(loc, source, opts) { + const startLoc = Object.assign({ + column: 0, + line: -1 + }, loc.start); + const endLoc = Object.assign({}, startLoc, loc.end); + const { + linesAbove = 2, + linesBelow = 3 + } = opts || {}; + const startLine = startLoc.line; + const startColumn = startLoc.column; + const endLine = endLoc.line; + const endColumn = endLoc.column; + let start = Math.max(startLine - (linesAbove + 1), 0); + let end = Math.min(source.length, endLine + linesBelow); + + if (startLine === -1) { + start = 0; + } + + if (endLine === -1) { + end = source.length; + } + + const lineDiff = endLine - startLine; + const markerLines = {}; + + if (lineDiff) { + for (let i = 0; i <= lineDiff; i++) { + const lineNumber = i + startLine; + + if (!startColumn) { + markerLines[lineNumber] = true; + } else if (i === 0) { + const sourceLength = source[lineNumber - 1].length; + markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; + } else if (i === lineDiff) { + markerLines[lineNumber] = [0, endColumn]; + } else { + const sourceLength = source[lineNumber - i].length; + markerLines[lineNumber] = [0, sourceLength]; + } + } + } else { + if (startColumn === endColumn) { + if (startColumn) { + markerLines[startLine] = [startColumn, 0]; + } else { + markerLines[startLine] = true; + } + } else { + markerLines[startLine] = [startColumn, endColumn - startColumn]; + } + } + + return { + start, + end, + markerLines + }; +} + +function codeFrameColumns(rawLines, loc, opts = {}) { + const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts); + const chalk = (0, _highlight.getChalk)(opts); + const defs = getDefs(chalk); + + const maybeHighlight = (chalkFn, string) => { + return highlighted ? chalkFn(string) : string; + }; + + const lines = rawLines.split(NEWLINE); + const { + start, + end, + markerLines + } = getMarkerLines(loc, lines, opts); + const hasColumns = loc.start && typeof loc.start.column === "number"; + const numberMaxWidth = String(end).length; + const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines; + let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { + const number = start + 1 + index; + const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const gutter = ` ${paddedNumber} |`; + const hasMarker = markerLines[number]; + const lastMarkerLine = !markerLines[number + 1]; + + if (hasMarker) { + let markerLine = ""; + + if (Array.isArray(hasMarker)) { + const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); + const numberOfMarkers = hasMarker[1] || 1; + markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join(""); + + if (lastMarkerLine && opts.message) { + markerLine += " " + maybeHighlight(defs.message, opts.message); + } + } + + return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); + } else { + return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`; + } + }).join("\n"); + + if (opts.message && !hasColumns) { + frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`; + } + + if (highlighted) { + return chalk.reset(frame); + } else { + return frame; + } +} + +function _default(rawLines, lineNumber, colNumber, opts = {}) { + if (!deprecationWarningShown) { + deprecationWarningShown = true; + const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; + + if (process.emitWarning) { + process.emitWarning(message, "DeprecationWarning"); + } else { + const deprecationError = new Error(message); + deprecationError.name = "DeprecationWarning"; + console.warn(new Error(message)); + } + } + + colNumber = Math.max(colNumber, 0); + const location = { + start: { + column: colNumber, + line: lineNumber + } + }; + return codeFrameColumns(rawLines, location, opts); +} \ No newline at end of file diff --git a/mybulma/node_modules/@babel/code-frame/package.json b/mybulma/node_modules/@babel/code-frame/package.json new file mode 100644 index 0000000..18d8db1 --- /dev/null +++ b/mybulma/node_modules/@babel/code-frame/package.json @@ -0,0 +1,30 @@ +{ + "name": "@babel/code-frame", + "version": "7.18.6", + "description": "Generate errors that contain a code frame that point to source locations.", + "author": "The Babel Team (https://babel.dev/team)", + "homepage": "https://babel.dev/docs/en/next/babel-code-frame", + "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-code-frame" + }, + "main": "./lib/index.js", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "devDependencies": { + "@types/chalk": "^2.0.0", + "chalk": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "type": "commonjs" +} \ No newline at end of file diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/LICENSE b/mybulma/node_modules/@babel/helper-validator-identifier/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/README.md b/mybulma/node_modules/@babel/helper-validator-identifier/README.md new file mode 100644 index 0000000..4f704c4 --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/README.md @@ -0,0 +1,19 @@ +# @babel/helper-validator-identifier + +> Validate identifier/keywords name + +See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/helper-validator-identifier +``` + +or using yarn: + +```sh +yarn add @babel/helper-validator-identifier +``` diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js new file mode 100644 index 0000000..3a9e335 --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js @@ -0,0 +1,86 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isIdentifierChar = isIdentifierChar; +exports.isIdentifierName = isIdentifierName; +exports.isIdentifierStart = isIdentifierStart; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + +function isInAstralSet(code, set) { + let pos = 0x10000; + + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + + return false; +} + +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes); +} + +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} + +function isIdentifierName(name) { + let isFirst = true; + + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + + if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + + if (isFirst) { + isFirst = false; + + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + + return !isFirst; +} + +//# sourceMappingURL=identifier.js.map diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map new file mode 100644 index 0000000..45c94ff --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map @@ -0,0 +1 @@ +{"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["import * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,3104,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":";;;;;;;;AAWA,IAAIA,4BAA4B,GAAG,8qIAAnC;AAEA,IAAIC,uBAAuB,GAAG,mkFAA9B;AAEA,MAAMC,uBAAuB,GAAG,IAAIC,MAAJ,CAC9B,MAAMH,4BAAN,GAAqC,GADP,CAAhC;AAGA,MAAMI,kBAAkB,GAAG,IAAID,MAAJ,CACzB,MAAMH,4BAAN,GAAqCC,uBAArC,GAA+D,GADtC,CAA3B;AAIAD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAzD;AAQA,MAAMI,0BAA0B,GAAG,CAAC,CAAD,EAAG,EAAH,EAAM,CAAN,EAAQ,EAAR,EAAW,CAAX,EAAa,EAAb,EAAgB,CAAhB,EAAkB,CAAlB,EAAoB,CAApB,EAAsB,EAAtB,EAAyB,CAAzB,EAA2B,EAA3B,EAA8B,EAA9B,EAAiC,GAAjC,EAAqC,EAArC,EAAwC,EAAxC,EAA2C,GAA3C,EAA+C,EAA/C,EAAkD,CAAlD,EAAoD,EAApD,EAAuD,EAAvD,EAA0D,EAA1D,EAA6D,EAA7D,EAAgE,EAAhE,EAAmE,CAAnE,EAAqE,EAArE,EAAwE,EAAxE,EAA2E,EAA3E,EAA8E,CAA9E,EAAgF,EAAhF,EAAmF,CAAnF,EAAqF,CAArF,EAAuF,CAAvF,EAAyF,CAAzF,EAA2F,EAA3F,EAA8F,GAA9F,EAAkG,EAAlG,EAAqG,EAArG,EAAwG,CAAxG,EAA0G,EAA1G,EAA6G,CAA7G,EAA+G,EAA/G,EAAkH,CAAlH,EAAoH,EAApH,EAAuH,EAAvH,EAA0H,EAA1H,EAA6H,CAA7H,EAA+H,EAA/H,EAAkI,CAAlI,EAAoI,CAApI,EAAsI,CAAtI,EAAwI,CAAxI,EAA0I,CAA1I,EAA4I,EAA5I,EAA+I,CAA/I,EAAiJ,EAAjJ,EAAoJ,CAApJ,EAAsJ,CAAtJ,EAAwJ,CAAxJ,EAA0J,CAA1J,EAA4J,EAA5J,EAA+J,GAA/J,EAAmK,EAAnK,EAAsK,EAAtK,EAAyK,EAAzK,EAA4K,CAA5K,EAA8K,EAA9K,EAAiL,CAAjL,EAAmL,CAAnL,EAAqL,EAArL,EAAwL,CAAxL,EAA0L,CAA1L,EAA4L,EAA5L,EAA+L,CAA/L,EAAiM,CAAjM,EAAmM,CAAnM,EAAqM,CAArM,EAAuM,EAAvM,EAA0M,CAA1M,EAA4M,CAA5M,EAA8M,CAA9M,EAAgN,CAAhN,EAAkN,CAAlN,EAAoN,EAApN,EAAuN,EAAvN,EAA0N,EAA1N,EAA6N,EAA7N,EAAgO,EAAhO,EAAmO,EAAnO,EAAsO,EAAtO,EAAyO,CAAzO,EAA2O,CAA3O,EAA6O,EAA7O,EAAgP,EAAhP,EAAmP,EAAnP,EAAsP,EAAtP,EAAyP,EAAzP,EAA4P,EAA5P,EAA+P,CAA/P,EAAiQ,CAAjQ,EAAmQ,EAAnQ,EAAsQ,CAAtQ,EAAwQ,EAAxQ,EAA2Q,CAA3Q,EAA6Q,CAA7Q,EAA+Q,CAA/Q,EAAiR,CAAjR,EAAmR,EAAnR,EAAsR,EAAtR,EAAyR,EAAzR,EAA4R,CAA5R,EAA8R,EAA9R,EAAiS,EAAjS,EAAoS,CAApS,EAAsS,CAAtS,EAAwS,EAAxS,EAA2S,EAA3S,EAA8S,EAA9S,EAAiT,EAAjT,EAAoT,EAApT,EAAuT,EAAvT,EAA0T,EAA1T,EAA6T,EAA7T,EAAgU,EAAhU,EAAmU,GAAnU,EAAuU,EAAvU,EAA0U,EAA1U,EAA6U,EAA7U,EAAgV,EAAhV,EAAmV,EAAnV,EAAsV,EAAtV,EAAyV,EAAzV,EAA4V,GAA5V,EAAgW,EAAhW,EAAmW,CAAnW,EAAqW,CAArW,EAAuW,EAAvW,EAA0W,EAA1W,EAA6W,EAA7W,EAAgX,CAAhX,EAAkX,CAAlX,EAAoX,EAApX,EAAuX,EAAvX,EAA0X,EAA1X,EAA6X,EAA7X,EAAgY,EAAhY,EAAmY,EAAnY,EAAsY,EAAtY,EAAyY,EAAzY,EAA4Y,EAA5Y,EAA+Y,EAA/Y,EAAkZ,CAAlZ,EAAoZ,CAApZ,EAAsZ,CAAtZ,EAAwZ,EAAxZ,EAA2Z,EAA3Z,EAA8Z,EAA9Z,EAAia,EAAja,EAAoa,EAApa,EAAua,EAAva,EAA0a,EAA1a,EAA6a,CAA7a,EAA+a,CAA/a,EAAib,CAAjb,EAAmb,CAAnb,EAAqb,EAArb,EAAwb,CAAxb,EAA0b,CAA1b,EAA4b,EAA5b,EAA+b,EAA/b,EAAkc,EAAlc,EAAqc,CAArc,EAAuc,EAAvc,EAA0c,CAA1c,EAA4c,CAA5c,EAA8c,CAA9c,EAAgd,EAAhd,EAAmd,EAAnd,EAAsd,CAAtd,EAAwd,EAAxd,EAA2d,EAA3d,EAA8d,CAA9d,EAAge,EAAhe,EAAme,CAAne,EAAqe,CAAre,EAAue,CAAve,EAAye,CAAze,EAA2e,CAA3e,EAA6e,CAA7e,EAA+e,EAA/e,EAAkf,CAAlf,EAAof,CAApf,EAAsf,CAAtf,EAAwf,EAAxf,EAA2f,EAA3f,EAA8f,CAA9f,EAAggB,CAAhgB,EAAkgB,CAAlgB,EAAogB,CAApgB,EAAsgB,EAAtgB,EAAygB,CAAzgB,EAA2gB,CAA3gB,EAA6gB,CAA7gB,EAA+gB,CAA/gB,EAAihB,CAAjhB,EAAmhB,CAAnhB,EAAqhB,CAArhB,EAAuhB,CAAvhB,EAAyhB,EAAzhB,EAA4hB,CAA5hB,EAA8hB,EAA9hB,EAAiiB,CAAjiB,EAAmiB,GAAniB,EAAuiB,EAAviB,EAA0iB,EAA1iB,EAA6iB,CAA7iB,EAA+iB,EAA/iB,EAAkjB,CAAljB,EAAojB,EAApjB,EAAujB,EAAvjB,EAA0jB,EAA1jB,EAA6jB,CAA7jB,EAA+jB,CAA/jB,EAAikB,CAAjkB,EAAmkB,GAAnkB,EAAukB,EAAvkB,EAA0kB,EAA1kB,EAA6kB,CAA7kB,EAA+kB,EAA/kB,EAAklB,EAAllB,EAAqlB,EAArlB,EAAwlB,CAAxlB,EAA0lB,EAA1lB,EAA6lB,EAA7lB,EAAgmB,EAAhmB,EAAmmB,CAAnmB,EAAqmB,EAArmB,EAAwmB,EAAxmB,EAA2mB,EAA3mB,EAA8mB,CAA9mB,EAAgnB,GAAhnB,EAAonB,EAApnB,EAAunB,GAAvnB,EAA2nB,EAA3nB,EAA8nB,EAA9nB,EAAioB,CAAjoB,EAAmoB,CAAnoB,EAAqoB,CAAroB,EAAuoB,CAAvoB,EAAyoB,CAAzoB,EAA2oB,CAA3oB,EAA6oB,CAA7oB,EAA+oB,CAA/oB,EAAipB,EAAjpB,EAAopB,EAAppB,EAAupB,CAAvpB,EAAypB,CAAzpB,EAA2pB,CAA3pB,EAA6pB,EAA7pB,EAAgqB,CAAhqB,EAAkqB,CAAlqB,EAAoqB,EAApqB,EAAuqB,EAAvqB,EAA0qB,CAA1qB,EAA4qB,CAA5qB,EAA8qB,CAA9qB,EAAgrB,EAAhrB,EAAmrB,CAAnrB,EAAqrB,EAArrB,EAAwrB,EAAxrB,EAA2rB,CAA3rB,EAA6rB,CAA7rB,EAA+rB,EAA/rB,EAAksB,CAAlsB,EAAosB,EAApsB,EAAusB,EAAvsB,EAA0sB,EAA1sB,EAA6sB,CAA7sB,EAA+sB,EAA/sB,EAAktB,EAAltB,EAAqtB,GAArtB,EAAytB,CAAztB,EAA2tB,CAA3tB,EAA6tB,EAA7tB,EAAguB,EAAhuB,EAAmuB,CAAnuB,EAAquB,EAAruB,EAAwuB,EAAxuB,EAA2uB,GAA3uB,EAA+uB,CAA/uB,EAAivB,CAAjvB,EAAmvB,CAAnvB,EAAqvB,CAArvB,EAAuvB,EAAvvB,EAA0vB,EAA1vB,EAA6vB,CAA7vB,EAA+vB,EAA/vB,EAAkwB,CAAlwB,EAAowB,CAApwB,EAAswB,CAAtwB,EAAwwB,CAAxwB,EAA0wB,EAA1wB,EAA6wB,EAA7wB,EAAgxB,CAAhxB,EAAkxB,GAAlxB,EAAsxB,EAAtxB,EAAyxB,EAAzxB,EAA4xB,CAA5xB,EAA8xB,CAA9xB,EAAgyB,EAAhyB,EAAmyB,CAAnyB,EAAqyB,EAAryB,EAAwyB,GAAxyB,EAA4yB,CAA5yB,EAA8yB,EAA9yB,EAAizB,GAAjzB,EAAqzB,GAArzB,EAAyzB,GAAzzB,EAA6zB,EAA7zB,EAAg0B,GAAh0B,EAAo0B,IAAp0B,EAAy0B,EAAz0B,EAA40B,EAA50B,EAA+0B,IAA/0B,EAAo1B,EAAp1B,EAAu1B,CAAv1B,EAAy1B,IAAz1B,EAA81B,GAA91B,EAAk2B,IAAl2B,EAAu2B,GAAv2B,EAA22B,CAA32B,EAA62B,EAA72B,EAAg3B,EAAh3B,EAAm3B,EAAn3B,EAAs3B,EAAt3B,EAAy3B,EAAz3B,EAA43B,EAA53B,EAA+3B,EAA/3B,EAAk4B,EAAl4B,EAAq4B,CAAr4B,EAAu4B,EAAv4B,EAA04B,EAA14B,EAA64B,CAA74B,EAA+4B,EAA/4B,EAAk5B,GAAl5B,EAAs5B,EAAt5B,EAAy5B,GAAz5B,EAA65B,EAA75B,EAAg6B,CAAh6B,EAAk6B,CAAl6B,EAAo6B,EAAp6B,EAAu6B,EAAv6B,EAA06B,EAA16B,EAA66B,CAA76B,EAA+6B,CAA/6B,EAAi7B,CAAj7B,EAAm7B,EAAn7B,EAAs7B,IAAt7B,EAA27B,CAA37B,EAA67B,IAA77B,EAAk8B,EAAl8B,EAAq8B,CAAr8B,EAAu8B,IAAv8B,EAA48B,CAA58B,EAA88B,CAA98B,EAAg9B,CAAh9B,EAAk9B,CAAl9B,EAAo9B,CAAp9B,EAAs9B,CAAt9B,EAAw9B,GAAx9B,EAA49B,EAA59B,EAA+9B,CAA/9B,EAAi+B,EAAj+B,EAAo+B,CAAp+B,EAAs+B,CAAt+B,EAAw+B,CAAx+B,EAA0+B,EAA1+B,EAA6+B,CAA7+B,EAA++B,CAA/+B,EAAi/B,GAAj/B,EAAq/B,IAAr/B,EAA0/B,GAA1/B,EAA8/B,CAA9/B,EAAggC,EAAhgC,EAAmgC,CAAngC,EAAqgC,CAArgC,EAAugC,CAAvgC,EAAygC,CAAzgC,EAA2gC,IAA3gC,EAAghC,EAAhhC,EAAmhC,CAAnhC,EAAqhC,EAArhC,EAAwhC,CAAxhC,EAA0hC,CAA1hC,EAA4hC,CAA5hC,EAA8hC,CAA9hC,EAAgiC,CAAhiC,EAAkiC,CAAliC,EAAoiC,CAApiC,EAAsiC,CAAtiC,EAAwiC,CAAxiC,EAA0iC,EAA1iC,EAA6iC,CAA7iC,EAA+iC,CAA/iC,EAAijC,CAAjjC,EAAmjC,CAAnjC,EAAqjC,CAArjC,EAAujC,EAAvjC,EAA0jC,CAA1jC,EAA4jC,CAA5jC,EAA8jC,CAA9jC,EAAgkC,CAAhkC,EAAkkC,CAAlkC,EAAokC,CAApkC,EAAskC,CAAtkC,EAAwkC,EAAxkC,EAA2kC,CAA3kC,EAA6kC,CAA7kC,EAA+kC,CAA/kC,EAAilC,CAAjlC,EAAmlC,CAAnlC,EAAqlC,CAArlC,EAAulC,CAAvlC,EAAylC,CAAzlC,EAA2lC,CAA3lC,EAA6lC,GAA7lC,EAAimC,CAAjmC,EAAmmC,EAAnmC,EAAsmC,CAAtmC,EAAwmC,EAAxmC,EAA2mC,CAA3mC,EAA6mC,EAA7mC,EAAgnC,CAAhnC,EAAknC,EAAlnC,EAAqnC,CAArnC,EAAunC,EAAvnC,EAA0nC,CAA1nC,EAA4nC,EAA5nC,EAA+nC,CAA/nC,EAAioC,EAAjoC,EAAooC,CAApoC,EAAsoC,EAAtoC,EAAyoC,CAAzoC,EAA2oC,EAA3oC,EAA8oC,CAA9oC,EAAgpC,EAAhpC,EAAmpC,CAAnpC,EAAqpC,CAArpC,EAAupC,IAAvpC,EAA4pC,EAA5pC,EAA+pC,CAA/pC,EAAiqC,CAAjqC,EAAmqC,GAAnqC,EAAuqC,EAAvqC,EAA0qC,GAA1qC,EAA8qC,EAA9qC,EAAirC,EAAjrC,EAAorC,CAAprC,EAAsrC,EAAtrC,EAAyrC,CAAzrC,EAA2rC,GAA3rC,EAA+rC,EAA/rC,EAAksC,EAAlsC,EAAqsC,EAArsC,EAAwsC,GAAxsC,EAA4sC,EAA5sC,EAA+sC,GAA/sC,EAAmtC,CAAntC,EAAqtC,CAArtC,EAAutC,CAAvtC,EAAytC,CAAztC,EAA2tC,CAA3tC,EAA6tC,CAA7tC,EAA+tC,EAA/tC,EAAkuC,CAAluC,EAAouC,GAApuC,EAAwuC,EAAxuC,EAA2uC,EAA3uC,EAA8uC,CAA9uC,EAAgvC,CAAhvC,EAAkvC,IAAlvC,EAAuvC,CAAvvC,EAAyvC,CAAzvC,EAA2vC,EAA3vC,EAA8vC,CAA9vC,EAAgwC,CAAhwC,EAAkwC,CAAlwC,EAAowC,CAApwC,EAAswC,CAAtwC,EAAwwC,CAAxwC,EAA0wC,CAA1wC,EAA4wC,CAA5wC,EAA8wC,CAA9wC,EAAgxC,CAAhxC,EAAkxC,CAAlxC,EAAoxC,CAApxC,EAAsxC,CAAtxC,EAAwxC,CAAxxC,EAA0xC,CAA1xC,EAA4xC,CAA5xC,EAA8xC,CAA9xC,EAAgyC,CAAhyC,EAAkyC,CAAlyC,EAAoyC,CAApyC,EAAsyC,CAAtyC,EAAwyC,CAAxyC,EAA0yC,CAA1yC,EAA4yC,CAA5yC,EAA8yC,CAA9yC,EAAgzC,CAAhzC,EAAkzC,CAAlzC,EAAozC,CAApzC,EAAszC,CAAtzC,EAAwzC,CAAxzC,EAA0zC,CAA1zC,EAA4zC,CAA5zC,EAA8zC,CAA9zC,EAAg0C,CAAh0C,EAAk0C,CAAl0C,EAAo0C,CAAp0C,EAAs0C,CAAt0C,EAAw0C,CAAx0C,EAA00C,CAA10C,EAA40C,CAA50C,EAA80C,CAA90C,EAAg1C,CAAh1C,EAAk1C,CAAl1C,EAAo1C,CAAp1C,EAAs1C,CAAt1C,EAAw1C,CAAx1C,EAA01C,CAA11C,EAA41C,CAA51C,EAA81C,CAA91C,EAAg2C,CAAh2C,EAAk2C,CAAl2C,EAAo2C,CAAp2C,EAAs2C,CAAt2C,EAAw2C,CAAx2C,EAA02C,CAA12C,EAA42C,EAA52C,EAA+2C,CAA/2C,EAAi3C,CAAj3C,EAAm3C,CAAn3C,EAAq3C,CAAr3C,EAAu3C,CAAv3C,EAAy3C,EAAz3C,EAA43C,IAA53C,EAAi4C,KAAj4C,EAAu4C,EAAv4C,EAA04C,IAA14C,EAA+4C,CAA/4C,EAAi5C,GAAj5C,EAAq5C,CAAr5C,EAAu5C,IAAv5C,EAA45C,EAA55C,EAA+5C,IAA/5C,EAAo6C,IAAp6C,EAAy6C,GAAz6C,EAA66C,IAA76C,EAAk7C,IAAl7C,EAAu7C,CAAv7C,EAAy7C,IAAz7C,CAAnC;AAEA,MAAMC,qBAAqB,GAAG,CAAC,GAAD,EAAK,CAAL,EAAO,GAAP,EAAW,CAAX,EAAa,GAAb,EAAiB,CAAjB,EAAmB,GAAnB,EAAuB,CAAvB,EAAyB,IAAzB,EAA8B,CAA9B,EAAgC,CAAhC,EAAkC,CAAlC,EAAoC,CAApC,EAAsC,CAAtC,EAAwC,EAAxC,EAA2C,CAA3C,EAA6C,CAA7C,EAA+C,CAA/C,EAAiD,GAAjD,EAAqD,CAArD,EAAuD,GAAvD,EAA2D,CAA3D,EAA6D,CAA7D,EAA+D,CAA/D,EAAiE,GAAjE,EAAqE,CAArE,EAAuE,EAAvE,EAA0E,CAA1E,EAA4E,EAA5E,EAA+E,EAA/E,EAAkF,EAAlF,EAAqF,CAArF,EAAuF,GAAvF,EAA2F,CAA3F,EAA6F,EAA7F,EAAgG,EAAhG,EAAmG,EAAnG,EAAsG,EAAtG,EAAyG,CAAzG,EAA2G,CAA3G,EAA6G,EAA7G,EAAgH,CAAhH,EAAkH,EAAlH,EAAqH,EAArH,EAAwH,CAAxH,EAA0H,CAA1H,EAA4H,EAA5H,EAA+H,CAA/H,EAAiI,CAAjI,EAAmI,CAAnI,EAAqI,EAArI,EAAwI,EAAxI,EAA2I,CAA3I,EAA6I,CAA7I,EAA+I,CAA/I,EAAiJ,CAAjJ,EAAmJ,EAAnJ,EAAsJ,CAAtJ,EAAwJ,EAAxJ,EAA2J,CAA3J,EAA6J,EAA7J,EAAgK,EAAhK,EAAmK,CAAnK,EAAqK,CAArK,EAAuK,CAAvK,EAAyK,EAAzK,EAA4K,EAA5K,EAA+K,EAA/K,EAAkL,CAAlL,EAAoL,CAApL,EAAsL,CAAtL,EAAwL,CAAxL,EAA0L,GAA1L,EAA8L,EAA9L,EAAiM,CAAjM,EAAmM,CAAnM,EAAqM,CAArM,EAAuM,CAAvM,EAAyM,EAAzM,EAA4M,CAA5M,EAA8M,CAA9M,EAAgN,CAAhN,EAAkN,CAAlN,EAAoN,CAApN,EAAsN,CAAtN,EAAwN,CAAxN,EAA0N,EAA1N,EAA6N,CAA7N,EAA+N,EAA/N,EAAkO,CAAlO,EAAoO,CAApO,EAAsO,CAAtO,EAAwO,CAAxO,EAA0O,CAA1O,EAA4O,GAA5O,EAAgP,EAAhP,EAAmP,EAAnP,EAAsP,CAAtP,EAAwP,CAAxP,EAA0P,CAA1P,EAA4P,EAA5P,EAA+P,EAA/P,EAAkQ,EAAlQ,EAAqQ,CAArQ,EAAuQ,GAAvQ,EAA2Q,CAA3Q,EAA6Q,CAA7Q,EAA+Q,CAA/Q,EAAiR,EAAjR,EAAoR,CAApR,EAAsR,EAAtR,EAAyR,EAAzR,EAA4R,EAA5R,EAA+R,CAA/R,EAAiS,EAAjS,EAAoS,EAApS,EAAuS,CAAvS,EAAyS,CAAzS,EAA2S,EAA3S,EAA8S,EAA9S,EAAiT,CAAjT,EAAmT,CAAnT,EAAqT,GAArT,EAAyT,EAAzT,EAA4T,GAA5T,EAAgU,CAAhU,EAAkU,EAAlU,EAAqU,CAArU,EAAuU,CAAvU,EAAyU,CAAzU,EAA2U,CAA3U,EAA6U,CAA7U,EAA+U,CAA/U,EAAiV,CAAjV,EAAmV,CAAnV,EAAqV,CAArV,EAAuV,EAAvV,EAA0V,CAA1V,EAA4V,GAA5V,EAAgW,CAAhW,EAAkW,CAAlW,EAAoW,CAApW,EAAsW,CAAtW,EAAwW,CAAxW,EAA0W,EAA1W,EAA6W,CAA7W,EAA+W,EAA/W,EAAkX,CAAlX,EAAoX,CAApX,EAAsX,CAAtX,EAAwX,CAAxX,EAA0X,CAA1X,EAA4X,EAA5X,EAA+X,EAA/X,EAAkY,EAAlY,EAAqY,EAArY,EAAwY,GAAxY,EAA4Y,CAA5Y,EAA8Y,CAA9Y,EAAgZ,CAAhZ,EAAkZ,EAAlZ,EAAqZ,CAArZ,EAAuZ,EAAvZ,EAA0Z,EAA1Z,EAA6Z,CAA7Z,EAA+Z,EAA/Z,EAAka,GAAla,EAAsa,CAAta,EAAwa,CAAxa,EAA0a,CAA1a,EAA4a,CAA5a,EAA8a,CAA9a,EAAgb,CAAhb,EAAkb,CAAlb,EAAob,CAApb,EAAsb,CAAtb,EAAwb,CAAxb,EAA0b,CAA1b,EAA4b,EAA5b,EAA+b,CAA/b,EAAic,CAAjc,EAAmc,CAAnc,EAAqc,CAArc,EAAuc,CAAvc,EAAyc,CAAzc,EAA2c,CAA3c,EAA6c,GAA7c,EAAid,CAAjd,EAAmd,EAAnd,EAAsd,CAAtd,EAAwd,CAAxd,EAA0d,CAA1d,EAA4d,EAA5d,EAA+d,CAA/d,EAAie,CAAje,EAAme,CAAne,EAAqe,EAAre,EAAwe,CAAxe,EAA0e,IAA1e,EAA+e,CAA/e,EAAif,CAAjf,EAAmf,EAAnf,EAAsf,KAAtf,EAA4f,CAA5f,EAA8f,EAA9f,EAAigB,CAAjgB,EAAmgB,EAAngB,EAAsgB,CAAtgB,EAAwgB,EAAxgB,EAA2gB,CAA3gB,EAA6gB,EAA7gB,EAAghB,CAAhhB,EAAkhB,IAAlhB,EAAuhB,CAAvhB,EAAyhB,CAAzhB,EAA2hB,EAA3hB,EAA8hB,CAA9hB,EAAgiB,CAAhiB,EAAkiB,EAAliB,EAAqiB,CAAriB,EAAuiB,EAAviB,EAA0iB,CAA1iB,EAA4iB,KAA5iB,EAAkjB,CAAljB,EAAojB,IAApjB,EAAyjB,EAAzjB,EAA4jB,CAA5jB,EAA8jB,EAA9jB,EAAikB,GAAjkB,EAAqkB,CAArkB,EAAukB,CAAvkB,EAAykB,CAAzkB,EAA2kB,CAA3kB,EAA6kB,CAA7kB,EAA+kB,CAA/kB,EAAilB,CAAjlB,EAAmlB,EAAnlB,EAAslB,CAAtlB,EAAwlB,GAAxlB,EAA4lB,CAA5lB,EAA8lB,IAA9lB,EAAmmB,EAAnmB,EAAsmB,GAAtmB,EAA0mB,EAA1mB,EAA6mB,CAA7mB,EAA+mB,EAA/mB,EAAknB,CAAlnB,EAAonB,CAApnB,EAAsnB,EAAtnB,EAAynB,CAAznB,EAA2nB,EAA3nB,EAA8nB,CAA9nB,EAAgoB,CAAhoB,EAAkoB,EAAloB,EAAqoB,IAAroB,EAA0oB,CAA1oB,EAA4oB,CAA5oB,EAA8oB,EAA9oB,EAAipB,CAAjpB,EAAmpB,CAAnpB,EAAqpB,CAArpB,EAAupB,CAAvpB,EAAypB,CAAzpB,EAA2pB,CAA3pB,EAA6pB,GAA7pB,EAAiqB,CAAjqB,EAAmqB,GAAnqB,EAAuqB,CAAvqB,EAAyqB,EAAzqB,EAA4qB,CAA5qB,EAA8qB,GAA9qB,EAAkrB,CAAlrB,EAAorB,EAAprB,EAAurB,EAAvrB,EAA0rB,GAA1rB,EAA8rB,EAA9rB,EAAisB,GAAjsB,EAAqsB,CAArsB,EAAusB,GAAvsB,EAA2sB,CAA3sB,EAA6sB,CAA7sB,EAA+sB,CAA/sB,EAAitB,IAAjtB,EAAstB,CAAttB,EAAwtB,MAAxtB,EAA+tB,GAA/tB,CAA9B;;AAKA,SAASC,aAAT,CAAuBC,IAAvB,EAAqCC,GAArC,EAAsE;EACpE,IAAIC,GAAG,GAAG,OAAV;;EACA,KAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,MAAM,GAAGH,GAAG,CAACG,MAA7B,EAAqCD,CAAC,GAAGC,MAAzC,EAAiDD,CAAC,IAAI,CAAtD,EAAyD;IACvDD,GAAG,IAAID,GAAG,CAACE,CAAD,CAAV;IACA,IAAID,GAAG,GAAGF,IAAV,EAAgB,OAAO,KAAP;IAEhBE,GAAG,IAAID,GAAG,CAACE,CAAC,GAAG,CAAL,CAAV;IACA,IAAID,GAAG,IAAIF,IAAX,EAAiB,OAAO,IAAP;EAClB;;EACD,OAAO,KAAP;AACD;;AAIM,SAASK,iBAAT,CAA2BL,IAA3B,EAAkD;EACvD,IAAIA,IAAI,KAAR,EAAiC,OAAOA,IAAI,OAAX;EACjC,IAAIA,IAAI,MAAR,EAAkC,OAAO,IAAP;EAClC,IAAIA,IAAI,KAAR,EAAiC,OAAOA,IAAI,OAAX;EACjC,IAAIA,IAAI,OAAR,EAAkC,OAAO,IAAP;;EAClC,IAAIA,IAAI,IAAI,MAAZ,EAAoB;IAClB,OACEA,IAAI,IAAI,IAAR,IAAgBN,uBAAuB,CAACY,IAAxB,CAA6BC,MAAM,CAACC,YAAP,CAAoBR,IAApB,CAA7B,CADlB;EAGD;;EACD,OAAOD,aAAa,CAACC,IAAD,EAAOH,0BAAP,CAApB;AACD;;AAIM,SAASY,gBAAT,CAA0BT,IAA1B,EAAiD;EACtD,IAAIA,IAAI,KAAR,EAA6B,OAAOA,IAAI,OAAX;EAC7B,IAAIA,IAAI,KAAR,EAA4B,OAAO,IAAP;EAC5B,IAAIA,IAAI,KAAR,EAAiC,OAAO,KAAP;EACjC,IAAIA,IAAI,MAAR,EAAkC,OAAO,IAAP;EAClC,IAAIA,IAAI,KAAR,EAAiC,OAAOA,IAAI,OAAX;EACjC,IAAIA,IAAI,OAAR,EAAkC,OAAO,IAAP;;EAClC,IAAIA,IAAI,IAAI,MAAZ,EAAoB;IAClB,OAAOA,IAAI,IAAI,IAAR,IAAgBJ,kBAAkB,CAACU,IAAnB,CAAwBC,MAAM,CAACC,YAAP,CAAoBR,IAApB,CAAxB,CAAvB;EACD;;EACD,OACED,aAAa,CAACC,IAAD,EAAOH,0BAAP,CAAb,IACAE,aAAa,CAACC,IAAD,EAAOF,qBAAP,CAFf;AAID;;AAIM,SAASY,gBAAT,CAA0BC,IAA1B,EAAiD;EACtD,IAAIC,OAAO,GAAG,IAAd;;EACA,KAAK,IAAIT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGQ,IAAI,CAACP,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;IAKpC,IAAIU,EAAE,GAAGF,IAAI,CAACG,UAAL,CAAgBX,CAAhB,CAAT;;IACA,IAAI,CAACU,EAAE,GAAG,MAAN,MAAkB,MAAlB,IAA4BV,CAAC,GAAG,CAAJ,GAAQQ,IAAI,CAACP,MAA7C,EAAqD;MACnD,MAAMW,KAAK,GAAGJ,IAAI,CAACG,UAAL,CAAgB,EAAEX,CAAlB,CAAd;;MACA,IAAI,CAACY,KAAK,GAAG,MAAT,MAAqB,MAAzB,EAAiC;QAC/BF,EAAE,GAAG,WAAW,CAACA,EAAE,GAAG,KAAN,KAAgB,EAA3B,KAAkCE,KAAK,GAAG,KAA1C,CAAL;MACD;IACF;;IACD,IAAIH,OAAJ,EAAa;MACXA,OAAO,GAAG,KAAV;;MACA,IAAI,CAACP,iBAAiB,CAACQ,EAAD,CAAtB,EAA4B;QAC1B,OAAO,KAAP;MACD;IACF,CALD,MAKO,IAAI,CAACJ,gBAAgB,CAACI,EAAD,CAArB,EAA2B;MAChC,OAAO,KAAP;IACD;EACF;;EACD,OAAO,CAACD,OAAR;AACD"} \ No newline at end of file diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js b/mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js new file mode 100644 index 0000000..076eafd --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js @@ -0,0 +1,59 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "isIdentifierChar", { + enumerable: true, + get: function () { + return _identifier.isIdentifierChar; + } +}); +Object.defineProperty(exports, "isIdentifierName", { + enumerable: true, + get: function () { + return _identifier.isIdentifierName; + } +}); +Object.defineProperty(exports, "isIdentifierStart", { + enumerable: true, + get: function () { + return _identifier.isIdentifierStart; + } +}); +Object.defineProperty(exports, "isKeyword", { + enumerable: true, + get: function () { + return _keyword.isKeyword; + } +}); +Object.defineProperty(exports, "isReservedWord", { + enumerable: true, + get: function () { + return _keyword.isReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindOnlyReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindOnlyReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindReservedWord; + } +}); +Object.defineProperty(exports, "isStrictReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictReservedWord; + } +}); + +var _identifier = require("./identifier"); + +var _keyword = require("./keyword"); + +//# sourceMappingURL=index.js.map diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js.map new file mode 100644 index 0000000..13266b9 --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAKA"} \ No newline at end of file diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js new file mode 100644 index 0000000..ff6277b --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isKeyword = isKeyword; +exports.isReservedWord = isReservedWord; +exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; +exports.isStrictBindReservedWord = isStrictBindReservedWord; +exports.isStrictReservedWord = isStrictReservedWord; +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); + +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} + +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} + +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} + +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} + +function isKeyword(word) { + return keywords.has(word); +} + +//# sourceMappingURL=keyword.js.map diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map new file mode 100644 index 0000000..2de8c3e --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map @@ -0,0 +1 @@ +{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OADO,EAEP,MAFO,EAGP,OAHO,EAIP,UAJO,EAKP,UALO,EAMP,SANO,EAOP,IAPO,EAQP,MARO,EASP,SATO,EAUP,KAVO,EAWP,UAXO,EAYP,IAZO,EAaP,QAbO,EAcP,QAdO,EAeP,OAfO,EAgBP,KAhBO,EAiBP,KAjBO,EAkBP,OAlBO,EAmBP,OAnBO,EAoBP,MApBO,EAqBP,KArBO,EAsBP,MAtBO,EAuBP,OAvBO,EAwBP,OAxBO,EAyBP,SAzBO,EA0BP,QA1BO,EA2BP,QA3BO,EA4BP,MA5BO,EA6BP,MA7BO,EA8BP,OA9BO,EA+BP,IA/BO,EAgCP,YAhCO,EAiCP,QAjCO,EAkCP,MAlCO,EAmCP,QAnCO,CADW;EAsCpBC,MAAM,EAAE,CACN,YADM,EAEN,WAFM,EAGN,KAHM,EAIN,SAJM,EAKN,SALM,EAMN,WANM,EAON,QAPM,EAQN,QARM,EASN,OATM,CAtCY;EAiDpBC,UAAU,EAAE,CAAC,MAAD,EAAS,WAAT;AAjDQ,CAAtB;AAmDA,MAAMC,QAAQ,GAAG,IAAIC,GAAJ,CAAQL,aAAa,CAACC,OAAtB,CAAjB;AACA,MAAMK,sBAAsB,GAAG,IAAID,GAAJ,CAAQL,aAAa,CAACE,MAAtB,CAA/B;AACA,MAAMK,0BAA0B,GAAG,IAAIF,GAAJ,CAAQL,aAAa,CAACG,UAAtB,CAAnC;;AAKO,SAASK,cAAT,CAAwBC,IAAxB,EAAsCC,QAAtC,EAAkE;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAtB,IAAkCA,IAAI,KAAK,MAAlD;AACD;;AAOM,SAASE,oBAAT,CAA8BF,IAA9B,EAA4CC,QAA5C,EAAwE;EAC7E,OAAOF,cAAc,CAACC,IAAD,EAAOC,QAAP,CAAd,IAAkCJ,sBAAsB,CAACM,GAAvB,CAA2BH,IAA3B,CAAzC;AACD;;AAMM,SAASI,4BAAT,CAAsCJ,IAAtC,EAA6D;EAClE,OAAOF,0BAA0B,CAACK,GAA3B,CAA+BH,IAA/B,CAAP;AACD;;AAOM,SAASK,wBAAT,CACLL,IADK,EAELC,QAFK,EAGI;EACT,OACEC,oBAAoB,CAACF,IAAD,EAAOC,QAAP,CAApB,IAAwCG,4BAA4B,CAACJ,IAAD,CADtE;AAGD;;AAEM,SAASM,SAAT,CAAmBN,IAAnB,EAA0C;EAC/C,OAAOL,QAAQ,CAACQ,GAAT,CAAaH,IAAb,CAAP;AACD"} \ No newline at end of file diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/package.json b/mybulma/node_modules/@babel/helper-validator-identifier/package.json new file mode 100644 index 0000000..6e7de1e --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/package.json @@ -0,0 +1,28 @@ +{ + "name": "@babel/helper-validator-identifier", + "version": "7.19.1", + "description": "Validate identifier/keywords name", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-helper-validator-identifier" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "exports": { + ".": "./lib/index.js", + "./package.json": "./package.json" + }, + "devDependencies": { + "@unicode/unicode-15.0.0": "^1.3.1", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" +} \ No newline at end of file diff --git a/mybulma/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js b/mybulma/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js new file mode 100644 index 0000000..aca8710 --- /dev/null +++ b/mybulma/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js @@ -0,0 +1,75 @@ +"use strict"; + +// Always use the latest available version of Unicode! +// https://tc39.github.io/ecma262/#sec-conformance +const version = "15.0.0"; + +const start = require("@unicode/unicode-" + + version + + "/Binary_Property/ID_Start/code-points.js").filter(function (ch) { + return ch > 0x7f; +}); +let last = -1; +const cont = [0x200c, 0x200d].concat( + require("@unicode/unicode-" + + version + + "/Binary_Property/ID_Continue/code-points.js").filter(function (ch) { + return ch > 0x7f && search(start, ch, last + 1) == -1; + }) +); + +function search(arr, ch, starting) { + for (let i = starting; arr[i] <= ch && i < arr.length; last = i++) { + if (arr[i] === ch) return i; + } + return -1; +} + +function pad(str, width) { + while (str.length < width) str = "0" + str; + return str; +} + +function esc(code) { + const hex = code.toString(16); + if (hex.length <= 2) return "\\x" + pad(hex, 2); + else return "\\u" + pad(hex, 4); +} + +function generate(chars) { + const astral = []; + let re = ""; + for (let i = 0, at = 0x10000; i < chars.length; i++) { + const from = chars[i]; + let to = from; + while (i < chars.length - 1 && chars[i + 1] == to + 1) { + i++; + to++; + } + if (to <= 0xffff) { + if (from == to) re += esc(from); + else if (from + 1 == to) re += esc(from) + esc(to); + else re += esc(from) + "-" + esc(to); + } else { + astral.push(from - at, to - from); + at = to; + } + } + return { nonASCII: re, astral: astral }; +} + +const startData = generate(start); +const contData = generate(cont); + +console.log("/* prettier-ignore */"); +console.log('let nonASCIIidentifierStartChars = "' + startData.nonASCII + '";'); +console.log("/* prettier-ignore */"); +console.log('let nonASCIIidentifierChars = "' + contData.nonASCII + '";'); +console.log("/* prettier-ignore */"); +console.log( + "const astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";" +); +console.log("/* prettier-ignore */"); +console.log( + "const astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";" +); diff --git a/mybulma/node_modules/@babel/highlight/LICENSE b/mybulma/node_modules/@babel/highlight/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/@babel/highlight/README.md b/mybulma/node_modules/@babel/highlight/README.md new file mode 100644 index 0000000..f8887ad --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/README.md @@ -0,0 +1,19 @@ +# @babel/highlight + +> Syntax highlight JavaScript strings for output in terminals. + +See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/highlight +``` + +or using yarn: + +```sh +yarn add @babel/highlight --dev +``` diff --git a/mybulma/node_modules/@babel/highlight/lib/index.js b/mybulma/node_modules/@babel/highlight/lib/index.js new file mode 100644 index 0000000..856dfd9 --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/lib/index.js @@ -0,0 +1,116 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = highlight; +exports.getChalk = getChalk; +exports.shouldHighlight = shouldHighlight; + +var _jsTokens = require("js-tokens"); + +var _helperValidatorIdentifier = require("@babel/helper-validator-identifier"); + +var _chalk = require("chalk"); + +const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]); + +function getDefs(chalk) { + return { + keyword: chalk.cyan, + capitalized: chalk.yellow, + jsxIdentifier: chalk.yellow, + punctuator: chalk.yellow, + number: chalk.magenta, + string: chalk.green, + regex: chalk.magenta, + comment: chalk.grey, + invalid: chalk.white.bgRed.bold + }; +} + +const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; +const BRACKET = /^[()[\]{}]$/; +let tokenize; +{ + const JSX_TAG = /^[a-z][\w-]*$/i; + + const getTokenType = function (token, offset, text) { + if (token.type === "name") { + if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) { + return "keyword"; + } + + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) == " colorize(str)).join("\n"); + } else { + highlighted += value; + } + } + + return highlighted; +} + +function shouldHighlight(options) { + return !!_chalk.supportsColor || options.forceColor; +} + +function getChalk(options) { + return options.forceColor ? new _chalk.constructor({ + enabled: true, + level: 1 + }) : _chalk; +} + +function highlight(code, options = {}) { + if (code !== "" && shouldHighlight(options)) { + const chalk = getChalk(options); + const defs = getDefs(chalk); + return highlightTokens(defs, code); + } else { + return code; + } +} \ No newline at end of file diff --git a/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/index.js b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/index.js new file mode 100644 index 0000000..90a871c --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/index.js @@ -0,0 +1,165 @@ +'use strict'; +const colorConvert = require('color-convert'); + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + // Bright color + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Fix humans + styles.color.grey = styles.color.gray; + + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + } + + const ansi2ansi = n => n; + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } + + const suite = colorConvert[key]; + + if (key === 'ansi16') { + key = 'ansi'; + } + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/license b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/package.json b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/package.json new file mode 100644 index 0000000..65edb48 --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/package.json @@ -0,0 +1,56 @@ +{ + "name": "ansi-styles", + "version": "3.2.1", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "chalk/ansi-styles", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=4" + }, + "scripts": { + "test": "xo && ava", + "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "color-convert": "^1.9.0" + }, + "devDependencies": { + "ava": "*", + "babel-polyfill": "^6.23.0", + "svg-term-cli": "^2.1.1", + "xo": "*" + }, + "ava": { + "require": "babel-polyfill" + } +} diff --git a/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000..3158e2d --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md @@ -0,0 +1,147 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + + + + +## Install + +``` +$ npm install ansi-styles +``` + + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close); +``` + +## API + +Each style has an `open` and `close` property. + + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(Not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(Not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` ("bright black") +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + + +## Advanced usage + +By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + + +## License + +MIT diff --git a/mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js b/mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js new file mode 100644 index 0000000..1cc5fa8 --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js @@ -0,0 +1,228 @@ +'use strict'; +const escapeStringRegexp = require('escape-string-regexp'); +const ansiStyles = require('ansi-styles'); +const stdoutColor = require('supports-color').stdout; + +const template = require('./templates.js'); + +const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); + +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; + +// `color-convert` models to exclude from the Chalk API due to conflicts and such +const skipModels = new Set(['gray']); + +const styles = Object.create(null); + +function applyOptions(obj, options) { + options = options || {}; + + // Detect level if not set manually + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === undefined ? scLevel : options.level; + obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; +} + +function Chalk(options) { + // We check for this.template here since calling `chalk.constructor()` + // by itself will have a `this` of a previously constructed chalk object + if (!this || !(this instanceof Chalk) || this.template) { + const chalk = {}; + applyOptions(chalk, options); + + chalk.template = function () { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk.template].concat(args)); + }; + + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); + + chalk.template.constructor = Chalk; + + return chalk.template; + } + + applyOptions(this, options); +} + +// Use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001B[94m'; +} + +for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; +} + +styles.visible = { + get() { + return build.call(this, this._styles || [], true, 'visible'); + } +}; + +ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); +for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } + + styles[model] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); +for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + + const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +const proto = Object.defineProperties(() => {}, styles); + +function build(_styles, _empty, key) { + const builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder._empty = _empty; + + const self = this; + + Object.defineProperty(builder, 'level', { + enumerable: true, + get() { + return self.level; + }, + set(level) { + self.level = level; + } + }); + + Object.defineProperty(builder, 'enabled', { + enumerable: true, + get() { + return self.enabled; + }, + set(enabled) { + self.enabled = enabled; + } + }); + + // See below for fix regarding invisible grey/dim combination on Windows + builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; + + // `__proto__` is used because we must return a function, but there is + // no way to create a function with a different prototype + builder.__proto__ = proto; // eslint-disable-line no-proto + + return builder; +} + +function applyStyle() { + // Support varags, but simply cast to string in case there's only one arg + const args = arguments; + const argsLen = args.length; + let str = String(arguments[0]); + + if (argsLen === 0) { + return ''; + } + + if (argsLen > 1) { + // Don't slice `arguments`, it prevents V8 optimizations + for (let a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || this.level <= 0 || !str) { + return this._empty ? '' : str; + } + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ''; + } + + for (const code of this._styles.slice().reverse()) { + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + + // Close the styling before a linebreak and reopen + // after next line to fix a bleed issue on macOS + // https://github.com/chalk/chalk/pull/92 + str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + + // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue + ansiStyles.dim.open = originalDim; + + return str; +} + +function chalkTag(chalk, strings) { + if (!Array.isArray(strings)) { + // If chalk() was called by itself or with a string, + // return the string itself as a string. + return [].slice.call(arguments, 1).join(' '); + } + + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); + parts.push(String(strings.raw[i])); + } + + return template(chalk, parts.join('')); +} + +Object.defineProperties(Chalk.prototype, styles); + +module.exports = Chalk(); // eslint-disable-line new-cap +module.exports.supportsColor = stdoutColor; +module.exports.default = module.exports; // For TypeScript diff --git a/mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js.flow b/mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js.flow new file mode 100644 index 0000000..622caaa --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/chalk/index.js.flow @@ -0,0 +1,93 @@ +// @flow strict + +type TemplateStringsArray = $ReadOnlyArray; + +export type Level = $Values<{ + None: 0, + Basic: 1, + Ansi256: 2, + TrueColor: 3 +}>; + +export type ChalkOptions = {| + enabled?: boolean, + level?: Level +|}; + +export type ColorSupport = {| + level: Level, + hasBasic: boolean, + has256: boolean, + has16m: boolean +|}; + +export interface Chalk { + (...text: string[]): string, + (text: TemplateStringsArray, ...placeholders: string[]): string, + constructor(options?: ChalkOptions): Chalk, + enabled: boolean, + level: Level, + rgb(r: number, g: number, b: number): Chalk, + hsl(h: number, s: number, l: number): Chalk, + hsv(h: number, s: number, v: number): Chalk, + hwb(h: number, w: number, b: number): Chalk, + bgHex(color: string): Chalk, + bgKeyword(color: string): Chalk, + bgRgb(r: number, g: number, b: number): Chalk, + bgHsl(h: number, s: number, l: number): Chalk, + bgHsv(h: number, s: number, v: number): Chalk, + bgHwb(h: number, w: number, b: number): Chalk, + hex(color: string): Chalk, + keyword(color: string): Chalk, + + +reset: Chalk, + +bold: Chalk, + +dim: Chalk, + +italic: Chalk, + +underline: Chalk, + +inverse: Chalk, + +hidden: Chalk, + +strikethrough: Chalk, + + +visible: Chalk, + + +black: Chalk, + +red: Chalk, + +green: Chalk, + +yellow: Chalk, + +blue: Chalk, + +magenta: Chalk, + +cyan: Chalk, + +white: Chalk, + +gray: Chalk, + +grey: Chalk, + +blackBright: Chalk, + +redBright: Chalk, + +greenBright: Chalk, + +yellowBright: Chalk, + +blueBright: Chalk, + +magentaBright: Chalk, + +cyanBright: Chalk, + +whiteBright: Chalk, + + +bgBlack: Chalk, + +bgRed: Chalk, + +bgGreen: Chalk, + +bgYellow: Chalk, + +bgBlue: Chalk, + +bgMagenta: Chalk, + +bgCyan: Chalk, + +bgWhite: Chalk, + +bgBlackBright: Chalk, + +bgRedBright: Chalk, + +bgGreenBright: Chalk, + +bgYellowBright: Chalk, + +bgBlueBright: Chalk, + +bgMagentaBright: Chalk, + +bgCyanBright: Chalk, + +bgWhiteBrigh: Chalk, + + supportsColor: ColorSupport +}; + +declare module.exports: Chalk; diff --git a/mybulma/node_modules/@babel/highlight/node_modules/chalk/license b/mybulma/node_modules/@babel/highlight/node_modules/chalk/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/chalk/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/@babel/highlight/node_modules/chalk/package.json b/mybulma/node_modules/@babel/highlight/node_modules/chalk/package.json new file mode 100644 index 0000000..bc32468 --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/chalk/package.json @@ -0,0 +1,71 @@ +{ + "name": "chalk", + "version": "2.4.2", + "description": "Terminal string styling done right", + "license": "MIT", + "repository": "chalk/chalk", + "engines": { + "node": ">=4" + }, + "scripts": { + "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava", + "bench": "matcha benchmark.js", + "coveralls": "nyc report --reporter=text-lcov | coveralls" + }, + "files": [ + "index.js", + "templates.js", + "types/index.d.ts", + "index.js.flow" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "devDependencies": { + "ava": "*", + "coveralls": "^3.0.0", + "execa": "^0.9.0", + "flow-bin": "^0.68.0", + "import-fresh": "^2.0.0", + "matcha": "^0.7.0", + "nyc": "^11.0.2", + "resolve-from": "^4.0.0", + "typescript": "^2.5.3", + "xo": "*" + }, + "types": "types/index.d.ts", + "xo": { + "envs": [ + "node", + "mocha" + ], + "ignores": [ + "test/_flow.js" + ] + } +} diff --git a/mybulma/node_modules/@babel/highlight/node_modules/chalk/readme.md b/mybulma/node_modules/@babel/highlight/node_modules/chalk/readme.md new file mode 100644 index 0000000..d298e2c --- /dev/null +++ b/mybulma/node_modules/@babel/highlight/node_modules/chalk/readme.md @@ -0,0 +1,314 @@ +

+
+
+ Chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs) + +### [See what's new in Chalk 2](https://github.com/chalk/chalk/releases/tag/v2.0.0) + + + + +## Highlights + +- Expressive API +- Highly performant +- Ability to nest styles +- [256/Truecolor color support](#256-and-truecolor-color-support) +- Auto-detects color support +- Doesn't extend `String.prototype` +- Clean and focused +- Actively maintained +- [Used by ~23,000 packages](https://www.npmjs.com/browse/depended/chalk) as of December 31, 2017 + + +## Install + +```console +$ npm install chalk +``` + + + + + + +## Usage + +```js +const chalk = require('chalk'); + +console.log(chalk.blue('Hello world!')); +``` + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +const chalk = require('chalk'); +const log = console.log; + +// Combine styled and normal strings +log(chalk.blue('Hello') + ' World' + chalk.red('!')); + +// Compose multiple styles using the chainable API +log(chalk.blue.bgRed.bold('Hello world!')); + +// Pass in multiple arguments +log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); + +// Nest styles +log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); + +// Nest styles of the same type even (color, underline, background) +log(chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +)); + +// ES2015 template literal +log(` +CPU: ${chalk.red('90%')} +RAM: ${chalk.green('40%')} +DISK: ${chalk.yellow('70%')} +`); + +// ES2015 tagged template literal +log(chalk` +CPU: {red ${cpu.totalPercent}%} +RAM: {green ${ram.used / ram.total * 100}%} +DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} +`); + +// Use RGB colors in terminal emulators that support it. +log(chalk.keyword('orange')('Yay for orange colored text!')); +log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); +log(chalk.hex('#DEADED').bold('Bold gray!')); +``` + +Easily define your own themes: + +```js +const chalk = require('chalk'); + +const error = chalk.bold.red; +const warning = chalk.keyword('orange'); + +console.log(error('Error!')); +console.log(warning('Warning!')); +``` + +Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): + +```js +const name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> 'Hello Sindre' +``` + + +## API + +### chalk.` + + +
+

Code coverage report for __root__/

+

+ Statements: 100% (4 / 4)      + Branches: 100% (2 / 2)      + Functions: 100% (1 / 1)      + Lines: 100% (4 / 4)      + Ignored: none      +

+
All files » __root__/
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.js100%(4 / 4)100%(2 / 2)100%(1 / 1)100%(4 / 4)
+
+
+ + + + + + diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/__root__/index.js.html b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/__root__/index.js.html new file mode 100644 index 0000000..02e5768 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/__root__/index.js.html @@ -0,0 +1,69 @@ + + + + Code coverage report for index.js + + + + + + +
+

Code coverage report for index.js

+

+ Statements: 100% (4 / 4)      + Branches: 100% (2 / 2)      + Functions: 100% (1 / 1)      + Lines: 100% (4 / 4)      + Ignored: none      +

+
All files » __root__/ » index.js
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9  +1 +  +1 +  +1 +6 +  + 
'use strict'
+var path = require('path')
+ 
+var uniqueSlug = require('unique-slug')
+ 
+module.exports = function (filepath, prefix, uniq) {
+  return path.join(filepath, (prefix ? prefix + '-' : '') + uniqueSlug(uniq))
+}
+ 
+ +
+ + + + + + diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/base.css b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/base.css new file mode 100644 index 0000000..a6a2f32 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/base.css @@ -0,0 +1,182 @@ +body, html { + margin:0; padding: 0; +} +body { + font-family: Helvetica Neue, Helvetica,Arial; + font-size: 10pt; +} +div.header, div.footer { + background: #eee; + padding: 1em; +} +div.header { + z-index: 100; + position: fixed; + top: 0; + border-bottom: 1px solid #666; + width: 100%; +} +div.footer { + border-top: 1px solid #666; +} +div.body { + margin-top: 10em; +} +div.meta { + font-size: 90%; + text-align: center; +} +h1, h2, h3 { + font-weight: normal; +} +h1 { + font-size: 12pt; +} +h2 { + font-size: 10pt; +} +pre { + font-family: Consolas, Menlo, Monaco, monospace; + margin: 0; + padding: 0; + line-height: 1.3; + font-size: 14px; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} + +div.path { font-size: 110%; } +div.path a:link, div.path a:visited { color: #000; } +table.coverage { border-collapse: collapse; margin:0; padding: 0 } + +table.coverage td { + margin: 0; + padding: 0; + color: #111; + vertical-align: top; +} +table.coverage td.line-count { + width: 50px; + text-align: right; + padding-right: 5px; +} +table.coverage td.line-coverage { + color: #777 !important; + text-align: right; + border-left: 1px solid #666; + border-right: 1px solid #666; +} + +table.coverage td.text { +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 40px; +} +table.coverage td span.cline-neutral { + background: #eee; +} +table.coverage td span.cline-yes { + background: #b5d592; + color: #999; +} +table.coverage td span.cline-no { + background: #fc8c84; +} + +.cstat-yes { color: #111; } +.cstat-no { background: #fc8c84; color: #111; } +.fstat-no { background: #ffc520; color: #111 !important; } +.cbranch-no { background: yellow !important; color: #111; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +.missing-if-branch { + display: inline-block; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: black; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} + +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} + +.entity, .metric { font-weight: bold; } +.metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; } +.metric small { font-size: 80%; font-weight: normal; color: #666; } + +div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; } +div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; } +div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; } +div.coverage-summary th.file { border-right: none !important; } +div.coverage-summary th.pic { border-left: none !important; text-align: right; } +div.coverage-summary th.pct { border-right: none !important; } +div.coverage-summary th.abs { border-left: none !important; text-align: right; } +div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; } +div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; } +div.coverage-summary td.file { border-left: 1px solid #666; white-space: nowrap; } +div.coverage-summary td.pic { min-width: 120px !important; } +div.coverage-summary a:link { text-decoration: none; color: #000; } +div.coverage-summary a:visited { text-decoration: none; color: #777; } +div.coverage-summary a:hover { text-decoration: underline; } +div.coverage-summary tfoot td { border-top: 1px solid #666; } + +div.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +div.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +div.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} + +.high { background: #b5d592 !important; } +.medium { background: #ffe87c !important; } +.low { background: #fc8c84 !important; } + +span.cover-fill, span.cover-empty { + display:inline-block; + border:1px solid #444; + background: white; + height: 12px; +} +span.cover-fill { + background: #ccc; + border-right: 1px solid #444; +} +span.cover-empty { + background: white; + border-left: none; +} +span.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/index.html b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/index.html new file mode 100644 index 0000000..b10d186 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/index.html @@ -0,0 +1,73 @@ + + + + Code coverage report for All files + + + + + + +
+

Code coverage report for All files

+

+ Statements: 100% (4 / 4)      + Branches: 100% (2 / 2)      + Functions: 100% (1 / 1)      + Lines: 100% (4 / 4)      + Ignored: none      +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
__root__/100%(4 / 4)100%(2 / 2)100%(1 / 1)100%(4 / 4)
+
+
+ + + + + + diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.css b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.js b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.js new file mode 100644 index 0000000..ef51e03 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/prettify.js @@ -0,0 +1 @@ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/sort-arrow-sprite.png b/mybulma/node_modules/node-gyp/node_modules/unique-filename/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function (a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function (a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function () { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i =0 ; i < cols.length; i += 1) { + if (cols[i].sortable) { + el = getNthColumn(i).querySelector('.sorter'); + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function () { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(cols); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/index.js b/mybulma/node_modules/node-gyp/node_modules/unique-filename/index.js new file mode 100644 index 0000000..02bf1e2 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/index.js @@ -0,0 +1,8 @@ +'use strict' +var path = require('path') + +var uniqueSlug = require('unique-slug') + +module.exports = function (filepath, prefix, uniq) { + return path.join(filepath, (prefix ? prefix + '-' : '') + uniqueSlug(uniq)) +} diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/package.json b/mybulma/node_modules/node-gyp/node_modules/unique-filename/package.json new file mode 100644 index 0000000..bc429aa --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/package.json @@ -0,0 +1,27 @@ +{ + "name": "unique-filename", + "version": "1.1.1", + "description": "Generate a unique filename for use in temporary directories or caches.", + "main": "index.js", + "scripts": { + "test": "standard && tap test" + }, + "repository": { + "type": "git", + "url": "https://github.com/iarna/unique-filename.git" + }, + "keywords": [], + "author": "Rebecca Turner (http://re-becca.org/)", + "license": "ISC", + "bugs": { + "url": "https://github.com/iarna/unique-filename/issues" + }, + "homepage": "https://github.com/iarna/unique-filename", + "devDependencies": { + "standard": "^5.4.1", + "tap": "^2.3.1" + }, + "dependencies": { + "unique-slug": "^2.0.0" + } +} diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-filename/test/index.js b/mybulma/node_modules/node-gyp/node_modules/unique-filename/test/index.js new file mode 100644 index 0000000..105b4e5 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-filename/test/index.js @@ -0,0 +1,23 @@ +'sue strict' +var t = require('tap') +var uniqueFilename = require('../index.js') + +t.plan(6) + +var randomTmpfile = uniqueFilename('tmp') +t.like(randomTmpfile, /^tmp.[a-f0-9]{8}$/, 'random tmp file') + +var randomAgain = uniqueFilename('tmp') +t.notEqual(randomAgain, randomTmpfile, 'random tmp files are not the same') + +var randomPrefixedTmpfile = uniqueFilename('tmp', 'my-test') +t.like(randomPrefixedTmpfile, /^tmp.my-test-[a-f0-9]{8}$/, 'random prefixed tmp file') + +var randomPrefixedAgain = uniqueFilename('tmp', 'my-test') +t.notEqual(randomPrefixedAgain, randomPrefixedTmpfile, 'random prefixed tmp files are not the same') + +var uniqueTmpfile = uniqueFilename('tmp', 'testing', '/my/thing/to/uniq/on') +t.like(uniqueTmpfile, /^tmp.testing-7ddd44c0$/, 'unique filename') + +var uniqueAgain = uniqueFilename('tmp', 'testing', '/my/thing/to/uniq/on') +t.is(uniqueTmpfile, uniqueAgain, 'same unique string component produces same filename') diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-slug/.travis.yml b/mybulma/node_modules/node-gyp/node_modules/unique-slug/.travis.yml new file mode 100644 index 0000000..5651fce --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-slug/.travis.yml @@ -0,0 +1,10 @@ +language: node_js +sudo: false +before_install: + - "npm -g install npm" +node_js: + - "6" + - "8" + - "10" + - "lts/*" + - "node" diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-slug/LICENSE b/mybulma/node_modules/node-gyp/node_modules/unique-slug/LICENSE new file mode 100644 index 0000000..7953647 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-slug/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright npm, Inc + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-slug/README.md b/mybulma/node_modules/node-gyp/node_modules/unique-slug/README.md new file mode 100644 index 0000000..87f92f1 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-slug/README.md @@ -0,0 +1,19 @@ +unique-slug +=========== + +Generate a unique character string suitible for use in files and URLs. + +``` +var uniqueSlug = require('unique-slug') + +var randomSlug = uniqueSlug() +var fileSlug = uniqueSlug('/etc/passwd') +``` + +### uniqueSlug(*str*) → String (8 chars) + +If *str* is passed in then the return value will be its murmur hash in +hex. + +If *str* is not passed in, it will be 4 randomly generated bytes +converted into 8 hexadecimal characters. diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-slug/index.js b/mybulma/node_modules/node-gyp/node_modules/unique-slug/index.js new file mode 100644 index 0000000..fa4761a --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-slug/index.js @@ -0,0 +1,11 @@ +'use strict' +var MurmurHash3 = require('imurmurhash') + +module.exports = function (uniq) { + if (uniq) { + var hash = new MurmurHash3(uniq) + return ('00000000' + hash.result().toString(16)).substr(-8) + } else { + return (Math.random().toString(16) + '0000000').substr(2, 8) + } +} diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-slug/package.json b/mybulma/node_modules/node-gyp/node_modules/unique-slug/package.json new file mode 100644 index 0000000..2142e68 --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-slug/package.json @@ -0,0 +1,23 @@ +{ + "name": "unique-slug", + "version": "2.0.2", + "description": "Generate a unique character string suitible for use in files and URLs.", + "main": "index.js", + "scripts": { + "test": "standard && tap --coverage test" + }, + "keywords": [], + "author": "Rebecca Turner (http://re-becca.org)", + "license": "ISC", + "devDependencies": { + "standard": "^12.0.1", + "tap": "^12.7.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/iarna/unique-slug.git" + }, + "dependencies": { + "imurmurhash": "^0.1.4" + } +} diff --git a/mybulma/node_modules/node-gyp/node_modules/unique-slug/test/index.js b/mybulma/node_modules/node-gyp/node_modules/unique-slug/test/index.js new file mode 100644 index 0000000..0f4ccad --- /dev/null +++ b/mybulma/node_modules/node-gyp/node_modules/unique-slug/test/index.js @@ -0,0 +1,13 @@ +'use strict' +var t = require('tap') +var uniqueSlug = require('../index.js') + +t.plan(5) +var slugA = uniqueSlug() +t.is(slugA.length, 8, 'random slugs are 8 chars') +t.notEqual(slugA, uniqueSlug(), "two slugs aren't the same") +var base = '/path/to/thingy' +var slugB = uniqueSlug(base) +t.is(slugB.length, 8, 'string based slugs are 8 chars') +t.is(slugB, uniqueSlug(base), 'two string based slugs, from the same string are the same') +t.notEqual(slugB, uniqueSlug(slugA), 'two string based slongs, from diff strings are different') diff --git a/mybulma/node_modules/node-gyp/src/win_delay_load_hook.cc b/mybulma/node_modules/node-gyp/src/win_delay_load_hook.cc new file mode 100644 index 0000000..169f802 --- /dev/null +++ b/mybulma/node_modules/node-gyp/src/win_delay_load_hook.cc @@ -0,0 +1,39 @@ +/* + * When this file is linked to a DLL, it sets up a delay-load hook that + * intervenes when the DLL is trying to load the host executable + * dynamically. Instead of trying to locate the .exe file it'll just + * return a handle to the process image. + * + * This allows compiled addons to work when the host executable is renamed. + */ + +#ifdef _MSC_VER + +#pragma managed(push, off) + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif + +#include + +#include +#include + +static FARPROC WINAPI load_exe_hook(unsigned int event, DelayLoadInfo* info) { + HMODULE m; + if (event != dliNotePreLoadLibrary) + return NULL; + + if (_stricmp(info->szDll, HOST_BINARY) != 0) + return NULL; + + m = GetModuleHandle(NULL); + return (FARPROC) m; +} + +decltype(__pfnDliNotifyHook2) __pfnDliNotifyHook2 = load_exe_hook; + +#pragma managed(pop) + +#endif diff --git a/mybulma/node_modules/node-gyp/test/common.js b/mybulma/node_modules/node-gyp/test/common.js new file mode 100644 index 0000000..b714ee2 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/common.js @@ -0,0 +1,3 @@ +const envPaths = require('env-paths') + +module.exports.devDir = () => envPaths('node-gyp', { suffix: '' }).cache diff --git a/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt new file mode 100644 index 0000000..244f6b0 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt @@ -0,0 +1 @@ +[{"path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools","version":"15.9.28307.665","packages":["Microsoft.VisualStudio.Product.BuildTools","Microsoft.VisualStudio.Component.VC.CoreIde","Microsoft.VisualStudio.VC.Ide.Pro","Microsoft.VisualStudio.VC.Ide.Pro.Resources","Microsoft.VisualStudio.VC.Templates.Pro","Microsoft.VisualStudio.VC.Templates.Pro.Resources","Microsoft.VisualStudio.VC.Items.Pro","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Reduced","Microsoft.VisualStudio.VC.Ide.MDD","Microsoft.VisualStudio.VC.Ide.x64","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Express","Microsoft.VisualStudio.PackageGroup.Debugger.Script","Microsoft.VisualStudio.JavaScript.LanguageService","Microsoft.VisualStudio.JavaScript.LanguageService.Resources","Microsoft.VisualStudio.Debugger.Script.Msi","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.VC.Ide.WinXPlus","Microsoft.VisualStudio.VC.Ide.Dskx","Microsoft.VisualStudio.VC.Ide.Dskx.Resources","Microsoft.VisualStudio.VC.Ide.Core","Microsoft.VisualStudio.VC.Ide.Core.Resources","Microsoft.VisualStudio.VC.Ide.Base","Microsoft.VisualStudio.VC.Ide.LanguageService","Microsoft.VisualStudio.VC.Ide.ResourceEditor","Microsoft.VisualStudio.VC.Ide.ResourceEditor.Resources","Microsoft.VisualStudio.VC.Ide.ProjectSystem","Microsoft.VisualStudio.VC.Ide.ProjectSystem.Resources","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine.Resources","Microsoft.VisualStudio.VC.Ide.LanguageService.Resources","Microsoft.VisualStudio.VC.Ide.Base.Resources","Microsoft.VisualStudio.PackageGroup.Core","Microsoft.VisualStudio.TestTools.TeamFoundationClient","Microsoft.VisualStudio.PackageGroup.Debugger.Core","Microsoft.VisualStudio.Debugger.VSCodeDebuggerHost","Microsoft.VisualStudio.VC.Ide.Debugger","Microsoft.VisualStudio.VC.Ide.Debugger.Resources","Microsoft.VisualStudio.VC.Ide.Common","Microsoft.VisualStudio.VC.Ide.Common.Resources","Microsoft.VisualStudio.Debugger.Parallel","Microsoft.VisualStudio.Debugger.Parallel.Resources","Microsoft.VisualStudio.Debugger.CollectionAgents","Microsoft.VisualStudio.Debugger.Managed","Microsoft.CodeAnalysis.VisualStudio.Setup.Resources","Microsoft.CodeAnalysis.VisualStudio.Setup","Microsoft.CodeAnalysis.ExpressionEvaluator.Resources","Microsoft.CodeAnalysis.ExpressionEvaluator","Microsoft.VisualStudio.Debugger.Managed.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger","Microsoft.VisualStudio.VC.MSVCDis","Microsoft.VisualStudio.ScriptedHost","Microsoft.VisualStudio.ScriptedHost.Targeted","Microsoft.VisualStudio.ScriptedHost.Resources","Microsoft.IntelliTrace.DiagnosticsHub","Microsoft.VisualStudio.Debugger.Resources","Microsoft.PackageGroup.ClientDiagnostics","Microsoft.VisualStudio.AppResponsiveness","Microsoft.VisualStudio.AppResponsiveness.Targeted","Microsoft.VisualStudio.AppResponsiveness.Resources","Microsoft.VisualStudio.ClientDiagnostics","Microsoft.VisualStudio.ClientDiagnostics.Targeted","Microsoft.VisualStudio.ClientDiagnostics.Resources","Microsoft.VisualStudio.PackageGroup.CommunityCore","Microsoft.VisualStudio.ProjectSystem.Full","Microsoft.VisualStudio.ProjectSystem","Microsoft.VisualStudio.Community.x86","Microsoft.VisualStudio.Community.x64","Microsoft.VisualStudio.Community","Microsoft.IntelliTrace.CollectorCab","Microsoft.VisualStudio.Community.Resources","Microsoft.VisualStudio.WebSiteProject.DTE","Microsoft.MSHtml","Microsoft.VisualStudio.Community.Msi.Resources","Microsoft.VisualStudio.Community.Msi","Microsoft.VisualStudio.MinShell.Interop.Msi","Microsoft.VisualStudio.PackageGroup.CoreEditor","PortableFacades","Microsoft.VisualStudio.VirtualTree","Microsoft.VisualStudio.PackageGroup.Progression","Microsoft.VisualStudio.PerformanceProvider","Microsoft.VisualStudio.GraphModel","Microsoft.VisualStudio.GraphProvider","Microsoft.DiaSymReader","Microsoft.VisualStudio.TextMateGrammars","Microsoft.VisualStudio.PackageGroup.TeamExplorer","Microsoft.TeamFoundation.OfficeIntegration","Microsoft.TeamFoundation.OfficeIntegration.Resources","Microsoft.VisualStudio.TeamExplorer","Microsoft.ServiceHub","Microsoft.VisualStudio.ProjectServices","Microsoft.VisualStudio.SLNX.VSIX","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.PackageGroup.MinShell","Microsoft.VisualStudio.MinShell.Msi","Microsoft.VisualStudio.MinShell.Msi.Resources","Microsoft.VisualStudio.MinShell.Interop","Microsoft.VisualStudio.Log","Microsoft.VisualStudio.Log.Targeted","Microsoft.VisualStudio.Log.Resources","Microsoft.VisualStudio.Finalizer","Microsoft.VisualStudio.CoreEditor","Microsoft.VisualStudio.Connected","Microsoft.VisualStudio.Connected.Resources","Microsoft.VisualStudio.MinShell","Microsoft.VisualStudio.MinShell.Platform","Microsoft.VisualStudio.MinShell.Platform.Resources","Microsoft.VisualStudio.MefHosting","Microsoft.VisualStudio.MefHosting.Resources","Microsoft.VisualStudio.Initializer","Microsoft.VisualStudio.ExtensionManager","Microsoft.VisualStudio.Editors","Microsoft.Net.4.TargetingPack","Microsoft.VisualStudio.Component.Windows10SDK.17134","Win10SDK_10.0.17134","Microsoft.VisualStudio.Component.VC.Tools.x86.x64","Microsoft.VisualCpp.CodeAnalysis.Extensions","Microsoft.VisualCpp.CodeAnalysis.Extensions.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86.Resources","Microsoft.VisualCpp.CodeAnalysis.Extensions.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64.Resources","Microsoft.VisualStudio.Component.Static.Analysis.Tools","Microsoft.VisualStudio.StaticAnalysis","Microsoft.VisualStudio.StaticAnalysis.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX86","Microsoft.VisualCpp.VCTip.HostX64.TargetX86","Microsoft.VisualCpp.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX64","Microsoft.VisualCpp.VCTip.HostX64.TargetX64","Microsoft.VisualCpp.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX64","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.PGO.X86","Microsoft.VisualCpp.PGO.X64","Microsoft.VisualCpp.PGO.Headers","Microsoft.VisualCpp.CRT.x86.Store","Microsoft.VisualCpp.CRT.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.x64.Store","Microsoft.VisualCpp.CRT.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.ClickOnce.Msi","Microsoft.VisualStudio.PackageGroup.VC.Tools.x86","Microsoft.VisualCpp.Tools.HostX86.TargetX64","Microsoft.VisualCpp.VCTip.hostX86.targetX64","Microsoft.VisualCpp.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Tools.HostX86.TargetX86","Microsoft.VisualCpp.VCTip.hostX86.targetX86","Microsoft.VisualCpp.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Tools.Core.Resources","Microsoft.VisualCpp.Tools.Core.x86","Microsoft.VisualCpp.Tools.Common.Utils","Microsoft.VisualCpp.Tools.Common.Utils.Resources","Microsoft.VisualCpp.DIA.SDK","Microsoft.VisualCpp.CRT.x86.Desktop","Microsoft.VisualCpp.CRT.x64.Desktop","Microsoft.VisualCpp.CRT.Source","Microsoft.VisualCpp.CRT.Redist.X86","Microsoft.VisualCpp.CRT.Redist.X64","Microsoft.VisualCpp.CRT.Redist.Resources","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.CRT.Headers","Microsoft.VisualStudio.VC.MSBuild.X86","Microsoft.VisualStudio.VC.MSBuild.X64","Microsoft.VS.VC.MSBuild.X64.Resources","Microsoft.VisualStudio.VC.MSBuild.Base","Microsoft.VisualStudio.VC.MSBuild.Base.Resources","Microsoft.VisualStudio.VC.MSBuild.ARM","Microsoft.VisualStudio.Workload.MSBuildTools","Microsoft.VisualStudio.Component.CoreBuildTools","Microsoft.VisualStudio.Setup.Configuration","Microsoft.VisualStudio.PackageGroup.VsDevCmd","Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk","Microsoft.VisualStudio.VsDevCmd.Core.WinSdk","Microsoft.VisualStudio.VsDevCmd.Core.DotNet","Microsoft.VisualStudio.VC.DevCmd","Microsoft.VisualStudio.VC.DevCmd.Resources","Microsoft.VisualStudio.BuildTools.Resources","Microsoft.VisualStudio.Net.Eula.Resources","Microsoft.Build.Dependencies","Microsoft.Build.FileTracker.Msi","Microsoft.Component.MSBuild","Microsoft.PythonTools.BuildCore.Vsix","Microsoft.NuGet.Build.Tasks","Microsoft.VisualStudio.Component.Roslyn.Compiler","Microsoft.CodeAnalysis.Compilers.Resources","Microsoft.CodeAnalysis.Compilers","Microsoft.Net.PackageGroup.4.6.1.Redist","Microsoft.VisualStudio.NativeImageSupport","Microsoft.Build"]}] diff --git a/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt new file mode 100644 index 0000000..dd5e77d --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt @@ -0,0 +1 @@ +[{"path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community","version":"15.9.28307.665","packages":["Microsoft.VisualStudio.Component.Windows10SDK.IpOverUsb","Win10SDK_IpOverUsb","Microsoft.VisualStudio.Component.VC.ATL.ARM64","Microsoft.VisualCpp.ATL.ARM64","Microsoft.VisualStudio.Component.VC.ATL.ARM","Microsoft.VisualCpp.ATL.ARM","Microsoft.VisualStudio.Component.VC.Tools.ARM","Microsoft.VisualCpp.Tools.HostX64.TargetX86.Resources","Microsoft.VisualStudio.Graphics.Analyzer.Resources","Microsoft.Icecap.Analysis","Microsoft.VisualCpp.CRT.Redist.arm.OneCore.Desktop","Microsoft.VisualCpp.CRT.arm.Store","Microsoft.VisualCpp.CRT.arm.Desktop","Microsoft.VisualStudio.PackageGroup.VC.Tools.x64.ARM","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetarm","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetARM.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetARM","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetARM.Resources","Microsoft.VisualCpp.Premium.Tools.ARM.Base","Microsoft.VisualCpp.Premium.Tools.ARM.Base.Resources","Microsoft.VisualCpp.PGO.ARM","Microsoft.VisualCpp.Tools.HostX64.TargetX64","Microsoft.VisualStudio.Product.Community","Microsoft.VisualCpp.Tools.Hostx86.Targetarm","Microsoft.VisualStudio.Component.VC.Tools.ARM64","Microsoft.VisualStudio.VC.MSBuild.Arm64","Microsoft.VisualCpp.CRT.Redist.ARM64.OneCore.Desktop","Microsoft.VisualCpp.VCTip.HostX64.TargetX64","Microsoft.VisualCpp.CRT.ARM64.OneCore.Desktop","Microsoft.VisualCpp.CRT.ARM64.Store","Microsoft.VisualCpp.CRT.ARM64.Desktop","Microsoft.VisualCpp.Tools.HostX64.TargetX64.Resources","Microsoft.Icecap.Analysis.Resources","Microsoft.VisualCpp.VCTip.hostX86.targetARM","Microsoft.VisualStudio.PackageGroup.VC.Tools.x64.ARM64","Microsoft.VisualCpp.Tools.Core","Microsoft.VisualCpp.PGO.ARM64","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetarm64","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetARM64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetARM64","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetARM64.Resources","Microsoft.VisualCpp.Premium.Tools.ARM64.Base","Microsoft.VisualCpp.Tools.HostX86.TargetX64","Microsoft.VisualCpp.Tools.HostX86.TargetARM.Resources","Microsoft.VisualCpp.CRT.Redist.ARM64","Microsoft.VisualCpp.CRT.arm.OneCore.Desktop","Microsoft.VisualCpp.CodeAnalysis.Extensions.X86","Microsoft.VisualCpp.CodeAnalysis.Extensions.X64","Microsoft.VisualCpp.VCTip.HostX64.TargetX86","Component.WixToolset.VisualStudioExtension.Dev15","WixToolset.VisualStudioExtension.Dev15","Microsoft.VisualCpp.MFC.X64","Microsoft.VisualCpp.ATL.Headers","Microsoft.VisualStudio.Component.VC.CMake.Project","Microsoft.VisualStudio.VC.CMake","Microsoft.VisualStudio.VC.CMake.Project","Microsoft.VisualStudio.Component.Windows10SDK.17763","Microsoft.VisualStudio.VC.MSBuild.Base.Resources","MLGen","Microsoft.VisualStudio.Graphics.Analyzer","Microsoft.VisualStudio.Component.TestTools.Core","Microsoft.VisualCpp.Tools.Core.x86","Microsoft.VisualCpp.CRT.x86.OneCore.Desktop","Microsoft.VisualCpp.DIA.SDK","Microsoft.VisualCpp.CRT.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.ClickOnce.Msi","Microsoft.VisualStudio.NuGet.Licenses","SQLCommon","Microsoft.VisualStudio.VC.MSBuild.X86","Microsoft.VisualCpp.Tools.HostX64.TargetARM","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64.Resources","Microsoft.VisualCpp.HTMLHelpWorkshop.Msi","Microsoft.Icecap.Collection.Msi.Resources","Microsoft.VisualCpp.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.VCTip.hostX64.targetARM","Microsoft.VisualStudio.VC.Ide.Dskx.Resources","Microsoft.VisualStudio.VC.Templates.UnitTest","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CPP","Microsoft.VisualStudio.VC.Ide.Core","Microsoft.VisualStudio.Graphics.Appid","Microsoft.VisualCpp.ATL.Source","Microsoft.VisualStudio.VC.Ide.Core.Resources","Microsoft.VisualStudio.Debugger.ImmersiveActivateHelper.Msi","Microsoft.VisualStudio.Debugger.JustInTime","Microsoft.DiagnosticsHub.CpuSampling","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Common","Microsoft.VisualStudio.TestTools.TP.Legacy.Common.Res","Microsoft.VisualStudio.ProTools.Resources","Microsoft.VisualStudio.Community.Msi","Microsoft.VisualCpp.Tools.HostX64.TargetARM.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Agent","Microsoft.Component.MSBuild","Microsoft.VisualStudio.Graphics.Msi","Microsoft.VisualStudio.WebToolsExtensions","Microsoft.VisualCpp.Tools.Hostx86.Targetarm64","Microsoft.VisualStudio.TextTemplating.MSBuild","Microsoft.VisualCpp.VCTip.hostX86.targetARM64","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine","Microsoft.VisualCpp.Tools.HostX86.TargetARM64.Resources","Microsoft.VisualStudio.RazorExtension","Microsoft.VisualCpp.CRT.x86.Store","Microsoft.VisualCpp.Tools.Core.Resources","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualCpp.MFC.Source","Microsoft.VisualCpp.CRT.x86.Desktop","Microsoft.VisualStudio.VC.MSBuild.X64","Microsoft.VisualStudio.VC.Items.Pro","Microsoft.VisualStudio.Graphics.Viewers","Microsoft.VisualCpp.CRT.x64.Desktop","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86.Resources","Microsoft.VisualCpp.MFC.Redist.X86","Microsoft.VisualStudio.WebToolsExtensions.Chip","Microsoft.DiagnosticsHub.Runtime.Resources","Microsoft.DiagnosticsHub.CpuSampling.Targeted","Microsoft.VisualStudio.VC.Ide.LanguageService.Resources","Microsoft.VisualStudio.Component.VC.DiagnosticTools","Microsoft.VisualCpp.MFC.Redist.X64","Microsoft.VisualStudio.PackageGroup.TestTools.Native","Microsoft.VisualStudio.Graphics.Viewers.Resources","Microsoft.VisualCpp.MFC.MBCS","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Component.TextTemplating","Win10SDK_10.0.17763","Microsoft.VisualStudio.VC.Ide.Base.Resources","Microsoft.VisualCpp.MFC.MBCS.X64","Microsoft.VisualStudio.PackageGroup.TestTools.CodeCoverage","Microsoft.VisualStudio.Graphics.EnableTools","Microsoft.VisualStudio.Graphics.Appid.Resources","Microsoft.VisualStudio.VC.MSBuild.Base","Microsoft.VisualStudio.VC.MSBuild.ARM","Microsoft.VisualCpp.MFC.Headers","Microsoft.VisualCpp.CRT.Redist.x86.OneCore.Desktop","Microsoft.VisualCpp.Tools.HostX86.TargetX86","Microsoft.VisualStudio.VC.Ide.Base","Microsoft.VisualStudio.Graphics.Analyzer.Targeted","Microsoft.VisualCpp.CRT.Headers","Microsoft.DiagnosticsHub.Runtime.Targeted","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86","Microsoft.VisualCpp.Tools.HostX64.TargetARM64","Microsoft.VisualCpp.VCTip.hostX64.targetARM64","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86.Resources","Microsoft.Icecap.Collection.Msi","Microsoft.VisualCpp.ATL.X86","Microsoft.VisualCpp.Tools.HostX64.TargetARM64.Resources","Microsoft.VisualStudio.Component.VC.ATLMFC","Microsoft.VisualCpp.VCTip.hostX86.targetX86","Microsoft.Icecap.Collection.Msi.Resources.Targeted","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86","Microsoft.VisualStudio.Component.Graphics.Tools","Microsoft.VisualStudio.WebTools.Resources","Microsoft.VisualCpp.ATL.X64","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86.Resources","Microsoft.VisualStudio.Component.Graphics.Win81","Microsoft.VisualStudio.VC.Ide.MDD","Microsoft.VisualStudio.VC.Ide.ResourceEditor","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64","Microsoft.Icecap.Analysis.Resources.Targeted","Microsoft.VisualStudio.Debugger.Script.Msi","Microsoft.VisualStudio.Component.VC.CoreIde","Microsoft.VisualStudio.VC.Ide.MFC.Resources","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.PackageGroup.VC.Tools.x86","Microsoft.VisualStudio.TextTemplating.Core","Microsoft.VisualStudio.JavaScript.LanguageService","Microsoft.VisualStudio.VC.Ide.ResourceEditor.Resources","Microsoft.VisualStudio.VC.Ide.ProjectSystem.Resources","Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest","Microsoft.VisualStudio.VC.Ide.ProjectSystem","Microsoft.VisualStudio.VC.Ide.Dskx","Microsoft.VisualCpp.Tools.HostX86.TargetX86.Resources","Microsoft.CredentialProvider","Microsoft.VisualStudio.VC.Templates.Desktop","Microsoft.VisualStudio.VC.Ide.Pro.Resources","Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core","Microsoft.VisualStudio.TextTemplating.Integration","Microsoft.VisualStudio.Component.NuGet","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Reduced","Microsoft.VisualCpp.PGO.Headers","Microsoft.DiagnosticsHub.Collection","Microsoft.Icecap.Collection.Msi.Targeted","Microsoft.VisualStudio.VC.Ide.LanguageService","Microsoft.VisualStudio.WebTools.WSP.FSA","Microsoft.VisualStudio.Graphics.Msi","Microsoft.VisualCpp.CRT.Redist.X86","Microsoft.VisualStudio.Branding.Community","Microsoft.VisualStudio.VC.Ide.x64","Microsoft.VisualStudio.WebToolsExtensions.Common","Microsoft.VisualStudio.WebTools.MSBuild","Microsoft.VisualStudio.NuGet.Core","Microsoft.DiagnosticsHub.Collection.Service","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine.Resources","Microsoft.CodeAnalysis.ExpressionEvaluator","Microsoft.VisualCpp.CRT.Redist.X64","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VS.VC.MSBuild.X64.Resources","Microsoft.VisualCpp.CRT.Source","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips.Resources","Microsoft.VisualStudio.VC.Ide.WinXPlus","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX64","Microsoft.VisualCpp.CRT.Redist.Resources","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.Net.4.TargetingPack","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualCpp.CRT.x64.Store","Microsoft.VisualStudio.VC.Ide.Debugger.Resources","Microsoft.DiaSymReader.Native","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualStudio.StaticAnalysis","Microsoft.VisualStudio.TestTools.TeamFoundationClient","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.VC.Ide.Common","Microsoft.VisualStudio.Community.Extra.Resources","Microsoft.VisualStudio.Component.Roslyn.LanguageServices","Microsoft.DiagnosticsHub.Collection.StopService.Install","Microsoft.VisualStudio.InteractiveWindow","Microsoft.PackageGroup.DiagnosticsHub.Platform","Microsoft.VisualStudio.StaticAnalysis.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.VC.Ide.Common.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX86","Microsoft.VisualStudio.VC.DevCmd","Microsoft.VisualStudio.Community.Extra","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Msi","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.TestTools","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core.Resources","Microsoft.VisualStudio.PackageGroup.TestTools.Core","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V2.CLI","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.Component.VC.Tools.x86.x64","Microsoft.VisualStudio.TestTools.Pex.Common","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.Legacy","Microsoft.VisualStudio.PackageGroup.MinShell.Interop","Microsoft.CodeAnalysis.ExpressionEvaluator.Resources","Microsoft.VisualCpp.CodeAnalysis.Extensions","Microsoft.VisualStudio.PackageGroup.CoreEditor","Microsoft.VisualStudio.Component.Roslyn.Compiler","Microsoft.VisualStudio.ScriptedHost.Targeted","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Professional","Microsoft.VisualStudio.Debugger.Resources","Microsoft.VisualStudio.Debugger.Parallel","Microsoft.VisualStudio.Debugger.Parallel.Resources","Microsoft.VisualCpp.PGO.X64","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.GraphModel","Microsoft.VisualStudio.PackageGroup.TestTools.DataCollectors","sqlsysclrtypes","Microsoft.VisualStudio.ProTools","Component.Microsoft.VisualStudio.RazorExtension","Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI","Microsoft.Build.Dependencies","Microsoft.VisualStudio.WebTools.WSP.FSA.Resources","Microsoft.VisualStudio.Component.Static.Analysis.Tools","Microsoft.VisualStudio.VC.Ide.ATL.Resources","Microsoft.VisualStudio.VC.Templates.UnitTest.Resources","Microsoft.VisualStudio.Debugger.Managed","Microsoft.VisualStudio.Workload.NativeDesktop","Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest","Microsoft.VisualStudio.Debugger.JustInTime.Msi","Microsoft.Net.PackageGroup.4.6.1.Redist","Microsoft.VisualStudio.Debugger.VSCodeDebuggerHost","sqlsysclrtypes","Microsoft.VisualStudio.Debugger.Managed.Resources","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Common","Microsoft.VisualStudio.VC.Ide.Debugger","Microsoft.VisualStudio.AppResponsiveness","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.TestTools.TestWIExtension","Microsoft.VisualStudio.VC.Ide.Pro","Microsoft.VisualStudio.PackageGroup.Debugger.Core","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Express","Microsoft.VisualStudio.WebTools","Microsoft.VisualStudio.Component.VC.Redist.14.Latest","Microsoft.VisualStudio.VsDevCmd.Core.WinSdk","Microsoft.VisualStudio.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.TextTemplating.Integration.Resources","Microsoft.VisualStudio.Debugger.CollectionAgents","Microsoft.VisualStudio.Debugger","Microsoft.VisualStudio.PackageGroup.Debugger.Script","Microsoft.VisualStudio.VC.MSVCDis","Microsoft.VisualStudio.ScriptedHost","Microsoft.VisualStudio.ClientDiagnostics.Targeted","Microsoft.VisualStudio.ScriptedHost.Resources","Microsoft.TeamFoundation.OfficeIntegration.Resources","Microsoft.IntelliTrace.DiagnosticsHub","Microsoft.VisualStudio.JavaScript.LanguageService.Resources","Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest","Microsoft.VisualStudio.PackageGroup.Community","Microsoft.VisualStudio.ClientDiagnostics","Microsoft.VisualStudio.Component.Windows10SDK.17134","Microsoft.VisualStudio.PackageGroup.Core","PortableFacades","Microsoft.DiaSymReader","Microsoft.DiagnosticsHub.Runtime","Microsoft.VisualStudio.Component.CoreEditor","Microsoft.VisualStudio.AppResponsiveness.Targeted","Microsoft.VisualStudio.AppResponsiveness.Resources","Microsoft.VisualStudio.Community","Microsoft.TeamFoundation.OfficeIntegration","Microsoft.VisualStudio.WebSiteProject.DTE","Microsoft.VisualStudio.ClientDiagnostics.Resources","Microsoft.VisualStudio.ProjectSystem.Full","Microsoft.VisualStudio.ProjectSystem","Microsoft.VisualCpp.Tools.Common.UtilsPrereq","Microsoft.IntelliTrace.CollectorCab","Microsoft.VisualStudio.Community.Resources","Microsoft.VisualCpp.Tools.Common.Utils","Microsoft.ServiceHub","Microsoft.VisualStudio.Editors","Microsoft.VisualStudio.TeamExplorer","Microsoft.CodeAnalysis.VisualStudio.InteractiveComponents.Resources","Microsoft.VisualStudio.MinShell.Interop.Msi","Microsoft.VisualStudio.GraphProvider","Microsoft.CodeAnalysis.VisualStudio.InteractiveComponents","Microsoft.CodeAnalysis.VisualStudio.Setup.Interactive.Resources","Microsoft.CodeAnalysis.VisualStudio.Setup.Resources","Microsoft.VisualStudio.Community.x86","Microsoft.VisualStudio.Community.x64","Microsoft.CodeAnalysis.VisualStudio.Setup","Microsoft.NuGet.Build.Tasks","Microsoft.PackageGroup.ClientDiagnostics","Microsoft.CodeAnalysis.Compilers.Resources","Microsoft.CodeAnalysis.Compilers","Microsoft.VisualCpp.Tools.Common.Utils.Resources","Microsoft.VisualStudio.Net.Eula.Resources","Microsoft.VisualStudio.PackageGroup.CommunityCore","Microsoft.Build","Microsoft.VisualStudio.VC.Ide.TestAdapterForBoostTest","Microsoft.VisualStudio.VC.Ide.ATL","Microsoft.VisualStudio.TextMateGrammars","Microsoft.VisualStudio.Workload.CoreEditor","Microsoft.VisualStudio.MinShell.Interop","Microsoft.Build.FileTracker.Msi","Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core","Microsoft.MSHtml","Microsoft.VisualStudio.Community.Msi.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips","Microsoft.VisualStudio.Devenv.Msi","Microsoft.VisualStudio.Component.VC.ATL","Microsoft.VisualStudio.VC.Templates.Pro","Microsoft.VisualCpp.CRT.Redist.x64.OneCore.Desktop","Microsoft.VisualStudio.SLNX.VSIX","Microsoft.VisualStudio.CoreEditor","Win10SDK_10.0.17134","Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk","Microsoft.VisualStudio.Component.Debugger.JustInTime","Microsoft.VisualStudio.VC.Ide.MFC","Microsoft.VisualStudio.VsDevCmd.Core.DotNet","Microsoft.VisualStudio.PackageGroup.VsDevCmd","Microsoft.VisualStudio.Finalizer","Microsoft.VisualStudio.VirtualTree","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.ProjectServices","Microsoft.VisualStudio.VC.DevCmd.Resources","Microsoft.VisualStudio.MinShell","Microsoft.VisualStudio.PackageGroup.Progression","Microsoft.VisualStudio.PerformanceProvider","Microsoft.VisualStudio.Connected.Resources","Microsoft.VisualStudio.Log","Microsoft.VisualStudio.PackageGroup.TeamExplorer","Microsoft.VisualStudio.Log.Targeted","Microsoft.VisualStudio.MinShell.Platform","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.VC.Templates.Pro.Resources","Microsoft.VisualStudio.Devenv","Microsoft.VisualCpp.VCTip.hostX86.targetX64","Microsoft.VisualStudio.Devenv.Resources","Microsoft.VisualStudio.MinShell.Platform.Resources","Microsoft.VisualStudio.Connected","Microsoft.VisualStudio.MefHosting","Microsoft.DiagnosticsHub.Collection.StopService.Uninstall","Microsoft.VisualStudio.PackageGroup.MinShell","Microsoft.VisualStudio.MefHosting.Resources","Microsoft.VisualCpp.MFC.X86","Microsoft.VisualStudio.Log.Resources","Microsoft.Icecap.Analysis.Targeted","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.PGO.X86","Microsoft.VisualStudio.ExtensionManager","Microsoft.VisualStudio.MinShell.x86","Microsoft.VisualStudio.MinShell.Msi","Microsoft.VisualStudio.Setup.Configuration","Microsoft.VisualStudio.LanguageServer","Microsoft.VisualStudio.NativeImageSupport","Microsoft.VisualStudio.MinShell.Msi.Resources","Microsoft.VisualStudio.Devenv.Config","Microsoft.VisualStudio.MinShell.Resources","Microsoft.VisualStudio.Initializer","Microsoft.Net.PackageGroup.4.6.Redist"]}] diff --git a/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Express.txt b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Express.txt new file mode 100644 index 0000000..c4b3b5f --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Express.txt @@ -0,0 +1 @@ +[{"path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\WDExpress","version":"15.9.28307.858","packages":["Microsoft.VisualStudio.Product.WDExpress","Microsoft.VisualStudio.Workload.WDExpress","Microsoft.VisualStudio.Component.Windows10SDK.17763","MLGen","Win10SDK_10.0.17763","Microsoft.VisualStudio.Component.Windows10SDK.14393","Win10SDK_10.0.14393.795","Microsoft.VisualStudio.VC.Items.Pro","Microsoft.VisualStudio.VC.Ide.Pro","Microsoft.VisualStudio.VC.Ide.Pro.Resources","Microsoft.VisualStudio.Component.VC.Tools.ARM64","Microsoft.VisualStudio.VC.MSBuild.Arm64","Microsoft.VisualCpp.CRT.Redist.ARM64.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.ARM64","Microsoft.VisualCpp.CRT.ARM64.OneCore.Desktop","Microsoft.VisualCpp.CRT.ARM64.Store","Microsoft.VisualCpp.CRT.ARM64.Desktop","Microsoft.VisualCpp.Tools.Hostx86.Targetarm64","Microsoft.VisualCpp.VCTip.hostX86.targetARM64","Microsoft.VisualCpp.Tools.HostX86.TargetARM64.Resources","Microsoft.VisualStudio.Component.VC.Tools.ARM","Microsoft.VisualCpp.Tools.Hostx86.Targetarm","Microsoft.VisualCpp.VCTip.hostX86.targetARM","Microsoft.VisualCpp.Tools.HostX86.TargetARM.Resources","Microsoft.VisualCpp.CRT.x86.Store","Microsoft.VisualCpp.CRT.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.x64.Store","Microsoft.VisualCpp.CRT.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.arm.OneCore.Desktop","Microsoft.VisualCpp.CRT.arm.OneCore.Desktop","Microsoft.VisualCpp.CRT.arm.Store","Microsoft.VisualCpp.CRT.arm.Desktop","Microsoft.VisualStudio.VC.Templates.UnitTest","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CPP","Microsoft.VisualStudio.VC.Templates.UnitTest.Resources","Microsoft.VisualStudio.VC.Templates.Desktop","Microsoft.VisualStudio.VC.Templates.Pro","Microsoft.VisualStudio.VC.Templates.Pro.Resources","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Express","Microsoft.VisualStudio.PackageGroup.Debugger.Script","Microsoft.VisualStudio.JavaScript.LanguageService","Microsoft.VisualStudio.JavaScript.LanguageService.Resources","Microsoft.VisualStudio.Debugger.Script.Msi","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.VC.MSBuild.X64","Microsoft.VS.VC.MSBuild.X64.Resources","Microsoft.VisualStudio.VC.MSBuild.ARM","Microsoft.VisualStudio.VC.MSBuild.X86","Microsoft.VisualStudio.VC.MSBuild.Base","Microsoft.VisualStudio.VC.MSBuild.Base.Resources","Microsoft.VisualStudio.VC.Ide.WinXPlus","Microsoft.VisualStudio.VC.Ide.Dskx","Microsoft.VisualStudio.VC.Ide.Dskx.Resources","Microsoft.VisualStudio.VC.Ide.Core","Microsoft.VisualStudio.VC.Ide.Core.Resources","Microsoft.VisualStudio.VC.Ide.Base","Microsoft.VisualStudio.VC.Ide.Base.Resources","Microsoft.VisualStudio.Component.VC.CLI.Support","Microsoft.VisualCpp.CLI.X86","Microsoft.VisualCpp.CLI.X64","Microsoft.VisualCpp.CLI.Source","Microsoft.VisualCpp.CLI.ARM64","Microsoft.VisualCpp.CLI.ARM","Microsoft.VisualStudio.VC.Templates.CLR","Microsoft.VisualStudio.VC.Ide.LanguageService","Microsoft.VisualStudio.VC.Ide.ResourceEditor","Microsoft.VisualStudio.VC.Ide.ResourceEditor.Resources","Microsoft.VisualStudio.VC.Ide.ProjectSystem","Microsoft.VisualStudio.VC.Ide.ProjectSystem.Resources","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine.Resources","Microsoft.VisualStudio.VC.Ide.LanguageService.Resources","Microsoft.VisualStudio.VC.Templates.CLR.Resources","Microsoft.Component.VC.Runtime.OSSupport","Microsoft.Windows.UniversalCRT.Tools.Msi","Microsoft.Windows.UniversalCRT.Tools.Msi","Microsoft.Windows.UniversalCRT.ExtensionSDK.Msi","Microsoft.Windows.UniversalCRT.HeadersLibsSources.Msi","Microsoft.VisualStudio.PackageGroup.VC.Tools.x86","Microsoft.VisualCpp.Tools.HostX86.TargetX64","Microsoft.VisualCpp.VCTip.hostX86.targetX64","Microsoft.VisualCpp.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Tools.HostX86.TargetX86","Microsoft.VisualCpp.VCTip.hostX86.targetX86","Microsoft.VisualCpp.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Tools.Core.Resources","Microsoft.VisualCpp.Tools.Core.x86","Microsoft.VisualCpp.Tools.Common.Utils","Microsoft.VisualCpp.Tools.Common.Utils.Resources","Microsoft.VisualCpp.DIA.SDK","Microsoft.VisualCpp.CRT.x86.Desktop","Microsoft.VisualCpp.CRT.x64.Desktop","Microsoft.VisualCpp.CRT.Source","Microsoft.VisualCpp.CRT.Redist.X86","Microsoft.VisualCpp.CRT.Redist.X64","Microsoft.VisualCpp.CRT.Redist.Resources","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.CRT.Headers","Microsoft.Component.HelpViewer","Microsoft.HelpViewer","Microsoft.VisualStudio.Help.Configuration.Msi","Microsoft.VisualStudio.Component.SQL.DataSources","Microsoft.VisualStudio.Component.SQL.SSDT","Microsoft.VisualStudio.Component.SQL.CMDUtils","sqlcmdlnutils","Microsoft.VisualStudio.Component.Common.Azure.Tools","Microsoft.VisualStudio.Azure.CommonAzureTools","SSDT","Microsoft.VisualStudio.Component.SQL.ADAL","sql_adalsql","Microsoft.VisualStudio.Component.NuGet","Microsoft.CredentialProvider","Microsoft.VisualStudio.NuGet.Licenses","Microsoft.VisualStudio.Component.SQL.LocalDB.Runtime","Microsoft.VisualStudio.Component.SQL.NCLI","sqllocaldb","sqlncli","Microsoft.VisualStudio.Component.EntityFramework","Microsoft.VisualStudio.PackageGroup.DslRuntime","Microsoft.VisualStudio.Dsl.Core","Microsoft.VisualStudio.Dsl.GraphObject","Microsoft.VisualStudio.Dsl.Core.Resources","Microsoft.VisualStudio.EntityFrameworkTools","Microsoft.VisualStudio.EntityFrameworkTools.Msi","Microsoft.VisualStudio.Component.Roslyn.LanguageServices","Microsoft.VisualStudio.InteractiveWindow","Microsoft.DiaSymReader.Native","Microsoft.VisualStudio.Component.Static.Analysis.Tools","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualStudio.StaticAnalysis","Microsoft.VisualStudio.StaticAnalysis.Resources","Microsoft.CodeAnalysis.VisualStudio.InteractiveComponents.Resources","Microsoft.CodeAnalysis.VisualStudio.InteractiveComponents","Microsoft.CodeAnalysis.VisualStudio.Setup.Interactive.Resources","Microsoft.Net.ComponentGroup.TargetingPacks.Common","Microsoft.Net.Component.4.6.TargetingPack","Microsoft.Net.4.6.TargetingPack","Microsoft.Net.Component.4.5.2.TargetingPack","Microsoft.Net.4.5.2.TargetingPack","Microsoft.Net.Component.4.5.1.TargetingPack","Microsoft.Net.4.5.1.TargetingPack","Microsoft.Net.Component.4.5.TargetingPack","Microsoft.Net.4.5.TargetingPack","Microsoft.Net.Component.4.TargetingPack","Microsoft.Net.4.TargetingPack","Microsoft.Net.ComponentGroup.DevelopmentPrerequisites","Microsoft.Net.Component.4.6.1.TargetingPack","Microsoft.Net.4.6.1.TargetingPack","Microsoft.Net.Cumulative.TargetingPack.Resources","Microsoft.Net.Component.4.6.1.SDK","Microsoft.Net.4.6.1.SDK","Microsoft.VisualStudio.Component.TextTemplating","Microsoft.VisualStudio.TextTemplating.MSBuild","Microsoft.VisualStudio.TextTemplating.Integration","Microsoft.VisualStudio.TextTemplating.Core","Microsoft.VisualStudio.TextTemplating.Integration.Resources","Microsoft.VisualStudio.Component.VisualStudioData","Microsoft.VisualStudio.Component.SQL.CLR","Microsoft.VisualStudio.ProTools","sqlsysclrtypes","sqlsysclrtypes","SQLCommon","Microsoft.VisualStudio.ProTools.Resources","Microsoft.VisualStudio.XamlDiagnostics","Microsoft.VisualStudio.XamlDiagnostics.Resources","Microsoft.VisualStudio.XamlDesigner","Microsoft.VisualStudio.XamlDesigner.Resources","Microsoft.VisualStudio.XamlDesigner.Executables","Microsoft.VisualStudio.XamlShared","Microsoft.VisualStudio.XamlShared.Resources","Microsoft.VisualStudio.PackageGroup.TestTools.Managed","Microsoft.VisualStudio.PackageGroup.IntelliTrace.Core","Microsoft.IntelliTrace.Core","Microsoft.IntelliTrace.Core.Targeted","Microsoft.IntelliTrace.ProfilerProxy.Msi.x64","Microsoft.IntelliTrace.ProfilerProxy.Msi","Microsoft.VisualStudio.NuGet.Core","Microsoft.VisualStudio.TestWindow.SourceBasedTestDiscovery","Microsoft.VisualStudio.TestWindow.Dotnet","Microsoft.VisualStudio.TestTools.TestGeneration","Microsoft.VisualStudio.PackageGroup.TestTools.CodeCoverage","Microsoft.VisualStudio.PackageGroup.TestTools.Enterprise","Microsoft.VisualStudio.PackageGroup.TestTools.MSTestV2.Managed","Microsoft.VisualStudio.TestTools.MSTestV2.WizardExtension.UnitTest","Microsoft.VisualStudio.PackageGroup.TestTools.Core","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V2.CLI","Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.TestTools.Pex.Common","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.Legacy","Microsoft.VisualStudio.PackageGroup.MinShell.Interop","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Msi","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Common","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.TestTools","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Professional","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Common","Microsoft.VisualStudio.TestTools.TP.Legacy.Common.Res","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Agent","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.TestTools.TestWIExtension","Microsoft.VisualStudio.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.PackageGroup.TestTools.DataCollectors","Microsoft.Component.ClickOnce","Microsoft.VisualStudio.PackageGroup.ClickOnce.MSBuild","Microsoft.VisualCpp.CRT.ClickOnce.Msi","Microsoft.ClickOnce.SignTool.Msi","Microsoft.SQL.ClickOnceBootstrapper.Msi","Microsoft.Net.ClickOnceBootstrapper","Microsoft.ClickOnce.BootStrapper.Msi.Resources","Microsoft.ClickOnce.BootStrapper.Msi","Microsoft.VisualStudio.WebTools.WSP.FSA","Microsoft.VisualStudio.WebTools.WSP.FSA.Resources","Microsoft.VisualStudio.PackageGroup.Community","Microsoft.VisualStudio.Community.Extra.Resources","Microsoft.VisualStudio.Community.Extra","Microsoft.VisualStudio.PackageGroup.Core","Microsoft.VisualStudio.TestTools.TeamFoundationClient","Microsoft.VisualStudio.PackageGroup.Debugger.Core","Microsoft.VisualStudio.Debugger.VSCodeDebuggerHost","Microsoft.VisualStudio.VC.Ide.Debugger","Microsoft.VisualStudio.VC.Ide.Debugger.Resources","Microsoft.VisualStudio.VC.Ide.Common","Microsoft.VisualStudio.VC.Ide.Common.Resources","Microsoft.VisualStudio.Debugger.Parallel","Microsoft.VisualStudio.Debugger.Parallel.Resources","Microsoft.VisualStudio.Debugger.CollectionAgents","Microsoft.VisualStudio.Debugger.Managed","Microsoft.CodeAnalysis.VisualStudio.Setup.Resources","Microsoft.CodeAnalysis.VisualStudio.Setup","Microsoft.CodeAnalysis.ExpressionEvaluator.Resources","Microsoft.CodeAnalysis.ExpressionEvaluator","Microsoft.VisualStudio.Debugger.Managed.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger","Microsoft.VisualStudio.VC.MSVCDis","Microsoft.VisualStudio.ScriptedHost","Microsoft.VisualStudio.ScriptedHost.Targeted","Microsoft.VisualStudio.ScriptedHost.Resources","Microsoft.IntelliTrace.DiagnosticsHub","Microsoft.VisualStudio.Debugger.Resources","Microsoft.PackageGroup.ClientDiagnostics","Microsoft.VisualStudio.AppResponsiveness","Microsoft.VisualStudio.AppResponsiveness.Targeted","Microsoft.VisualStudio.AppResponsiveness.Resources","Microsoft.VisualStudio.ClientDiagnostics","Microsoft.VisualStudio.ClientDiagnostics.Targeted","Microsoft.VisualStudio.ClientDiagnostics.Resources","Microsoft.VisualStudio.PackageGroup.CommunityCore","Microsoft.VisualStudio.ProjectSystem.Full","Microsoft.VisualStudio.ProjectSystem","Microsoft.VisualStudio.Community.x86","Microsoft.VisualStudio.Community.x64","Microsoft.VisualStudio.Community","Microsoft.IntelliTrace.CollectorCab","Microsoft.VisualStudio.Community.Resources","Microsoft.VisualStudio.Net.Eula.Resources","Microsoft.VisualStudio.WebSiteProject.DTE","Microsoft.MSHtml","Microsoft.VisualStudio.Community.Msi.Resources","Microsoft.VisualStudio.Community.Msi","Microsoft.VisualStudio.MinShell.Interop.Msi","Microsoft.VisualStudio.Editors","Microsoft.VisualStudio.ClickOnce.Resources","Microsoft.VisualStudio.ClickOnce","Microsoft.Component.MSBuild","Microsoft.NuGet.Build.Tasks","Microsoft.VisualStudio.Component.Roslyn.Compiler","Microsoft.CodeAnalysis.Compilers.Resources","Microsoft.CodeAnalysis.Compilers","Microsoft.Net.PackageGroup.4.6.1.Redist","Microsoft.VisualStudio.TemplateEngine","Microsoft.VisualStudio.WebToolsExtensions.Common","Microsoft.NET.Sdk","Microsoft.VisualStudio.PackageGroup.TestTools.Templates.Managed","Microsoft.VisualStudio.TestTools.Templates.Managed","Microsoft.VisualStudio.TestTools.Templates.Managed.Resources","Microsoft.VisualStudio.Templates.VB.MSTestv2.Desktop.UnitTest","Microsoft.VisualStudio.Templates.CS.MSTestv2.Desktop.UnitTest","Microsoft.VisualStudio.Templates.VB.Wpf","Microsoft.VisualStudio.Templates.VB.Wpf.Resources","Microsoft.VisualStudio.Templates.VB.Winforms","Microsoft.VisualStudio.Templates.VB.ManagedCore","Microsoft.VisualStudio.Templates.VB.Shared","Microsoft.VisualStudio.Templates.VB.Shared.Resources","Microsoft.VisualStudio.Templates.VB.ManagedCore.Resources","Microsoft.VisualStudio.Templates.CS.GettingStarted.Desktop.Package","Microsoft.VisualStudio.Templates.GetStarted.Desktop.Setup","Microsoft.VisualStudio.Templates.CS.GettingStarted.Console.Package","Microsoft.VisualStudio.Templates.GetStarted.Resources","Microsoft.VisualStudio.Templates.GetStarted.Common.Setup","Microsoft.VisualStudio.Templates.GetStarted.Console.Setup","Microsoft.VisualStudio.Templates.CS.Wpf","Microsoft.VisualStudio.Templates.CS.Wpf.Resources","Microsoft.VisualStudio.Templates.CS.Winforms","Microsoft.VisualStudio.Templates.CS.ManagedCore","Microsoft.VisualStudio.Templates.CS.Shared","Microsoft.VisualStudio.Templates.Editorconfig.Wizard.Setup","Templates.Editorconfig.SolutionFile.Setup","Microsoft.VisualStudio.Templates.CS.Shared.Resources","Microsoft.VisualStudio.Templates.CS.ManagedCore.Resources","Microsoft.VisualStudio.Component.CoreEditor","Microsoft.VisualStudio.PackageGroup.CoreEditor","PortableFacades","Microsoft.VisualStudio.PackageGroup.VsDevCmd","Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk","Microsoft.VisualStudio.VsDevCmd.Core.WinSdk","Microsoft.VisualStudio.VsDevCmd.Core.DotNet","Microsoft.VisualStudio.VC.DevCmd","Microsoft.VisualStudio.VC.DevCmd.Resources","Microsoft.VisualStudio.VirtualTree","Microsoft.VisualStudio.PackageGroup.Progression","Microsoft.VisualStudio.PerformanceProvider","Microsoft.VisualStudio.GraphModel","Microsoft.VisualStudio.GraphProvider","Microsoft.DiaSymReader","Microsoft.Build.Dependencies","Microsoft.Build.FileTracker.Msi","Microsoft.Build","Microsoft.VisualStudio.TextMateGrammars","Microsoft.VisualStudio.PackageGroup.TeamExplorer","Microsoft.TeamFoundation.OfficeIntegration","Microsoft.TeamFoundation.OfficeIntegration.Resources","Microsoft.VisualStudio.TeamExplorer","Microsoft.ServiceHub","Microsoft.VisualStudio.ProjectServices","Microsoft.VisualStudio.SLNX.VSIX","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.PackageGroup.MinShell","Microsoft.VisualStudio.MinShell.Interop","Microsoft.VisualStudio.Log","Microsoft.VisualStudio.Log.Targeted","Microsoft.VisualStudio.Log.Resources","Microsoft.VisualStudio.Finalizer","Microsoft.VisualStudio.WDExpress","Microsoft.VisualStudio.WDExpress.Resources","Microsoft.VisualStudio.CoreEditor","Microsoft.VisualStudio.Connected","Microsoft.VisualStudio.Connected.Resources","Microsoft.VisualStudio.MinShell","Microsoft.VisualStudio.Setup.Configuration","Microsoft.VisualStudio.MinShell.Platform","Microsoft.VisualStudio.MinShell.Platform.Resources","Microsoft.VisualStudio.MefHosting","Microsoft.VisualStudio.MefHosting.Resources","Microsoft.VisualStudio.Initializer","Microsoft.VisualStudio.ExtensionManager","Microsoft.VisualStudio.MinShell.x86","Microsoft.VisualStudio.NativeImageSupport","Microsoft.VisualStudio.MinShell.Msi","Microsoft.VisualStudio.MinShell.Msi.Resources","Microsoft.VisualStudio.LanguageServer","Microsoft.VisualStudio.MinShell.Resources","Microsoft.Net.PackageGroup.4.6.Redist","Microsoft.VisualStudio.Branding.WDExpress"]}] diff --git a/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt new file mode 100644 index 0000000..fc0a257 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt @@ -0,0 +1 @@ +[{"path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildToolsUnusable","version":"15.9.28307.665","packages":["Microsoft.VisualStudio.Product.BuildTools","Microsoft.VisualStudio.Component.Windows10SDK.17134","Win10SDK_10.0.17134","Microsoft.VisualStudio.Component.VC.Tools.x86.x64","Microsoft.VisualCpp.CodeAnalysis.Extensions","Microsoft.VisualCpp.CodeAnalysis.Extensions.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86.Resources","Microsoft.VisualCpp.CodeAnalysis.Extensions.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64.Resources","Microsoft.VisualStudio.Component.Static.Analysis.Tools","Microsoft.VisualStudio.StaticAnalysis","Microsoft.VisualStudio.StaticAnalysis.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX86","Microsoft.VisualCpp.VCTip.HostX64.TargetX86","Microsoft.VisualCpp.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX64","Microsoft.VisualCpp.VCTip.HostX64.TargetX64","Microsoft.VisualCpp.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX64","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.PGO.X86","Microsoft.VisualCpp.PGO.X64","Microsoft.VisualCpp.PGO.Headers","Microsoft.VisualCpp.CRT.x86.Store","Microsoft.VisualCpp.CRT.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.x64.Store","Microsoft.VisualCpp.CRT.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.ClickOnce.Msi","Microsoft.VisualStudio.PackageGroup.VC.Tools.x86","Microsoft.VisualCpp.Tools.HostX86.TargetX64","Microsoft.VisualCpp.VCTip.hostX86.targetX64","Microsoft.VisualCpp.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Tools.HostX86.TargetX86","Microsoft.VisualCpp.VCTip.hostX86.targetX86","Microsoft.VisualCpp.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Tools.Core.Resources","Microsoft.VisualCpp.Tools.Core.x86","Microsoft.VisualCpp.Tools.Common.Utils","Microsoft.VisualCpp.Tools.Common.Utils.Resources","Microsoft.VisualCpp.DIA.SDK","Microsoft.VisualCpp.CRT.x86.Desktop","Microsoft.VisualCpp.CRT.x64.Desktop","Microsoft.VisualCpp.CRT.Source","Microsoft.VisualCpp.CRT.Redist.X86","Microsoft.VisualCpp.CRT.Redist.X64","Microsoft.VisualCpp.CRT.Redist.Resources","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.CRT.Headers","Microsoft.VisualStudio.Workload.MSBuildTools","Microsoft.VisualStudio.Component.CoreBuildTools","Microsoft.VisualStudio.Setup.Configuration","Microsoft.VisualStudio.PackageGroup.VsDevCmd","Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk","Microsoft.VisualStudio.VsDevCmd.Core.WinSdk","Microsoft.VisualStudio.VsDevCmd.Core.DotNet","Microsoft.VisualStudio.VC.DevCmd","Microsoft.VisualStudio.VC.DevCmd.Resources","Microsoft.VisualStudio.BuildTools.Resources","Microsoft.VisualStudio.Net.Eula.Resources","Microsoft.Build.Dependencies","Microsoft.Build.FileTracker.Msi","Microsoft.Component.MSBuild","Microsoft.PythonTools.BuildCore.Vsix","Microsoft.NuGet.Build.Tasks","Microsoft.VisualStudio.Component.Roslyn.Compiler","Microsoft.CodeAnalysis.Compilers.Resources","Microsoft.CodeAnalysis.Compilers","Microsoft.Net.PackageGroup.4.6.1.Redist","Microsoft.Net.4.6.1.FullRedist.NonThreshold","Microsoft.Windows.UniversalCRT.Msu.81","Microsoft.VisualStudio.NativeImageSupport","Microsoft.Build"]}] diff --git a/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt b/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt new file mode 100644 index 0000000..f07d254 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt @@ -0,0 +1 @@ +[{"path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools","version":"16.1.28922.388","packages":["Microsoft.VisualStudio.Product.BuildTools","Microsoft.VisualStudio.Component.VC.CoreIde","Microsoft.VisualStudio.VC.Ide.Pro","Microsoft.VisualStudio.VC.Ide.Pro.Resources","Microsoft.VisualStudio.VC.Templates.Pro","Microsoft.VisualStudio.VC.Templates.Pro.Resources","Microsoft.VisualStudio.VC.Items.Pro","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Reduced","Microsoft.VisualStudio.VC.Ide.MDD","Microsoft.VisualStudio.PackageGroup.Core","Microsoft.VisualStudio.CodeSense.Community","Microsoft.VisualStudio.TestTools.TeamFoundationClient","Microsoft.PackageGroup.ClientDiagnostics","Microsoft.VisualStudio.AppResponsiveness","Microsoft.VisualStudio.AppResponsiveness.Targeted","Microsoft.VisualStudio.AppResponsiveness.Resources","Microsoft.VisualStudio.ClientDiagnostics","Microsoft.VisualStudio.ClientDiagnostics.Targeted","Microsoft.VisualStudio.ClientDiagnostics.Resources","Microsoft.VisualStudio.PackageGroup.CommunityCore","Microsoft.VisualStudio.ProjectSystem.Full","Microsoft.VisualStudio.ProjectSystem","Microsoft.VisualStudio.Community.x86","Microsoft.VisualStudio.Community.x64","Microsoft.VisualStudio.Community","Microsoft.IntelliTrace.CollectorCab","Microsoft.VisualStudio.Community.Resources","Microsoft.VisualStudio.WebSiteProject.DTE","Microsoft.MSHtml","Microsoft.VisualStudio.Platform.CallHierarchy","Microsoft.VisualStudio.Community.Msi.Resources","Microsoft.VisualStudio.Community.Msi","Microsoft.VisualStudio.MinShell.Interop.Msi","Microsoft.VisualStudio.PackageGroup.CoreEditor","Microsoft.VisualStudio.VirtualTree","Microsoft.VisualStudio.PackageGroup.Progression","Microsoft.VisualStudio.PerformanceProvider","Microsoft.VisualStudio.GraphModel","Microsoft.VisualStudio.GraphProvider","Microsoft.VisualStudio.TextMateGrammars","Microsoft.VisualStudio.PackageGroup.TeamExplorer.Common","Microsoft.VisualStudio.TeamExplorer","Microsoft.ServiceHub","Microsoft.VisualStudio.ProjectServices","Microsoft.VisualStudio.OpenFolder.VSIX","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.PackageGroup.MinShell","Microsoft.VisualStudio.MinShell.Msi","Microsoft.VisualStudio.MinShell.Msi.Resources","Microsoft.VisualStudio.MinShell.Interop","Microsoft.VisualStudio.Log","Microsoft.VisualStudio.Log.Targeted","Microsoft.VisualStudio.Log.Resources","Microsoft.VisualStudio.Finalizer","Microsoft.VisualStudio.CoreEditor","Microsoft.VisualStudio.Platform.NavigateTo","Microsoft.VisualStudio.Connected","Microsoft.VisualStudio.Connected.Resources","Microsoft.VisualStudio.VC.Ide.x64","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Express","Microsoft.VisualStudio.PackageGroup.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Msi","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.VC.Ide.WinXPlus","Microsoft.VisualStudio.VC.Ide.Dskx","Microsoft.VisualStudio.VC.Ide.Dskx.Resources","Microsoft.VisualStudio.VC.Ide.Base","Microsoft.VisualStudio.VC.Ide.LanguageService","Microsoft.VisualStudio.VC.Ide.Core","Microsoft.VisualStudio.VisualC.Logging","Microsoft.VisualStudio.VC.Ide.Core.Resources","Microsoft.VisualStudio.VC.Ide.VCPkgDatabase","Microsoft.VisualStudio.VC.Ide.ResourceEditor","Microsoft.VisualStudio.VC.Ide.ResourceEditor.Resources","Microsoft.VisualStudio.VC.Ide.ProjectSystem","Microsoft.VisualStudio.VC.Ide.ProjectSystem.Resources","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine.Resources","Microsoft.VisualStudio.VC.Ide.LanguageService.Resources","Microsoft.VisualStudio.VC.Ide.Base.Resources","Microsoft.Net.4.TargetingPack","Microsoft.VisualStudio.PackageGroup.Debugger.Core","Microsoft.VisualStudio.PackageGroup.Debugger.TimeTravel.Record","Microsoft.VisualStudio.Debugger.TimeTravel.Runtime","Microsoft.VisualStudio.Debugger.TimeTravel.Runtime","Microsoft.VisualStudio.Debugger.TimeTravel.Agent","Microsoft.VisualStudio.Debugger.TimeTravel.Record","Microsoft.VisualStudio.Debugger.VSCodeDebuggerHost","Microsoft.VisualStudio.VC.Ide.Debugger","Microsoft.VisualStudio.VC.Ide.Debugger.Concord","Microsoft.VisualStudio.VC.Ide.Debugger.Concord.Resources","Microsoft.VisualStudio.VC.Ide.Debugger.Resources","Microsoft.VisualStudio.VC.Ide.Common","Microsoft.VisualStudio.VC.Ide.Common.Resources","Microsoft.VisualStudio.Debugger.Parallel","Microsoft.VisualStudio.Debugger.Parallel.Resources","Microsoft.VisualStudio.Debugger.CollectionAgents","Microsoft.VisualStudio.Debugger.Managed","Microsoft.DiaSymReader","Microsoft.CodeAnalysis.ExpressionEvaluator","Microsoft.VisualStudio.Debugger.Concord.Managed","Microsoft.VisualStudio.Debugger.Concord.Managed.Resources","Microsoft.VisualStudio.Debugger.Managed.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger","Microsoft.VisualStudio.PerfLib","Microsoft.VisualStudio.Debugger.Package.DiagHub.Client.VSx86","Microsoft.VisualStudio.Debugger.Remote.DiagHub.Client","Microsoft.VisualStudio.Debugger.Remote.DiagHub.Client","Microsoft.VisualStudio.VC.MSVCDis","Microsoft.VisualStudio.ScriptedHost","Microsoft.VisualStudio.ScriptedHost.Targeted","Microsoft.VisualStudio.ScriptedHost.Resources","Microsoft.VisualStudio.Editors","Microsoft.IntelliTrace.DiagnosticsHub","Microsoft.VisualStudio.MinShell","Microsoft.VisualStudio.MinShell.Platform","Microsoft.VisualStudio.MinShell.Platform.Resources","Microsoft.VisualStudio.MefHosting","Microsoft.VisualStudio.MefHosting.Resources","Microsoft.VisualStudio.Initializer","Microsoft.VisualStudio.ExtensionManager","Microsoft.VisualStudio.Platform.Editor","Microsoft.VisualStudio.Debugger.Concord","Microsoft.VisualStudio.Debugger.Concord.Resources","Microsoft.VisualStudio.Debugger.Resources","Microsoft.CodeAnalysis.VisualStudio.Setup","Microsoft.VisualStudio.Component.Windows10SDK.17134","Win10SDK_10.0.17134","Microsoft.VisualStudio.Component.VC.Tools.x86.x64","Microsoft.VisualCpp.CodeAnalysis.Extensions","Microsoft.VisualCpp.CodeAnalysis.Extensions.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86.Resources","Microsoft.VisualCpp.CodeAnalysis.Extensions.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64.Resources","Microsoft.VisualStudio.StaticAnalysis","Microsoft.VisualStudio.StaticAnalysis.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX86","Microsoft.VisualCpp.VCTip.HostX64.TargetX86","Microsoft.VisualCpp.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX64","Microsoft.VisualCpp.VCTip.HostX64.TargetX64","Microsoft.VisualCpp.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX64","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.PGO.X86","Microsoft.VisualCpp.PGO.X64","Microsoft.VisualCpp.PGO.Headers","Microsoft.VisualCpp.CRT.x86.Store","Microsoft.VisualCpp.CRT.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.x64.Store","Microsoft.VisualCpp.CRT.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.ClickOnce.Msi","Microsoft.VisualStudio.PackageGroup.VC.Tools.x86","Microsoft.VisualCpp.Tools.HostX86.TargetX64","Microsoft.VisualCpp.VCTip.hostX86.targetX64","Microsoft.VisualCpp.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Tools.HostX86.TargetX86","Microsoft.VisualCpp.VCTip.hostX86.targetX86","Microsoft.VisualCpp.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Tools.Core.Resources","Microsoft.VisualCpp.Tools.Core.x86","Microsoft.VisualCpp.Tools.Common.Utils","Microsoft.VisualCpp.Tools.Common.Utils.Resources","Microsoft.VisualCpp.DIA.SDK","Microsoft.VisualCpp.CRT.x86.Desktop","Microsoft.VisualCpp.CRT.x64.Desktop","Microsoft.VisualCpp.CRT.Source","Microsoft.VisualCpp.CRT.Redist.X86","Microsoft.VisualCpp.CRT.Redist.X64","Microsoft.VisualCpp.CRT.Redist.Resources","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.CRT.Headers","Microsoft.VisualStudio.VC.MSBuild.x86.v142","Microsoft.VisualStudio.VC.MSBuild.X86","Microsoft.VisualStudio.VC.MSBuild.X64.v142","Microsoft.VisualStudio.VC.MSBuild.X64","Microsoft.VS.VC.MSBuild.X64.Resources","Microsoft.VisualStudio.VC.MSBuild.ARM.v142","Microsoft.VisualStudio.VC.MSBuild.ARM","Microsoft.VisualStudio.VC.MSBuild.Base","Microsoft.VisualStudio.VC.MSBuild.Base.Resources","Microsoft.VisualStudio.Workload.MSBuildTools","Microsoft.VisualStudio.Component.CoreBuildTools","Microsoft.VisualStudio.Setup.Configuration","Microsoft.VisualStudio.PackageGroup.VsDevCmd","Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk","Microsoft.VisualStudio.VsDevCmd.Core.WinSdk","Microsoft.VisualStudio.VsDevCmd.Core.DotNet","Microsoft.VisualStudio.VC.DevCmd","Microsoft.VisualStudio.VC.DevCmd.Resources","Microsoft.VisualStudio.BuildTools.Resources","Microsoft.VisualStudio.Net.Eula.Resources","Microsoft.Build.Dependencies","Microsoft.Build.FileTracker.Msi","Microsoft.Component.MSBuild","Microsoft.PythonTools.BuildCore.Vsix","Microsoft.NuGet.Build.Tasks","Microsoft.VisualStudio.Component.Roslyn.Compiler","Microsoft.CodeAnalysis.Compilers","Microsoft.Net.PackageGroup.4.7.2.Redist","Microsoft.VisualStudio.NativeImageSupport","Microsoft.Build","Microsoft.VisualStudio.PackageGroup.NuGet","Microsoft.VisualStudio.NuGet.BuildTools"]}] diff --git a/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt b/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt new file mode 100644 index 0000000..50071c2 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt @@ -0,0 +1 @@ +[{"path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community","version":"16.1.28922.388","packages":["Microsoft.VisualStudio.Workload.NativeDesktop","Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest","Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest","Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest","Microsoft.VisualStudio.VC.Ide.TestAdapterForBoostTest","Microsoft.VisualStudio.Component.VC.ATL","Microsoft.VisualStudio.VC.Ide.ATL","Microsoft.VisualStudio.VC.Ide.ATL.Resources","Microsoft.VisualCpp.ATL.X86","Microsoft.VisualCpp.ATL.X64","Microsoft.VisualCpp.ATL.Source","Microsoft.VisualCpp.ATL.Headers","Microsoft.VisualStudio.Component.VC.CMake.Project","Microsoft.VisualStudio.VC.CMake","Microsoft.VisualStudio.VC.CMake.Project","Microsoft.VisualStudio.VC.ExternalBuildFramework","Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core","Microsoft.VisualStudio.PackageGroup.TestTools.Native","Microsoft.VisualStudio.Component.VC.Redist.14.Latest","Microsoft.VisualStudio.VC.Templates.UnitTest","Microsoft.VisualStudio.VC.UnitTest.Desktop.Build.Core","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CPP","Microsoft.VisualStudio.VC.Templates.UnitTest.Resources","Microsoft.VisualStudio.VC.Templates.Desktop","Microsoft.VisualStudio.Component.Debugger.JustInTime","Microsoft.VisualStudio.Debugger.ImmersiveActivateHelper.Msi","Microsoft.VisualStudio.Debugger.JustInTime","Microsoft.VisualStudio.Debugger.JustInTime.Msi","Microsoft.VisualStudio.Component.Windows10SDK.17763","Win10SDK_10.0.17763","Microsoft.VisualStudio.Component.VC.DiagnosticTools","Microsoft.VisualStudio.Component.Graphics.Tools","Microsoft.VisualStudio.Component.VC.Tools.x86.x64","Microsoft.VisualCpp.CodeAnalysis.Extensions","Microsoft.VisualCpp.CodeAnalysis.Extensions.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86.Resources","Microsoft.VisualCpp.CodeAnalysis.Extensions.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX86","Microsoft.VisualCpp.VCTip.HostX64.TargetX86","Microsoft.VisualCpp.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX64","Microsoft.VisualCpp.VCTip.HostX64.TargetX64","Microsoft.VisualCpp.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX64","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.PGO.X86","Microsoft.VisualCpp.PGO.X64","Microsoft.VisualCpp.PGO.Headers","Microsoft.VisualCpp.CRT.x86.Store","Microsoft.VisualCpp.CRT.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.x64.Store","Microsoft.VisualCpp.CRT.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x64.OneCore.Desktop","Microsoft.VisualStudio.PackageGroup.VC.Tools.x86","Microsoft.VisualCpp.Tools.HostX86.TargetX64","Microsoft.VisualCpp.VCTip.hostX86.targetX64","Microsoft.VisualCpp.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Tools.HostX86.TargetX86","Microsoft.VisualCpp.VCTip.hostX86.targetX86","Microsoft.VisualCpp.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Tools.Core.Resources","Microsoft.VisualCpp.Tools.Core.x86","Microsoft.VisualCpp.DIA.SDK","Microsoft.VisualCpp.CRT.x86.Desktop","Microsoft.VisualCpp.CRT.x64.Desktop","Microsoft.VisualCpp.CRT.Source","Microsoft.VisualCpp.CRT.Redist.X86","Microsoft.VisualCpp.CRT.Redist.X64","Microsoft.VisualCpp.CRT.Redist.Resources","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.VisualCpp.CRT.Headers","Microsoft.VisualStudio.Graphics.Viewers","Microsoft.VisualStudio.Graphics.Viewers.Resources","Microsoft.VisualStudio.Graphics.Msi","Microsoft.VisualStudio.Graphics.Msi","Microsoft.VisualStudio.Graphics.Analyzer","Microsoft.VisualStudio.Graphics.Analyzer.Targeted","Microsoft.VisualStudio.Graphics.Analyzer.Resources","Microsoft.VisualStudio.Graphics.Appid","Microsoft.VisualStudio.Graphics.Appid.Resources","Microsoft.VisualStudio.Component.VC.CoreIde","Microsoft.VisualStudio.VC.Ide.Pro","Microsoft.VisualStudio.VC.Ide.Pro.Resources","Microsoft.VisualStudio.VC.Templates.Pro","Microsoft.VisualStudio.VC.Templates.Pro.Resources","Microsoft.VisualStudio.VC.Items.Pro","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Reduced","Microsoft.VisualStudio.VC.Ide.x64","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Express","Microsoft.VisualStudio.VC.MSBuild.X64.v142","Microsoft.VisualStudio.VC.MSBuild.X64","Microsoft.VS.VC.MSBuild.X64.Resources","Microsoft.VisualStudio.VC.MSBuild.ARM.v142","Microsoft.VisualStudio.VC.MSBuild.ARM","Microsoft.VisualStudio.VC.MSBuild.x86.v142","Microsoft.VisualStudio.VC.MSBuild.X86","Microsoft.VisualStudio.VC.MSBuild.Base","Microsoft.VisualStudio.VC.MSBuild.Base.Resources","Microsoft.VisualStudio.VC.Ide.WinXPlus","Microsoft.VisualStudio.VC.Ide.Dskx","Microsoft.VisualStudio.VC.Ide.Dskx.Resources","Microsoft.VisualStudio.VC.Ide.Base","Microsoft.VisualStudio.VC.Ide.LanguageService","Microsoft.VisualStudio.VC.Ide.Core","Microsoft.VisualStudio.VC.Ide.Core.Resources","Microsoft.VisualStudio.VC.Ide.VCPkgDatabase","Microsoft.VisualStudio.VC.Ide.ProjectSystem","Microsoft.VisualStudio.VC.Ide.ProjectSystem.Resources","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine.Resources","Microsoft.VisualStudio.VC.Ide.LanguageService.Resources","Microsoft.VisualStudio.VC.Ide.Base.Resources","Component.Microsoft.VisualStudio.LiveShare","Microsoft.VisualStudio.LiveShare","Microsoft.Icecap.Analysis","Microsoft.Icecap.Analysis.Targeted","Microsoft.Icecap.Analysis.Resources","Microsoft.Icecap.Analysis.Resources.Targeted","Microsoft.Icecap.Collection.Msi","Microsoft.Icecap.Collection.Msi.Targeted","Microsoft.Icecap.Collection.Msi.Resources","Microsoft.Icecap.Collection.Msi.Resources.Targeted","Microsoft.DiagnosticsHub.Instrumentation","Microsoft.DiagnosticsHub.CpuSampling.ExternalDependencies","Microsoft.DiagnosticsHub.CpuSampling","Microsoft.DiagnosticsHub.CpuSampling.Targeted","Microsoft.PackageGroup.DiagnosticsHub.Platform","Microsoft.DiagnosticsHub.Runtime.ExternalDependencies","Microsoft.DiagnosticsHub.Runtime.ExternalDependencies.Targeted","Microsoft.DiagnosticsHub.Collection.ExternalDependencies.x64","Microsoft.DiagnosticsHub.Collection.StopService.Uninstall","Microsoft.DiagnosticsHub.Runtime","Microsoft.DiagnosticsHub.Runtime.Targeted","Microsoft.DiagnosticsHub.Collection","Microsoft.DiagnosticsHub.Collection.Service","Microsoft.DiagnosticsHub.Collection.StopService.Install","Microsoft.VisualStudio.Component.IntelliCode","Microsoft.VisualStudio.IntelliCode","Microsoft.Net.4.TargetingPack","Microsoft.VisualStudio.VC.Ide.ResourceEditor","Microsoft.VisualStudio.VC.Ide.ResourceEditor.Resources","Microsoft.VisualStudio.PackageGroup.TestTools.CodeCoverage","Microsoft.VisualStudio.PackageGroup.TestTools.Core","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V2.CLI","Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.TestTools.Pex.Common","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.Legacy","Microsoft.VisualStudio.PackageGroup.MinShell.Interop","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Msi","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Common","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.TestTools","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Professional","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Common","Microsoft.VisualStudio.TestTools.TP.Legacy.Common.Res","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Agent","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.TestTools.TestWIExtension","Microsoft.VisualStudio.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.PackageGroup.TestTools.DataCollectors","Microsoft.VisualStudio.LiveShareApi","Microsoft.VisualStudio.Component.TextTemplating","Microsoft.VisualStudio.TextTemplating.MSBuild","Microsoft.VisualStudio.TextTemplating.Integration","Microsoft.VisualStudio.TextTemplating.Core","Microsoft.VisualStudio.TextTemplating.Integration.Resources","Microsoft.VisualCpp.CRT.ClickOnce.Msi","Microsoft.Component.MSBuild","Microsoft.NuGet.Build.Tasks","Microsoft.DiagnosticsHub.KB2882822.Win7","Microsoft.VisualStudio.PackageGroup.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Msi","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions","Microsoft.VisualStudio.ProTools","sqlsysclrtypes","sqlsysclrtypes","SQLCommon","Microsoft.VisualStudio.ProTools.Resources","Microsoft.VisualStudio.WebToolsExtensions","Microsoft.VisualStudio.WebTools","Microsoft.VisualStudio.WebTools.Resources","Microsoft.VisualStudio.WebTools.MSBuild","Microsoft.VisualStudio.WebTools.WSP.FSA","Microsoft.VisualStudio.WebTools.WSP.FSA.Resources","Microsoft.VisualStudio.VC.Ide.MDD","Microsoft.VisualStudio.VisualC.Logging","Microsoft.WebTools.Shared","Microsoft.WebTools.DotNet.Core.ItemTemplates","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.Redist.14","Microsoft.Windows.UniversalCRT.Msu.7","Microsoft.VisualStudio.StaticAnalysis","Microsoft.VisualStudio.StaticAnalysis.Resources","Microsoft.VisualStudio.Component.Roslyn.Compiler","Microsoft.CodeAnalysis.Compilers","Microsoft.VisualStudio.Component.NuGet","Microsoft.CredentialProvider","Microsoft.VisualStudio.NuGet.PowershellBindingRedirect","Microsoft.VisualStudio.NuGet.Licenses","Microsoft.VisualStudio.PackageGroup.Community","Microsoft.VisualStudio.Community.Extra.Resources","Microsoft.VisualStudio.Community.Extra","Microsoft.VisualStudio.PackageGroup.Core","Microsoft.VisualStudio.CodeSense.Community","Microsoft.VisualStudio.TestTools.TeamFoundationClient","Microsoft.VisualStudio.PackageGroup.Debugger.Core","Microsoft.VisualStudio.PackageGroup.Debugger.TimeTravel.Record","Microsoft.VisualStudio.Debugger.TimeTravel.Runtime","Microsoft.VisualStudio.Debugger.TimeTravel.Runtime","Microsoft.VisualStudio.Debugger.TimeTravel.Agent","Microsoft.VisualStudio.Debugger.TimeTravel.Record","Microsoft.VisualStudio.Debugger.VSCodeDebuggerHost","Microsoft.VisualStudio.VC.Ide.Debugger","Microsoft.VisualStudio.VC.Ide.Debugger.Concord","Microsoft.VisualStudio.VC.Ide.Debugger.Concord.Resources","Microsoft.VisualStudio.VC.Ide.Debugger.Resources","Microsoft.VisualStudio.VC.Ide.Common","Microsoft.VisualStudio.VC.Ide.Common.Resources","Microsoft.VisualStudio.Debugger.Parallel","Microsoft.VisualStudio.Debugger.Parallel.Resources","Microsoft.VisualStudio.Debugger.CollectionAgents","Microsoft.VisualStudio.Debugger.Managed","Microsoft.CodeAnalysis.VisualStudio.Setup","Microsoft.CodeAnalysis.ExpressionEvaluator","Microsoft.VisualStudio.Debugger.Concord.Managed","Microsoft.VisualStudio.Debugger.Concord.Managed.Resources","Microsoft.VisualStudio.Debugger.Managed.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Remote.DbgHelp.Win8","Microsoft.VisualStudio.Debugger.Concord.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Remote.DbgHelp.Win8","Microsoft.VisualStudio.Debugger.Concord.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger","Microsoft.VisualStudio.Debugger.Package.DiagHub.Client.VSx86","Microsoft.VisualStudio.Debugger.Remote.DiagHub.Client","Microsoft.VisualStudio.Debugger.Remote.DiagHub.Client","Microsoft.VisualStudio.Debugger.DbgHelp.Win8","Microsoft.VisualStudio.VC.MSVCDis","Microsoft.VisualStudio.ScriptedHost","Microsoft.VisualStudio.ScriptedHost.Targeted","Microsoft.VisualStudio.ScriptedHost.Resources","Microsoft.IntelliTrace.DiagnosticsHub","Microsoft.VisualStudio.Debugger.Concord","Microsoft.VisualStudio.Debugger.Concord.Resources","Microsoft.VisualStudio.Debugger.Resources","Microsoft.PackageGroup.ClientDiagnostics","Microsoft.VisualStudio.AppResponsiveness","Microsoft.VisualStudio.AppResponsiveness.Targeted","Microsoft.VisualStudio.AppResponsiveness.Resources","Microsoft.VisualStudio.ClientDiagnostics","Microsoft.VisualStudio.ClientDiagnostics.Targeted","Microsoft.VisualStudio.ClientDiagnostics.Resources","Microsoft.VisualStudio.PackageGroup.CommunityCore","Microsoft.VisualStudio.ProjectSystem.Full","Microsoft.VisualStudio.ProjectSystem","Microsoft.VisualStudio.Community.x86","Microsoft.VisualStudio.Community.x64","Microsoft.VisualStudio.Community","Microsoft.IntelliTrace.CollectorCab","Microsoft.VisualStudio.Community.Resources","Microsoft.VisualStudio.Net.Eula.Resources","Microsoft.VisualStudio.WebSiteProject.DTE","Microsoft.MSHtml","Microsoft.VisualStudio.Platform.CallHierarchy","Microsoft.VisualStudio.Community.Msi.Resources","Microsoft.VisualStudio.Community.Msi","Microsoft.VisualStudio.Devenv.Msi","Microsoft.VisualStudio.MinShell.Interop.Msi","Microsoft.VisualStudio.Editors","Microsoft.VisualStudio.Product.Community","Microsoft.VisualStudio.Workload.CoreEditor","Microsoft.VisualStudio.Component.CoreEditor","Microsoft.VisualStudio.PackageGroup.CoreEditor","Microsoft.VisualCpp.Tools.Common.UtilsPrereq","Microsoft.VisualCpp.Tools.Common.Utils","Microsoft.VisualCpp.Tools.Common.Utils.Resources","Microsoft.VisualStudio.PackageGroup.VsDevCmd","Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk","Microsoft.VisualStudio.VsDevCmd.Core.WinSdk","Microsoft.VisualStudio.VsDevCmd.Core.DotNet","Microsoft.VisualStudio.VC.DevCmd","Microsoft.VisualStudio.VC.DevCmd.Resources","Microsoft.VisualStudio.VirtualTree","Microsoft.VisualStudio.PackageGroup.Progression","Microsoft.VisualStudio.PerformanceProvider","Microsoft.VisualStudio.GraphModel","Microsoft.VisualStudio.GraphProvider","Microsoft.DiaSymReader","Microsoft.Build.Dependencies","Microsoft.Build.FileTracker.Msi","Microsoft.Build","Microsoft.VisualStudio.PackageGroup.NuGet","Microsoft.VisualStudio.NuGet.Core","Microsoft.VisualStudio.TextMateGrammars","Microsoft.VisualStudio.PackageGroup.TeamExplorer.Common","Microsoft.VisualStudio.TeamExplorer","Microsoft.ServiceHub","Microsoft.VisualStudio.ProjectServices","Microsoft.VisualStudio.OpenFolder.VSIX","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.PackageGroup.MinShell","Microsoft.VisualStudio.MinShell.Interop","Microsoft.VisualStudio.Log","Microsoft.VisualStudio.Log.Targeted","Microsoft.VisualStudio.Log.Resources","Microsoft.VisualStudio.Finalizer","Microsoft.VisualStudio.Devenv","Microsoft.VisualStudio.Devenv.Resources","Microsoft.VisualStudio.CoreEditor","Microsoft.VisualStudio.Platform.NavigateTo","Microsoft.VisualStudio.Connected","Microsoft.VisualStudio.PerfLib","Microsoft.VisualStudio.Connected.Resources","Microsoft.VisualStudio.MinShell","Microsoft.VisualStudio.Setup.Configuration","Microsoft.VisualStudio.MinShell.Platform","Microsoft.VisualStudio.MinShell.Platform.Resources","Microsoft.VisualStudio.MefHosting","Microsoft.VisualStudio.MefHosting.Resources","Microsoft.VisualStudio.Initializer","Microsoft.VisualStudio.ExtensionManager","Microsoft.VisualStudio.Platform.Editor","Microsoft.VisualStudio.MinShell.x86","Microsoft.VisualStudio.NativeImageSupport","Microsoft.VisualStudio.MinShell.Msi","Microsoft.VisualStudio.MinShell.Msi.Resources","Microsoft.VisualStudio.LanguageServer","Microsoft.VisualStudio.Devenv.Config","Microsoft.VisualStudio.MinShell.Resources","Microsoft.Net.PackageGroup.4.7.2.Redist","Microsoft.Net.4.7.2.FullRedist","Microsoft.VisualStudio.Branding.Community"]}] diff --git a/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt b/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt new file mode 100644 index 0000000..806509e --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt @@ -0,0 +1 @@ +[{"path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Preview","version":"16.0.28608.199","packages":["Microsoft.VisualStudio.Product.Enterprise","Microsoft.VisualStudio.Workload.NativeDesktop","Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest","Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest","Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest","Microsoft.VisualStudio.VC.Ide.TestAdapterForBoostTest","Microsoft.VisualStudio.Component.VC.ATL","Microsoft.VisualStudio.VC.Ide.ATL","Microsoft.VisualStudio.VC.Ide.ATL.Resources","Microsoft.VisualCpp.ATL.X86","Microsoft.VisualCpp.ATL.X64","Microsoft.VisualCpp.ATL.Source","Microsoft.VisualCpp.ATL.Headers","Microsoft.VisualStudio.Component.VC.CMake.Project","Microsoft.VisualStudio.VC.CMake","Microsoft.VisualStudio.VC.CMake.Project","Microsoft.VisualStudio.VC.ExternalBuildFramework","Microsoft.VisualStudio.Component.VC.DiagnosticTools","Microsoft.VisualStudio.Component.Graphics.Tools","Microsoft.VisualStudio.Graphics.Viewers","Microsoft.VisualStudio.Graphics.Viewers.Resources","Microsoft.VisualStudio.Graphics.EnableTools","Microsoft.VisualStudio.Graphics.Msi","Microsoft.VisualStudio.Graphics.Msi","Microsoft.VisualStudio.Graphics.Analyzer","Microsoft.VisualStudio.Graphics.Analyzer.Targeted","Microsoft.VisualStudio.Graphics.Analyzer.Resources","Microsoft.VisualStudio.Graphics.Appid","Microsoft.VisualStudio.Graphics.Appid.Resources","Microsoft.VisualStudio.Component.Windows10SDK.17763","Win10SDK_10.0.17763","Microsoft.VisualStudio.Component.VC.Tools.x86.x64","Microsoft.VisualCpp.CodeAnalysis.Extensions","Microsoft.VisualCpp.CodeAnalysis.Extensions.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X86.Resources","Microsoft.VisualCpp.CodeAnalysis.Extensions.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64","Microsoft.VisualCpp.CodeAnalysis.ConcurrencyCheck.X64.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX86","Microsoft.VisualCpp.VCTip.HostX64.TargetX86","Microsoft.VisualCpp.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Tools.HostX64.TargetX64","Microsoft.VisualCpp.VCTip.HostX64.TargetX64","Microsoft.VisualCpp.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX64","Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX86.Resources","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64","Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64.Resources","Microsoft.VisualCpp.PGO.X86","Microsoft.VisualCpp.PGO.X64","Microsoft.VisualCpp.PGO.Headers","Microsoft.VisualCpp.CRT.x86.Store","Microsoft.VisualCpp.CRT.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.x64.Store","Microsoft.VisualCpp.CRT.x64.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x86.OneCore.Desktop","Microsoft.VisualCpp.CRT.Redist.x64.OneCore.Desktop","Microsoft.VisualStudio.PackageGroup.VC.Tools.x86","Microsoft.VisualCpp.Tools.HostX86.TargetX64","Microsoft.VisualCpp.VCTip.hostX86.targetX64","Microsoft.VisualCpp.Tools.Hostx86.Targetx64.Resources","Microsoft.VisualCpp.Tools.HostX86.TargetX86","Microsoft.VisualCpp.VCTip.hostX86.targetX86","Microsoft.VisualCpp.Tools.HostX86.TargetX86.Resources","Microsoft.VisualCpp.Tools.Core.Resources","Microsoft.VisualCpp.Tools.Core.x86","Microsoft.VisualCpp.DIA.SDK","Microsoft.VisualCpp.CRT.x86.Desktop","Microsoft.VisualCpp.CRT.x64.Desktop","Microsoft.VisualCpp.CRT.Source","Microsoft.VisualCpp.CRT.Redist.X86","Microsoft.VisualCpp.CRT.Redist.X64","Microsoft.VisualCpp.CRT.Redist.Resources","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.RuntimeDebug.14","Microsoft.VisualCpp.CRT.Headers","Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core","Microsoft.VisualStudio.PackageGroup.TestTools.Native","Microsoft.VisualStudio.ComponentGroup.ArchitectureTools.Native","Microsoft.VisualStudio.Component.ClassDesigner","Microsoft.VisualStudio.ClassDesigner","Microsoft.VisualStudio.ClassDesigner.Resources","Microsoft.VisualStudio.Component.VC.Redist.14.Latest","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.VisualCpp.Redist.14.Latest","Microsoft.VisualStudio.VC.Templates.UnitTest","Microsoft.VisualStudio.VC.UnitTest.Desktop.Build.Core","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CPP","Microsoft.VisualStudio.VC.Templates.UnitTest.Resources","Microsoft.VisualStudio.VC.Templates.Desktop","Microsoft.VisualStudio.Component.VC.CoreIde","Microsoft.VisualStudio.VC.Ide.Pro","Microsoft.VisualStudio.VC.Ide.Pro.Resources","Microsoft.VisualStudio.VC.Templates.Pro","Microsoft.VisualStudio.VC.Templates.Pro.Resources","Microsoft.VisualStudio.VC.Items.Pro","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Reduced","Microsoft.VisualStudio.VC.Ide.x64","Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Express","Microsoft.VisualStudio.VC.MSBuild.X64.v142","Microsoft.VisualStudio.VC.MSBuild.X64","Microsoft.VS.VC.MSBuild.X64.Resources","Microsoft.VisualStudio.VC.MSBuild.ARM.v142","Microsoft.VisualStudio.VC.MSBuild.ARM","Microsoft.VisualStudio.VC.MSBuild.x86.v142","Microsoft.VisualStudio.VC.MSBuild.X86","Microsoft.VisualStudio.VC.MSBuild.Base","Microsoft.VisualStudio.VC.MSBuild.Base.Resources","Microsoft.VisualStudio.VC.Ide.WinXPlus","Microsoft.VisualStudio.VC.Ide.Dskx","Microsoft.VisualStudio.VC.Ide.Dskx.Resources","Microsoft.VisualStudio.VC.Ide.Base","Microsoft.VisualStudio.VC.Ide.LanguageService","Microsoft.VisualStudio.VC.Ide.Core","Microsoft.VisualStudio.VC.Ide.Core.Resources","Microsoft.VisualStudio.VC.Ide.VCPkgDatabase","Microsoft.VisualStudio.VC.Ide.Progression.Enterprise","Microsoft.VisualStudio.VC.Ide.ProjectSystem","Microsoft.VisualStudio.VC.Ide.ProjectSystem.Resources","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine","Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine.Resources","Microsoft.VisualStudio.VC.Ide.LanguageService.Resources","Microsoft.VisualStudio.VC.Ide.Base.Resources","Microsoft.VisualStudio.Component.CodeMap","Microsoft.VisualStudio.Component.GraphDocument","Microsoft.VisualStudio.Vmp","Microsoft.VisualStudio.GraphDocument","Microsoft.VisualStudio.GraphDocument.Resources","Microsoft.VisualStudio.CodeMap","Microsoft.VisualStudio.Component.SQL.LocalDB.Runtime","Microsoft.VisualStudio.Component.SQL.NCLI","sqllocaldb","sqlncli","Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions","Microsoft.VisualStudio.WebToolsExtensions","Microsoft.VisualStudio.WebTools","Microsoft.VisualStudio.WebTools.Resources","Microsoft.VisualStudio.WebTools.MSBuild","Microsoft.VisualStudio.PackageGroup.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Msi","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.Debugger.Script.Resources","Microsoft.VisualStudio.VC.Ide.MDD","Microsoft.VisualStudio.Component.NuGet","Microsoft.CredentialProvider","Component.Microsoft.VisualStudio.LiveShare","Microsoft.VisualStudio.LiveShare","Microsoft.VisualStudio.Component.Debugger.JustInTime","Microsoft.VisualStudio.Debugger.ImmersiveActivateHelper.Msi","Microsoft.VisualStudio.Debugger.JustInTime","Microsoft.VisualStudio.Debugger.JustInTime.Msi","Microsoft.VisualStudio.Component.IntelliTrace.FrontEnd","Microsoft.IntelliTrace.DiagnosticsHubAgent.Targeted","Microsoft.IntelliTrace.Debugger","Microsoft.IntelliTrace.Debugger.Targeted","Microsoft.IntelliTrace.FrontEnd","Microsoft.DiagnosticsHub.Instrumentation","Microsoft.DiagnosticsHub.CpuSampling","Microsoft.DiagnosticsHub.CpuSampling.Targeted","Microsoft.PackageGroup.DiagnosticsHub.Platform","Microsoft.DiagnosticsHub.Collection.StopService.Uninstall","Microsoft.DiagnosticsHub.Runtime","Microsoft.DiagnosticsHub.Runtime.Targeted","Microsoft.DiagnosticsHub.Runtime.Resources","Microsoft.DiagnosticsHub.Collection","Microsoft.DiagnosticsHub.Collection.Service","Microsoft.DiagnosticsHub.Collection.StopService.Install","Microsoft.VisualStudio.Dsl.GraphObject","Microsoft.Net.4.TargetingPack","Microsoft.VisualStudio.VC.Ide.ResourceEditor","Microsoft.VisualStudio.VC.Ide.ResourceEditor.Resources","Microsoft.VisualStudio.NuGet.Licenses","Microsoft.WebTools.Shared","Microsoft.VisualStudio.WebToolsExtensions.DotNet.Core.ItemTemplates","Microsoft.VisualStudio.Component.TextTemplating","Microsoft.VisualStudio.TextTemplating.MSBuild","Microsoft.VisualStudio.TextTemplating.Integration","Microsoft.VisualStudio.TextTemplating.Core","Microsoft.VisualStudio.TextTemplating.Integration.Resources","Microsoft.VisualStudio.ProTools","sqlsysclrtypes","sqlsysclrtypes","SQLCommon","Microsoft.VisualStudio.ProTools.Resources","Microsoft.VisualStudio.NuGet.Core","Microsoft.VisualStudio.PackageGroup.TestTools.CodeCoverage","Microsoft.VisualStudio.PackageGroup.IntelliTrace.Core","Microsoft.IntelliTrace.Core","Microsoft.IntelliTrace.Core.Concord","Microsoft.IntelliTrace.Core.Targeted","Microsoft.IntelliTrace.ProfilerProxy.Msi.x64","Microsoft.IntelliTrace.ProfilerProxy.Msi","Microsoft.VisualStudio.TestTools.DynamicCodeCoverage","Microsoft.VisualStudio.TestTools.CodeCoverage.Msi","Microsoft.VisualStudio.TestTools.CodeCoverage","Microsoft.Icecap.Analysis","Microsoft.Icecap.Analysis.Targeted","Microsoft.Icecap.Analysis.Resources","Microsoft.Icecap.Analysis.Resources.Targeted","Microsoft.Icecap.Collection.Msi","Microsoft.Icecap.Collection.Msi.Targeted","Microsoft.Icecap.Collection.Msi.Resources","Microsoft.Icecap.Collection.Msi.Resources.Targeted","Microsoft.VisualStudio.PackageGroup.TestTools.Core","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V2.CLI","Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.TestTools.TestPlatform.V1.CLI","Microsoft.VisualStudio.TestTools.Pex.Common","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.Legacy","Microsoft.VisualStudio.PackageGroup.MinShell.Interop","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Msi","Microsoft.VisualStudio.TestTools.TP.Legacy.Tips.Common","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Tips.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.TestTools","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Remote","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Professional","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core.Premium","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Common","Microsoft.VisualStudio.TestTools.TP.Legacy.Common.Res","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Core.Resources","Microsoft.VisualStudio.TestTools.TestPlatform.Legacy.Agent","Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.TestTools.TestWIExtension","Microsoft.VisualStudio.TestTools.TestPlatform.IDE","Microsoft.VisualStudio.PackageGroup.TestTools.DataCollectors","Microsoft.VisualStudio.TestTools.NE.Msi.Targeted","Microsoft.VisualStudio.TestTools.NetworkEmulation","Microsoft.VisualStudio.TestTools.DataCollectors","Microsoft.VisualCpp.CRT.ClickOnce.Msi","Microsoft.VisualStudio.WebTools.WSP.FSA","Microsoft.VisualStudio.WebTools.WSP.FSA.Resources","Microsoft.VisualStudio.Component.Static.Analysis.Tools","Microsoft.VisualCpp.Redist.14","Microsoft.VisualCpp.Redist.14","Microsoft.VisualStudio.StaticAnalysis","Microsoft.VisualStudio.StaticAnalysis.Resources","Microsoft.VisualStudio.PackageGroup.Community","Microsoft.VisualStudio.Community.Extra.Resources","Microsoft.VisualStudio.Community.Extra","Microsoft.VisualStudio.PackageGroup.Core","Microsoft.VisualStudio.CodeSense","Microsoft.VisualStudio.CodeSense.Community","Microsoft.VisualStudio.TestTools.TeamFoundationClient","Microsoft.VisualStudio.PackageGroup.Debugger.Core","Microsoft.VisualStudio.PackageGroup.Debugger.TimeTravel.Record","Microsoft.VisualStudio.Debugger.TimeTravel.Runtime","Microsoft.VisualStudio.Debugger.TimeTravel.Runtime","Microsoft.VisualStudio.Debugger.TimeTravel.Agent","Microsoft.VisualStudio.Debugger.TimeTravel.Record","Microsoft.VisualStudio.Debugger.VSCodeDebuggerHost","Microsoft.VisualStudio.VC.Ide.Debugger","Microsoft.VisualStudio.VC.Ide.Debugger.Concord","Microsoft.VisualStudio.VC.Ide.Debugger.Concord.Resources","Microsoft.VisualStudio.VC.Ide.Debugger.Resources","Microsoft.VisualStudio.VC.Ide.Common","Microsoft.VisualStudio.VC.Ide.Common.Resources","Microsoft.VisualStudio.Debugger.Parallel","Microsoft.VisualStudio.Debugger.Parallel.Resources","Microsoft.VisualStudio.Debugger.CollectionAgents","Microsoft.VisualStudio.Debugger.Managed","Microsoft.VisualStudio.Debugger.Concord.Managed","Microsoft.VisualStudio.Debugger.Concord.Managed.Resources","Microsoft.VisualStudio.Debugger.Managed.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote","Microsoft.VisualStudio.Debugger.Concord.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger.Remote.Resources","Microsoft.VisualStudio.Debugger","Microsoft.VisualStudio.Debugger.Package.DiagHub.Client.VSx86","Microsoft.VisualStudio.Debugger.Remote.DiagHub.Client","Microsoft.VisualStudio.Debugger.Remote.DiagHub.Client","Microsoft.VisualStudio.VC.MSVCDis","Microsoft.VisualStudio.ScriptedHost","Microsoft.VisualStudio.ScriptedHost.Targeted","Microsoft.VisualStudio.ScriptedHost.Resources","Microsoft.IntelliTrace.DiagnosticsHub","Microsoft.VisualStudio.Debugger.Concord","Microsoft.VisualStudio.Debugger.Concord.Resources","Microsoft.VisualStudio.Debugger.Resources","Microsoft.PackageGroup.ClientDiagnostics","Microsoft.VisualStudio.AppResponsiveness","Microsoft.VisualStudio.AppResponsiveness.Targeted","Microsoft.VisualStudio.AppResponsiveness.Resources","Microsoft.VisualStudio.ClientDiagnostics","Microsoft.VisualStudio.ClientDiagnostics.Targeted","Microsoft.VisualStudio.ClientDiagnostics.Resources","Microsoft.VisualStudio.PackageGroup.ProfessionalCore","Microsoft.VisualStudio.Professional","Microsoft.VisualStudio.Professional.Msi","Microsoft.VisualStudio.PackageGroup.EnterpriseCore","Microsoft.VisualStudio.Enterprise.Msi","Microsoft.VisualStudio.Enterprise","Microsoft.ShDocVw","Microsoft.VisualStudio.PackageGroup.CommunityCore","Microsoft.VisualStudio.ProjectSystem.Full","Microsoft.VisualStudio.ProjectSystem","Microsoft.VisualStudio.Community.x86","Microsoft.VisualStudio.Community.x64","Microsoft.VisualStudio.Community","Microsoft.IntelliTrace.CollectorCab","Microsoft.VisualStudio.Community.Resources","Microsoft.VisualStudio.WebSiteProject.DTE","Microsoft.MSHtml","Microsoft.VisualStudio.Platform.CallHierarchy","Microsoft.VisualStudio.Community.Msi.Resources","Microsoft.VisualStudio.Community.Msi","Microsoft.VisualStudio.Devenv.Msi","Microsoft.VisualStudio.MinShell.Interop.Msi","Microsoft.VisualStudio.Editors","Microsoft.VisualStudio.Net.Eula.Resources","Microsoft.CodeAnalysis.ExpressionEvaluator","Microsoft.CodeAnalysis.VisualStudio.Setup","Microsoft.Component.MSBuild","Microsoft.NuGet.Build.Tasks","Microsoft.VisualStudio.Component.Roslyn.Compiler","Microsoft.CodeAnalysis.Compilers","Microsoft.VisualStudio.Workload.CoreEditor","Microsoft.VisualStudio.Component.CoreEditor","Microsoft.VisualStudio.PackageGroup.CoreEditor","Microsoft.VisualCpp.Tools.Common.UtilsPrereq","Microsoft.VisualCpp.Tools.Common.Utils","Microsoft.VisualCpp.Tools.Common.Utils.Resources","Microsoft.VisualStudio.PackageGroup.VsDevCmd","Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk","Microsoft.VisualStudio.VsDevCmd.Core.WinSdk","Microsoft.VisualStudio.VsDevCmd.Core.DotNet","Microsoft.VisualStudio.VC.DevCmd","Microsoft.VisualStudio.VC.DevCmd.Resources","Microsoft.VisualStudio.VirtualTree","Microsoft.VisualStudio.PackageGroup.Progression","Microsoft.VisualStudio.PerformanceProvider","Microsoft.VisualStudio.GraphModel","Microsoft.VisualStudio.GraphProvider","Microsoft.DiaSymReader","Microsoft.Build.Dependencies","Microsoft.Build.FileTracker.Msi","Microsoft.Build","Microsoft.VisualStudio.TextMateGrammars","Microsoft.VisualStudio.PackageGroup.TeamExplorer.Common","Microsoft.VisualStudio.TeamExplorer","Microsoft.ServiceHub","Microsoft.VisualStudio.ProjectServices","Microsoft.VisualStudio.SLNX.VSIX","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.FileHandler.Msi","Microsoft.VisualStudio.PackageGroup.MinShell","Microsoft.VisualStudio.MinShell.Interop","Microsoft.VisualStudio.Log","Microsoft.VisualStudio.Log.Targeted","Microsoft.VisualStudio.Log.Resources","Microsoft.VisualStudio.Finalizer","Microsoft.VisualStudio.Devenv","Microsoft.VisualStudio.Devenv.Resources","Microsoft.VisualStudio.CoreEditor","Microsoft.VisualStudio.Platform.NavigateTo","Microsoft.VisualStudio.Connected","Microsoft.VisualStudio.Connected.Resources","Microsoft.VisualStudio.MinShell","Microsoft.VisualStudio.Setup.Configuration","Microsoft.VisualStudio.Platform.Search","Microsoft.VisualStudio.MinShell.Platform","Microsoft.VisualStudio.MinShell.Platform.Resources","Microsoft.VisualStudio.MefHosting","Microsoft.VisualStudio.MefHosting.Resources","Microsoft.VisualStudio.Initializer","Microsoft.VisualStudio.ExtensionManager","Microsoft.VisualStudio.Platform.Editor","Microsoft.VisualStudio.MinShell.x86","Microsoft.VisualStudio.NativeImageSupport","Microsoft.VisualStudio.MinShell.Msi","Microsoft.VisualStudio.MinShell.Msi.Resources","Microsoft.VisualStudio.LanguageServer","Microsoft.VisualStudio.Devenv.Config","Microsoft.VisualStudio.MinShell.Resources","Microsoft.Net.PackageGroup.4.7.2.Redist","Microsoft.VisualStudio.Branding.Enterprise"]}] diff --git a/mybulma/node_modules/node-gyp/test/fixtures/ca-bundle.crt b/mybulma/node_modules/node-gyp/test/fixtures/ca-bundle.crt new file mode 100644 index 0000000..fb1dea9 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/ca-bundle.crt @@ -0,0 +1,40 @@ +-----BEGIN CERTIFICATE----- +MIIDJjCCAg4CAhnOMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAlVTMQswCQYD +VQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZMBcGA1UECgwQU3Ryb25n +TG9vcCwgSW5jLjESMBAGA1UECwwJU3Ryb25nT3BzMRowGAYDVQQDDBFjYS5zdHJv +bmdsb29wLmNvbTAeFw0xNTEyMDgyMzM1MzNaFw00MzA0MjQyMzM1MzNaMBkxFzAV +BgNVBAMMDnN0cm9uZ2xvb3AuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAwOYI7OZ2FX/YjRgLZoDQlbPc5UZXU/j0e1wwiJNPtPEax9Y5Uoza0Pnt +Ikzkc2SfvQ+IJrhXo385tI0W5juuqbHnE7UrjUuPjUX6NHevkxcs/flmjan5wnZM +cPsGhH71WDuUEEflvZihf2Se2x+xgZtMhc5XGmVmRuZFYKvkgUhA2/w8/QrK+jPT +n9QRJxZjWNh2RBdC1B7u4jffSmOSUljYFH1I2eTeY+Rdi6YUIYSU9gEoZxsv3Tia +SomfMF5jt2Mouo6MzA+IhLvvFjcrcph1Qxgi9RkfdCMMd+Ipm9YWELkyG1bDRpQy +0iyHD4gvVsAqz1Y2KdRSdc3Kt+nTqwIDAQABoxkwFzAVBgNVHREEDjAMhwQAAAAA +hwR/AAABMA0GCSqGSIb3DQEBBQUAA4IBAQAhy4J0hML3NgmDRHdL5/iTucBe22Mf +jJjg2aifD1S187dHm+Il4qZNO2plWwAhN0h704f+8wpsaALxUvBIu6nvlvcMP5PH +jGN5JLe2Km3UaPvYOQU2SgacLilu+uBcIo2JSHLV6O7ziqUj5Gior6YxDLCtEZie +Ea8aX5/YjuACtEMJ1JjRqjgkM66XAoUe0E8onOK3FgTIO3tGoTJwRp0zS50pFuP0 +PsZtT04ck6mmXEXXknNoAyBCvPypfms9OHqcUIW9fiQnrGbS/Ri4QSQYj0DtFk/1 +na4fY1gf3zTHxH8259b/TOOaPfTnCEsOQtjUrWNR4xhmVZ+HJy4yytUW +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDbzCCAlcCAmm6MA0GCSqGSIb3DQEBCwUAMH0xCzAJBgNVBAYTAlVTMQswCQYD +VQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZMBcGA1UECgwQU3Ryb25n +TG9vcCwgSW5jLjESMBAGA1UECwwJU3Ryb25nT3BzMRowGAYDVQQDDBFjYS5zdHJv +bmdsb29wLmNvbTAeFw0xNTEyMDgyMzM1MzNaFw00MzA0MjQyMzM1MzNaMH0xCzAJ +BgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZ +MBcGA1UECgwQU3Ryb25nTG9vcCwgSW5jLjESMBAGA1UECwwJU3Ryb25nT3BzMRow +GAYDVQQDDBFjYS5zdHJvbmdsb29wLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANfj86jkvvYDjHBgiqWhk9Cj+bqiMq3MqnV0CBO4iuK33Fo6XssE +H+yVdXlIBFbFe6t655MdBVOR2Sfj7WqNh96vhu6PyDHiwcQlTaiLU6nhIed1J4Wv +lvnJHFmp8Wbtx5AgLT4UYu03ftvXEl2DLi3vhSL2tRM1ebXHB/KPbRWkb25DPX0P +foOHot3f2dgNe2x6kponf7E/QDmAu3s7Nlkfh+ryDhgGU7wocXEhXbprNqRqOGNo +xbXgUI+/9XDxYT/7Gn5LF/fPjtN+aB0SKMnTsDhprVlZie83mlqJ46fOOrR+vrsQ +mi/1m/TadrARtZoIExC/cQRdVM05EK4tUa8CAwEAATANBgkqhkiG9w0BAQsFAAOC +AQEAQ7k5WhyhDTIGYCNzRnrMHWSzGqa1y4tJMW06wafJNRqTm1cthq1ibc6Hfq5a +K10K0qMcgauRTfQ1MWrVCTW/KnJ1vkhiTOH+RvxapGn84gSaRmV6KZen0+gMsgae +KEGe/3Hn+PmDVV+PTamHgPACfpTww38WHIe/7Ce9gHfG7MZ8cKHNZhDy0IAYPln+ +YRwMLd7JNQffHAbWb2CE1mcea4H/12U8JZW5tHCF6y9V+7IuDzqwIrLKcW3lG17n +VUG6ODF/Ryqn3V5X+TL91YyXi6c34y34IpC7MQDV/67U7+5Bp5CfeDPWW2wVSrW+ +uGZtfEvhbNm6m2i4UNmpCXxUZQ== +-----END CERTIFICATE----- diff --git a/mybulma/node_modules/node-gyp/test/fixtures/ca.crt b/mybulma/node_modules/node-gyp/test/fixtures/ca.crt new file mode 100644 index 0000000..aaf9757 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/ca.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDZDCCAkwCCQCAzfCLqrJvuTANBgkqhkiG9w0BAQsFADB0MQswCQYDVQQGEwJV +UzELMAkGA1UECAwCQ0ExEDAOBgNVBAoMB05vZGUuanMxETAPBgNVBAsMCG5vZGUt +Z3lwMRIwEAYDVQQDDAlsb2NhbGhvc3QxHzAdBgkqhkiG9w0BCQEWEGJ1aWxkQG5v +ZGVqcy5vcmcwHhcNMTkwNjIyMDYyMjMzWhcNMjIwNDExMDYyMjMzWjB0MQswCQYD +VQQGEwJVUzELMAkGA1UECAwCQ0ExEDAOBgNVBAoMB05vZGUuanMxETAPBgNVBAsM +CG5vZGUtZ3lwMRIwEAYDVQQDDAlsb2NhbGhvc3QxHzAdBgkqhkiG9w0BCQEWEGJ1 +aWxkQG5vZGVqcy5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDS +CHjvtVW4HdbbUwZ/ZV9s6U4x0KSoyNQrsCZjB8kRpFPe50DS5mfmu2SNBGYKRgzk +4QEEwFB9N2o8YTWsCefSRl6ti4ToPZqulU4hhRKYrEGtMJcRzi3IN7s200JaO3UH +01Su8ruO0NESb5zEU1Ykfh8Lub8TGEAINmgI61d/5d5Aq3kDjUHQJt1Ekw03Ylnu +juQyCGZxLxnngu0mIvwzyL/UeeUgsfQLzvppUk6In7tC1zzMjSPWo0c8qu6KvrW4 +bKYnkZkzdQifzbpO5ERMEsh5HWq0uHa6+dgcVHFvlhdqF4Uat87ygNplVf0txsZB +MNVqbz1k6xkZYMnzDoydAgMBAAEwDQYJKoZIhvcNAQELBQADggEBADspZGtKpWxy +J1W3FA1aeQhMvequQTcMRz4avkm4K4HfTdV1iVD4CbvdezBphouBlyLVLDFJP7RZ +m7dBJVgBwnxufoFLne8cR2MGqDRoySbFT1AtDJdxabE6Fg+QGUpgOQfeBJ6ANlSB ++qJ+HG4QA+Ouh5hxz9mgYwkIsMUABHiwENdZ/kT8Edw4xKgd3uH0YP4iiePMD66c +rzW3uXH5J1jnKgBlpxtog4P6dHCcoq+PZJ17W5bdXNyqC1LPzQqniZ2BNcEZ4ix3 +slAZAOWD1zLLGJhBPMV1fa0sHNBWc6oicr3YK/IDb0cp9kiLvnUu1pHy+LWQGqtC +rceJuGsnJEQ= +-----END CERTIFICATE----- diff --git a/mybulma/node_modules/node-gyp/test/fixtures/nodedir/include/node/config.gypi b/mybulma/node_modules/node-gyp/test/fixtures/nodedir/include/node/config.gypi new file mode 100644 index 0000000..e767534 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/nodedir/include/node/config.gypi @@ -0,0 +1,6 @@ +# Test configuration +{ + 'variables': { + 'build_with_electron': true + } +} diff --git a/mybulma/node_modules/node-gyp/test/fixtures/server.crt b/mybulma/node_modules/node-gyp/test/fixtures/server.crt new file mode 100644 index 0000000..5d0c440 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/server.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYjCCAkoCCQCSlmGR7KzZGTANBgkqhkiG9w0BAQsFADB0MQswCQYDVQQGEwJV +UzELMAkGA1UECAwCQ0ExEDAOBgNVBAoMB05vZGUuanMxETAPBgNVBAsMCG5vZGUt +Z3lwMRIwEAYDVQQDDAlsb2NhbGhvc3QxHzAdBgkqhkiG9w0BCQEWEGJ1aWxkQG5v +ZGVqcy5vcmcwHhcNMTkwNjIyMDYyNTU1WhcNMjkwNjE5MDYyNTU1WjByMQswCQYD +VQQGEwJVUzELMAkGA1UECAwCQ0ExEDAOBgNVBAoMB05vZGUuanMxETAPBgNVBAsM +CG5vZGUtZ3lwMRIwEAYDVQQDDAlsb2NhbGhvc3QxHTAbBgkqhkiG9w0BCQEWDmJ1 +aWxkQGlvanMub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6S1E +2WchgmbJYqCnpN7310ZgHjIOqeJe6MpSue2u6z6mTNd5izgvQNaANmn3xLFCS5zs +uZaTvdPYPkcmSQzb1YcZSUYnAxZifjYARc6kb5GSBl3q+O70ELyFrimXfZ4JI+bd +IG9KiHY17DlvZZZj/csGYVWWg0mkeH3O5LPX6/DXQVh/9+gZ02/cdIBCAtZHQwqx +7tF/qZA/kD4GZNFpU1DYHzf9H6g9htoCqmNHQWrV2T9yFybt6mbZp9kglBmyKYCc +7hmQnb7N/mHn1yIuwhBsirCJTfKH86gN81u8M3+SVHA2VUHDllcNhpDWlmInXA+I +tHdGZHCp95ohqpCPgQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCdvYj6CD0ZLwT2 +3t1r+deC3TJuHlNVSeKeT7wIfFnh2FW5riGV0q/w6eXPLTHjuiS6YmpAAbdNUgX/ +sq64FqI2RLpX6pgY5yB0SKopMcJxMLKqmF4zHpIHxtYN5EmN3PR0vehneBR/nZ2T +3ikvWD5JeXlm7Dfw+tjijdxM/sEoDWErGup4mMKMd1s5s830p+ITJUa50d0DLFdH +mqPSbUZF8mMPwGJd+nu1Ht3gTLtK7+gYJgGtXMJmGC0Qg77EJHDB2NbotgDGNmSU +1H9BpAeFHHIcbh2Rr7kkTvnh/c03vFe+CsDZmezcmRpRzW1fKj3YbfqBxU4XwJrL +a5T/N9xU +-----END CERTIFICATE----- diff --git a/mybulma/node_modules/node-gyp/test/fixtures/server.key b/mybulma/node_modules/node-gyp/test/fixtures/server.key new file mode 100644 index 0000000..a844739 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA6S1E2WchgmbJYqCnpN7310ZgHjIOqeJe6MpSue2u6z6mTNd5 +izgvQNaANmn3xLFCS5zsuZaTvdPYPkcmSQzb1YcZSUYnAxZifjYARc6kb5GSBl3q ++O70ELyFrimXfZ4JI+bdIG9KiHY17DlvZZZj/csGYVWWg0mkeH3O5LPX6/DXQVh/ +9+gZ02/cdIBCAtZHQwqx7tF/qZA/kD4GZNFpU1DYHzf9H6g9htoCqmNHQWrV2T9y +Fybt6mbZp9kglBmyKYCc7hmQnb7N/mHn1yIuwhBsirCJTfKH86gN81u8M3+SVHA2 +VUHDllcNhpDWlmInXA+ItHdGZHCp95ohqpCPgQIDAQABAoIBABW8R4ewalo6dJlB ++n6O3jFt+PW3mtBRLqGqgm2cb0q0a1IMX+MPWLBFjmwEErl+AH0F4rcmBx2Ryr17 +amEy1qcf0caXyHksNAApznqzWXag7iizxnxv4cZRnHBwphNqkNWM5p3oYd04j6w2 +amDg1O9KZozaKo6QZclpiMiezwjKG+PVZLT8p7afswjv+yDWPDByhlcGiye9QD1T +VuZ0QCoXp6N/8JxW0gdkLp9NqFvGeGFzJ5h6L+d7A6BWw8akXrBRHHcKkyvVYBfd +myhSzSK4FPFMaxaEY/65FlVSyAO6ezGm3Umx4g7mkFjLdwKWaIOjkBkPeFgl3Pp4 +7Lo5X3UCgYEA/FrrIwmEU5ayulBVScEMKeavu5eNY4r0Sqbpov2oyTdYe8G49Pzy +ryMXfunY43moLKpajGwgTKRGvdqFtK08AAkaCssiAPkP3rZuZvMTF4sLo/vlWrjP +3er+tUqj22BzXi5XV0BAvH8Y3TL8KQ3he/8JxDvkC811/DQ9Y/Da3U8CgYEA7Itw +UM37URma08Bj9VTMoL9ZCyURewX+ZLDb2+O8sXGXJs28i1RkE6PTBlnRmedn+Jjk +byzQ5Cs5wA5uMbhYTA7kgXOs1bvgQqmlLmyL6FfHkucoMhr2Di7VeGf4OxE26JZ8 +JdY4+1MOyI3A2rR8WU+GmHxy0ay4K2xe6W0vsi8CgYBoGLEKIPDe8jkDtgOYivOT +jT9MaLXALB+dc8DIpU4swpHTaxP6qyUIrbcReTEolJSU6Ci16BxiwRkVU8D3yMYJ +VbfSX/zE3fh37FUaToa/nXHN0SjJBZdpeXhcHE//PIgaf48zxKNvnhYJmPB/luQ+ +m/PRaMsnOzfCM2JniYEe7QKBgGwjnxhB4tgDtaWCue/pcZc3gzS2IJS2e8N6mzie +l6Ajhu+FdOHZldrotUuc+la61OxwsVYmDeWR4VftAPGYDj3PPSX1RRl9R5wSRGLB +2wBASQvew6CMdNqtDIh8N56BUzHnwh/mHKzBHuwO6hDSHFsUITtLAY7bwGKRq55Z +fUmfAoGBANOYFyoJoDLcl+Jd750lyqfCifcGtkRdmZMtrPXaYnD8ZGme9vz1vsK/ +4iUkV3mi7Z9s1LXMa/tPPfKdVhCM1PXost3/si0+u1Bz5yKqEPXlyy2ltpIVyGu8 +yiy7y75asp8Iii/1cgtwyp9+VeSif8wJ+MHQoGdGxvAQP80R3EjF +-----END RSA PRIVATE KEY----- diff --git a/mybulma/node_modules/node-gyp/test/fixtures/test-charmap.py b/mybulma/node_modules/node-gyp/test/fixtures/test-charmap.py new file mode 100644 index 0000000..63aa77b --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/fixtures/test-charmap.py @@ -0,0 +1,31 @@ +import sys +import locale + +try: + reload(sys) +except NameError: # Python 3 + pass + + +def main(): + encoding = locale.getdefaultlocale()[1] + if not encoding: + return False + + try: + sys.setdefaultencoding(encoding) + except AttributeError: # Python 3 + pass + + textmap = { + "cp936": "\u4e2d\u6587", + "cp1252": "Lat\u012Bna", + "cp932": "\u306b\u307b\u3093\u3054", + } + if encoding in textmap: + print(textmap[encoding]) + return True + + +if __name__ == "__main__": + print(main()) diff --git a/mybulma/node_modules/node-gyp/test/process-exec-sync.js b/mybulma/node_modules/node-gyp/test/process-exec-sync.js new file mode 100644 index 0000000..21763bc --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/process-exec-sync.js @@ -0,0 +1,140 @@ +'use strict' + +const fs = require('graceful-fs') +const childProcess = require('child_process') + +function startsWith (str, search, pos) { + if (String.prototype.startsWith) { + return str.startsWith(search, pos) + } + + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search +} + +function processExecSync (file, args, options) { + var child, error, timeout, tmpdir, command + command = makeCommand(file, args) + + /* + this function emulates child_process.execSync for legacy node <= 0.10.x + derived from https://github.com/gvarsanyi/sync-exec/blob/master/js/sync-exec.js + */ + + options = options || {} + // init timeout + timeout = Date.now() + options.timeout + // init tmpdir + var osTempBase = '/tmp' + var os = determineOS() + osTempBase = '/tmp' + + if (process.env.TMP) { + osTempBase = process.env.TMP + } + + if (osTempBase[osTempBase.length - 1] !== '/') { + osTempBase += '/' + } + + tmpdir = osTempBase + 'processExecSync.' + Date.now() + Math.random() + fs.mkdirSync(tmpdir) + + // init command + if (os === 'linux') { + command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir + + '/stderr); echo $? > ' + tmpdir + '/status' + } else { + command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir + + '/stderr) | echo %errorlevel% > ' + tmpdir + '/status | exit' + } + + // init child + child = childProcess.exec(command, options) + + var maxTry = 100000 // increases the test time by 6 seconds on win-2016-node-0.10 + var tryCount = 0 + while (tryCount < maxTry) { + try { + var x = fs.readFileSync(tmpdir + '/status') + if (x.toString() === '0') { + break + } + } catch (ignore) {} + tryCount++ + if (Date.now() > timeout) { + error = child + break + } + } + + ['stdout', 'stderr', 'status'].forEach(function (file) { + child[file] = fs.readFileSync(tmpdir + '/' + file, options.encoding) + setTimeout(unlinkFile, 500, tmpdir + '/' + file) + }) + + child.status = Number(child.status) + if (child.status !== 0) { + error = child + } + + try { + fs.rmdirSync(tmpdir) + } catch (ignore) {} + if (error) { + throw error + } + return child.stdout +} + +function makeCommand (file, args) { + var command, quote + command = file + if (args.length > 0) { + for (var i in args) { + command = command + ' ' + if (args[i][0] === '-') { + command = command + args[i] + } else { + if (!quote) { + command = command + '"' + quote = true + } + command = command + args[i] + if (quote) { + if (args.length === (parseInt(i) + 1)) { + command = command + '"' + } + } + } + } + } + return command +} + +function determineOS () { + var os = '' + var tmpVar = '' + if (process.env.OSTYPE) { + tmpVar = process.env.OSTYPE + } else if (process.env.OS) { + tmpVar = process.env.OS + } else { + // default is linux + tmpVar = 'linux' + } + + if (startsWith(tmpVar, 'linux')) { + os = 'linux' + } + if (startsWith(tmpVar, 'win')) { + os = 'win' + } + + return os +} + +function unlinkFile (file) { + fs.unlinkSync(file) +} + +module.exports = processExecSync diff --git a/mybulma/node_modules/node-gyp/test/simple-proxy.js b/mybulma/node_modules/node-gyp/test/simple-proxy.js new file mode 100644 index 0000000..cb0dfcf --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/simple-proxy.js @@ -0,0 +1,27 @@ +'use strict' + +const http = require('http') +const https = require('https') +const server = http.createServer(handler) +const port = +process.argv[2] +const prefix = process.argv[3] +const upstream = process.argv[4] +var calls = 0 + +server.listen(port) + +function handler (req, res) { + if (req.url.indexOf(prefix) !== 0) { + throw new Error('request url [' + req.url + '] does not start with [' + prefix + ']') + } + + var upstreamUrl = upstream + req.url.substring(prefix.length) + https.get(upstreamUrl, function (ures) { + ures.on('end', function () { + if (++calls === 2) { + server.close() + } + }) + ures.pipe(res) + }) +} diff --git a/mybulma/node_modules/node-gyp/test/test-addon.js b/mybulma/node_modules/node-gyp/test/test-addon.js new file mode 100644 index 0000000..f79eff7 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-addon.js @@ -0,0 +1,150 @@ +'use strict' + +const test = require('tap').test +const path = require('path') +const fs = require('graceful-fs') +const childProcess = require('child_process') +const os = require('os') +const addonPath = path.resolve(__dirname, 'node_modules', 'hello_world') +const nodeGyp = path.resolve(__dirname, '..', 'bin', 'node-gyp.js') +const execFileSync = childProcess.execFileSync || require('./process-exec-sync') +const execFile = childProcess.execFile + +function runHello (hostProcess) { + if (!hostProcess) { + hostProcess = process.execPath + } + var testCode = "console.log(require('hello_world').hello())" + return execFileSync(hostProcess, ['-e', testCode], { cwd: __dirname }).toString() +} + +function getEncoding () { + var code = 'import locale;print(locale.getdefaultlocale()[1])' + return execFileSync('python', ['-c', code]).toString().trim() +} + +function checkCharmapValid () { + var data + try { + data = execFileSync('python', ['fixtures/test-charmap.py'], + { cwd: __dirname }) + } catch (err) { + return false + } + var lines = data.toString().trim().split('\n') + return lines.pop() === 'True' +} + +test('build simple addon', function (t) { + t.plan(3) + + // Set the loglevel otherwise the output disappears when run via 'npm test' + var cmd = [nodeGyp, 'rebuild', '-C', addonPath, '--loglevel=verbose'] + var proc = execFile(process.execPath, cmd, function (err, stdout, stderr) { + var logLines = stderr.toString().trim().split(/\r?\n/) + var lastLine = logLines[logLines.length - 1] + t.strictEqual(err, null) + t.strictEqual(lastLine, 'gyp info ok', 'should end in ok') + t.strictEqual(runHello().trim(), 'world') + }) + proc.stdout.setEncoding('utf-8') + proc.stderr.setEncoding('utf-8') +}) + +test('build simple addon in path with non-ascii characters', function (t) { + t.plan(1) + + if (!checkCharmapValid()) { + return t.skip('python console app can\'t encode non-ascii character.') + } + + var testDirNames = { + cp936: '文件夹', + cp1252: 'Latīna', + cp932: 'フォルダ' + } + // Select non-ascii characters by current encoding + var testDirName = testDirNames[getEncoding()] + // If encoding is UTF-8 or other then no need to test + if (!testDirName) { + return t.skip('no need to test') + } + + t.plan(3) + + var data + var configPath = path.join(addonPath, 'build', 'config.gypi') + try { + data = fs.readFileSync(configPath, 'utf8') + } catch (err) { + t.error(err) + return + } + var config = JSON.parse(data.replace(/#.+\n/, '')) + var nodeDir = config.variables.nodedir + var testNodeDir = path.join(addonPath, testDirName) + // Create symbol link to path with non-ascii characters + try { + fs.symlinkSync(nodeDir, testNodeDir, 'dir') + } catch (err) { + switch (err.code) { + case 'EEXIST': break + case 'EPERM': + t.error(err, 'Please try to running console as an administrator') + return + default: + t.error(err) + return + } + } + + var cmd = [ + nodeGyp, + 'rebuild', + '-C', + addonPath, + '--loglevel=verbose', + '-nodedir=' + testNodeDir + ] + var proc = execFile(process.execPath, cmd, function (err, stdout, stderr) { + try { + fs.unlink(testNodeDir) + } catch (err) { + t.error(err) + } + + var logLines = stderr.toString().trim().split(/\r?\n/) + var lastLine = logLines[logLines.length - 1] + t.strictEqual(err, null) + t.strictEqual(lastLine, 'gyp info ok', 'should end in ok') + t.strictEqual(runHello().trim(), 'world') + }) + proc.stdout.setEncoding('utf-8') + proc.stderr.setEncoding('utf-8') +}) + +test('addon works with renamed host executable', function (t) { + // No `fs.copyFileSync` before node8. + if (process.version.substr(1).split('.')[0] < 8) { + t.skip('skipping test for old node version') + t.end() + return + } + + t.plan(3) + + var notNodePath = path.join(os.tmpdir(), 'notnode' + path.extname(process.execPath)) + fs.copyFileSync(process.execPath, notNodePath) + + var cmd = [nodeGyp, 'rebuild', '-C', addonPath, '--loglevel=verbose'] + var proc = execFile(process.execPath, cmd, function (err, stdout, stderr) { + var logLines = stderr.toString().trim().split(/\r?\n/) + var lastLine = logLines[logLines.length - 1] + t.strictEqual(err, null) + t.strictEqual(lastLine, 'gyp info ok', 'should end in ok') + t.strictEqual(runHello(notNodePath).trim(), 'world') + fs.unlinkSync(notNodePath) + }) + proc.stdout.setEncoding('utf-8') + proc.stderr.setEncoding('utf-8') +}) diff --git a/mybulma/node_modules/node-gyp/test/test-configure-python.js b/mybulma/node_modules/node-gyp/test/test-configure-python.js new file mode 100644 index 0000000..4290e7a --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-configure-python.js @@ -0,0 +1,82 @@ +'use strict' + +const test = require('tap').test +const path = require('path') +const devDir = require('./common').devDir() +const gyp = require('../lib/node-gyp') +const requireInject = require('require-inject') +const configure = requireInject('../lib/configure', { + 'graceful-fs': { + openSync: function () { return 0 }, + closeSync: function () { }, + writeFile: function (file, data, cb) { cb() }, + stat: function (file, cb) { cb(null, {}) }, + mkdir: function (dir, options, cb) { cb() }, + promises: { + writeFile: function (file, data) { return Promise.resolve(null) } + } + } +}) + +const EXPECTED_PYPATH = path.join(__dirname, '..', 'gyp', 'pylib') +const SEPARATOR = process.platform === 'win32' ? ';' : ':' +const SPAWN_RESULT = { on: function () { } } + +require('npmlog').level = 'warn' + +test('configure PYTHONPATH with no existing env', function (t) { + t.plan(1) + + delete process.env.PYTHONPATH + + var prog = gyp() + prog.parseArgv([]) + prog.spawn = function () { + t.equal(process.env.PYTHONPATH, EXPECTED_PYPATH) + return SPAWN_RESULT + } + prog.devDir = devDir + configure(prog, [], t.fail) +}) + +test('configure PYTHONPATH with existing env of one dir', function (t) { + t.plan(2) + + var existingPath = path.join('a', 'b') + process.env.PYTHONPATH = existingPath + + var prog = gyp() + prog.parseArgv([]) + prog.spawn = function () { + t.equal(process.env.PYTHONPATH, [EXPECTED_PYPATH, existingPath].join(SEPARATOR)) + + var dirs = process.env.PYTHONPATH.split(SEPARATOR) + t.deepEqual(dirs, [EXPECTED_PYPATH, existingPath]) + + return SPAWN_RESULT + } + prog.devDir = devDir + configure(prog, [], t.fail) +}) + +test('configure PYTHONPATH with existing env of multiple dirs', function (t) { + t.plan(2) + + var pythonDir1 = path.join('a', 'b') + var pythonDir2 = path.join('b', 'c') + var existingPath = [pythonDir1, pythonDir2].join(SEPARATOR) + process.env.PYTHONPATH = existingPath + + var prog = gyp() + prog.parseArgv([]) + prog.spawn = function () { + t.equal(process.env.PYTHONPATH, [EXPECTED_PYPATH, existingPath].join(SEPARATOR)) + + var dirs = process.env.PYTHONPATH.split(SEPARATOR) + t.deepEqual(dirs, [EXPECTED_PYPATH, pythonDir1, pythonDir2]) + + return SPAWN_RESULT + } + prog.devDir = devDir + configure(prog, [], t.fail) +}) diff --git a/mybulma/node_modules/node-gyp/test/test-create-config-gypi.js b/mybulma/node_modules/node-gyp/test/test-create-config-gypi.js new file mode 100644 index 0000000..eeac73f --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-create-config-gypi.js @@ -0,0 +1,70 @@ +'use strict' + +const path = require('path') +const { test } = require('tap') +const gyp = require('../lib/node-gyp') +const createConfigGypi = require('../lib/create-config-gypi') +const { parseConfigGypi, getCurrentConfigGypi } = createConfigGypi.test + +test('config.gypi with no options', async function (t) { + t.plan(2) + + const prog = gyp() + prog.parseArgv([]) + + const config = await getCurrentConfigGypi({ gyp: prog, vsInfo: {} }) + t.equal(config.target_defaults.default_configuration, 'Release') + t.equal(config.variables.target_arch, process.arch) +}) + +test('config.gypi with --debug', async function (t) { + t.plan(1) + + const prog = gyp() + prog.parseArgv(['_', '_', '--debug']) + + const config = await getCurrentConfigGypi({ gyp: prog, vsInfo: {} }) + t.equal(config.target_defaults.default_configuration, 'Debug') +}) + +test('config.gypi with custom options', async function (t) { + t.plan(1) + + const prog = gyp() + prog.parseArgv(['_', '_', '--shared-libxml2']) + + const config = await getCurrentConfigGypi({ gyp: prog, vsInfo: {} }) + t.equal(config.variables.shared_libxml2, true) +}) + +test('config.gypi with nodedir', async function (t) { + t.plan(1) + + const nodeDir = path.join(__dirname, 'fixtures', 'nodedir') + + const prog = gyp() + prog.parseArgv(['_', '_', `--nodedir=${nodeDir}`]) + + const config = await getCurrentConfigGypi({ gyp: prog, nodeDir, vsInfo: {} }) + t.equal(config.variables.build_with_electron, true) +}) + +test('config.gypi with --force-process-config', async function (t) { + t.plan(1) + + const nodeDir = path.join(__dirname, 'fixtures', 'nodedir') + + const prog = gyp() + prog.parseArgv(['_', '_', '--force-process-config', `--nodedir=${nodeDir}`]) + + const config = await getCurrentConfigGypi({ gyp: prog, nodeDir, vsInfo: {} }) + t.equal(config.variables.build_with_electron, undefined) +}) + +test('config.gypi parsing', function (t) { + t.plan(1) + + const str = "# Some comments\n{'variables': {'multiline': 'A'\n'B'}}" + const config = parseConfigGypi(str) + t.deepEqual(config, { variables: { multiline: 'AB' } }) +}) diff --git a/mybulma/node_modules/node-gyp/test/test-download.js b/mybulma/node_modules/node-gyp/test/test-download.js new file mode 100644 index 0000000..71a3c0d --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-download.js @@ -0,0 +1,207 @@ +'use strict' + +const { test } = require('tap') +const fs = require('fs') +const path = require('path') +const util = require('util') +const http = require('http') +const https = require('https') +const install = require('../lib/install') +const semver = require('semver') +const devDir = require('./common').devDir() +const rimraf = require('rimraf') +const gyp = require('../lib/node-gyp') +const log = require('npmlog') + +log.level = 'warn' + +test('download over http', async (t) => { + t.plan(2) + + const server = http.createServer((req, res) => { + t.strictEqual(req.headers['user-agent'], `node-gyp v42 (node ${process.version})`) + res.end('ok') + }) + + t.tearDown(() => new Promise((resolve) => server.close(resolve))) + + const host = 'localhost' + await new Promise((resolve) => server.listen(0, host, resolve)) + const { port } = server.address() + const gyp = { + opts: {}, + version: '42' + } + const url = `http://${host}:${port}` + const res = await install.test.download(gyp, url) + t.strictEqual(await res.text(), 'ok') +}) + +test('download over https with custom ca', async (t) => { + t.plan(3) + + const cafile = path.join(__dirname, '/fixtures/ca.crt') + const [cert, key, ca] = await Promise.all([ + fs.promises.readFile(path.join(__dirname, 'fixtures/server.crt'), 'utf8'), + fs.promises.readFile(path.join(__dirname, 'fixtures/server.key'), 'utf8'), + install.test.readCAFile(cafile) + ]) + + t.strictEqual(ca.length, 1) + + const options = { ca: ca, cert: cert, key: key } + const server = https.createServer(options, (req, res) => { + t.strictEqual(req.headers['user-agent'], `node-gyp v42 (node ${process.version})`) + res.end('ok') + }) + + t.tearDown(() => new Promise((resolve) => server.close(resolve))) + + server.on('clientError', (err) => { throw err }) + + const host = 'localhost' + await new Promise((resolve) => server.listen(0, host, resolve)) + const { port } = server.address() + const gyp = { + opts: { cafile }, + version: '42' + } + const url = `https://${host}:${port}` + const res = await install.test.download(gyp, url) + t.strictEqual(await res.text(), 'ok') +}) + +test('download over http with proxy', async (t) => { + t.plan(2) + + const server = http.createServer((_, res) => { + res.end('ok') + }) + + const pserver = http.createServer((req, res) => { + t.strictEqual(req.headers['user-agent'], `node-gyp v42 (node ${process.version})`) + res.end('proxy ok') + }) + + t.tearDown(() => Promise.all([ + new Promise((resolve) => server.close(resolve)), + new Promise((resolve) => pserver.close(resolve)) + ])) + + const host = 'localhost' + await new Promise((resolve) => server.listen(0, host, resolve)) + const { port } = server.address() + await new Promise((resolve) => pserver.listen(port + 1, host, resolve)) + const gyp = { + opts: { + proxy: `http://${host}:${port + 1}`, + noproxy: 'bad' + }, + version: '42' + } + const url = `http://${host}:${port}` + const res = await install.test.download(gyp, url) + t.strictEqual(await res.text(), 'proxy ok') +}) + +test('download over http with noproxy', async (t) => { + t.plan(2) + + const server = http.createServer((req, res) => { + t.strictEqual(req.headers['user-agent'], `node-gyp v42 (node ${process.version})`) + res.end('ok') + }) + + const pserver = http.createServer((_, res) => { + res.end('proxy ok') + }) + + t.tearDown(() => Promise.all([ + new Promise((resolve) => server.close(resolve)), + new Promise((resolve) => pserver.close(resolve)) + ])) + + const host = 'localhost' + await new Promise((resolve) => server.listen(0, host, resolve)) + const { port } = server.address() + await new Promise((resolve) => pserver.listen(port + 1, host, resolve)) + const gyp = { + opts: { + proxy: `http://${host}:${port + 1}`, + noproxy: host + }, + version: '42' + } + const url = `http://${host}:${port}` + const res = await install.test.download(gyp, url) + t.strictEqual(await res.text(), 'ok') +}) + +test('download with missing cafile', async (t) => { + t.plan(1) + const gyp = { + opts: { cafile: 'no.such.file' } + } + try { + await install.test.download(gyp, {}, 'http://bad/') + } catch (e) { + t.ok(/no.such.file/.test(e.message)) + } +}) + +test('check certificate splitting', async (t) => { + const cas = await install.test.readCAFile(path.join(__dirname, 'fixtures/ca-bundle.crt')) + t.plan(2) + t.strictEqual(cas.length, 2) + t.notStrictEqual(cas[0], cas[1]) +}) + +// only run this test if we are running a version of Node with predictable version path behavior + +test('download headers (actual)', async (t) => { + if (process.env.FAST_TEST || + process.release.name !== 'node' || + semver.prerelease(process.version) !== null || + semver.satisfies(process.version, '<10')) { + return t.skip('Skipping actual download of headers due to test environment configuration') + } + + t.plan(12) + + const expectedDir = path.join(devDir, process.version.replace(/^v/, '')) + await util.promisify(rimraf)(expectedDir) + + const prog = gyp() + prog.parseArgv([]) + prog.devDir = devDir + log.level = 'warn' + await util.promisify(install)(prog, []) + + const data = await fs.promises.readFile(path.join(expectedDir, 'installVersion'), 'utf8') + t.strictEqual(data, '9\n', 'correct installVersion') + + const list = await fs.promises.readdir(path.join(expectedDir, 'include/node')) + t.ok(list.includes('common.gypi')) + t.ok(list.includes('config.gypi')) + t.ok(list.includes('node.h')) + t.ok(list.includes('node_version.h')) + t.ok(list.includes('openssl')) + t.ok(list.includes('uv')) + t.ok(list.includes('uv.h')) + t.ok(list.includes('v8-platform.h')) + t.ok(list.includes('v8.h')) + t.ok(list.includes('zlib.h')) + + const lines = (await fs.promises.readFile(path.join(expectedDir, 'include/node/node_version.h'), 'utf8')).split('\n') + + // extract the 3 version parts from the defines to build a valid version string and + // and check them against our current env version + const version = ['major', 'minor', 'patch'].reduce((version, type) => { + const re = new RegExp(`^#define\\sNODE_${type.toUpperCase()}_VERSION`) + const line = lines.find((l) => re.test(l)) + const i = line ? parseInt(line.replace(/^[^0-9]+([0-9]+).*$/, '$1'), 10) : 'ERROR' + return `${version}${type !== 'major' ? '.' : 'v'}${i}` + }, '') + + t.strictEqual(version, process.version) +}) diff --git a/mybulma/node_modules/node-gyp/test/test-find-accessible-sync.js b/mybulma/node_modules/node-gyp/test/test-find-accessible-sync.js new file mode 100644 index 0000000..0a2e584 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-find-accessible-sync.js @@ -0,0 +1,84 @@ +'use strict' + +const test = require('tap').test +const path = require('path') +const requireInject = require('require-inject') +const configure = requireInject('../lib/configure', { + 'graceful-fs': { + closeSync: function () { return undefined }, + openSync: function (path) { + if (readableFiles.some(function (f) { return f === path })) { + return 0 + } else { + var error = new Error('ENOENT - not found') + throw error + } + } + } +}) + +const dir = path.sep + 'testdir' +const readableFile = 'readable_file' +const anotherReadableFile = 'another_readable_file' +const readableFileInDir = 'somedir' + path.sep + readableFile +const readableFiles = [ + path.resolve(dir, readableFile), + path.resolve(dir, anotherReadableFile), + path.resolve(dir, readableFileInDir) +] + +test('find accessible - empty array', function (t) { + t.plan(1) + + var candidates = [] + var found = configure.test.findAccessibleSync('test', dir, candidates) + t.strictEqual(found, undefined) +}) + +test('find accessible - single item array, readable', function (t) { + t.plan(1) + + var candidates = [readableFile] + var found = configure.test.findAccessibleSync('test', dir, candidates) + t.strictEqual(found, path.resolve(dir, readableFile)) +}) + +test('find accessible - single item array, readable in subdir', function (t) { + t.plan(1) + + var candidates = [readableFileInDir] + var found = configure.test.findAccessibleSync('test', dir, candidates) + t.strictEqual(found, path.resolve(dir, readableFileInDir)) +}) + +test('find accessible - single item array, unreadable', function (t) { + t.plan(1) + + var candidates = ['unreadable_file'] + var found = configure.test.findAccessibleSync('test', dir, candidates) + t.strictEqual(found, undefined) +}) + +test('find accessible - multi item array, no matches', function (t) { + t.plan(1) + + var candidates = ['non_existent_file', 'unreadable_file'] + var found = configure.test.findAccessibleSync('test', dir, candidates) + t.strictEqual(found, undefined) +}) + +test('find accessible - multi item array, single match', function (t) { + t.plan(1) + + var candidates = ['non_existent_file', readableFile] + var found = configure.test.findAccessibleSync('test', dir, candidates) + t.strictEqual(found, path.resolve(dir, readableFile)) +}) + +test('find accessible - multi item array, return first match', function (t) { + t.plan(1) + + var candidates = ['non_existent_file', anotherReadableFile, readableFile] + var found = configure.test.findAccessibleSync('test', dir, candidates) + t.strictEqual(found, path.resolve(dir, anotherReadableFile)) +}) diff --git a/mybulma/node_modules/node-gyp/test/test-find-node-directory.js b/mybulma/node_modules/node-gyp/test/test-find-node-directory.js new file mode 100644 index 0000000..f1380d1 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-find-node-directory.js @@ -0,0 +1,119 @@ +'use strict' + +const test = require('tap').test +const path = require('path') +const findNodeDirectory = require('../lib/find-node-directory') + +const platforms = ['darwin', 'freebsd', 'linux', 'sunos', 'win32', 'aix'] + +// we should find the directory based on the directory +// the script is running in and it should match the layout +// in a build tree where npm is installed in +// .... /deps/npm +test('test find-node-directory - node install', function (t) { + t.plan(platforms.length) + for (var next = 0; next < platforms.length; next++) { + var processObj = { execPath: '/x/y/bin/node', platform: platforms[next] } + t.equal( + findNodeDirectory('/x/deps/npm/node_modules/node-gyp/lib', processObj), + path.join('/x')) + } +}) + +// we should find the directory based on the directory +// the script is running in and it should match the layout +// in an installed tree where npm is installed in +// .... /lib/node_modules/npm or .../node_modules/npm +// depending on the patform +test('test find-node-directory - node build', function (t) { + t.plan(platforms.length) + for (var next = 0; next < platforms.length; next++) { + var processObj = { execPath: '/x/y/bin/node', platform: platforms[next] } + if (platforms[next] === 'win32') { + t.equal( + findNodeDirectory('/y/node_modules/npm/node_modules/node-gyp/lib', + processObj), path.join('/y')) + } else { + t.equal( + findNodeDirectory('/y/lib/node_modules/npm/node_modules/node-gyp/lib', + processObj), path.join('/y')) + } + } +}) + +// we should find the directory based on the execPath +// for node and match because it was in the bin directory +test('test find-node-directory - node in bin directory', function (t) { + t.plan(platforms.length) + for (var next = 0; next < platforms.length; next++) { + var processObj = { execPath: '/x/y/bin/node', platform: platforms[next] } + t.equal( + findNodeDirectory('/nothere/npm/node_modules/node-gyp/lib', processObj), + path.join('/x/y')) + } +}) + +// we should find the directory based on the execPath +// for node and match because it was in the Release directory +test('test find-node-directory - node in build release dir', function (t) { + t.plan(platforms.length) + for (var next = 0; next < platforms.length; next++) { + var processObj + if (platforms[next] === 'win32') { + processObj = { execPath: '/x/y/Release/node', platform: platforms[next] } + } else { + processObj = { + execPath: '/x/y/out/Release/node', + platform: platforms[next] + } + } + + t.equal( + findNodeDirectory('/nothere/npm/node_modules/node-gyp/lib', processObj), + path.join('/x/y')) + } +}) + +// we should find the directory based on the execPath +// for node and match because it was in the Debug directory +test('test find-node-directory - node in Debug release dir', function (t) { + t.plan(platforms.length) + for (var next = 0; next < platforms.length; next++) { + var processObj + if (platforms[next] === 'win32') { + processObj = { execPath: '/a/b/Debug/node', platform: platforms[next] } + } else { + processObj = { execPath: '/a/b/out/Debug/node', platform: platforms[next] } + } + + t.equal( + findNodeDirectory('/nothere/npm/node_modules/node-gyp/lib', processObj), + path.join('/a/b')) + } +}) + +// we should not find it as it will not match based on the execPath nor +// the directory from which the script is running +test('test find-node-directory - not found', function (t) { + t.plan(platforms.length) + for (var next = 0; next < platforms.length; next++) { + var processObj = { execPath: '/x/y/z/y', platform: next } + t.equal(findNodeDirectory('/a/b/c/d', processObj), '') + } +}) + +// we should find the directory based on the directory +// the script is running in and it should match the layout +// in a build tree where npm is installed in +// .... /deps/npm +// same test as above but make sure additional directory entries +// don't cause an issue +test('test find-node-directory - node install', function (t) { + t.plan(platforms.length) + for (var next = 0; next < platforms.length; next++) { + var processObj = { execPath: '/x/y/bin/node', platform: platforms[next] } + t.equal( + findNodeDirectory('/x/y/z/a/b/c/deps/npm/node_modules/node-gyp/lib', + processObj), path.join('/x/y/z/a/b/c')) + } +}) diff --git a/mybulma/node_modules/node-gyp/test/test-find-python.js b/mybulma/node_modules/node-gyp/test/test-find-python.js new file mode 100644 index 0000000..67d0b26 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-find-python.js @@ -0,0 +1,226 @@ +'use strict' + +delete process.env.PYTHON + +const test = require('tap').test +const findPython = require('../lib/find-python') +const execFile = require('child_process').execFile +const PythonFinder = findPython.test.PythonFinder + +require('npmlog').level = 'warn' + +test('find python', function (t) { + t.plan(4) + + findPython.test.findPython(null, function (err, found) { + t.strictEqual(err, null) + var proc = execFile(found, ['-V'], function (err, stdout, stderr) { + t.strictEqual(err, null) + t.ok(/Python 3/.test(stdout)) + t.strictEqual(stderr, '') + }) + proc.stdout.setEncoding('utf-8') + proc.stderr.setEncoding('utf-8') + }) +}) + +function poison (object, property) { + function fail () { + console.error(Error(`Property ${property} should not have been accessed.`)) + process.abort() + } + var descriptor = { + configurable: false, + enumerable: false, + get: fail, + set: fail + } + Object.defineProperty(object, property, descriptor) +} + +function TestPythonFinder () { + PythonFinder.apply(this, arguments) +} +TestPythonFinder.prototype = Object.create(PythonFinder.prototype) +// Silence npmlog - remove for debugging +TestPythonFinder.prototype.log = { + silly: () => {}, + verbose: () => {}, + info: () => {}, + warn: () => {}, + error: () => {} +} +delete TestPythonFinder.prototype.env.NODE_GYP_FORCE_PYTHON + +test('find python - python', function (t) { + t.plan(6) + + var f = new TestPythonFinder('python', done) + f.execFile = function (program, args, opts, cb) { + f.execFile = function (program, args, opts, cb) { + poison(f, 'execFile') + t.strictEqual(program, '/path/python') + t.ok(/sys\.version_info/.test(args[1])) + cb(null, '3.9.1') + } + t.strictEqual(program, + process.platform === 'win32' ? '"python"' : 'python') + t.ok(/sys\.executable/.test(args[1])) + cb(null, '/path/python') + } + f.findPython() + + function done (err, python) { + t.strictEqual(err, null) + t.strictEqual(python, '/path/python') + } +}) + +test('find python - python too old', function (t) { + t.plan(2) + + var f = new TestPythonFinder(null, done) + f.execFile = function (program, args, opts, cb) { + if (/sys\.executable/.test(args[args.length - 1])) { + cb(null, '/path/python') + } else if (/sys\.version_info/.test(args[args.length - 1])) { + cb(null, '2.3.4') + } else { + t.fail() + } + } + f.findPython() + + function done (err) { + t.ok(/Could not find any Python/.test(err)) + t.ok(/not supported/i.test(f.errorLog)) + } +}) + +test('find python - no python', function (t) { + t.plan(2) + + var f = new TestPythonFinder(null, done) + f.execFile = function (program, args, opts, cb) { + if (/sys\.executable/.test(args[args.length - 1])) { + cb(new Error('not found')) + } else if (/sys\.version_info/.test(args[args.length - 1])) { + cb(new Error('not a Python executable')) + } else { + t.fail() + } + } + f.findPython() + + function done (err) { + t.ok(/Could not find any Python/.test(err)) + t.ok(/not in PATH/.test(f.errorLog)) + } +}) + +test('find python - no python2, no python, unix', function (t) { + t.plan(2) + + var f = new TestPythonFinder(null, done) + f.checkPyLauncher = t.fail + f.win = false + + f.execFile = function (program, args, opts, cb) { + if (/sys\.executable/.test(args[args.length - 1])) { + cb(new Error('not found')) + } else { + t.fail() + } + } + f.findPython() + + function done (err) { + t.ok(/Could not find any Python/.test(err)) + t.ok(/not in PATH/.test(f.errorLog)) + } +}) + +test('find python - no python, use python launcher', function (t) { + t.plan(4) + + var f = new TestPythonFinder(null, done) + f.win = true + + f.execFile = function (program, args, opts, cb) { + if (program === 'py.exe') { + t.notEqual(args.indexOf('-3'), -1) + t.notEqual(args.indexOf('-c'), -1) + return cb(null, 'Z:\\snake.exe') + } + if (/sys\.executable/.test(args[args.length - 1])) { + cb(new Error('not found')) + } else if (f.winDefaultLocations.includes(program)) { + cb(new Error('not found')) + } else if (/sys\.version_info/.test(args[args.length - 1])) { + if (program === 'Z:\\snake.exe') { + cb(null, '3.9.0') + } else { + t.fail() + } + } else { + t.fail() + } + } + f.findPython() + + function done (err, python) { + t.strictEqual(err, null) + t.strictEqual(python, 'Z:\\snake.exe') + } +}) + +test('find python - no python, no python launcher, good guess', function (t) { + t.plan(2) + + var f = new TestPythonFinder(null, done) + f.win = true + const expectedProgram = f.winDefaultLocations[0] + + f.execFile = function (program, args, opts, cb) { + if (program === 'py.exe') { + return cb(new Error('not found')) + } + if (/sys\.executable/.test(args[args.length - 1])) { + cb(new Error('not found')) + } else if (program === expectedProgram && + /sys\.version_info/.test(args[args.length - 1])) { + cb(null, '3.7.3') + } else { + t.fail() + } + } + f.findPython() + + function done (err, python) { + t.strictEqual(err, null) + t.ok(python === expectedProgram) + } +}) + +test('find python - no python, no python launcher, bad guess', function (t) { + t.plan(2) + + var f = new TestPythonFinder(null, done) + f.win = true + + f.execFile = function (program, args, opts, cb) { + if (/sys\.executable/.test(args[args.length - 1])) { + cb(new Error('not found')) + } else if (/sys\.version_info/.test(args[args.length - 1])) { + cb(new Error('not a Python executable')) + } else { + t.fail() + } + } + f.findPython() + + function done (err) { + t.ok(/Could not find any Python/.test(err)) + t.ok(/not in PATH/.test(f.errorLog)) + } +}) diff --git a/mybulma/node_modules/node-gyp/test/test-find-visualstudio.js b/mybulma/node_modules/node-gyp/test/test-find-visualstudio.js new file mode 100644 index 0000000..1327cf8 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-find-visualstudio.js @@ -0,0 +1,676 @@ +'use strict' + +const test = require('tap').test +const fs = require('fs') +const path = require('path') +const findVisualStudio = require('../lib/find-visualstudio') +const VisualStudioFinder = findVisualStudio.test.VisualStudioFinder + +const semverV1 = { major: 1, minor: 0, patch: 0 } + +delete process.env.VCINSTALLDIR + +function poison (object, property) { + function fail () { + console.error(Error(`Property ${property} should not have been accessed.`)) + process.abort() + } + var descriptor = { + configurable: false, + enumerable: false, + get: fail, + set: fail + } + Object.defineProperty(object, property, descriptor) +} + +function TestVisualStudioFinder () { VisualStudioFinder.apply(this, arguments) } +TestVisualStudioFinder.prototype = Object.create(VisualStudioFinder.prototype) +// Silence npmlog - remove for debugging +TestVisualStudioFinder.prototype.log = { + silly: () => {}, + verbose: () => {}, + info: () => {}, + warn: () => {}, + error: () => {} +} + +test('VS2013', function (t) { + t.plan(4) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\MSBuild12\\MSBuild.exe', + path: 'C:\\VS2013', + sdk: null, + toolset: 'v120', + version: '12.0', + versionMajor: 12, + versionMinor: 0, + versionYear: 2013 + }) + }) + + finder.findVisualStudio2017OrNewer = (cb) => { + finder.parseData(new Error(), '', '', cb) + } + finder.regSearchKeys = (keys, value, addOpts, cb) => { + for (var i = 0; i < keys.length; ++i) { + const fullName = `${keys[i]}\\${value}` + switch (fullName) { + case 'HKLM\\Software\\Microsoft\\VisualStudio\\SxS\\VC7\\14.0': + case 'HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VC7\\14.0': + continue + case 'HKLM\\Software\\Microsoft\\VisualStudio\\SxS\\VC7\\12.0': + t.pass(`expected search for registry value ${fullName}`) + return cb(null, 'C:\\VS2013\\VC\\') + case 'HKLM\\Software\\Microsoft\\MSBuild\\ToolsVersions\\12.0\\MSBuildToolsPath': + t.pass(`expected search for registry value ${fullName}`) + return cb(null, 'C:\\MSBuild12\\') + default: + t.fail(`unexpected search for registry value ${fullName}`) + } + } + return cb(new Error()) + } + finder.findVisualStudio() +}) + +test('VS2013 should not be found on new node versions', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder({ + major: 10, + minor: 0, + patch: 0 + }, null, (err, info) => { + t.ok(/find .* Visual Studio/i.test(err), 'expect error') + t.false(info, 'no data') + }) + + finder.findVisualStudio2017OrNewer = (cb) => { + const file = path.join(__dirname, 'fixtures', 'VS_2017_Unusable.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', cb) + } + finder.regSearchKeys = (keys, value, addOpts, cb) => { + for (var i = 0; i < keys.length; ++i) { + const fullName = `${keys[i]}\\${value}` + switch (fullName) { + case 'HKLM\\Software\\Microsoft\\VisualStudio\\SxS\\VC7\\14.0': + case 'HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VC7\\14.0': + continue + default: + t.fail(`unexpected search for registry value ${fullName}`) + } + } + return cb(new Error()) + } + finder.findVisualStudio() +}) + +test('VS2015', function (t) { + t.plan(4) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\MSBuild14\\MSBuild.exe', + path: 'C:\\VS2015', + sdk: null, + toolset: 'v140', + version: '14.0', + versionMajor: 14, + versionMinor: 0, + versionYear: 2015 + }) + }) + + finder.findVisualStudio2017OrNewer = (cb) => { + finder.parseData(new Error(), '', '', cb) + } + finder.regSearchKeys = (keys, value, addOpts, cb) => { + for (var i = 0; i < keys.length; ++i) { + const fullName = `${keys[i]}\\${value}` + switch (fullName) { + case 'HKLM\\Software\\Microsoft\\VisualStudio\\SxS\\VC7\\14.0': + t.pass(`expected search for registry value ${fullName}`) + return cb(null, 'C:\\VS2015\\VC\\') + case 'HKLM\\Software\\Microsoft\\MSBuild\\ToolsVersions\\14.0\\MSBuildToolsPath': + t.pass(`expected search for registry value ${fullName}`) + return cb(null, 'C:\\MSBuild14\\') + default: + t.fail(`unexpected search for registry value ${fullName}`) + } + } + return cb(new Error()) + } + finder.findVisualStudio() +}) + +test('error from PowerShell', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, null) + + finder.parseData(new Error(), '', '', (info) => { + t.ok(/use PowerShell/i.test(finder.errorLog[0]), 'expect error') + t.false(info, 'no data') + }) +}) + +test('empty output from PowerShell', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, null) + + finder.parseData(null, '', '', (info) => { + t.ok(/use PowerShell/i.test(finder.errorLog[0]), 'expect error') + t.false(info, 'no data') + }) +}) + +test('output from PowerShell not JSON', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, null) + + finder.parseData(null, 'AAAABBBB', '', (info) => { + t.ok(/use PowerShell/i.test(finder.errorLog[0]), 'expect error') + t.false(info, 'no data') + }) +}) + +test('wrong JSON from PowerShell', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, null) + + finder.parseData(null, '{}', '', (info) => { + t.ok(/use PowerShell/i.test(finder.errorLog[0]), 'expect error') + t.false(info, 'no data') + }) +}) + +test('empty JSON from PowerShell', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, null) + + finder.parseData(null, '[]', '', (info) => { + t.ok(/find .* Visual Studio/i.test(finder.errorLog[0]), 'expect error') + t.false(info, 'no data') + }) +}) + +test('future version', function (t) { + t.plan(3) + + const finder = new TestVisualStudioFinder(semverV1, null, null) + + finder.parseData(null, JSON.stringify([{ + packages: [ + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', + 'Microsoft.VisualStudio.Component.Windows10SDK.17763', + 'Microsoft.VisualStudio.VC.MSBuild.Base' + ], + path: 'C:\\VS', + version: '9999.9999.9999.9999' + }]), '', (info) => { + t.ok(/unknown version/i.test(finder.errorLog[0]), 'expect error') + t.ok(/find .* Visual Studio/i.test(finder.errorLog[1]), 'expect error') + t.false(info, 'no data') + }) +}) + +test('single unusable VS2017', function (t) { + t.plan(3) + + const finder = new TestVisualStudioFinder(semverV1, null, null) + + const file = path.join(__dirname, 'fixtures', 'VS_2017_Unusable.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', (info) => { + t.ok(/checking/i.test(finder.errorLog[0]), 'expect error') + t.ok(/find .* Visual Studio/i.test(finder.errorLog[2]), 'expect error') + t.false(info, 'no data') + }) +}) + +test('minimal VS2017 Build Tools', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\' + + 'BuildTools\\MSBuild\\15.0\\Bin\\MSBuild.exe', + path: + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools', + sdk: '10.0.17134.0', + toolset: 'v141', + version: '15.9.28307.665', + versionMajor: 15, + versionMinor: 9, + versionYear: 2017 + }) + }) + + poison(finder, 'regSearchKeys') + finder.findVisualStudio2017OrNewer = (cb) => { + const file = path.join(__dirname, 'fixtures', + 'VS_2017_BuildTools_minimal.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', cb) + } + finder.findVisualStudio() +}) + +test('VS2017 Community with C++ workload', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\' + + 'Community\\MSBuild\\15.0\\Bin\\MSBuild.exe', + path: + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community', + sdk: '10.0.17763.0', + toolset: 'v141', + version: '15.9.28307.665', + versionMajor: 15, + versionMinor: 9, + versionYear: 2017 + }) + }) + + poison(finder, 'regSearchKeys') + finder.findVisualStudio2017OrNewer = (cb) => { + const file = path.join(__dirname, 'fixtures', + 'VS_2017_Community_workload.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', cb) + } + finder.findVisualStudio() +}) + +test('VS2017 Express', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\' + + 'WDExpress\\MSBuild\\15.0\\Bin\\MSBuild.exe', + path: + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\WDExpress', + sdk: '10.0.17763.0', + toolset: 'v141', + version: '15.9.28307.858', + versionMajor: 15, + versionMinor: 9, + versionYear: 2017 + }) + }) + + poison(finder, 'regSearchKeys') + finder.findVisualStudio2017OrNewer = (cb) => { + const file = path.join(__dirname, 'fixtures', 'VS_2017_Express.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', cb) + } + finder.findVisualStudio() +}) + +test('VS2019 Preview with C++ workload', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\' + + 'Preview\\MSBuild\\Current\\Bin\\MSBuild.exe', + path: + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Preview', + sdk: '10.0.17763.0', + toolset: 'v142', + version: '16.0.28608.199', + versionMajor: 16, + versionMinor: 0, + versionYear: 2019 + }) + }) + + poison(finder, 'regSearchKeys') + finder.findVisualStudio2017OrNewer = (cb) => { + const file = path.join(__dirname, 'fixtures', + 'VS_2019_Preview.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', cb) + } + finder.findVisualStudio() +}) + +test('minimal VS2019 Build Tools', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\' + + 'BuildTools\\MSBuild\\Current\\Bin\\MSBuild.exe', + path: + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools', + sdk: '10.0.17134.0', + toolset: 'v142', + version: '16.1.28922.388', + versionMajor: 16, + versionMinor: 1, + versionYear: 2019 + }) + }) + + poison(finder, 'regSearchKeys') + finder.findVisualStudio2017OrNewer = (cb) => { + const file = path.join(__dirname, 'fixtures', + 'VS_2019_BuildTools_minimal.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', cb) + } + finder.findVisualStudio() +}) + +test('VS2019 Community with C++ workload', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info, { + msBuild: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\' + + 'Community\\MSBuild\\Current\\Bin\\MSBuild.exe', + path: + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community', + sdk: '10.0.17763.0', + toolset: 'v142', + version: '16.1.28922.388', + versionMajor: 16, + versionMinor: 1, + versionYear: 2019 + }) + }) + + poison(finder, 'regSearchKeys') + finder.findVisualStudio2017OrNewer = (cb) => { + const file = path.join(__dirname, 'fixtures', + 'VS_2019_Community_workload.txt') + const data = fs.readFileSync(file) + finder.parseData(null, data, '', cb) + } + finder.findVisualStudio() +}) + +function allVsVersions (t, finder) { + finder.findVisualStudio2017OrNewer = (cb) => { + const data0 = JSON.parse(fs.readFileSync(path.join(__dirname, 'fixtures', + 'VS_2017_Unusable.txt'))) + const data1 = JSON.parse(fs.readFileSync(path.join(__dirname, 'fixtures', + 'VS_2017_BuildTools_minimal.txt'))) + const data2 = JSON.parse(fs.readFileSync(path.join(__dirname, 'fixtures', + 'VS_2017_Community_workload.txt'))) + const data3 = JSON.parse(fs.readFileSync(path.join(__dirname, 'fixtures', + 'VS_2017_Express.txt'))) + const data4 = JSON.parse(fs.readFileSync(path.join(__dirname, 'fixtures', + 'VS_2019_Preview.txt'))) + const data5 = JSON.parse(fs.readFileSync(path.join(__dirname, 'fixtures', + 'VS_2019_BuildTools_minimal.txt'))) + const data6 = JSON.parse(fs.readFileSync(path.join(__dirname, 'fixtures', + 'VS_2019_Community_workload.txt'))) + const data = JSON.stringify(data0.concat(data1, data2, data3, data4, + data5, data6)) + finder.parseData(null, data, '', cb) + } + finder.regSearchKeys = (keys, value, addOpts, cb) => { + for (var i = 0; i < keys.length; ++i) { + const fullName = `${keys[i]}\\${value}` + switch (fullName) { + case 'HKLM\\Software\\Microsoft\\VisualStudio\\SxS\\VC7\\14.0': + case 'HKLM\\Software\\Microsoft\\VisualStudio\\SxS\\VC7\\12.0': + continue + case 'HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VC7\\12.0': + return cb(null, 'C:\\VS2013\\VC\\') + case 'HKLM\\Software\\Microsoft\\MSBuild\\ToolsVersions\\12.0\\MSBuildToolsPath': + return cb(null, 'C:\\MSBuild12\\') + case 'HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VC7\\14.0': + return cb(null, 'C:\\VS2015\\VC\\') + case 'HKLM\\Software\\Microsoft\\MSBuild\\ToolsVersions\\14.0\\MSBuildToolsPath': + return cb(null, 'C:\\MSBuild14\\') + default: + t.fail(`unexpected search for registry value ${fullName}`) + } + } + return cb(new Error()) + } +} + +test('fail when looking for invalid path', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, 'AABB', (err, info) => { + t.ok(/find .* Visual Studio/i.test(err), 'expect error') + t.false(info, 'no data') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2013 by version number', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, '2013', (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.versionYear, 2013) + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2013 by installation path', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, 'C:\\VS2013', + (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, 'C:\\VS2013') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2015 by version number', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, '2015', (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.versionYear, 2015) + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2015 by installation path', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, 'C:\\VS2015', + (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, 'C:\\VS2015') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2017 by version number', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, '2017', (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.versionYear, 2017) + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2017 by installation path', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community', + (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2019 by version number', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, '2019', (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.versionYear, 2019) + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('look for VS2019 by installation path', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools', + (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('msvs_version match should be case insensitive', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, + 'c:\\program files (x86)\\microsoft visual studio\\2019\\BUILDTOOLS', + (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('latest version should be found by default', function (t) { + t.plan(2) + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.versionYear, 2019) + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('run on a usable VS Command Prompt', function (t) { + t.plan(2) + + process.env.VCINSTALLDIR = 'C:\\VS2015\\VC' + // VSINSTALLDIR is not defined on Visual C++ Build Tools 2015 + delete process.env.VSINSTALLDIR + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, 'C:\\VS2015') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('VCINSTALLDIR match should be case insensitive', function (t) { + t.plan(2) + + process.env.VCINSTALLDIR = + 'c:\\program files (x86)\\microsoft visual studio\\2019\\BUILDTOOLS\\VC' + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('run on a unusable VS Command Prompt', function (t) { + t.plan(2) + + process.env.VCINSTALLDIR = + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildToolsUnusable\\VC' + + const finder = new TestVisualStudioFinder(semverV1, null, (err, info) => { + t.ok(/find .* Visual Studio/i.test(err), 'expect error') + t.false(info, 'no data') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('run on a VS Command Prompt with matching msvs_version', function (t) { + t.plan(2) + + process.env.VCINSTALLDIR = 'C:\\VS2015\\VC' + + const finder = new TestVisualStudioFinder(semverV1, 'C:\\VS2015', + (err, info) => { + t.strictEqual(err, null) + t.deepEqual(info.path, 'C:\\VS2015') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) + +test('run on a VS Command Prompt with mismatched msvs_version', function (t) { + t.plan(2) + + process.env.VCINSTALLDIR = + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC' + + const finder = new TestVisualStudioFinder(semverV1, 'C:\\VS2015', + (err, info) => { + t.ok(/find .* Visual Studio/i.test(err), 'expect error') + t.false(info, 'no data') + }) + + allVsVersions(t, finder) + finder.findVisualStudio() +}) diff --git a/mybulma/node_modules/node-gyp/test/test-install.js b/mybulma/node_modules/node-gyp/test/test-install.js new file mode 100644 index 0000000..5039dc9 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-install.js @@ -0,0 +1,46 @@ +'use strict' + +const { test } = require('tap') +const { test: { install } } = require('../lib/install') +const log = require('npmlog') + +log.level = 'error' // we expect a warning + +test('EACCES retry once', async (t) => { + t.plan(3) + + const fs = { + promises: { + stat (_) { + const err = new Error() + err.code = 'EACCES' + t.ok(true) + throw err + } + } + } + + const Gyp = { + devDir: __dirname, + opts: { + ensure: true + }, + commands: { + install (argv, cb) { + install(fs, Gyp, argv).then(cb, cb) + }, + remove (_, cb) { + cb() + } + } + } + + try { + await install(fs, Gyp, []) + } catch (err) { + t.ok(true) + if (/"pre" versions of node cannot be installed/.test(err.message)) { + t.ok(true) + } + } +}) diff --git a/mybulma/node_modules/node-gyp/test/test-options.js b/mybulma/node_modules/node-gyp/test/test-options.js new file mode 100644 index 0000000..b2ac62c --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-options.js @@ -0,0 +1,31 @@ +'use strict' + +const test = require('tap').test +const gyp = require('../lib/node-gyp') + +test('options in environment', (t) => { + t.plan(1) + + // `npm test` dumps a ton of npm_config_* variables in the environment. + Object.keys(process.env) + .filter((key) => /^npm_config_/.test(key)) + .forEach((key) => { delete process.env[key] }) + + // in some platforms, certain keys are stubborn and cannot be removed + const keys = Object.keys(process.env) + .filter((key) => /^npm_config_/.test(key)) + .map((key) => key.substring('npm_config_'.length)) + .concat('argv', 'x') + + // Zero-length keys should get filtered out. + process.env.npm_config_ = '42' + // Other keys should get added. + process.env.npm_config_x = '42' + // Except loglevel. + process.env.npm_config_loglevel = 'debug' + + const g = gyp() + g.parseArgv(['rebuild']) // Also sets opts.argv. + + t.deepEqual(Object.keys(g.opts).sort(), keys.sort()) +}) diff --git a/mybulma/node_modules/node-gyp/test/test-process-release.js b/mybulma/node_modules/node-gyp/test/test-process-release.js new file mode 100644 index 0000000..c3ee070 --- /dev/null +++ b/mybulma/node_modules/node-gyp/test/test-process-release.js @@ -0,0 +1,434 @@ +'use strict' + +const test = require('tap').test +const processRelease = require('../lib/process-release') + +test('test process release - process.version = 0.8.20', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.8.20', null) + + t.equal(release.semver.version, '0.8.20') + delete release.semver + + t.deepEqual(release, { + version: '0.8.20', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.8.20/', + tarballUrl: 'https://nodejs.org/dist/v0.8.20/node-v0.8.20.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.8.20/SHASUMS256.txt', + versionDir: '0.8.20', + ia32: { libUrl: 'https://nodejs.org/dist/v0.8.20/node.lib', libPath: 'node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v0.8.20/x64/node.lib', libPath: 'x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v0.8.20/arm64/node.lib', libPath: 'arm64/node.lib' } + }) +}) + +test('test process release - process.version = 0.10.21', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.10.21', null) + + t.equal(release.semver.version, '0.10.21') + delete release.semver + + t.deepEqual(release, { + version: '0.10.21', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.10.21/', + tarballUrl: 'https://nodejs.org/dist/v0.10.21/node-v0.10.21.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.10.21/SHASUMS256.txt', + versionDir: '0.10.21', + ia32: { libUrl: 'https://nodejs.org/dist/v0.10.21/node.lib', libPath: 'node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v0.10.21/x64/node.lib', libPath: 'x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v0.10.21/arm64/node.lib', libPath: 'arm64/node.lib' } + }) +}) + +// prior to -headers.tar.gz +test('test process release - process.version = 0.12.9', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.12.9', null) + + t.equal(release.semver.version, '0.12.9') + delete release.semver + + t.deepEqual(release, { + version: '0.12.9', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.12.9/', + tarballUrl: 'https://nodejs.org/dist/v0.12.9/node-v0.12.9.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.12.9/SHASUMS256.txt', + versionDir: '0.12.9', + ia32: { libUrl: 'https://nodejs.org/dist/v0.12.9/node.lib', libPath: 'node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v0.12.9/x64/node.lib', libPath: 'x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v0.12.9/arm64/node.lib', libPath: 'arm64/node.lib' } + }) +}) + +// prior to -headers.tar.gz +test('test process release - process.version = 0.10.41', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.10.41', null) + + t.equal(release.semver.version, '0.10.41') + delete release.semver + + t.deepEqual(release, { + version: '0.10.41', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.10.41/', + tarballUrl: 'https://nodejs.org/dist/v0.10.41/node-v0.10.41.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.10.41/SHASUMS256.txt', + versionDir: '0.10.41', + ia32: { libUrl: 'https://nodejs.org/dist/v0.10.41/node.lib', libPath: 'node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v0.10.41/x64/node.lib', libPath: 'x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v0.10.41/arm64/node.lib', libPath: 'arm64/node.lib' } + }) +}) + +// has -headers.tar.gz +test('test process release - process.release ~ node@0.10.42', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.10.42', null) + + t.equal(release.semver.version, '0.10.42') + delete release.semver + + t.deepEqual(release, { + version: '0.10.42', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.10.42/', + tarballUrl: 'https://nodejs.org/dist/v0.10.42/node-v0.10.42-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.10.42/SHASUMS256.txt', + versionDir: '0.10.42', + ia32: { libUrl: 'https://nodejs.org/dist/v0.10.42/node.lib', libPath: 'node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v0.10.42/x64/node.lib', libPath: 'x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v0.10.42/arm64/node.lib', libPath: 'arm64/node.lib' } + }) +}) + +// has -headers.tar.gz +test('test process release - process.release ~ node@0.12.10', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.12.10', null) + + t.equal(release.semver.version, '0.12.10') + delete release.semver + + t.deepEqual(release, { + version: '0.12.10', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.12.10/', + tarballUrl: 'https://nodejs.org/dist/v0.12.10/node-v0.12.10-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.12.10/SHASUMS256.txt', + versionDir: '0.12.10', + ia32: { libUrl: 'https://nodejs.org/dist/v0.12.10/node.lib', libPath: 'node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v0.12.10/x64/node.lib', libPath: 'x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v0.12.10/arm64/node.lib', libPath: 'arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@4.1.23', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v4.1.23/', + tarballUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v4.1.23/SHASUMS256.txt', + versionDir: '4.1.23', + ia32: { libUrl: 'https://nodejs.org/dist/v4.1.23/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v4.1.23/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v4.1.23/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@4.1.23 / corp build', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://some.custom.location/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'node', + baseUrl: 'https://some.custom.location/', + tarballUrl: 'https://some.custom.location/node-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://some.custom.location/SHASUMS256.txt', + versionDir: '4.1.23', + ia32: { libUrl: 'https://some.custom.location/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://some.custom.location/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://some.custom.location/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@12.8.0 Windows', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v12.8.0', { + name: 'node', + sourceUrl: 'https://nodejs.org/download/release/v12.8.0/node-v12.8.0.tar.gz', + headersUrl: 'https://nodejs.org/download/release/v12.8.0/node-v12.8.0-headers.tar.gz', + libUrl: 'https://nodejs.org/download/release/v12.8.0/win-x64/node.lib' + }) + + t.equal(release.semver.version, '12.8.0') + delete release.semver + + t.deepEqual(release, { + version: '12.8.0', + name: 'node', + baseUrl: 'https://nodejs.org/download/release/v12.8.0/', + tarballUrl: 'https://nodejs.org/download/release/v12.8.0/node-v12.8.0-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/download/release/v12.8.0/SHASUMS256.txt', + versionDir: '12.8.0', + ia32: { libUrl: 'https://nodejs.org/download/release/v12.8.0/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://nodejs.org/download/release/v12.8.0/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/download/release/v12.8.0/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@12.8.0 Windows ARM64', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v12.8.0', { + name: 'node', + sourceUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/node-v12.8.0.tar.gz', + headersUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/node-v12.8.0-headers.tar.gz', + libUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/win-arm64/node.lib' + }) + + t.equal(release.semver.version, '12.8.0') + delete release.semver + + t.deepEqual(release, { + version: '12.8.0', + name: 'node', + baseUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/', + tarballUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/node-v12.8.0-headers.tar.gz', + shasumsUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/SHASUMS256.txt', + versionDir: '12.8.0', + ia32: { libUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://unofficial-builds.nodejs.org/download/release/v12.8.0/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@4.1.23 --target=0.10.40', function (t) { + t.plan(2) + + var release = processRelease([], { opts: { target: '0.10.40' } }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '0.10.40') + delete release.semver + + t.deepEqual(release, { + version: '0.10.40', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.10.40/', + tarballUrl: 'https://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.10.40/SHASUMS256.txt', + versionDir: '0.10.40', + ia32: { libUrl: 'https://nodejs.org/dist/v0.10.40/node.lib', libPath: 'node.lib' }, + x64: { libUrl: 'https://nodejs.org/dist/v0.10.40/x64/node.lib', libPath: 'x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/dist/v0.10.40/arm64/node.lib', libPath: 'arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@4.1.23 --dist-url=https://foo.bar/baz', function (t) { + t.plan(2) + + var release = processRelease([], { opts: { 'dist-url': 'https://foo.bar/baz' } }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'node', + baseUrl: 'https://foo.bar/baz/v4.1.23/', + tarballUrl: 'https://foo.bar/baz/v4.1.23/node-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://foo.bar/baz/v4.1.23/SHASUMS256.txt', + versionDir: '4.1.23', + ia32: { libUrl: 'https://foo.bar/baz/v4.1.23/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://foo.bar/baz/v4.1.23/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://foo.bar/baz/v4.1.23/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ frankenstein@4.1.23', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.1.23', { + name: 'frankenstein', + headersUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'frankenstein', + baseUrl: 'https://frankensteinjs.org/dist/v4.1.23/', + tarballUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://frankensteinjs.org/dist/v4.1.23/SHASUMS256.txt', + versionDir: 'frankenstein-4.1.23', + ia32: { libUrl: 'https://frankensteinjs.org/dist/v4.1.23/win-x86/frankenstein.lib', libPath: 'win-x86/frankenstein.lib' }, + x64: { libUrl: 'https://frankensteinjs.org/dist/v4.1.23/win-x64/frankenstein.lib', libPath: 'win-x64/frankenstein.lib' }, + arm64: { libUrl: 'https://frankensteinjs.org/dist/v4.1.23/win-arm64/frankenstein.lib', libPath: 'win-arm64/frankenstein.lib' } + }) +}) + +test('test process release - process.release ~ frankenstein@4.1.23 --dist-url=http://foo.bar/baz/', function (t) { + t.plan(2) + + var release = processRelease([], { opts: { 'dist-url': 'http://foo.bar/baz/' } }, 'v4.1.23', { + name: 'frankenstein', + headersUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'frankenstein', + baseUrl: 'http://foo.bar/baz/v4.1.23/', + tarballUrl: 'http://foo.bar/baz/v4.1.23/frankenstein-v4.1.23-headers.tar.gz', + shasumsUrl: 'http://foo.bar/baz/v4.1.23/SHASUMS256.txt', + versionDir: 'frankenstein-4.1.23', + ia32: { libUrl: 'http://foo.bar/baz/v4.1.23/win-x86/frankenstein.lib', libPath: 'win-x86/frankenstein.lib' }, + x64: { libUrl: 'http://foo.bar/baz/v4.1.23/win-x64/frankenstein.lib', libPath: 'win-x64/frankenstein.lib' }, + arm64: { libUrl: 'http://foo.bar/baz/v4.1.23/win-arm64/frankenstein.lib', libPath: 'win-arm64/frankenstein.lib' } + }) +}) + +test('test process release - process.release ~ node@4.0.0-rc.4', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.0.0-rc.4', { + name: 'node', + headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.0.0-rc.4') + delete release.semver + + t.deepEqual(release, { + version: '4.0.0-rc.4', + name: 'node', + baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/', + tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt', + versionDir: '4.0.0-rc.4', + ia32: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@4.0.0-rc.4 passed as argv[0]', function (t) { + t.plan(2) + + // note the missing 'v' on the arg, it should normalise when checking + // whether we're on the default or not + var release = processRelease(['4.0.0-rc.4'], { opts: {} }, 'v4.0.0-rc.4', { + name: 'node', + headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.0.0-rc.4') + delete release.semver + + t.deepEqual(release, { + version: '4.0.0-rc.4', + name: 'node', + baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/', + tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt', + versionDir: '4.0.0-rc.4', + ia32: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - process.release ~ node@4.0.0-rc.4 - bogus string passed as argv[0]', function (t) { + t.plan(2) + + // additional arguments can be passed in on the commandline that should be ignored if they + // are not specifying a valid version @ position 0 + var release = processRelease(['this is no version!'], { opts: {} }, 'v4.0.0-rc.4', { + name: 'node', + headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.0.0-rc.4') + delete release.semver + + t.deepEqual(release, { + version: '4.0.0-rc.4', + name: 'node', + baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/', + tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt', + versionDir: '4.0.0-rc.4', + ia32: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) +}) + +test('test process release - NODEJS_ORG_MIRROR', function (t) { + t.plan(2) + + process.env.NODEJS_ORG_MIRROR = 'http://foo.bar' + + var release = processRelease([], { opts: {} }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'node', + baseUrl: 'http://foo.bar/v4.1.23/', + tarballUrl: 'http://foo.bar/v4.1.23/node-v4.1.23-headers.tar.gz', + shasumsUrl: 'http://foo.bar/v4.1.23/SHASUMS256.txt', + versionDir: '4.1.23', + ia32: { libUrl: 'http://foo.bar/v4.1.23/win-x86/node.lib', libPath: 'win-x86/node.lib' }, + x64: { libUrl: 'http://foo.bar/v4.1.23/win-x64/node.lib', libPath: 'win-x64/node.lib' }, + arm64: { libUrl: 'http://foo.bar/v4.1.23/win-arm64/node.lib', libPath: 'win-arm64/node.lib' } + }) + + delete process.env.NODEJS_ORG_MIRROR +}) diff --git a/mybulma/node_modules/node-sass/LICENSE b/mybulma/node_modules/node-sass/LICENSE new file mode 100644 index 0000000..6713846 --- /dev/null +++ b/mybulma/node_modules/node-sass/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013-2016 Andrew Nesbitt + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/node-sass/README.md b/mybulma/node_modules/node-sass/README.md new file mode 100644 index 0000000..f08caf7 --- /dev/null +++ b/mybulma/node_modules/node-sass/README.md @@ -0,0 +1,652 @@ +# node-sass + +**Warning:** [LibSass and Node Sass are deprecated](https://sass-lang.com/blog/libsass-is-deprecated). +While they will continue to receive maintenance releases indefinitely, there are no +plans to add additional features or compatibility with any new CSS or Sass features. +Projects that still use it should move onto +[Dart Sass](https://sass-lang.com/dart-sass). + +## Node version support policy + +1. Supported Node.js versions vary by release, please consult the [releases page](https://github.com/sass/node-sass/releases). +1. Node versions that hit end of life , will be dropped from support at each node-sass release (major, minor). +1. We will stop building binaries for unsupported releases, testing for breakages in dependency compatibility, but we will not block installations for those that want to support themselves. +1. New node release require minor internal changes along with support from CI providers (AppVeyor, GitHub Actions). We will open a single issue for interested parties to subscribe to, and close additional issues. + +Below is a quick guide for minimum and maximum supported versions of node-sass: + +NodeJS | Supported node-sass version | Node Module +--------|-----------------------------|------------ +Node 19 | 8.0+ | 111 +Node 18 | 8.0+ | 108 +Node 17 | 7.0+, <8.0 | 102 +Node 16 | 6.0+ | 93 +Node 15 | 5.0+, <7.0 | 88 +Node 14 | 4.14+ | 83 +Node 13 | 4.13+, <5.0 | 79 +Node 12 | 4.12+, <8.0 | 72 +Node 11 | 4.10+, <5.0 | 67 +Node 10 | 4.9+, <6.0 | 64 +Node 8 | 4.5.3+, <5.0 | 57 +Node <8 | <5.0 | <57 + + + + + + +
+ Sass logo + + + + +
+ +![Alpine](https://github.com/sass/node-sass/workflows/Build%20bindings%20for%20Alpine%20releases/badge.svg) +![Linux](https://github.com/sass/node-sass/workflows/Build%20bindings%20for%20Linux%20releases/badge.svg) +![macOS](https://github.com/sass/node-sass/workflows/Build%20bindings%20for%20macOS%20releases/badge.svg) +![Windows x64](https://github.com/sass/node-sass/workflows/Build%20bindings%20for%20Windows%20releases/badge.svg) +![Linting](https://github.com/sass/node-sass/workflows/Lint%20JS/badge.svg) +[![Windows x86](https://ci.appveyor.com/api/projects/status/22mjbk59kvd55m9y/branch/master?svg=true)](https://ci.appveyor.com/project/sass/node-sass/branch/master) +[![Coverage Status](https://coveralls.io/repos/sass/node-sass/badge.svg?branch=master)](https://coveralls.io/r/sass/node-sass?branch=master) + +Node-sass is a library that provides binding for Node.js to [LibSass], the C version of the popular stylesheet preprocessor, Sass. + +It allows you to natively compile .scss files to css at incredible speed and automatically via a connect middleware. + +Find it on npm: + +Follow @nodesass on twitter for release updates: + +## Install + +```shell +npm install node-sass +``` + +Some users have reported issues installing on Ubuntu due to `node` being registered to another package. [Follow the official NodeJS docs](https://github.com/nodesource/distributions/blob/master/README.md#debinstall) to install NodeJS so that `#!/usr/bin/env node` correctly resolves. + +Compiling on Windows machines requires the [node-gyp prerequisites](https://github.com/nodejs/node-gyp#on-windows). + +Are you seeing the following error? Check out our [Troubleshooting guide](https://github.com/sass/node-sass/blob/master/TROUBLESHOOTING.md#installing-node-sass-4x-with-node--4).** + +``` +SyntaxError: Use of const in strict mode. +``` + +**Having installation troubles? Check out our [Troubleshooting guide](https://github.com/sass/node-sass/blob/master/TROUBLESHOOTING.md).** + +### Install from mirror in China + +```shell +npm install -g mirror-config-china --registry=https://registry.npmmirror.com +npm install node-sass +``` + +## Usage + +```javascript +var sass = require('node-sass'); +sass.render({ + file: scss_filename, + [, options..] +}, function(err, result) { /*...*/ }); +// OR +var result = sass.renderSync({ + data: scss_content + [, options..] +}); +``` + +## Options + +### file + +* Type: `String` +* Default: `null` + +**Special**: `file` or `data` must be specified + +Path to a file for [LibSass] to compile. + +### data + +* Type: `String` +* Default: `null` + +**Special**: `file` or `data` must be specified + +A string to pass to [LibSass] to compile. It is recommended that you use `includePaths` in conjunction with this so that [LibSass] can find files when using the `@import` directive. + +### importer (>= v2.0.0) - _experimental_ + +**This is an experimental LibSass feature. Use with caution.** + +* Type: `Function | Function[]` signature `function(url, prev, done)` +* Default: `undefined` + +Function Parameters and Information: + +* `url (String)` - the path in import **as-is**, which [LibSass] encountered +* `prev (String)` - the previously resolved path +* `done (Function)` - a callback function to invoke on async completion, takes an object literal containing + * `file (String)` - an alternate path for [LibSass] to use **OR** + * `contents (String)` - the imported contents (for example, read from memory or the file system) + +Handles when [LibSass] encounters the `@import` directive. A custom importer allows extension of the [LibSass] engine in both a synchronous and asynchronous manner. In both cases, the goal is to either `return` or call `done()` with an object literal. Depending on the value of the object literal, one of two things will happen. + +When returning or calling `done()` with `{ file: "String" }`, the new file path will be assumed for the `@import`. It's recommended to be mindful of the value of `prev` in instances where relative path resolution may be required. + +When returning or calling `done()` with `{ contents: "String" }`, the string value will be used as if the file was read in through an external source. + +Starting from v3.0.0: + +* `this` refers to a contextual scope for the immediate run of `sass.render` or `sass.renderSync` + +* importers can return error and LibSass will emit that error in response. For instance: + + ```javascript + done(new Error('doesn\'t exist!')); + // or return synchronously + return new Error('nothing to do here'); + ``` + +* importer can be an array of functions, which will be called by LibSass in the order of their occurrence in array. This helps user specify special importer for particular kind of path (filesystem, http). If an importer does not want to handle a particular path, it should return `null`. See [functions section](#functions--v300---experimental) for more details on Sass types. + +### functions (>= v3.0.0) - _experimental_ + +**This is an experimental LibSass feature. Use with caution.** + +`functions` is an `Object` that holds a collection of custom functions that may be invoked by the sass files being compiled. They may take zero or more input parameters and must return a value either synchronously (`return ...;`) or asynchronously (`done();`). Those parameters will be instances of one of the constructors contained in the `require('node-sass').types` hash. The return value must be of one of these types as well. See the list of available types below: + +#### types.Number(value [, unit = ""]) + +* `getValue()`/ `setValue(value)` : gets / sets the numerical portion of the number +* `getUnit()` / `setUnit(unit)` : gets / sets the unit portion of the number + +#### types.String(value) + +* `getValue()` / `setValue(value)` : gets / sets the enclosed string + +#### types.Color(r, g, b [, a = 1.0]) or types.Color(argb) + +* `getR()` / `setR(value)` : red component (integer from `0` to `255`) +* `getG()` / `setG(value)` : green component (integer from `0` to `255`) +* `getB()` / `setB(value)` : blue component (integer from `0` to `255`) +* `getA()` / `setA(value)` : alpha component (number from `0` to `1.0`) + +Example: + +```javascript +var Color = require('node-sass').types.Color, + c1 = new Color(255, 0, 0), + c2 = new Color(0xff0088cc); +``` + +#### types.Boolean(value) + +* `getValue()` : gets the enclosed boolean +* `types.Boolean.TRUE` : Singleton instance of `types.Boolean` that holds "true" +* `types.Boolean.FALSE` : Singleton instance of `types.Boolean` that holds "false" + +#### types.List(length [, commaSeparator = true]) + +* `getValue(index)` / `setValue(index, value)` : `value` must itself be an instance of one of the constructors in `sass.types`. +* `getSeparator()` / `setSeparator(isComma)` : whether to use commas as a separator +* `getLength()` + +#### types.Map(length) + +* `getKey(index)` / `setKey(index, value)` +* `getValue(index)` / `setValue(index, value)` +* `getLength()` + +#### types.Null() + +* `types.Null.NULL` : Singleton instance of `types.Null`. + +#### Example + +```javascript +sass.renderSync({ + data: '#{headings(2,5)} { color: #08c; }', + functions: { + 'headings($from: 0, $to: 6)': function(from, to) { + var i, f = from.getValue(), t = to.getValue(), + list = new sass.types.List(t - f + 1); + + for (i = f; i <= t; i++) { + list.setValue(i - f, new sass.types.String('h' + i)); + } + + return list; + } + } +}); +``` + +### includePaths + +* Type: `Array` +* Default: `[]` + +An array of paths that [LibSass] can look in to attempt to resolve your `@import` declarations. When using `data`, it is recommended that you use this. + +### indentedSyntax + +* Type: `Boolean` +* Default: `false` + +`true` values enable [Sass Indented Syntax](https://sass-lang.com/documentation/file.INDENTED_SYNTAX.html) for parsing the data string or file. + +__Note:__ node-sass/libsass will compile a mixed library of scss and indented syntax (.sass) files with the Default setting (false) as long as .sass and .scss extensions are used in filenames. + +### indentType (>= v3.0.0) + +* Type: `String` +* Default: `space` + +Used to determine whether to use space or tab character for indentation. + +### indentWidth (>= v3.0.0) + +* Type: `Number` +* Default: `2` +* Maximum: `10` + +Used to determine the number of spaces or tabs to be used for indentation. + +### linefeed (>= v3.0.0) + +* Type: `String` +* Default: `lf` + +Used to determine whether to use `cr`, `crlf`, `lf` or `lfcr` sequence for line break. + +### omitSourceMapUrl + +* Type: `Boolean` +* Default: `false` + +**Special:** When using this, you should also specify `outFile` to avoid unexpected behavior. + +`true` values disable the inclusion of source map information in the output file. + +### outFile + +* Type: `String | null` +* Default: `null` + +**Special:** Required when `sourceMap` is a truthy value + +Specify the intended location of the output file. Strongly recommended when outputting source maps so that they can properly refer back to their intended files. + +**Attention** enabling this option will **not** write the file on disk for you, it's for internal reference purpose only (to generate the map for example). + +Example on how to write it on the disk + +```javascript +sass.render({ + ... + outFile: yourPathTotheFile, + }, function(error, result) { // node-style callback from v3.0.0 onwards + if(!error){ + // No errors during the compilation, write this result on the disk + fs.writeFile(yourPathTotheFile, result.css, function(err){ + if(!err){ + //file written on disk + } + }); + } + }); +}); +``` + +### outputStyle + +* Type: `String` +* Default: `nested` +* Values: `nested`, `expanded`, `compact`, `compressed` + +Determines the output format of the final CSS style. + +### precision + +* Type: `Integer` +* Default: `5` + +Used to determine how many digits after the decimal will be allowed. For instance, if you had a decimal number of `1.23456789` and a precision of `5`, the result will be `1.23457` in the final CSS. + +### sourceComments + +* Type: `Boolean` +* Default: `false` + +`true` Enables the line number and file where a selector is defined to be emitted into the compiled CSS as a comment. Useful for debugging, especially when using imports and mixins. + +### sourceMap + +* Type: `Boolean | String | undefined` +* Default: `undefined` + +Enables source map generation during `render` and `renderSync`. + +When `sourceMap === true`, the value of `outFile` is used as the target output location for the source map with the suffix `.map` appended. If no `outFile` is set, `sourceMap` parameter is ignored. + +When `typeof sourceMap === "string"`, the value of `sourceMap` will be used as the writing location for the file. + +### sourceMapContents + +* Type: `Boolean` +* Default: `false` + +`true` includes the `contents` in the source map information + +### sourceMapEmbed + +* Type: `Boolean` +* Default: `false` + +`true` embeds the source map as a data URI + +### sourceMapRoot + +* Type: `String` +* Default: `undefined` + +the value will be emitted as `sourceRoot` in the source map information + +## `render` Callback (>= v3.0.0) + +node-sass supports standard node style asynchronous callbacks with the signature of `function(err, result)`. In error conditions, the `error` argument is populated with the error object. In success conditions, the `result` object is populated with an object describing the result of the render call. + +### Error Object + +* `message` (String) - The error message. +* `line` (Number) - The line number of error. +* `column` (Number) - The column number of error. +* `status` (Number) - The status code. +* `file` (String) - The filename of error. In case `file` option was not set (in favour of `data`), this will reflect the value `stdin`. + +### Result Object + +* `css` (Buffer) - The compiled CSS. Write this to a file, or serve it out as needed. +* `map` (Buffer) - The source map +* `stats` (Object) - An object containing information about the compile. It contains the following keys: + * `entry` (String) - The path to the scss file, or `data` if the source was not a file + * `start` (Number) - Date.now() before the compilation + * `end` (Number) - Date.now() after the compilation + * `duration` (Number) - *end* - *start* + * `includedFiles` (Array) - Absolute paths to all related scss files in no particular order. + +### Examples + +```javascript +var sass = require('node-sass'); +sass.render({ + file: '/path/to/myFile.scss', + data: 'body{background:blue; a{color:black;}}', + importer: function(url, prev, done) { + // url is the path in import as is, which LibSass encountered. + // prev is the previously resolved path. + // done is an optional callback, either consume it or return value synchronously. + // this.options contains this options hash, this.callback contains the node-style callback + someAsyncFunction(url, prev, function(result){ + done({ + file: result.path, // only one of them is required, see section Special Behaviours. + contents: result.data + }); + }); + // OR + var result = someSyncFunction(url, prev); + return {file: result.path, contents: result.data}; + }, + includePaths: [ 'lib/', 'mod/' ], + outputStyle: 'compressed' +}, function(error, result) { // node-style callback from v3.0.0 onwards + if (error) { + console.log(error.status); // used to be "code" in v2x and below + console.log(error.column); + console.log(error.message); + console.log(error.line); + } + else { + console.log(result.css.toString()); + + console.log(result.stats); + + console.log(result.map.toString()); + // or better + console.log(JSON.stringify(result.map)); // note, JSON.stringify accepts Buffer too + } +}); +// OR +var result = sass.renderSync({ + file: '/path/to/file.scss', + data: 'body{background:blue; a{color:black;}}', + outputStyle: 'compressed', + outFile: '/to/my/output.css', + sourceMap: true, // or an absolute or relative (to outFile) path + importer: function(url, prev, done) { + // url is the path in import as is, which LibSass encountered. + // prev is the previously resolved path. + // done is an optional callback, either consume it or return value synchronously. + // this.options contains this options hash + someAsyncFunction(url, prev, function(result){ + done({ + file: result.path, // only one of them is required, see section Special Behaviours. + contents: result.data + }); + }); + // OR + var result = someSyncFunction(url, prev); + return {file: result.path, contents: result.data}; + } +}); + +console.log(result.css); +console.log(result.map); +console.log(result.stats); +``` + +### Special behaviours + +* In the case that both `file` and `data` options are set, node-sass will give precedence to `data` and use `file` to calculate paths in sourcemaps. + +### Version information (>= v2.0.0) + +Both `node-sass` and `libsass` version info is now exposed via the `info` method: + +```javascript +var sass = require('node-sass'); + +console.log(sass.info); + +/* + it will output something like: + + node-sass 2.0.1 (Wrapper) [JavaScript] + libsass 3.1.0 (Sass Compiler) [C/C++] +*/ +``` + +Since node-sass >=v3.0.0 LibSass version is determined at run time. + +## Integrations + +Listing of community uses of node-sass in build tools and frameworks. + +### Brackets extension + +[@jasonsanjose](https://github.com/jasonsanjose) has created a [Brackets](http://brackets.io) extension based on node-sass: . When editing Sass files, the extension compiles changes on save. The extension also integrates with Live Preview to show Sass changes in the browser without saving or compiling. + +### Brunch plugin + +[Brunch](http://brunch.io)'s official sass plugin uses node-sass by default, and automatically falls back to ruby if use of Compass is detected: + +### Connect/Express middleware + +Recompile `.scss` files automatically for connect and express based http servers. + +This functionality has been moved to [`node-sass-middleware`](https://github.com/sass/node-sass-middleware) in node-sass v1.0.0 + +### DocPad Plugin + +[@10xLaCroixDrinker](https://github.com/10xLaCroixDrinker) wrote a [DocPad](http://docpad.org/) plugin that compiles `.scss` files using node-sass: + +### Duo.js extension + +[@stephenway](https://github.com/stephenway) has created an extension that transpiles Sass to CSS using node-sass with [duo.js](http://duojs.org/) + + +### Grunt extension + +[@sindresorhus](https://github.com/sindresorhus/) has created a set of grunt tasks based on node-sass: + +### Gulp extension + +[@dlmanning](https://github.com/dlmanning/) has created a gulp sass plugin based on node-sass: + +### Harp + +[@sintaxi](https://github.com/sintaxi)’s Harp web server implicitly compiles `.scss` files using node-sass: + +### Metalsmith plugin + +[@stevenschobert](https://github.com/stevenschobert/) has created a metalsmith plugin based on node-sass: + +### Meteor plugin + +[@fourseven](https://github.com/fourseven) has created a meteor plugin based on node-sass: + +### Mimosa module + +[@dbashford](https://github.com/dbashford) has created a Mimosa module for sass which includes node-sass: + +## Example App + +There is also an example connect app here: + +## Rebuilding binaries + +Node-sass includes pre-compiled binaries for popular platforms, to add a binary for your platform follow these steps: + +Check out the project: + +```bash +git clone --recursive https://github.com/sass/node-sass.git +cd node-sass +npm install +node scripts/build -f # use -d switch for debug release +# if succeeded, it will generate and move +# the binary in vendor directory. +``` + +## Command Line Interface + +The interface for command-line usage is fairly simplistic at this stage, as seen in the following usage section. + +Output will be sent to stdout if the `--output` flag is omitted. + +### Usage + + `node-sass [options] [output]` + Or: + `cat | node-sass > output` + +Example: + +`node-sass src/style.scss dest/style.css` + + **Options:** + +```bash + -w, --watch Watch a directory or file + -r, --recursive Recursively watch directories or files + -o, --output Output directory + -x, --omit-source-map-url Omit source map URL comment from output + -i, --indented-syntax Treat data from stdin as sass code (versus scss) + -q, --quiet Suppress log output except on error + -v, --version Prints version info + --output-style CSS output style (nested | expanded | compact | compressed) + --indent-type Indent type for output CSS (space | tab) + --indent-width Indent width; number of spaces or tabs (maximum value: 10) + --linefeed Linefeed style (cr | crlf | lf | lfcr) + --source-comments Include debug info in output + --source-map Emit source map + --source-map-contents Embed include contents in map + --source-map-embed Embed sourceMappingUrl as data URI + --source-map-root Base path, will be emitted in source-map as is + --include-path Path to look for imported files + --follow Follow symlinked directories + --precision The amount of precision allowed in decimal numbers + --error-bell Output a bell character on errors + --importer Path to .js file containing custom importer + --functions Path to .js file containing custom functions + --help Print usage info +``` + +The `input` can be either a single `.scss` or `.sass`, or a directory. If the input is a directory the `--output` flag must also be supplied. + +Also, note `--importer` takes the (absolute or relative to pwd) path to a js file, which needs to have a default `module.exports` set to the importer function. See our test [fixtures](https://github.com/sass/node-sass/tree/974f93e76ddd08ea850e3e663cfe64bb6a059dd3/test/fixtures/extras) for example. + +The `--source-map` option accepts a boolean value, in which case it replaces destination extension with `.css.map`. It also accepts path to `.map` file and even path to the desired directory. +When compiling a directory `--source-map` can either be a boolean value or a directory. + +## Binary configuration parameters + +node-sass supports different configuration parameters to change settings related to the sass binary such as binary name, binary path or alternative download path. Following parameters are supported by node-sass: + +Variable name | .npmrc parameter | Process argument | Value +-------------------------|--------------------------|----------------------------|------ +SASS_BINARY_NAME | sass_binary_name | --sass-binary-name | path +SASS_BINARY_SITE | sass_binary_site | --sass-binary-site | URL +SASS_BINARY_PATH | sass_binary_path | --sass-binary-path | path +SASS_BINARY_DIR | sass_binary_dir | --sass-binary-dir | path +SASS_REJECT_UNAUTHORIZED | sass_reject_unauthorized | --sass-reject-unauthorized | value + +These parameters can be used as environment variable: + +* E.g. `export SASS_BINARY_SITE=http://example.com/` + +As local or global [.npmrc](https://docs.npmjs.com/misc/config) configuration file: + +* E.g. `sass_binary_site=http://example.com/` + +As a process argument: + +* E.g. `npm install node-sass --sass-binary-site=http://example.com/` + +If you are using self-signed certificates for your binary then `SASS_REJECT_UNAUTHORIZED` will override (rejectUnauthorized)[https://nodejs.org/docs/latest/api/tls.html#tls_tls_createserver_options_secureconnectionlistener]. + +## Post-install Build + +Install runs only two Mocha tests to see if your machine can use the pre-built [LibSass] which will save some time during install. If any tests fail it will build from source. + +## Maintainers + +This module is brought to you and maintained by the following people: + +* Michael Mifsud - Project Lead ([Github](https://github.com/xzyfer) / [Twitter](https://twitter.com/xzyfer)) +* Andrew Nesbitt ([Github](https://github.com/andrew) / [Twitter](https://twitter.com/teabass)) +* Dean Mao ([Github](https://github.com/deanmao) / [Twitter](https://twitter.com/deanmao)) +* Brett Wilkins ([Github](https://github.com/bwilkins) / [Twitter](https://twitter.com/bjmaz)) +* Keith Cirkel ([Github](https://github.com/keithamus) / [Twitter](https://twitter.com/Keithamus)) +* Laurent Goderre ([Github](https://github.com/laurentgoderre) / [Twitter](https://twitter.com/laurentgoderre)) +* Nick Schonning ([Github](https://github.com/nschonni) / [Twitter](https://twitter.com/nschonni)) +* Adeel Mujahid ([Github](https://github.com/am11) / [Twitter](https://twitter.com/adeelbm)) + +## Contributors + +We <3 our contributors! A special thanks to all those who have clocked in some dev time on this project, we really appreciate your hard work. You can find [a full list of those people here.](https://github.com/sass/node-sass/graphs/contributors) + +### Note on Patches/Pull Requests + +Check out our [Contributing guide](/.github/CONTRIBUTING.md) + +## Copyright + +Copyright (c) 2015 Andrew Nesbitt. See [LICENSE](https://github.com/sass/node-sass/blob/master/LICENSE) for details. + +[LibSass]: https://github.com/sass/libsass diff --git a/mybulma/node_modules/node-sass/bin/emcc b/mybulma/node_modules/node-sass/bin/emcc new file mode 100644 index 0000000..e2b8222 --- /dev/null +++ b/mybulma/node_modules/node-sass/bin/emcc @@ -0,0 +1,12 @@ +#!/bin/sh + +skip=0 + +for arg; do + shift + [ "$skip" = "1" ] && skip=0 && continue + [ "$arg" = "-arch" ] && skip=1 && continue + set -- "$@" "$arg" +done + +emcc $@ diff --git a/mybulma/node_modules/node-sass/bin/node-sass b/mybulma/node_modules/node-sass/bin/node-sass new file mode 100644 index 0000000..7645ecb --- /dev/null +++ b/mybulma/node_modules/node-sass/bin/node-sass @@ -0,0 +1,444 @@ +#!/usr/bin/env node + +var Emitter = require('events').EventEmitter, + forEach = require('async-foreach').forEach, + Gaze = require('gaze'), + meow = require('meow'), + util = require('util'), + path = require('path'), + glob = require('glob'), + sass = require('../lib'), + render = require('../lib/render'), + watcher = require('../lib/watcher'), + stdout = require('stdout-stream'), + stdin = require('get-stdin'), + fs = require('fs'); + +/** + * Initialize CLI + */ + +var cli = meow(` + Usage: + node-sass [options] + cat | node-sass [options] > output.css + + Example: Compile foobar.scss to foobar.css + node-sass --output-style compressed foobar.scss > foobar.css + cat foobar.scss | node-sass --output-style compressed > foobar.css + + Example: Watch the sass directory for changes, compile with sourcemaps to the css directory + node-sass --watch --recursive --output css + --source-map true --source-map-contents sass + + Options + -w, --watch Watch a directory or file + -r, --recursive Recursively watch directories or files + -o, --output Output directory + -x, --omit-source-map-url Omit source map URL comment from output + -i, --indented-syntax Treat data from stdin as sass code (versus scss) + -q, --quiet Suppress log output except on error + -v, --version Prints version info + --output-style CSS output style (nested | expanded | compact | compressed) + --indent-type Indent type for output CSS (space | tab) + --indent-width Indent width; number of spaces or tabs (maximum value: 10) + --linefeed Linefeed style (cr | crlf | lf | lfcr) + --source-comments Include debug info in output + --source-map Emit source map (boolean, or path to output .map file) + --source-map-contents Embed include contents in map + --source-map-embed Embed sourceMappingUrl as data URI + --source-map-root Base path, will be emitted in source-map as is + --include-path Path to look for imported files + --follow Follow symlinked directories + --precision The amount of precision allowed in decimal numbers + --error-bell Output a bell character on errors + --importer Path to .js file containing custom importer + --functions Path to .js file containing custom functions + --help Print usage info +`, { + version: sass.info, + flags: { + errorBell: { + type: 'boolean', + }, + functions: { + type: 'string', + }, + follow: { + type: 'boolean', + }, + importer: { + type: 'string', + }, + includePath: { + type: 'string', + default: [process.cwd()], + isMultiple: true, + }, + indentType: { + type: 'string', + default: 'space', + }, + indentWidth: { + type: 'number', + default: 2, + }, + indentedSyntax: { + type: 'boolean', + alias: 'i', + }, + linefeed: { + type: 'string', + default: 'lf', + }, + omitSourceMapUrl: { + type: 'boolean', + alias: 'x', + }, + output: { + type: 'string', + alias: 'o', + }, + outputStyle: { + type: 'string', + default: 'nested', + }, + precision: { + type: 'number', + default: 5, + }, + quiet: { + type: 'boolean', + default: false, + alias: 'q', + }, + recursive: { + type: 'boolean', + default: true, + alias: 'r', + }, + sourceMapContents: { + type: 'boolean', + }, + sourceMapEmbed: { + type: 'boolean', + }, + sourceMapRoot: { + type: 'string', + }, + sourceComments: { + type: 'boolean', + alias: 'c', + }, + version: { + type: 'boolean', + alias: 'v', + }, + watch: { + type: 'boolean', + alias: 'w', + }, + }, +}); + +/** + * Is a Directory + * + * @param {String} filePath + * @returns {Boolean} + * @api private + */ + +function isDirectory(filePath) { + var isDir = false; + try { + var absolutePath = path.resolve(filePath); + isDir = fs.statSync(absolutePath).isDirectory(); + } catch (e) { + isDir = e.code === 'ENOENT'; + } + return isDir; +} + +/** + * Get correct glob pattern + * + * @param {Object} options + * @returns {String} + * @api private + */ + +function globPattern(options) { + return options.recursive ? '**/*.{sass,scss}' : '*.{sass,scss}'; +} + +/** + * Create emitter + * + * @api private + */ + +function getEmitter() { + var emitter = new Emitter(); + + emitter.on('error', function(err) { + if (options.errorBell) { + err += '\x07'; + } + console.error(err); + if (!options.watch) { + process.exit(1); + } + }); + + emitter.on('warn', function(data) { + if (!options.quiet) { + console.warn(data); + } + }); + + emitter.on('info', function(data) { + if (!options.quiet) { + console.info(data); + } + }); + + emitter.on('log', stdout.write.bind(stdout)); + + return emitter; +} + +/** + * Construct options + * + * @param {Array} arguments + * @param {Object} options + * @api private + */ + +function getOptions(args, options) { + var cssDir, sassDir, file, mapDir; + options.src = args[0]; + + if (args[1]) { + options.dest = path.resolve(args[1]); + } else if (options.output) { + options.dest = path.join( + path.resolve(options.output), + [path.basename(options.src, path.extname(options.src)), '.css'].join('')); // replace ext. + } + + if (options.directory) { + sassDir = path.resolve(options.directory); + file = path.relative(sassDir, args[0]); + cssDir = path.resolve(options.output); + options.dest = path.join(cssDir, file).replace(path.extname(file), '.css'); + } + + if (options.sourceMap) { + if(!options.sourceMapOriginal) { + options.sourceMapOriginal = options.sourceMap; + } + + if (options.sourceMapOriginal === 'true') { + options.sourceMap = options.dest + '.map'; + } else { + // check if sourceMap path ends with .map to avoid isDirectory false-positive + var sourceMapIsDirectory = options.sourceMapOriginal.indexOf('.map', options.sourceMapOriginal.length - 4) === -1 && isDirectory(options.sourceMapOriginal); + + if (!sourceMapIsDirectory) { + options.sourceMap = path.resolve(options.sourceMapOriginal); + } else if (!options.directory) { + options.sourceMap = path.resolve(options.sourceMapOriginal, path.basename(options.dest) + '.map'); + } else { + sassDir = path.resolve(options.directory); + file = path.relative(sassDir, args[0]); + mapDir = path.resolve(options.sourceMapOriginal); + options.sourceMap = path.join(mapDir, file).replace(path.extname(file), '.css.map'); + } + } + } + + return options; +} + +/** + * Watch + * + * @param {Object} options + * @param {Object} emitter + * @api private + */ + +function watch(options, emitter) { + var handler = function(files) { + files.added.forEach(function(file) { + var watch = gaze.watched(); + Object.keys(watch).forEach(function (dir) { + if (watch[dir].indexOf(file) !== -1) { + gaze.add(file); + } + }); + }); + + files.changed.forEach(function(file) { + if (path.basename(file)[0] !== '_') { + renderFile(file, options, emitter); + } + }); + + files.removed.forEach(function(file) { + gaze.remove(file); + }); + }; + + var gaze = new Gaze(); + gaze.add(watcher.reset(options)); + gaze.on('error', emitter.emit.bind(emitter, 'error')); + + gaze.on('changed', function(file) { + handler(watcher.changed(file)); + }); + + gaze.on('added', function(file) { + handler(watcher.added(file)); + }); + + gaze.on('deleted', function(file) { + handler(watcher.removed(file)); + }); +} + +/** + * Run + * + * @param {Object} options + * @param {Object} emitter + * @api private + */ + +function run(options, emitter) { + if (options.directory) { + if (!options.output) { + emitter.emit('error', 'An output directory must be specified when compiling a directory'); + } + if (!isDirectory(options.output)) { + emitter.emit('error', 'An output directory must be specified when compiling a directory'); + } + } + + if (options.sourceMapOriginal && options.directory && !isDirectory(options.sourceMapOriginal) && options.sourceMapOriginal !== 'true') { + emitter.emit('error', 'The --source-map option must be either a boolean or directory when compiling a directory'); + } + + if (options.importer) { + if ((path.resolve(options.importer) === path.normalize(options.importer).replace(/(.+)([/|\\])$/, '$1'))) { + options.importer = require(options.importer); + } else { + options.importer = require(path.resolve(options.importer)); + } + } + + if (options.functions) { + if ((path.resolve(options.functions) === path.normalize(options.functions).replace(/(.+)([/|\\])$/, '$1'))) { + options.functions = require(options.functions); + } else { + options.functions = require(path.resolve(options.functions)); + } + } + + if (options.watch) { + watch(options, emitter); + } else if (options.directory) { + renderDir(options, emitter); + } else { + render(options, emitter); + } +} + +/** + * Render a file + * + * @param {String} file + * @param {Object} options + * @param {Object} emitter + * @api private + */ +function renderFile(file, options, emitter) { + options = getOptions([path.resolve(file)], options); + if (options.watch && !options.quiet) { + emitter.emit('info', util.format('=> changed: %s', file)); + } + render(options, emitter); +} + +/** + * Render all sass files in a directory + * + * @param {Object} options + * @param {Object} emitter + * @api private + */ +function renderDir(options, emitter) { + var globPath = path.resolve(options.directory, globPattern(options)); + glob(globPath, { ignore: '**/_*', follow: options.follow }, function(err, files) { + if (err) { + return emitter.emit('error', util.format('You do not have permission to access this path: %s.', err.path)); + } else if (!files.length) { + return emitter.emit('error', 'No input file was found.'); + } + + forEach(files, function(subject) { + emitter.once('done', this.async()); + renderFile(subject, options, emitter); + }, function(successful, arr) { + var outputDir = path.join(process.cwd(), options.output); + if (!options.quiet) { + emitter.emit('info', util.format('Wrote %s CSS files to %s', arr.length, outputDir)); + } + process.exit(); + }); + }); +} + +/** + * Arguments and options + */ + +var options = getOptions(cli.input, cli.flags); +var emitter = getEmitter(); + +/** + * Show usage if no arguments are supplied + */ + +if (!options.src && process.stdin.isTTY) { + emitter.emit('error', [ + 'Provide a Sass file to render', + '', + 'Example: Compile foobar.scss to foobar.css', + ' node-sass --output-style compressed foobar.scss > foobar.css', + ' cat foobar.scss | node-sass --output-style compressed > foobar.css', + '', + 'Example: Watch the sass directory for changes, compile with sourcemaps to the css directory', + ' node-sass --watch --recursive --output css', + ' --source-map true --source-map-contents sass', + ].join('\n')); +} + +/** + * Apply arguments + */ + +if (options.src) { + if (isDirectory(options.src)) { + options.directory = options.src; + } + run(options, emitter); +} else if (!process.stdin.isTTY) { + stdin(function(data) { + options.data = data; + options.stdin = true; + run(options, emitter); + }); +} diff --git a/mybulma/node_modules/node-sass/binding.gyp b/mybulma/node_modules/node-sass/binding.gyp new file mode 100644 index 0000000..bb87e6c --- /dev/null +++ b/mybulma/node_modules/node-sass/binding.gyp @@ -0,0 +1,74 @@ +{ + 'variables': { + 'libsass_ext%': '', + }, + 'targets': [ + { + 'target_name': 'binding', + 'win_delay_load_hook': 'true', + 'sources': [ + 'src/binding.cpp', + 'src/create_string.cpp', + 'src/custom_function_bridge.cpp', + 'src/custom_importer_bridge.cpp', + 'src/sass_context_wrapper.cpp', + 'src/sass_types/boolean.cpp', + 'src/sass_types/color.cpp', + 'src/sass_types/error.cpp', + 'src/sass_types/factory.cpp', + 'src/sass_types/list.cpp', + 'src/sass_types/map.cpp', + 'src/sass_types/null.cpp', + 'src/sass_types/number.cpp', + 'src/sass_types/string.cpp' + ], + 'msvs_settings': { + 'VCLinkerTool': { + 'SetChecksum': 'true' + } + }, + 'xcode_settings': { + 'CLANG_CXX_LIBRARY': 'libc++', + 'OTHER_LDFLAGS': [], + 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', + 'MACOSX_DEPLOYMENT_TARGET': '10.11' + }, + 'include_dirs': [ + '= flags.length) { + return null; + } + + return flags[index + 1]; +} + +/** + * Get binary name. + * If environment variable SASS_BINARY_NAME, + * .npmrc variable sass_binary_name or + * process argument --binary-name is provided, + * return it as is, otherwise make default binary + * name: {platform}-{arch}-{v8 version}.node + * + * @api public + */ + +function getBinaryName() { + var binaryName, + variant, + platform = process.platform; + + if (getArgument('--sass-binary-name')) { + binaryName = getArgument('--sass-binary-name'); + } else if (process.env.SASS_BINARY_NAME) { + binaryName = process.env.SASS_BINARY_NAME; + } else if (process.env.npm_config_sass_binary_name) { + binaryName = process.env.npm_config_sass_binary_name; + } else if (pkg.nodeSassConfig && pkg.nodeSassConfig.binaryName) { + binaryName = pkg.nodeSassConfig.binaryName; + } else { + variant = getPlatformVariant(); + if (variant) { + platform += '_' + variant; + } + + binaryName = [ + platform, '-', + process.arch, '-', + process.versions.modules + ].join(''); + } + + return [binaryName, 'binding.node'].join('_'); +} + +/** + * Determine the URL to fetch binary file from. + * By default fetch from the node-sass distribution + * site on GitHub. + * + * The default URL can be overridden using + * the environment variable SASS_BINARY_SITE, + * .npmrc variable sass_binary_site or + * or a command line option --sass-binary-site: + * + * node scripts/install.js --sass-binary-site http://example.com/ + * + * The URL should to the mirror of the repository + * laid out as follows: + * + * SASS_BINARY_SITE/ + * + * v3.0.0 + * v3.0.0/freebsd-x64-14_binding.node + * .... + * v3.0.0 + * v3.0.0/freebsd-ia32-11_binding.node + * v3.0.0/freebsd-x64-42_binding.node + * ... etc. for all supported versions and platforms + * + * @api public + */ + +function getBinaryUrl() { + var site = getArgument('--sass-binary-site') || + process.env.SASS_BINARY_SITE || + process.env.npm_config_sass_binary_site || + (pkg.nodeSassConfig && pkg.nodeSassConfig.binarySite) || + 'https://github.com/sass/node-sass/releases/download'; + + return [site, 'v' + pkg.version, getBinaryName()].join('/'); +} + +/** + * Get binary dir. + * If environment variable SASS_BINARY_DIR, + * .npmrc variable sass_binary_dir or + * process argument --sass-binary-dir is provided, + * select it by appending binary name, otherwise + * use default binary dir. + * Once the primary selection is made, check if + * callers wants to throw if file not exists before + * returning. + * + * @api public + */ + +function getBinaryDir() { + var binaryDir; + + if (getArgument('--sass-binary-dir')) { + binaryDir = getArgument('--sass-binary-dir'); + } else if (process.env.SASS_BINARY_DIR) { + binaryDir = process.env.SASS_BINARY_DIR; + } else if (process.env.npm_config_sass_binary_dir) { + binaryDir = process.env.npm_config_sass_binary_dir; + } else if (pkg.nodeSassConfig && pkg.nodeSassConfig.binaryDir) { + binaryDir = pkg.nodeSassConfig.binaryDir; + } else { + binaryDir = defaultBinaryDir; + } + + return binaryDir; +} + +/** + * Get binary path. + * If environment variable SASS_BINARY_PATH, + * .npmrc variable sass_binary_path or + * process argument --sass-binary-path is provided, + * select it by appending binary name, otherwise + * make default binary path using binary name. + * Once the primary selection is made, check if + * callers wants to throw if file not exists before + * returning. + * + * @api public + */ + +function getBinaryPath() { + var binaryPath; + + if (getArgument('--sass-binary-path')) { + binaryPath = getArgument('--sass-binary-path'); + } else if (process.env.SASS_BINARY_PATH) { + binaryPath = process.env.SASS_BINARY_PATH; + } else if (process.env.npm_config_sass_binary_path) { + binaryPath = process.env.npm_config_sass_binary_path; + } else if (pkg.nodeSassConfig && pkg.nodeSassConfig.binaryPath) { + binaryPath = pkg.nodeSassConfig.binaryPath; + } else { + binaryPath = path.join(getBinaryDir(), getBinaryName().replace(/_(?=binding\.node)/, '/')); + } + + try { + return trueCasePathSync(binaryPath) || binaryPath; + } catch (e) { + return binaryPath; + } +} + +/** + * An array of paths suitable for use as a local disk cache of the binding. + * + * @return {[]String} an array of paths + * @api public + */ +function getCachePathCandidates() { + return [ + process.env.npm_config_sass_binary_cache, + process.env.npm_config_cache, + ].filter(function(_) { return _; }); +} + +/** + * The most suitable location for caching the binding on disk. + * + * Given the candidates directories provided by `getCachePathCandidates()` this + * returns the first writable directory. By treating the candidate directories + * as a prioritised list this method is deterministic, assuming no change to the + * local environment. + * + * @return {String} directory to cache binding + * @api public + */ +function getBinaryCachePath() { + var i, + cachePath, + cachePathCandidates = getCachePathCandidates(); + + for (i = 0; i < cachePathCandidates.length; i++) { + cachePath = path.join(cachePathCandidates[i], pkg.name, pkg.version); + + try { + fs.mkdirSync(cachePath, {recursive: true}); + return cachePath; + } catch (e) { + // Directory is not writable, try another + } + } + + return ''; +} + +/** + * The cached binding + * + * Check the candidates directories provided by `getCachePathCandidates()` for + * the binding file, if it exists. By treating the candidate directories + * as a prioritised list this method is deterministic, assuming no change to the + * local environment. + * + * @return {String} path to cached binary + * @api public + */ +function getCachedBinary() { + var i, + cachePath, + cacheBinary, + cachePathCandidates = getCachePathCandidates(), + binaryName = getBinaryName(); + + for (i = 0; i < cachePathCandidates.length; i++) { + cachePath = path.join(cachePathCandidates[i], pkg.name, pkg.version); + cacheBinary = path.join(cachePath, binaryName); + + if (fs.existsSync(cacheBinary)) { + return cacheBinary; + } + } + + return ''; +} + +/** + * Does the supplied binary path exist + * + * @param {String} binaryPath + * @api public + */ + +function hasBinary(binaryPath) { + return fs.existsSync(binaryPath); +} + +/** + * Get Sass version information + * + * @api public + */ + +function getVersionInfo(binding) { + return [ + ['node-sass', pkg.version, '(Wrapper)', '[JavaScript]'].join('\t'), + ['libsass ', binding.libsassVersion(), '(Sass Compiler)', '[C/C++]'].join('\t'), + ].join(eol); +} + +/** + * Gets the platform variant, currently either an empty string or 'musl' for Linux/musl platforms. + * + * @api public + */ + +function getPlatformVariant() { + var contents = ''; + + if (process.platform !== 'linux') { + return ''; + } + + try { + contents = fs.readFileSync(process.execPath); + + if (contents.indexOf('libc.musl-x86_64.so.1') !== -1) { + return 'musl'; + } + } catch (err) { } // eslint-disable-line no-empty + + return ''; +} + +module.exports.hasBinary = hasBinary; +module.exports.getBinaryUrl = getBinaryUrl; +module.exports.getBinaryName = getBinaryName; +module.exports.getBinaryDir = getBinaryDir; +module.exports.getBinaryPath = getBinaryPath; +module.exports.getBinaryCachePath = getBinaryCachePath; +module.exports.getCachedBinary = getCachedBinary; +module.exports.getCachePathCandidates = getCachePathCandidates; +module.exports.getVersionInfo = getVersionInfo; +module.exports.getHumanEnvironment = getHumanEnvironment; +module.exports.getInstalledBinaries = getInstalledBinaries; +module.exports.isSupportedEnvironment = isSupportedEnvironment; diff --git a/mybulma/node_modules/node-sass/lib/index.js b/mybulma/node_modules/node-sass/lib/index.js new file mode 100644 index 0000000..1006280 --- /dev/null +++ b/mybulma/node_modules/node-sass/lib/index.js @@ -0,0 +1,458 @@ +/*! + * node-sass: lib/index.js + */ + +var path = require('path'), + clonedeep = require('lodash/cloneDeep'), + sass = require('./extensions'); + +/** + * Require binding + */ + +var binding = require('./binding')(sass); + +/** + * Get input file + * + * @param {Object} options + * @api private + */ + +function getInputFile(options) { + return options.file ? path.resolve(options.file) : null; +} + +/** + * Get output file + * + * @param {Object} options + * @api private + */ + +function getOutputFile(options) { + var outFile = options.outFile; + + if (!outFile || typeof outFile !== 'string' || (!options.data && !options.file)) { + return null; + } + + return path.resolve(outFile); +} + +/** + * Get source map + * + * @param {Object} options + * @api private + */ + +function getSourceMap(options) { + var sourceMap = options.sourceMap; + + if (sourceMap && typeof sourceMap !== 'string' && options.outFile) { + sourceMap = options.outFile + '.map'; + } + + return sourceMap && typeof sourceMap === 'string' ? path.resolve(sourceMap) : null; +} + +/** + * Get stats + * + * @param {Object} options + * @api private + */ + +function getStats(options) { + var stats = {}; + + stats.entry = options.file || 'data'; + stats.start = Date.now(); + + return stats; +} + +/** + * End stats + * + * @param {Object} stats + * @param {Object} sourceMap + * @api private + */ + +function endStats(stats) { + stats.end = Date.now(); + stats.duration = stats.end - stats.start; + + return stats; +} + +/** + * Get style + * + * @param {Object} options + * @api private + */ + +function getStyle(options) { + var styles = { + nested: 0, + expanded: 1, + compact: 2, + compressed: 3 + }; + + return styles[options.outputStyle] || 0; +} + +/** + * Get indent width + * + * @param {Object} options + * @api private + */ + +function getIndentWidth(options) { + var width = parseInt(options.indentWidth) || 2; + + return width > 10 ? 2 : width; +} + +/** + * Get indent type + * + * @param {Object} options + * @api private + */ + +function getIndentType(options) { + var types = { + space: 0, + tab: 1 + }; + + return types[options.indentType] || 0; +} + +/** + * Get linefeed + * + * @param {Object} options + * @api private + */ + +function getLinefeed(options) { + var feeds = { + cr: '\r', + crlf: '\r\n', + lf: '\n', + lfcr: '\n\r' + }; + + return feeds[options.linefeed] || '\n'; +} + +/** + * Build an includePaths string + * from the options.includePaths array and the SASS_PATH environment variable + * + * @param {Object} options + * @api private + */ + +function buildIncludePaths(options) { + options.includePaths = options.includePaths || []; + + if (Object.prototype.hasOwnProperty.call(process.env, 'SASS_PATH')) { + options.includePaths = options.includePaths.concat( + process.env.SASS_PATH.split(path.delimiter) + ); + } + + // Preserve the behaviour people have come to expect. + // This behaviour was removed from Sass in 3.4 and + // LibSass in 3.5. + options.includePaths.unshift(process.cwd()); + + return options.includePaths.join(path.delimiter); +} + +/** + * Get options + * + * @param {Object} options + * @api private + */ + +function getOptions(opts, cb) { + if (typeof opts !== 'object') { + throw new Error('Invalid: options is not an object.'); + } + var options = clonedeep(opts || {}); + + options.sourceComments = options.sourceComments || false; + if (Object.prototype.hasOwnProperty.call(options, 'file')) { + options.file = getInputFile(options); + } + options.outFile = getOutputFile(options); + options.includePaths = buildIncludePaths(options); + options.precision = parseInt(options.precision) || 5; + options.sourceMap = getSourceMap(options); + options.style = getStyle(options); + options.indentWidth = getIndentWidth(options); + options.indentType = getIndentType(options); + options.linefeed = getLinefeed(options); + + // context object represents node-sass environment + options.context = { options: options, callback: cb }; + + options.result = { + stats: getStats(options) + }; + + return options; +} + +/** + * Executes a callback and transforms any exception raised into a sass error + * + * @param {Function} callback + * @param {Array} arguments + * @api private + */ + +function tryCallback(callback, args) { + try { + return callback.apply(this, args); + } catch (e) { + if (typeof e === 'string') { + return new binding.types.Error(e); + } else if (e instanceof Error) { + return new binding.types.Error(e.message); + } else { + return new binding.types.Error('An unexpected error occurred'); + } + } +} + +/** + * Normalizes the signature of custom functions to make it possible to just supply the + * function name and have the signature default to `fn(...)`. The callback is adjusted + * to transform the input sass list into discrete arguments. + * + * @param {String} signature + * @param {Function} callback + * @return {Object} + * @api private + */ + +function normalizeFunctionSignature(signature, callback) { + if (!/^\*|@warn|@error|@debug|\w+\(.*\)$/.test(signature)) { + if (!/\w+/.test(signature)) { + throw new Error('Invalid function signature format "' + signature + '"'); + } + + return { + signature: signature + '(...)', + callback: function() { + var args = Array.prototype.slice.call(arguments), + list = args.shift(), + i; + + for (i = list.getLength() - 1; i >= 0; i--) { + args.unshift(list.getValue(i)); + } + + return callback.apply(this, args); + } + }; + } + + return { + signature: signature, + callback: callback + }; +} + +/** + * Render + * + * @param {Object} options + * @api public + */ + +module.exports.render = function(opts, cb) { + var options = getOptions(opts, cb); + + // options.error and options.success are for libsass binding + options.error = function(err) { + var payload = Object.assign(new Error(), JSON.parse(err)); + + if (cb) { + options.context.callback.call(options.context, payload, null); + } + }; + + options.success = function() { + var result = options.result; + var stats = endStats(result.stats); + var payload = { + css: result.css, + stats: stats + }; + if (result.map) { + payload.map = result.map; + } + + if (cb) { + options.context.callback.call(options.context, null, payload); + } + }; + + var importer = options.importer; + + if (importer) { + if (Array.isArray(importer)) { + options.importer = []; + importer.forEach(function(subject, index) { + options.importer[index] = function(file, prev, bridge) { + function done(result) { + bridge.success(result === module.exports.NULL ? null : result); + } + + var result = subject.call(options.context, file, prev, done); + + if (result !== undefined) { + done(result); + } + }; + }); + } else { + options.importer = function(file, prev, bridge) { + function done(result) { + bridge.success(result === module.exports.NULL ? null : result); + } + + var result = importer.call(options.context, file, prev, done); + + if (result !== undefined) { + done(result); + } + }; + } + } + + var functions = clonedeep(options.functions); + + if (functions) { + options.functions = {}; + + Object.keys(functions).forEach(function(subject) { + var cb = normalizeFunctionSignature(subject, functions[subject]); + + options.functions[cb.signature] = function() { + var args = Array.prototype.slice.call(arguments), + bridge = args.pop(); + + function done(data) { + bridge.success(data); + } + + var result = tryCallback(cb.callback.bind(options.context), args.concat(done)); + + if (result) { + done(result); + } + }; + }); + } + + if (options.data) { + binding.render(options); + } else if (options.file) { + binding.renderFile(options); + } else { + cb({status: 3, message: 'No input specified: provide a file name or a source string to process' }); + } +}; + +/** + * Render sync + * + * @param {Object} options + * @api public + */ + +module.exports.renderSync = function(opts) { + var options = getOptions(opts); + var importer = options.importer; + + if (importer) { + if (Array.isArray(importer)) { + options.importer = []; + importer.forEach(function(subject, index) { + options.importer[index] = function(file, prev) { + var result = subject.call(options.context, file, prev); + + return result === module.exports.NULL ? null : result; + }; + }); + } else { + options.importer = function(file, prev) { + var result = importer.call(options.context, file, prev); + + return result === module.exports.NULL ? null : result; + }; + } + } + + var functions = clonedeep(options.functions); + + if (options.functions) { + options.functions = {}; + + Object.keys(functions).forEach(function(signature) { + var cb = normalizeFunctionSignature(signature, functions[signature]); + + options.functions[cb.signature] = function() { + return tryCallback(cb.callback.bind(options.context), arguments); + }; + }); + } + + var status; + if (options.data) { + status = binding.renderSync(options); + } else if (options.file) { + status = binding.renderFileSync(options); + } else { + throw new Error('No input specified: provide a file name or a source string to process'); + } + + var result = options.result; + + if (status) { + result.stats = endStats(result.stats); + return result; + } + + throw Object.assign(new Error(), JSON.parse(result.error)); +}; + +/** + * API Info + * + * @api public + */ + +module.exports.info = sass.getVersionInfo(binding); + +/** + * Expose sass types + */ + +module.exports.types = binding.types; +module.exports.TRUE = binding.types.Boolean.TRUE; +module.exports.FALSE = binding.types.Boolean.FALSE; +module.exports.NULL = binding.types.Null.NULL; diff --git a/mybulma/node_modules/node-sass/lib/render.js b/mybulma/node_modules/node-sass/lib/render.js new file mode 100644 index 0000000..3539a9a --- /dev/null +++ b/mybulma/node_modules/node-sass/lib/render.js @@ -0,0 +1,120 @@ +/*! + * node-sass: lib/render.js + */ + +var chalk = require('chalk'), + fs = require('fs'), + path = require('path'), + sass = require('./'); + +/** + * Render + * + * @param {Object} options + * @param {Object} emitter + * @api public + */ + +module.exports = function(options, emitter) { + var renderOptions = { + includePaths: options.includePath, + omitSourceMapUrl: options.omitSourceMapUrl, + indentedSyntax: options.indentedSyntax, + outFile: options.dest, + outputStyle: options.outputStyle, + precision: options.precision, + sourceComments: options.sourceComments, + sourceMapEmbed: options.sourceMapEmbed, + sourceMapContents: options.sourceMapContents, + sourceMap: options.sourceMap, + sourceMapRoot: options.sourceMapRoot, + importer: options.importer, + functions: options.functions, + indentWidth: options.indentWidth, + indentType: options.indentType, + linefeed: options.linefeed + }; + + if (options.data) { + renderOptions.data = options.data; + } else if (options.src) { + renderOptions.file = options.src; + } + + var sourceMap = options.sourceMap; + var destination = options.dest; + var stdin = options.stdin; + + var success = function(result) { + var todo = 1; + var done = function() { + if (--todo <= 0) { + emitter.emit('done'); + } + }; + + if (!destination || stdin) { + emitter.emit('log', result.css.toString()); + + if (sourceMap && !options.sourceMapEmbed) { + emitter.emit('log', result.map.toString()); + } + + return done(); + } + + emitter.emit('info', chalk.green('Rendering Complete, saving .css file...')); + + fs.mkdir(path.dirname(destination), {recursive: true}, function(err) { + if (err) { + return emitter.emit('error', chalk.red(err)); + } + + fs.writeFile(destination, result.css.toString(), function(err) { + if (err) { + return emitter.emit('error', chalk.red(err)); + } + + emitter.emit('info', chalk.green('Wrote CSS to ' + destination)); + emitter.emit('write', err, destination, result.css.toString()); + done(); + }); + }); + + if (sourceMap) { + todo++; + + fs.mkdir(path.dirname(sourceMap), {recursive: true}, function(err) { + if (err) { + return emitter.emit('error', chalk.red(err)); + } + fs.writeFile(sourceMap, result.map, function(err) { + if (err) { + return emitter.emit('error', chalk.red('Error' + err)); + } + + emitter.emit('info', chalk.green('Wrote Source Map to ' + sourceMap)); + emitter.emit('write-source-map', err, sourceMap, result.map); + done(); + }); + }); + } + + emitter.emit('render', result.css.toString()); + }; + + var error = function(error) { + emitter.emit('error', chalk.red(JSON.stringify(error, null, 2))); + }; + + var renderCallback = function(err, result) { + if (err) { + error(err); + } + else { + success(result); + } + }; + + sass.render(renderOptions, renderCallback); +}; diff --git a/mybulma/node_modules/node-sass/lib/watcher.js b/mybulma/node_modules/node-sass/lib/watcher.js new file mode 100644 index 0000000..89443b4 --- /dev/null +++ b/mybulma/node_modules/node-sass/lib/watcher.js @@ -0,0 +1,93 @@ +var grapher = require('sass-graph'), + clonedeep = require('lodash/cloneDeep'), + path = require('path'), + config = {}, + watcher = {}, + graph = null; + +watcher.reset = function(opts) { + config = clonedeep(opts || config || {}); + var options = { + loadPaths: config.includePath, + extensions: ['scss', 'sass', 'css'], + follow: config.follow, + }; + + if (config.directory) { + graph = grapher.parseDir(config.directory, options); + } else { + graph = grapher.parseFile(config.src, options); + } + + return Object.keys(graph.index); +}; + +watcher.changed = function(absolutePath) { + var files = { + added: [], + changed: [], + removed: [], + }; + + this.reset(); + + if (absolutePath && path.basename(absolutePath)[0] !== '_') { + files.changed.push(absolutePath); + } + + graph.visitAncestors(absolutePath, function(parent) { + if (path.basename(parent)[0] !== '_') { + files.changed.push(parent); + } + }); + + graph.visitDescendents(absolutePath, function(child) { + files.added.push(child); + }); + + return files; +}; + +watcher.added = function(absolutePath) { + var files = { + added: [], + changed: [], + removed: [], + }; + + this.reset(); + + if (Object.keys(graph.index).indexOf(absolutePath) === -1) { + files.added.push(absolutePath); + } + + graph.visitDescendents(absolutePath, function(child) { + files.added.push(child); + }); + + return files; +}; + +watcher.removed = function(absolutePath) { + var files = { + added: [], + changed: [], + removed: [], + }; + + graph.visitAncestors(absolutePath, function(parent) { + if (path.basename(parent)[0] !== '_') { + files.changed.push(parent); + } + }); + + if (Object.keys(graph.index).indexOf(absolutePath) !== -1) { + files.removed.push(absolutePath); + } + + this.reset(); + + return files; +}; + +module.exports = watcher; diff --git a/mybulma/node_modules/node-sass/package.json b/mybulma/node_modules/node-sass/package.json new file mode 100644 index 0000000..7139aa8 --- /dev/null +++ b/mybulma/node_modules/node-sass/package.json @@ -0,0 +1,79 @@ +{ + "name": "node-sass", + "version": "8.0.0", + "libsass": "3.5.5", + "description": "Wrapper around libsass", + "license": "MIT", + "bugs": "https://github.com/sass/node-sass/issues", + "homepage": "https://github.com/sass/node-sass", + "repository": { + "type": "git", + "url": "https://github.com/sass/node-sass" + }, + "author": { + "name": "Andrew Nesbitt", + "email": "andrewnez@gmail.com", + "url": "http://andrew.github.com" + }, + "engines": { + "node": ">=14" + }, + "main": "lib/index.js", + "nodeSassConfig": { + "binarySite": "https://github.com/sass/node-sass/releases/download" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "gypfile": true, + "scripts": { + "coverage": "nyc npm run test", + "install": "node scripts/install.js", + "postinstall": "node scripts/build.js", + "lint": "eslint bin/node-sass lib scripts test", + "test": "mocha test/{*,**/**}.js", + "build": "node scripts/build.js --force", + "prepublishOnly ": "scripts/prepublish.js" + }, + "files": [ + "bin", + "binding.gyp", + "lib", + "scripts", + "src", + "test", + "vendor" + ], + "keywords": [ + "css", + "libsass", + "preprocessor", + "sass", + "scss", + "style" + ], + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "make-fetch-happen": "^10.0.4", + "meow": "^9.0.0", + "nan": "^2.17.0", + "node-gyp": "^8.4.1", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^2.2.1" + }, + "devDependencies": { + "eslint": "^8.0.0", + "fs-extra": "^10.0.0", + "mocha": "^9.0.1", + "nyc": "^15.1.0", + "rimraf": "^3.0.2", + "unique-temp-dir": "^1.0.0" + } +} diff --git a/mybulma/node_modules/node-sass/scripts/build.js b/mybulma/node_modules/node-sass/scripts/build.js new file mode 100644 index 0000000..5c8a42b --- /dev/null +++ b/mybulma/node_modules/node-sass/scripts/build.js @@ -0,0 +1,154 @@ +/*! + * node-sass: scripts/build.js + */ + +var fs = require('fs'), + path = require('path'), + spawn = require('cross-spawn'), + sass = require('../lib/extensions'); + +/** + * After build + * + * @param {Object} options + * @api private + */ + +function afterBuild(options) { + var install = sass.getBinaryPath(); + var target = path.join(__dirname, '..', 'build', + options.debug ? 'Debug' : + process.config.target_defaults + ? process.config.target_defaults.default_configuration + : 'Release', + 'binding.node'); + + fs.mkdir(path.dirname(install), {recursive: true}, function(err) { + if (err && err.code !== 'EEXIST') { + console.error(err.message); + return; + } + + fs.stat(target, function(err) { + if (err) { + console.error('Build succeeded but target not found'); + return; + } + + fs.rename(target, install, function(err) { + if (err) { + console.error(err.message); + return; + } + + console.log('Installed to', install); + }); + }); + }); +} + +/** + * Build + * + * @param {Object} options + * @api private + */ + +function build(options) { + var args = [require.resolve(path.join('node-gyp', 'bin', 'node-gyp.js')), 'rebuild', '--verbose'].concat( + ['libsass_ext', 'libsass_cflags', 'libsass_ldflags', 'libsass_library'].map(function(subject) { + return ['--', subject, '=', process.env[subject.toUpperCase()] || ''].join(''); + })).concat(options.args); + + console.log('Building:', [process.execPath].concat(args).join(' ')); + + var proc = spawn(process.execPath, args, { + stdio: [0, 1, 2] + }); + + proc.on('exit', function(errorCode) { + if (!errorCode) { + afterBuild(options); + return; + } + + if (errorCode === 127 ) { + console.error('node-gyp not found!'); + } else { + console.error('Build failed with error code:', errorCode); + } + + process.exit(1); + }); +} + +/** + * Parse arguments + * + * @param {Array} args + * @api private + */ + +function parseArgs(args) { + var options = { + arch: process.arch, + platform: process.platform, + force: process.env.npm_config_force === 'true', + }; + + options.args = args.filter(function(arg) { + if (arg === '-f' || arg === '--force') { + options.force = true; + return false; + } else if (arg.substring(0, 13) === '--target_arch') { + options.arch = arg.substring(14); + } else if (arg === '-d' || arg === '--debug') { + options.debug = true; + } else if (arg.substring(0, 13) === '--libsass_ext' && arg.substring(14) !== 'no') { + options.libsassExt = true; + } + + return true; + }); + + return options; +} + +/** + * Test for pre-built library + * + * @param {Object} options + * @api private + */ + +function testBinary(options) { + if (options.force || process.env.SASS_FORCE_BUILD) { + return build(options); + } + + if (!sass.hasBinary(sass.getBinaryPath())) { + return build(options); + } + + console.log('Binary found at', sass.getBinaryPath()); + console.log('Testing binary'); + + try { + require('../').renderSync({ + data: 's { a: ss }' + }); + + console.log('Binary is fine'); + } catch (e) { + console.log('Binary has a problem:', e); + console.log('Building the binary locally'); + + return build(options); + } +} + +/** + * Apply arguments and run + */ + +testBinary(parseArgs(process.argv.slice(2))); diff --git a/mybulma/node_modules/node-sass/scripts/install.js b/mybulma/node_modules/node-sass/scripts/install.js new file mode 100644 index 0000000..42511b3 --- /dev/null +++ b/mybulma/node_modules/node-sass/scripts/install.js @@ -0,0 +1,121 @@ +/*! + * node-sass: scripts/install.js + */ + +var fs = require('fs'), + eol = require('os').EOL, + path = require('path'), + fetch = require('make-fetch-happen'), + sass = require('../lib/extensions'), + downloadOptions = require('./util/downloadoptions'); + +/** + * Download file, if succeeds save, if not delete + * + * @param {String} url + * @param {String} dest + * @param {Function} cb + * @api private + */ + +function download(url, dest, cb) { + var reportError = function(err) { + cb(['Cannot download "', url, '": ', eol, eol, + typeof err.message === 'string' ? err.message : err, eol, eol, + 'Hint: If github.com is not accessible in your location', eol, + ' try setting a proxy via HTTP_PROXY, e.g. ', eol, eol, + ' export HTTP_PROXY=http://example.com:1234',eol, eol, + 'or configure npm proxy via', eol, eol, + ' npm config set proxy http://example.com:8080'].join('')); + }; + + var successful = function(response) { + return response.status >= 200 && response.status < 300; + }; + + console.log('Downloading binary from', url); + + try { + fetch(url, downloadOptions()).then(function (response) { + return response.buffer(); + }).then(function (buffer) { + fs.createWriteStream(dest).on('error', cb).end(buffer, cb); + console.log('Download complete'); + }).catch(function(err) { + if(!successful(err)) { + reportError(['HTTP error', err.code, err.message].join(' ')); + } else { + reportError(err); + } + }); + } catch (err) { + cb(err); + } +} + +/** + * Check and download binary + * + * @api private + */ + +function checkAndDownloadBinary() { + if (process.env.SKIP_SASS_BINARY_DOWNLOAD_FOR_CI) { + console.log('Skipping downloading binaries on CI builds'); + return; + } + + var cachedBinary = sass.getCachedBinary(), + cachePath = sass.getBinaryCachePath(), + binaryPath = sass.getBinaryPath(); + + if (sass.hasBinary(binaryPath)) { + console.log('node-sass build', 'Binary found at', binaryPath); + return; + } + + try { + fs.mkdirSync(path.dirname(binaryPath), {recursive: true}); + } catch (err) { + console.error('Unable to save binary', path.dirname(binaryPath), ':', err); + return; + } + + if (cachedBinary) { + console.log('Cached binary found at', cachedBinary); + fs.createReadStream(cachedBinary).pipe(fs.createWriteStream(binaryPath)); + return; + } + + download(sass.getBinaryUrl(), binaryPath, function(err) { + if (err) { + console.error(err); + return; + } + + console.log('Binary saved to', binaryPath); + + cachedBinary = path.join(cachePath, sass.getBinaryName()); + + if (cachePath) { + console.log('Caching binary to', cachedBinary); + + try { + fs.mkdirSync(path.dirname(cachedBinary), {recursive: true}); + fs.createReadStream(binaryPath) + .pipe(fs.createWriteStream(cachedBinary)) + .on('error', function (err) { + console.log('Failed to cache binary:', err); + }); + } catch (err) { + console.log('Failed to cache binary:', err); + } + } + }); +} + +/** + * If binary does not exist, download it + */ + +checkAndDownloadBinary(); diff --git a/mybulma/node_modules/node-sass/scripts/prepublish.js b/mybulma/node_modules/node-sass/scripts/prepublish.js new file mode 100644 index 0000000..b1befd4 --- /dev/null +++ b/mybulma/node_modules/node-sass/scripts/prepublish.js @@ -0,0 +1,17 @@ +/*! + * node-sass: scripts/install.js + */ + +var path = require('path'), + rimraf = require('rimraf'); + +function prepublish() { + var vendorPath = path.resolve(__dirname, '..', 'vendor'); + rimraf.sync(vendorPath); +} + +/** + * Run + */ + +prepublish(); diff --git a/mybulma/node_modules/node-sass/scripts/util/downloadoptions.js b/mybulma/node_modules/node-sass/scripts/util/downloadoptions.js new file mode 100644 index 0000000..6add52a --- /dev/null +++ b/mybulma/node_modules/node-sass/scripts/util/downloadoptions.js @@ -0,0 +1,26 @@ +var proxy = require('./proxy'), + userAgent = require('./useragent'), + rejectUnauthorized = require('./rejectUnauthorized'); + +/** + * The options passed to make-fetch-happen when downloading the binary + * + * @return {Object} an options object for make-fetch-happen + * @api private + */ +module.exports = function() { + var options = { + strictSSL: rejectUnauthorized(), + timeout: 60000, + headers: { + 'User-Agent': userAgent(), + }, + }; + + var proxyConfig = proxy(); + if (proxyConfig) { + options.proxy = proxyConfig; + } + + return options; +}; diff --git a/mybulma/node_modules/node-sass/scripts/util/proxy.js b/mybulma/node_modules/node-sass/scripts/util/proxy.js new file mode 100644 index 0000000..e65eac5 --- /dev/null +++ b/mybulma/node_modules/node-sass/scripts/util/proxy.js @@ -0,0 +1,22 @@ + +/** + * Determine the proxy settings configured by npm + * + * It's possible to configure npm to use a proxy different + * from the system defined proxy. This can be done via the + * `npm config` CLI or the `.npmrc` config file. + * + * If a proxy has been configured in this way we must + * tell request explicitly to use it. + * + * Otherwise we can trust request to the right thing. + * + * @return {String} the proxy configured by npm or an empty string + * @api private + */ +module.exports = function() { + return process.env.npm_config_https_proxy || + process.env.npm_config_proxy || + process.env.npm_config_http_proxy || + ''; +}; diff --git a/mybulma/node_modules/node-sass/scripts/util/rejectUnauthorized.js b/mybulma/node_modules/node-sass/scripts/util/rejectUnauthorized.js new file mode 100644 index 0000000..43d8373 --- /dev/null +++ b/mybulma/node_modules/node-sass/scripts/util/rejectUnauthorized.js @@ -0,0 +1,46 @@ +var pkg = require('../../package.json'); + +/** + * Get the value of a CLI argument + * + * @param {String} name + * @param {Array} args + * @api private + */ +function getArgument(name, args) { + var flags = args || process.argv.slice(2), + index = flags.lastIndexOf(name); + + if (index === -1 || index + 1 >= flags.length) { + return null; + } + + return flags[index + 1]; +} + +/** + * Get the value of reject-unauthorized + * If environment variable SASS_REJECT_UNAUTHORIZED is non-zero, + * .npmrc variable sass_reject_unauthorized or + * process argument --sass-reject_unauthorized is provided, + * set rejectUnauthorized to true + * Else set to false by default + * + * @return {Boolean} The value of rejectUnauthorized + * @api private + */ +module.exports = function() { + var rejectUnauthorized = false; + + if (getArgument('--sass-reject-unauthorized')) { + rejectUnauthorized = getArgument('--sass-reject-unauthorized'); + } else if (process.env.SASS_REJECT_UNAUTHORIZED !== '0') { + rejectUnauthorized = true; + } else if (process.env.npm_config_sass_reject_unauthorized) { + rejectUnauthorized = process.env.npm_config_sass_reject_unauthorized; + } else if (pkg.nodeSassConfig && pkg.nodeSassConfig.rejectUnauthorized) { + rejectUnauthorized = pkg.nodeSassConfig.rejectUnauthorized; + } + + return rejectUnauthorized; +}; diff --git a/mybulma/node_modules/node-sass/scripts/util/useragent.js b/mybulma/node_modules/node-sass/scripts/util/useragent.js new file mode 100644 index 0000000..2496eec --- /dev/null +++ b/mybulma/node_modules/node-sass/scripts/util/useragent.js @@ -0,0 +1,13 @@ +var pkg = require('../../package.json'); + +/** + * A custom user agent use for binary downloads. + * + * @api private + */ +module.exports = function() { + return [ + 'node/', process.version, ' ', + 'node-sass-installer/', pkg.version + ].join(''); +}; diff --git a/mybulma/node_modules/node-sass/src/binding.cpp b/mybulma/node_modules/node-sass/src/binding.cpp new file mode 100644 index 0000000..c8376e9 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/binding.cpp @@ -0,0 +1,358 @@ +#include +#include +#include "sass_context_wrapper.h" +#include "custom_function_bridge.h" +#include "create_string.h" +#include "sass_types/factory.h" + +Sass_Import_List sass_importer(const char* cur_path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) +{ + void* cookie = sass_importer_get_cookie(cb); + struct Sass_Import* previous = sass_compiler_get_last_import(comp); + const char* prev_path = sass_import_get_abs_path(previous); + CustomImporterBridge& bridge = *(static_cast(cookie)); + + std::vector argv; + argv.push_back((void*)cur_path); + argv.push_back((void*)prev_path); + + return bridge(argv); +} + +union Sass_Value* sass_custom_function(const union Sass_Value* s_args, Sass_Function_Entry cb, struct Sass_Compiler* comp) +{ + void* cookie = sass_function_get_cookie(cb); + CustomFunctionBridge& bridge = *(static_cast(cookie)); + + std::vector argv; + for (unsigned l = sass_list_get_length(s_args), i = 0; i < l; i++) { + argv.push_back((void*)sass_list_get_value(s_args, i)); + } + + return bridge(argv); +} + +int ExtractOptions(v8::Local options, void* cptr, sass_context_wrapper* ctx_w, bool is_file, bool is_sync) { + Nan::HandleScope scope; + + struct Sass_Context* ctx; + + v8::Local result_ = Nan::Get( + options, + Nan::New("result").ToLocalChecked() + ).ToLocalChecked(); + if (!result_->IsObject()) { + Nan::ThrowTypeError("\"result\" element is not an object"); + return -1; + } + + ctx_w->result.Reset(result_.As()); + + if (is_file) { + ctx_w->fctx = (struct Sass_File_Context*) cptr; + ctx = sass_file_context_get_context(ctx_w->fctx); + } + else { + ctx_w->dctx = (struct Sass_Data_Context*) cptr; + ctx = sass_data_context_get_context(ctx_w->dctx); + } + + struct Sass_Options* sass_options = sass_context_get_options(ctx); + + ctx_w->is_sync = is_sync; + + if (!is_sync) { + ctx_w->request.data = ctx_w; + + // async (callback) style + v8::Local success_callback = v8::Local::Cast(Nan::Get(options, Nan::New("success").ToLocalChecked()).ToLocalChecked()); + v8::Local error_callback = v8::Local::Cast(Nan::Get(options, Nan::New("error").ToLocalChecked()).ToLocalChecked()); + + ctx_w->success_callback = new Nan::Callback(success_callback); + ctx_w->error_callback = new Nan::Callback(error_callback); + } + + if (!is_file) { + ctx_w->file = create_string(Nan::Get(options, Nan::New("file").ToLocalChecked())); + sass_option_set_input_path(sass_options, ctx_w->file); + } + + int indent_len = Nan::To( + Nan::Get( + options, + Nan::New("indentWidth").ToLocalChecked() + ).ToLocalChecked()).FromJust(); + + ctx_w->indent = (char*)malloc(indent_len + 1); + + strcpy(ctx_w->indent, std::string( + indent_len, + Nan::To( + Nan::Get( + options, + Nan::New("indentType").ToLocalChecked() + ).ToLocalChecked()).FromJust() == 1 ? '\t' : ' ' + ).c_str()); + + ctx_w->linefeed = create_string(Nan::Get(options, Nan::New("linefeed").ToLocalChecked())); + ctx_w->include_path = create_string(Nan::Get(options, Nan::New("includePaths").ToLocalChecked())); + ctx_w->out_file = create_string(Nan::Get(options, Nan::New("outFile").ToLocalChecked())); + ctx_w->source_map = create_string(Nan::Get(options, Nan::New("sourceMap").ToLocalChecked())); + ctx_w->source_map_root = create_string(Nan::Get(options, Nan::New("sourceMapRoot").ToLocalChecked())); + + sass_option_set_output_path(sass_options, ctx_w->out_file); + sass_option_set_output_style(sass_options, (Sass_Output_Style)Nan::To(Nan::Get(options, Nan::New("style").ToLocalChecked()).ToLocalChecked()).FromJust()); + sass_option_set_is_indented_syntax_src(sass_options, Nan::To(Nan::Get(options, Nan::New("indentedSyntax").ToLocalChecked()).ToLocalChecked()).FromJust()); + sass_option_set_source_comments(sass_options, Nan::To(Nan::Get(options, Nan::New("sourceComments").ToLocalChecked()).ToLocalChecked()).FromJust()); + sass_option_set_omit_source_map_url(sass_options, Nan::To(Nan::Get(options, Nan::New("omitSourceMapUrl").ToLocalChecked()).ToLocalChecked()).FromJust()); + sass_option_set_source_map_embed(sass_options, Nan::To(Nan::Get(options, Nan::New("sourceMapEmbed").ToLocalChecked()).ToLocalChecked()).FromJust()); + sass_option_set_source_map_contents(sass_options, Nan::To(Nan::Get(options, Nan::New("sourceMapContents").ToLocalChecked()).ToLocalChecked()).FromJust()); + sass_option_set_source_map_file(sass_options, ctx_w->source_map); + sass_option_set_source_map_root(sass_options, ctx_w->source_map_root); + sass_option_set_include_path(sass_options, ctx_w->include_path); + sass_option_set_precision(sass_options, Nan::To(Nan::Get(options, Nan::New("precision").ToLocalChecked()).ToLocalChecked()).FromJust()); + sass_option_set_indent(sass_options, ctx_w->indent); + sass_option_set_linefeed(sass_options, ctx_w->linefeed); + + v8::Local importer_callback = Nan::Get(options, Nan::New("importer").ToLocalChecked()).ToLocalChecked(); + + if (importer_callback->IsFunction()) { + v8::Local importer = importer_callback.As(); + + CustomImporterBridge *bridge = new CustomImporterBridge(importer, ctx_w->is_sync); + ctx_w->importer_bridges.push_back(bridge); + + Sass_Importer_List c_importers = sass_make_importer_list(1); + c_importers[0] = sass_make_importer(sass_importer, 0, bridge); + + sass_option_set_c_importers(sass_options, c_importers); + } + else if (importer_callback->IsArray()) { + v8::Local importers = importer_callback.As(); + Sass_Importer_List c_importers = sass_make_importer_list(importers->Length()); + + for (size_t i = 0; i < importers->Length(); ++i) { + v8::Local callback = v8::Local::Cast(Nan::Get(importers, static_cast(i)).ToLocalChecked()); + + CustomImporterBridge *bridge = new CustomImporterBridge(callback, ctx_w->is_sync); + ctx_w->importer_bridges.push_back(bridge); + + c_importers[i] = sass_make_importer(sass_importer, importers->Length() - i - 1, bridge); + } + + sass_option_set_c_importers(sass_options, c_importers); + } + + v8::Local custom_functions = Nan::Get(options, Nan::New("functions").ToLocalChecked()).ToLocalChecked(); + + if (custom_functions->IsObject()) { + v8::Local functions = custom_functions.As(); + v8::Local signatures = Nan::GetOwnPropertyNames(functions).ToLocalChecked(); + unsigned num_signatures = signatures->Length(); + Sass_Function_List fn_list = sass_make_function_list(num_signatures); + + for (unsigned i = 0; i < num_signatures; i++) { + v8::Local signature = v8::Local::Cast(Nan::Get(signatures, Nan::New(i)).ToLocalChecked()); + v8::Local callback = v8::Local::Cast(Nan::Get(functions, signature).ToLocalChecked()); + + CustomFunctionBridge *bridge = new CustomFunctionBridge(callback, ctx_w->is_sync); + ctx_w->function_bridges.push_back(bridge); + + char* sig = create_string(signature); + Sass_Function_Entry fn = sass_make_function(sig, sass_custom_function, bridge); + free(sig); + sass_function_set_list_entry(fn_list, i, fn); + } + + sass_option_set_c_functions(sass_options, fn_list); + } + return 0; +} + +void GetStats(sass_context_wrapper* ctx_w, Sass_Context* ctx) { + Nan::HandleScope scope; + + char** included_files = sass_context_get_included_files(ctx); + v8::Local arr = Nan::New(); + + if (included_files) { + for (int i = 0; included_files[i] != nullptr; ++i) { + Nan::Set(arr, i, Nan::New(included_files[i]).ToLocalChecked()); + } + } + + v8::Local result = Nan::New(ctx_w->result); + assert(result->IsObject()); + + v8::Local stats = Nan::Get( + result, + Nan::New("stats").ToLocalChecked() + ).ToLocalChecked(); + if (stats->IsObject()) { + Nan::Set( + stats.As(), + Nan::New("includedFiles").ToLocalChecked(), + arr + ); + } else { + Nan::ThrowTypeError("\"result.stats\" element is not an object"); + } +} + +int GetResult(sass_context_wrapper* ctx_w, Sass_Context* ctx, bool is_sync = false) { + Nan::HandleScope scope; + v8::Local result; + + int status = sass_context_get_error_status(ctx); + + result = Nan::New(ctx_w->result); + assert(result->IsObject()); + + if (status == 0) { + const char* css = sass_context_get_output_string(ctx); + const char* map = sass_context_get_source_map_string(ctx); + + Nan::Set(result, Nan::New("css").ToLocalChecked(), Nan::CopyBuffer(css, static_cast(strlen(css))).ToLocalChecked()); + + GetStats(ctx_w, ctx); + + if (map) { + Nan::Set(result, Nan::New("map").ToLocalChecked(), Nan::CopyBuffer(map, static_cast(strlen(map))).ToLocalChecked()); + } + } + else if (is_sync) { + Nan::Set(result, Nan::New("error").ToLocalChecked(), Nan::New(sass_context_get_error_json(ctx)).ToLocalChecked()); + } + + return status; +} + +void PerformCall(sass_context_wrapper* ctx_w, Nan::Callback* callback, int argc, v8::Local argv[]) { + if (ctx_w->is_sync) { + Nan::Call(*callback, argc, argv); + } else { + callback->Call(argc, argv, ctx_w->async_resource); + } +} + +void MakeCallback(uv_work_t* req) { + Nan::HandleScope scope; + + Nan::TryCatch try_catch; + sass_context_wrapper* ctx_w = static_cast(req->data); + struct Sass_Context* ctx; + + if (ctx_w->dctx) { + ctx = sass_data_context_get_context(ctx_w->dctx); + } + else { + ctx = sass_file_context_get_context(ctx_w->fctx); + } + + int status = GetResult(ctx_w, ctx); + + if (status == 0 && ctx_w->success_callback) { + // if no error, do callback(null, result) + PerformCall(ctx_w, ctx_w->success_callback, 0, 0); + } + else if (ctx_w->error_callback) { + // if error, do callback(error) + const char* err = sass_context_get_error_json(ctx); + v8::Local argv[] = { + Nan::New(err).ToLocalChecked() + }; + PerformCall(ctx_w, ctx_w->error_callback, 1, argv); + } + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } + + sass_free_context_wrapper(ctx_w); +} + +NAN_METHOD(render) { + + v8::Local options = Nan::To(info[0]).ToLocalChecked(); + char* source_string = create_string(Nan::Get(options, Nan::New("data").ToLocalChecked())); + struct Sass_Data_Context* dctx = sass_make_data_context(source_string); + sass_context_wrapper* ctx_w = sass_make_context_wrapper(); + + ctx_w->async_resource = new Nan::AsyncResource("node-sass:sass_context_wrapper:render"); + + if (ExtractOptions(options, dctx, ctx_w, false, false) >= 0) { + + int status = uv_queue_work(uv_default_loop(), &ctx_w->request, compile_it, (uv_after_work_cb)MakeCallback); + + assert(status == 0); + } +} + +NAN_METHOD(render_sync) { + + v8::Local options = Nan::To(info[0]).ToLocalChecked(); + char* source_string = create_string(Nan::Get(options, Nan::New("data").ToLocalChecked())); + struct Sass_Data_Context* dctx = sass_make_data_context(source_string); + struct Sass_Context* ctx = sass_data_context_get_context(dctx); + sass_context_wrapper* ctx_w = sass_make_context_wrapper(); + int result = -1; + + if ((result = ExtractOptions(options, dctx, ctx_w, false, true)) >= 0) { + compile_data(dctx); + result = GetResult(ctx_w, ctx, true); + } + + sass_free_context_wrapper(ctx_w); + + info.GetReturnValue().Set(result == 0); +} + +NAN_METHOD(render_file) { + + v8::Local options = Nan::To(info[0]).ToLocalChecked(); + char* input_path = create_string(Nan::Get(options, Nan::New("file").ToLocalChecked())); + struct Sass_File_Context* fctx = sass_make_file_context(input_path); + sass_context_wrapper* ctx_w = sass_make_context_wrapper(); + + ctx_w->async_resource = new Nan::AsyncResource("node-sass:sass_context_wrapper:render_file"); + + if (ExtractOptions(options, fctx, ctx_w, true, false) >= 0) { + + int status = uv_queue_work(uv_default_loop(), &ctx_w->request, compile_it, (uv_after_work_cb)MakeCallback); + assert(status == 0); + } +} + +NAN_METHOD(render_file_sync) { + + v8::Local options = Nan::To(info[0]).ToLocalChecked(); + char* input_path = create_string(Nan::Get(options, Nan::New("file").ToLocalChecked())); + struct Sass_File_Context* fctx = sass_make_file_context(input_path); + struct Sass_Context* ctx = sass_file_context_get_context(fctx); + sass_context_wrapper* ctx_w = sass_make_context_wrapper(); + int result = -1; + + if ((result = ExtractOptions(options, fctx, ctx_w, true, true)) >= 0) { + compile_file(fctx); + result = GetResult(ctx_w, ctx, true); + }; + + free(input_path); + sass_free_context_wrapper(ctx_w); + + info.GetReturnValue().Set(result == 0); +} + +NAN_METHOD(libsass_version) { + info.GetReturnValue().Set(Nan::New(libsass_version()).ToLocalChecked()); +} + +NAN_MODULE_INIT(RegisterModule) { + Nan::SetMethod(target, "render", render); + Nan::SetMethod(target, "renderSync", render_sync); + Nan::SetMethod(target, "renderFile", render_file); + Nan::SetMethod(target, "renderFileSync", render_file_sync); + Nan::SetMethod(target, "libsassVersion", libsass_version); + SassTypes::Factory::initExports(target); +} + +NODE_MODULE(binding, RegisterModule); diff --git a/mybulma/node_modules/node-sass/src/callback_bridge.h b/mybulma/node_modules/node-sass/src/callback_bridge.h new file mode 100644 index 0000000..25f62e1 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/callback_bridge.h @@ -0,0 +1,228 @@ +#ifndef CALLBACK_BRIDGE_H +#define CALLBACK_BRIDGE_H + +#include +#include +#include +#include + +#define COMMA , + +template +class CallbackBridge { + public: + CallbackBridge(v8::Local, bool); + virtual ~CallbackBridge(); + + // Executes the callback + T operator()(std::vector); + + protected: + // We will expose a bridge object to the JS callback that wraps this instance so we don't loose context. + // This is the V8 constructor for such objects. + static Nan::MaybeLocal get_wrapper_constructor(); + static void async_gone(uv_handle_t *handle); + static NAN_METHOD(New); + static NAN_METHOD(ReturnCallback); + static Nan::Persistent wrapper_constructor; + Nan::Persistent wrapper; + + // The callback that will get called in the main thread after the worker thread used for the sass + // compilation step makes a call to uv_async_send() + static void dispatched_async_uv_callback(uv_async_t*); + + // The V8 values sent to our ReturnCallback must be read on the main thread not the sass worker thread. + // This gives a chance to specialized subclasses to transform those values into whatever makes sense to + // sass before we resume the worker thread. + virtual T post_process_return_value(v8::Local) const =0; + + + virtual std::vector> pre_process_args(std::vector) const =0; + + Nan::Callback* callback; + Nan::AsyncResource* async_resource; + bool is_sync; + + uv_mutex_t cv_mutex; + uv_cond_t condition_variable; + uv_async_t *async; + std::vector argv; + bool has_returned; + T return_value; +}; + +template +Nan::Persistent CallbackBridge::wrapper_constructor; + +template +CallbackBridge::CallbackBridge(v8::Local callback, bool is_sync) : callback(new Nan::Callback(callback)), is_sync(is_sync) { + /* + * This is invoked from the main JavaScript thread. + * V8 context is available. + */ + Nan::HandleScope scope; + uv_mutex_init(&this->cv_mutex); + uv_cond_init(&this->condition_variable); + if (!is_sync) { + this->async = new uv_async_t; + this->async->data = (void*) this; + uv_async_init(uv_default_loop(), this->async, (uv_async_cb) dispatched_async_uv_callback); + this->async_resource = new Nan::AsyncResource("node-sass:CallbackBridge"); + } + + v8::Local func = CallbackBridge::get_wrapper_constructor().ToLocalChecked(); + wrapper.Reset(Nan::NewInstance(func).ToLocalChecked()); + Nan::SetInternalFieldPointer(Nan::New(wrapper), 0, this); +} + +template +CallbackBridge::~CallbackBridge() { + delete this->callback; + this->wrapper.Reset(); + uv_cond_destroy(&this->condition_variable); + uv_mutex_destroy(&this->cv_mutex); + + if (!is_sync) { + uv_close((uv_handle_t*)this->async, &async_gone); + delete this->async_resource; + } +} + +template +T CallbackBridge::operator()(std::vector argv) { + // argv.push_back(wrapper); + if (this->is_sync) { + /* + * This is invoked from the main JavaScript thread. + * V8 context is available. + * + * Establish Local<> scope for all functions + * from types invoked by pre_process_args() and + * post_process_args(). + */ + Nan::HandleScope scope; + Nan::TryCatch try_catch; + std::vector> argv_v8 = pre_process_args(argv); + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } + + argv_v8.push_back(Nan::New(wrapper)); + + return this->post_process_return_value( + Nan::Call(*this->callback, argv_v8.size(), &argv_v8[0]).ToLocalChecked() + ); + } else { + /* + * This is invoked from the worker thread. + * No V8 context and functions available. + * Just wait for response from asynchronously + * scheduled JavaScript code + * + * XXX Issue #1048: We block here even if the + * event loop stops and the callback + * would never be executed. + * XXX Issue #857: By waiting here we occupy + * one of the threads taken from the + * uv threadpool. Might deadlock if + * async I/O executed from JavaScript callbacks. + */ + this->argv = argv; + + uv_mutex_lock(&this->cv_mutex); + this->has_returned = false; + uv_async_send(this->async); + while (!this->has_returned) { + uv_cond_wait(&this->condition_variable, &this->cv_mutex); + } + uv_mutex_unlock(&this->cv_mutex); + return this->return_value; + } +} + +template +void CallbackBridge::dispatched_async_uv_callback(uv_async_t *req) { + CallbackBridge* bridge = static_cast(req->data); + + /* + * Function scheduled via uv_async mechanism, therefore + * it is invoked from the main JavaScript thread. + * V8 context is available. + * + * Establish Local<> scope for all functions + * from types invoked by pre_process_args() and + * post_process_args(). + */ + Nan::HandleScope scope; + Nan::TryCatch try_catch; + + std::vector> argv_v8 = bridge->pre_process_args(bridge->argv); + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } + argv_v8.push_back(Nan::New(bridge->wrapper)); + + bridge->callback->Call(argv_v8.size(), &argv_v8[0], bridge->async_resource); + + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } +} + +template +NAN_METHOD(CallbackBridge::ReturnCallback) { + + /* + * Callback function invoked by the user code. + * It is invoked from the main JavaScript thread. + * V8 context is available. + * + * Implicit Local<> handle scope created by NAN_METHOD(.) + */ + CallbackBridge* bridge = static_cast*>(Nan::GetInternalFieldPointer(info.This(), 0)); + Nan::TryCatch try_catch; + + bridge->return_value = bridge->post_process_return_value(info[0]); + + { + uv_mutex_lock(&bridge->cv_mutex); + bridge->has_returned = true; + uv_mutex_unlock(&bridge->cv_mutex); + } + + uv_cond_broadcast(&bridge->condition_variable); + + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } +} + +template +Nan::MaybeLocal CallbackBridge::get_wrapper_constructor() { + /* Uses handle scope created in the CallbackBridge constructor */ + if (wrapper_constructor.IsEmpty()) { + v8::Local tpl = Nan::New(New); + tpl->SetClassName(Nan::New("CallbackBridge").ToLocalChecked()); + tpl->InstanceTemplate()->SetInternalFieldCount(1); + + Nan::SetPrototypeTemplate(tpl, "success", + Nan::New(ReturnCallback) + ); + + wrapper_constructor.Reset(Nan::GetFunction(tpl).ToLocalChecked()); + } + + return Nan::New(wrapper_constructor); +} + +template +NAN_METHOD(CallbackBridge::New) { + info.GetReturnValue().Set(info.This()); +} + +template +void CallbackBridge::async_gone(uv_handle_t *handle) { + delete (uv_async_t *)handle; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/create_string.cpp b/mybulma/node_modules/node-sass/src/create_string.cpp new file mode 100644 index 0000000..27a496f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/create_string.cpp @@ -0,0 +1,21 @@ +#include +#include +#include +#include "create_string.h" + +char* create_string(Nan::MaybeLocal maybevalue) { + v8::Local value; + + if (maybevalue.ToLocal(&value)) { + if (value->IsNull() || !value->IsString()) { + return 0; + } + } else { + return 0; + } + + Nan::Utf8String string(value); + char *str = (char *)malloc(string.length() + 1); + strcpy(str, *string); + return str; +} diff --git a/mybulma/node_modules/node-sass/src/create_string.h b/mybulma/node_modules/node-sass/src/create_string.h new file mode 100644 index 0000000..03c7c92 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/create_string.h @@ -0,0 +1,8 @@ +#ifndef CREATE_STRING_H +#define CREATE_STRING_H + +#include + +char* create_string(Nan::MaybeLocal); + +#endif diff --git a/mybulma/node_modules/node-sass/src/custom_function_bridge.cpp b/mybulma/node_modules/node-sass/src/custom_function_bridge.cpp new file mode 100644 index 0000000..f27c695 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/custom_function_bridge.cpp @@ -0,0 +1,27 @@ +#include +#include +#include "custom_function_bridge.h" +#include "sass_types/factory.h" +#include "sass_types/value.h" + +Sass_Value* CustomFunctionBridge::post_process_return_value(v8::Local _val) const { + SassTypes::Value *value = SassTypes::Factory::unwrap(_val); + if (value) { + return value->get_sass_value(); + } else { + return sass_make_error("A SassValue object was expected."); + } +} + +std::vector> CustomFunctionBridge::pre_process_args(std::vector in) const { + std::vector> argv = std::vector>(); + + for (void* value : in) { + Sass_Value* x = static_cast(value); + SassTypes::Value* y = SassTypes::Factory::create(x); + + argv.push_back(y->get_js_object()); + } + + return argv; +} diff --git a/mybulma/node_modules/node-sass/src/custom_function_bridge.h b/mybulma/node_modules/node-sass/src/custom_function_bridge.h new file mode 100644 index 0000000..99c83ea --- /dev/null +++ b/mybulma/node_modules/node-sass/src/custom_function_bridge.h @@ -0,0 +1,18 @@ +#ifndef CUSTOM_FUNCTION_BRIDGE_H +#define CUSTOM_FUNCTION_BRIDGE_H + +#include +#include +#include +#include "callback_bridge.h" + +class CustomFunctionBridge : public CallbackBridge { + public: + CustomFunctionBridge(v8::Local cb, bool is_sync) : CallbackBridge(cb, is_sync) {} + + private: + Sass_Value* post_process_return_value(v8::Local) const; + std::vector> pre_process_args(std::vector) const; +}; + +#endif diff --git a/mybulma/node_modules/node-sass/src/custom_importer_bridge.cpp b/mybulma/node_modules/node-sass/src/custom_importer_bridge.cpp new file mode 100644 index 0000000..1ae5ae4 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/custom_importer_bridge.cpp @@ -0,0 +1,104 @@ +#include +#include +#include "custom_importer_bridge.h" +#include "create_string.h" + +SassImportList CustomImporterBridge::post_process_return_value(v8::Local returned_value) const { + SassImportList imports = 0; + Nan::HandleScope scope; + + if (returned_value->IsArray()) { + v8::Local array = returned_value.As(); + + imports = sass_make_import_list(array->Length()); + + for (size_t i = 0; i < array->Length(); ++i) { + v8::Local value; + Nan::MaybeLocal unchecked = Nan::Get(array, static_cast(i)); + + if (!unchecked.ToLocal(&value) || !value->IsObject()) { + imports[i] = sass_make_import_entry(0, 0, 0); + sass_import_set_error(imports[i], "returned array must only contain object literals", -1, -1); + continue; + } + + v8::Local object = value.As(); + + if (value->IsNativeError()) { + char* message = create_string(Nan::Get(object, Nan::New("message").ToLocalChecked())); + + imports[i] = sass_make_import_entry(0, 0, 0); + + sass_import_set_error(imports[i], message, -1, -1); + free(message); + } + else { + imports[i] = get_importer_entry(object); + } + } + } + else if (returned_value->IsNativeError()) { + imports = sass_make_import_list(1); + v8::Local object = returned_value.As(); + char* message = create_string(Nan::Get(object, Nan::New("message").ToLocalChecked())); + + imports[0] = sass_make_import_entry(0, 0, 0); + + sass_import_set_error(imports[0], message, -1, -1); + free(message); + } + else if (returned_value->IsObject()) { + imports = sass_make_import_list(1); + imports[0] = get_importer_entry(returned_value.As()); + } + + return imports; +} + +Sass_Import* CustomImporterBridge::check_returned_string(Nan::MaybeLocal value, const char *msg) const +{ + v8::Local checked; + if (value.ToLocal(&checked)) { + if (!checked->IsUndefined() && !checked->IsString()) { + goto err; + } else { + return nullptr; + } + } +err: + auto entry = sass_make_import_entry(0, 0, 0); + sass_import_set_error(entry, msg, -1, -1); + return entry; +} + +Sass_Import* CustomImporterBridge::get_importer_entry(const v8::Local& object) const { + Nan::MaybeLocal returned_file = Nan::Get(object, Nan::New("file").ToLocalChecked()); + Nan::MaybeLocal returned_contents = Nan::Get(object, Nan::New("contents").ToLocalChecked()); + Nan::MaybeLocal returned_map = Nan::Get(object, Nan::New("map").ToLocalChecked()); + Sass_Import *err; + + if ((err = check_returned_string(returned_file, "returned value of `file` must be a string"))) + return err; + + if ((err = check_returned_string(returned_contents, "returned value of `contents` must be a string"))) + return err; + + if ((err = check_returned_string(returned_map, "returned value of `returned_map` must be a string"))) + return err; + + char* path = create_string(returned_file); + char* contents = create_string(returned_contents); + char* srcmap = create_string(returned_map); + + return sass_make_import_entry(path, contents, srcmap); +} + +std::vector> CustomImporterBridge::pre_process_args(std::vector in) const { + std::vector> out; + + for (void* ptr : in) { + out.push_back(Nan::New((char const*)ptr).ToLocalChecked()); + } + + return out; +} diff --git a/mybulma/node_modules/node-sass/src/custom_importer_bridge.h b/mybulma/node_modules/node-sass/src/custom_importer_bridge.h new file mode 100644 index 0000000..0cbd3e6 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/custom_importer_bridge.h @@ -0,0 +1,22 @@ +#ifndef CUSTOM_IMPORTER_BRIDGE_H +#define CUSTOM_IMPORTER_BRIDGE_H + +#include +#include +#include +#include "callback_bridge.h" + +typedef Sass_Import_List SassImportList; + +class CustomImporterBridge : public CallbackBridge { + public: + CustomImporterBridge(v8::Local cb, bool is_sync) : CallbackBridge(cb, is_sync) {} + + private: + SassImportList post_process_return_value(v8::Local) const; + Sass_Import* check_returned_string(Nan::MaybeLocal value, const char *msg) const; + Sass_Import* get_importer_entry(const v8::Local&) const; + std::vector> pre_process_args(std::vector) const; +}; + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass.gyp b/mybulma/node_modules/node-sass/src/libsass.gyp new file mode 100644 index 0000000..add96e8 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass.gyp @@ -0,0 +1,114 @@ +{ + 'targets': [ + { + 'target_name': 'libsass', + 'win_delay_load_hook': 'false', + 'type': 'static_library', + 'defines': [ + 'LIBSASS_VERSION="$nul)) { gem install minitest --no-ri --no-rdoc } + if ($env:Compiler -eq "mingw" -AND -Not (Test-Path "C:\mingw64")) { + # Install MinGW. + $file = "x86_64-4.9.2-release-win32-seh-rt_v4-rev3.7z" + wget https://bintray.com/artifact/download/drewwells/generic/$file -OutFile $file + &7z x -oC:\ $file > $null + } + - set PATH=C:\mingw64\bin;%PATH% + - set CC=gcc + +build_script: + - ps: | + if ($env:Compiler -eq "mingw") { + mingw32-make -j4 sassc + } else { + msbuild /m:4 /p:"Configuration=$env:Config;Platform=$env:Platform" sassc\win\sassc.sln + } + + # print the branding art + mv script/branding script/branding.ps1 + script/branding.ps1 + + # print the version info + &$env:TargetPath -v + ruby -v + +test_script: + - ps: | + $PRNR = $env:APPVEYOR_PULL_REQUEST_NUMBER + if ($PRNR) { + echo "Fetching info for PR $PRNR" + wget https://api.github.com/repos/sass/libsass/pulls/$PRNR -OutFile pr.json + $json = cat pr.json -Raw + $SPEC_PR = [regex]::match($json,'sass\/sass-spec(#|\/pull\/)([0-9]+)').Groups[2].Value + if ($SPEC_PR) { + echo "Checkout sass spec PR $SPEC_PR" + git -C sass-spec fetch -q -u origin pull/$SPEC_PR/head:ci-spec-pr-$SPEC_PR + git -C sass-spec checkout -q --force ci-spec-pr-$SPEC_PR + } + } + $env:TargetPath = Join-Path $pwd.Path $env:TargetPath + If (Test-Path "$env:TargetPath") { + ruby sass-spec/sass-spec.rb -V 3.5 --probe-todo --impl libsass -c $env:TargetPath -s sass-spec/spec + if(-not($?)) { + echo "sass-spec tests failed" + exit 1 + } + } else { + echo "spec runner not found (compile error?)" + exit 1 + } + Write-Host "Explicitly testing the case when cwd has Cyrillic characters: " -nonewline + # See comments in gh-1774 for details. + cd sass-spec/spec/libsass/Sáss-UŢF8/ + &$env:TargetPath ./input.scss 2>&1>$null + if(-not($?)) { + echo "Failed!" + exit 1 + } else { + echo "Success!" + } diff --git a/mybulma/node_modules/node-sass/src/libsass/configure.ac b/mybulma/node_modules/node-sass/src/libsass/configure.ac new file mode 100644 index 0000000..b5a9432 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/configure.ac @@ -0,0 +1,134 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.61]) + +AC_INIT([libsass], m4_esyscmd_s([./version.sh]), [support@moovweb.com]) +AC_CONFIG_SRCDIR([src/ast.hpp]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_HEADERS([src/config.h]) +AC_CONFIG_FILES([include/sass/version.h]) +AC_CONFIG_AUX_DIR([script]) + +# These are flags passed to automake +# Though they look like gcc flags! +AM_INIT_AUTOMAKE([foreign parallel-tests -Wall]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])]) + +# Checks for programs. +AC_PROG_CC +AC_PROG_CXX +AC_LANG_PUSH([C]) +AC_LANG_PUSH([C++]) +AC_GNU_SOURCE +# Check fails on Travis, but it works fine +# AX_CXX_COMPILE_STDCXX_11([ext],[optional]) +AC_CHECK_TOOL([AR], [ar], [false]) +AC_CHECK_TOOL([DLLTOOL], [dlltool], [false]) +AC_CHECK_TOOL([DLLWRAP], [dllwrap], [false]) +AC_CHECK_TOOL([WINDRES], [windres], [false]) +m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) +LT_INIT([dlopen]) + +# Checks for header files. +AC_CHECK_HEADERS([unistd.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_TYPE_SIZE_T + +# Checks for library functions. +AC_FUNC_MALLOC +AC_CHECK_FUNCS([floor getcwd strtol]) + +# Checks for testing. +AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests], [enable testing the build]), + [enable_tests="$enableval"], [enable_tests=no]) + +AS_CASE([$host], [*-*-mingw*], [is_mingw32=yes], [is_mingw32=no]) +AM_CONDITIONAL(COMPILER_IS_MINGW32, test "x$is_mingw32" = "xyes") + +dnl The dlopen() function is in the C library for *BSD and in +dnl libdl on GLIBC-based systems +if test "x$is_mingw32" != "xyes"; then + AC_SEARCH_LIBS([dlopen], [dl dld], [], [ + AC_MSG_ERROR([unable to find the dlopen() function]) + ]) +fi + +if test "x$enable_tests" = "xyes"; then + AC_PROG_CC + AC_PROG_AWK + # test need minitest gem + AC_PATH_PROG(RUBY, [ruby]) + AC_PATH_PROG(TAPOUT, [tapout]) + AC_REQUIRE_AUX_FILE([tap-driver]) + AC_REQUIRE_AUX_FILE([tap-runner]) + AC_ARG_WITH(sassc-dir, + AS_HELP_STRING([--with-sassc-dir=], [specify directory of sassc sources for testing (default: sassc)]), + [sassc_dir="$withval"], [sassc_dir="sassc"]) + AC_CHECK_FILE([$sassc_dir/sassc.c], [], [ + AC_MSG_ERROR([Unable to find sassc directory. +You must clone the sassc repository in this directory or specify +the --with-sassc-dir= argument. +]) + ]) + SASS_SASSC_PATH=$sassc_dir + AC_SUBST(SASS_SASSC_PATH) + + AC_ARG_WITH(sass-spec-dir, + AS_HELP_STRING([--with-sass-spec-dir=], [specify directory of sass-spec for testing (default: sass-spec)]), + [sass_spec_dir="$withval"], [sass_spec_dir="sass-spec"]) + AC_CHECK_FILE([$sass_spec_dir/sass-spec.rb], [], [ + AC_MSG_ERROR([Unable to find sass-spec directory. +You must clone the sass-spec repository in this directory or specify +the --with-sass-spec-dir= argument. +]) + ]) + # Automake doesn't like its tests in an absolute path, so we make it relative. + case $sass_spec_dir in + /*) + SASS_SPEC_PATH=`$RUBY -e "require 'pathname'; puts Pathname.new('$sass_spec_dir').relative_path_from(Pathname.new('$PWD')).to_s"` + ;; + *) + SASS_SPEC_PATH="$sass_spec_dir" + ;; + esac + AC_SUBST(SASS_SPEC_PATH) +else + # we do not really need these paths for non test build + # but automake may error if we do not define them here + SASS_SPEC_PATH=sass-spec + SASS_SASSC_PATH=sassc + AC_SUBST(SASS_SPEC_PATH) + AC_SUBST(SASS_SASSC_PATH) +fi + +AM_CONDITIONAL(ENABLE_TESTS, test "x$enable_tests" = "xyes") + +AC_ARG_ENABLE([coverage], + [AS_HELP_STRING([--enable-coverage], + [enable coverage report for test suite])], + [enable_cov=$enableval], + [enable_cov=no]) + +if test "x$enable_cov" = "xyes"; then + + AC_CHECK_PROG(GCOV, gcov, gcov) + + # Remove all optimization flags from C[XX]FLAGS + changequote({,}) + CFLAGS=`echo "$CFLAGS -O1 -fno-omit-frame-pointer" | $SED -e 's/-O[0-9]*//g'` + CXXFLAGS=`echo "$CXXFLAGS -O1 -fno-omit-frame-pointer" | $SED -e 's/-O[0-9]*//g'` + changequote([,]) + + AC_SUBST(GCOV) +fi + +AM_CONDITIONAL(ENABLE_COVERAGE, test "x$enable_cov" = "xyes") + +AC_SUBST(PACKAGE_VERSION) + +AC_MSG_NOTICE([Building libsass ($VERSION)]) + +AC_CONFIG_FILES([GNUmakefile src/GNUmakefile src/support/libsass.pc]) +AC_OUTPUT diff --git a/mybulma/node_modules/node-sass/src/libsass/contrib/libsass.spec b/mybulma/node_modules/node-sass/src/libsass/contrib/libsass.spec new file mode 100644 index 0000000..a83d5f0 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/contrib/libsass.spec @@ -0,0 +1,66 @@ +Name: libsass +Version: %{version} +Release: 1%{?dist} +Summary: A C/C++ implementation of a Sass compiler + +License: MIT +URL: http://libsass.org +Source0: %{name}-%{version}.tar.gz + +BuildRequires: gcc-c++ >= 4.7 +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool + + +%description +LibSass is a C/C++ port of the Sass engine. The point is to be simple, fast, and easy to integrate. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%prep +%setup -q +autoreconf --force --install + + +%build +%configure --disable-static \ + --disable-tests \ + --enable-shared + +make %{?_smp_mflags} + + +%install +%make_install +find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' + + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + + +%files +%doc Readme.md LICENSE +%{_libdir}/*.so.* + +%files devel +%doc +%{_includedir}/* +%{_libdir}/*.so +%{_libdir}/pkgconfig/*.pc + + +%changelog +* Tue Feb 10 2015 Gawain Lynch - 3.1.0-1 +- Initial SPEC file + diff --git a/mybulma/node_modules/node-sass/src/libsass/contrib/plugin.cpp b/mybulma/node_modules/node-sass/src/libsass/contrib/plugin.cpp new file mode 100644 index 0000000..2f67bb3 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/contrib/plugin.cpp @@ -0,0 +1,60 @@ +#include +#include +#include +#include + +// gcc: g++ -shared plugin.cpp -o plugin.so -fPIC -Llib -lsass +// mingw: g++ -shared plugin.cpp -o plugin.dll -Llib -lsass + +extern "C" const char* ADDCALL libsass_get_version() { + return libsass_version(); +} + +union Sass_Value* custom_function(const union Sass_Value* s_args, Sass_Function_Entry cb, struct Sass_Compiler* comp) +{ + // get context/option struct associated with this compiler + struct Sass_Context* ctx = sass_compiler_get_context(comp); + struct Sass_Options* opts = sass_compiler_get_options(comp); + // get the cookie from function descriptor + void* cookie = sass_function_get_cookie(cb); + // we actually abuse the void* to store an "int" + return sass_make_number((intptr_t)cookie, "px"); +} + +extern "C" Sass_Function_List ADDCALL libsass_load_functions() +{ + // allocate a custom function caller + Sass_Function_Entry c_func = + sass_make_function("foo()", custom_function, (void*)42); + // create list of all custom functions + Sass_Function_List fn_list = sass_make_function_list(1); + // put the only function in this plugin to the list + sass_function_set_list_entry(fn_list, 0, c_func); + // return the list + return fn_list; +} + +Sass_Import_List custom_importer(const char* cur_path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) +{ + // get the cookie from importer descriptor + void* cookie = sass_importer_get_cookie(cb); + // create a list to hold our import entries + Sass_Import_List incs = sass_make_import_list(1); + // create our only import entry (route path back) + incs[0] = sass_make_import_entry(cur_path, 0, 0); + // return imports + return incs; +} + +extern "C" Sass_Importer_List ADDCALL libsass_load_importers() +{ + // allocate a custom function caller + Sass_Importer_Entry c_imp = + sass_make_importer(custom_importer, - 99, (void*)42); + // create list of all custom functions + Sass_Importer_List imp_list = sass_make_importer_list(1); + // put the only function in this plugin to the list + sass_importer_set_list_entry(imp_list, 0, c_imp); + // return the list + return imp_list; +} diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/README.md b/mybulma/node_modules/node-sass/src/libsass/docs/README.md new file mode 100644 index 0000000..a233fae --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/README.md @@ -0,0 +1,20 @@ +Welcome to the LibSass documentation! + +## First Off +LibSass is just a library. To run the code locally (i.e. to compile your stylesheets), you need an implementer. SassC (get it?) is an implementer written in C. There are a number of other implementations of LibSass - for example Node. We encourage you to write your own port - the whole point of LibSass is that we want to bring Sass to many other languages, not just Ruby! + +We're working hard on moving to full parity with Ruby Sass... learn more at the [The-LibSass-Compatibility-Plan](compatibility-plan.md)! + +### Implementing LibSass + +If you're interested in implementing LibSass in your own project see the [API Documentation](api-doc.md) which now includes implementing +your own [Sass functions](api-function.md). You may wish to [look at other implementations](implementations.md) for your language of choice. +Or make your own! + +### Contributing to LibSass + +| Issue Tracker | Issue Triage | Community Guidelines | +|-------------------|----------------------------------|-----------------------------| +| We're always needing help, so check out our issue tracker, help some people out, and read our article on [Contributing](contributing.md)! It's got all the details on what to do! | To help understand the process of triaging bugs, have a look at our [Issue-Triage](triage.md) document. | Oh, and don't forget we always follow [[Sass Community Guidelines|http://sass-lang.com/community-guidelines]]. Be nice and everyone else will be nice too! | + +Please refer to the steps on [Building LibSass](build.md) diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-context-example.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-context-example.md new file mode 100644 index 0000000..4f2a2a0 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-context-example.md @@ -0,0 +1,45 @@ +## Example main.c + +```C +#include +#include "sass/context.h" + +int main( int argc, const char* argv[] ) +{ + + // get the input file from first argument or use default + const char* input = argc > 1 ? argv[1] : "styles.scss"; + + // create the file context and get all related structs + struct Sass_File_Context* file_ctx = sass_make_file_context(input); + struct Sass_Context* ctx = sass_file_context_get_context(file_ctx); + struct Sass_Options* ctx_opt = sass_context_get_options(ctx); + + // configure some options ... + sass_option_set_precision(ctx_opt, 10); + + // context is set up, call the compile step now + int status = sass_compile_file_context(file_ctx); + + // print the result or the error to the stdout + if (status == 0) puts(sass_context_get_output_string(ctx)); + else puts(sass_context_get_error_message(ctx)); + + // release allocated memory + sass_delete_file_context(file_ctx); + + // exit status + return status; + +} +``` + +### Compile main.c + +```bash +gcc -c main.c -o main.o +gcc -o sample main.o -lsass +echo "foo { margin: 21px * 2; }" > foo.scss +./sample foo.scss => "foo { margin: 42px }" +``` + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-context-internal.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-context-internal.md new file mode 100644 index 0000000..1a2818b --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-context-internal.md @@ -0,0 +1,163 @@ +```C +// Input behaviours +enum Sass_Input_Style { + SASS_CONTEXT_NULL, + SASS_CONTEXT_FILE, + SASS_CONTEXT_DATA, + SASS_CONTEXT_FOLDER +}; + +// sass config options structure +struct Sass_Inspect_Options { + + // Output style for the generated css code + // A value from above SASS_STYLE_* constants + enum Sass_Output_Style output_style; + + // Precision for fractional numbers + int precision; + +}; + +// sass config options structure +struct Sass_Output_Options : Sass_Inspect_Options { + + // String to be used for indentation + const char* indent; + // String to be used to for line feeds + const char* linefeed; + + // Emit comments in the generated CSS indicating + // the corresponding source line. + bool source_comments; + +}; + +// sass config options structure +struct Sass_Options : Sass_Output_Options { + + // embed sourceMappingUrl as data uri + bool source_map_embed; + + // embed include contents in maps + bool source_map_contents; + + // create file urls for sources + bool source_map_file_urls; + + // Disable sourceMappingUrl in css output + bool omit_source_map_url; + + // Treat source_string as sass (as opposed to scss) + bool is_indented_syntax_src; + + // The input path is used for source map + // generation. It can be used to define + // something with string compilation or to + // overload the input file path. It is + // set to "stdin" for data contexts and + // to the input file on file contexts. + char* input_path; + + // The output path is used for source map + // generation. LibSass will not write to + // this file, it is just used to create + // information in source-maps etc. + char* output_path; + + // Colon-separated list of paths + // Semicolon-separated on Windows + // Maybe use array interface instead? + char* include_path; + char* plugin_path; + + // Include paths (linked string list) + struct string_list* include_paths; + // Plugin paths (linked string list) + struct string_list* plugin_paths; + + // Path to source map file + // Enables source map generation + // Used to create sourceMappingUrl + char* source_map_file; + + // Directly inserted in source maps + char* source_map_root; + + // Custom functions that can be called from sccs code + Sass_Function_List c_functions; + + // Callback to overload imports + Sass_Importer_List c_importers; + + // List of custom headers + Sass_Importer_List c_headers; + +}; + +// base for all contexts +struct Sass_Context : Sass_Options +{ + + // store context type info + enum Sass_Input_Style type; + + // generated output data + char* output_string; + + // generated source map json + char* source_map_string; + + // error status + int error_status; + char* error_json; + char* error_text; + char* error_message; + // error position + char* error_file; + size_t error_line; + size_t error_column; + const char* error_src; + + // report imported files + char** included_files; + +}; + +// struct for file compilation +struct Sass_File_Context : Sass_Context { + + // no additional fields required + // input_path is already on options + +}; + +// struct for data compilation +struct Sass_Data_Context : Sass_Context { + + // provided source string + char* source_string; + char* srcmap_string; + +}; + +// Compiler states +enum Sass_Compiler_State { + SASS_COMPILER_CREATED, + SASS_COMPILER_PARSED, + SASS_COMPILER_EXECUTED +}; + +// link c and cpp context +struct Sass_Compiler { + // progress status + Sass_Compiler_State state; + // original c context + Sass_Context* c_ctx; + // Sass::Context + Sass::Context* cpp_ctx; + // Sass::Block + Sass::Block_Obj root; +}; +``` + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-context.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-context.md new file mode 100644 index 0000000..dfd10c1 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-context.md @@ -0,0 +1,295 @@ +Sass Contexts come in two flavors: + +- `Sass_File_Context` +- `Sass_Data_Context` + +### Basic Usage + +```C +#include "sass/context.h" +``` + +***Sass_Options*** + +```C +// Precision for fractional numbers +int precision; +``` +```C +// Output style for the generated css code +// A value from above SASS_STYLE_* constants +int output_style; +``` +```C +// Emit comments in the generated CSS indicating +// the corresponding source line. +bool source_comments; +``` +```C +// embed sourceMappingUrl as data uri +bool source_map_embed; +``` +```C +// embed include contents in maps +bool source_map_contents; +``` +```C +// create file urls for sources +bool source_map_file_urls; +``` +```C +// Disable sourceMappingUrl in css output +bool omit_source_map_url; +``` +```C +// Treat source_string as sass (as opposed to scss) +bool is_indented_syntax_src; +``` +```C +// The input path is used for source map +// generating. It can be used to define +// something with string compilation or to +// overload the input file path. It is +// set to "stdin" for data contexts and +// to the input file on file contexts. +char* input_path; +``` +```C +// The output path is used for source map +// generating. LibSass will not write to +// this file, it is just used to create +// information in source-maps etc. +char* output_path; +``` +```C +// String to be used for indentation +const char* indent; +``` +```C +// String to be used to for line feeds +const char* linefeed; +``` +```C +// Colon-separated list of paths +// Semicolon-separated on Windows +char* include_path; +char* plugin_path; +``` +```C +// Additional include paths +// Must be null delimited +char** include_paths; +char** plugin_paths; +``` +```C +// Path to source map file +// Enables the source map generating +// Used to create sourceMappingUrl +char* source_map_file; +``` +```C +// Directly inserted in source maps +char* source_map_root; +``` +```C +// Custom functions that can be called from Sass code +Sass_C_Function_List c_functions; +``` +```C +// Callback to overload imports +Sass_C_Import_Callback importer; +``` + +***Sass_Context*** + +```C +// store context type info +enum Sass_Input_Style type; +```` +```C +// generated output data +char* output_string; +``` +```C +// generated source map json +char* source_map_string; +``` +```C +// error status +int error_status; +char* error_json; +char* error_text; +char* error_message; +// error position +char* error_file; +size_t error_line; +size_t error_column; +``` +```C +// report imported files +char** included_files; +``` + +***Sass_File_Context*** + +```C +// no additional fields required +// input_path is already on options +``` + +***Sass_Data_Context*** + +```C +// provided source string +char* source_string; +``` + +### Sass Context API + +```C +// Forward declaration +struct Sass_Compiler; + +// Forward declaration +struct Sass_Options; +struct Sass_Context; // : Sass_Options +struct Sass_File_Context; // : Sass_Context +struct Sass_Data_Context; // : Sass_Context + +// Create and initialize an option struct +struct Sass_Options* sass_make_options (void); +// Create and initialize a specific context +struct Sass_File_Context* sass_make_file_context (const char* input_path); +struct Sass_Data_Context* sass_make_data_context (char* source_string); + +// Call the compilation step for the specific context +int sass_compile_file_context (struct Sass_File_Context* ctx); +int sass_compile_data_context (struct Sass_Data_Context* ctx); + +// Create a sass compiler instance for more control +struct Sass_Compiler* sass_make_file_compiler (struct Sass_File_Context* file_ctx); +struct Sass_Compiler* sass_make_data_compiler (struct Sass_Data_Context* data_ctx); + +// Execute the different compilation steps individually +// Usefull if you only want to query the included files +int sass_compiler_parse (struct Sass_Compiler* compiler); +int sass_compiler_execute (struct Sass_Compiler* compiler); + +// Release all memory allocated with the compiler +// This does _not_ include any contexts or options +void sass_delete_compiler (struct Sass_Compiler* compiler); +void sass_delete_options(struct Sass_Options* options); + +// Release all memory allocated and also ourself +void sass_delete_file_context (struct Sass_File_Context* ctx); +void sass_delete_data_context (struct Sass_Data_Context* ctx); + +// Getters for Context from specific implementation +struct Sass_Context* sass_file_context_get_context (struct Sass_File_Context* file_ctx); +struct Sass_Context* sass_data_context_get_context (struct Sass_Data_Context* data_ctx); + +// Getters for Context_Options from Sass_Context +struct Sass_Options* sass_context_get_options (struct Sass_Context* ctx); +struct Sass_Options* sass_file_context_get_options (struct Sass_File_Context* file_ctx); +struct Sass_Options* sass_data_context_get_options (struct Sass_Data_Context* data_ctx); +void sass_file_context_set_options (struct Sass_File_Context* file_ctx, struct Sass_Options* opt); +void sass_data_context_set_options (struct Sass_Data_Context* data_ctx, struct Sass_Options* opt); + +// Getters for Sass_Context values +const char* sass_context_get_output_string (struct Sass_Context* ctx); +int sass_context_get_error_status (struct Sass_Context* ctx); +const char* sass_context_get_error_json (struct Sass_Context* ctx); +const char* sass_context_get_error_text (struct Sass_Context* ctx); +const char* sass_context_get_error_message (struct Sass_Context* ctx); +const char* sass_context_get_error_file (struct Sass_Context* ctx); +size_t sass_context_get_error_line (struct Sass_Context* ctx); +size_t sass_context_get_error_column (struct Sass_Context* ctx); +const char* sass_context_get_source_map_string (struct Sass_Context* ctx); +char** sass_context_get_included_files (struct Sass_Context* ctx); + +// Getters for Sass_Compiler options (query import stack) +size_t sass_compiler_get_import_stack_size(struct Sass_Compiler* compiler); +Sass_Import_Entry sass_compiler_get_last_import(struct Sass_Compiler* compiler); +Sass_Import_Entry sass_compiler_get_import_entry(struct Sass_Compiler* compiler, size_t idx); +// Getters for Sass_Compiler options (query function stack) +size_t sass_compiler_get_callee_stack_size(struct Sass_Compiler* compiler); +Sass_Callee_Entry sass_compiler_get_last_callee(struct Sass_Compiler* compiler); +Sass_Callee_Entry sass_compiler_get_callee_entry(struct Sass_Compiler* compiler, size_t idx); + +// Take ownership of memory (value on context is set to 0) +char* sass_context_take_error_json (struct Sass_Context* ctx); +char* sass_context_take_error_text (struct Sass_Context* ctx); +char* sass_context_take_error_message (struct Sass_Context* ctx); +char* sass_context_take_error_file (struct Sass_Context* ctx); +char* sass_context_take_output_string (struct Sass_Context* ctx); +char* sass_context_take_source_map_string (struct Sass_Context* ctx); +``` + +### Sass Options API + +```C +// Getters for Context_Option values +int sass_option_get_precision (struct Sass_Options* options); +enum Sass_Output_Style sass_option_get_output_style (struct Sass_Options* options); +bool sass_option_get_source_comments (struct Sass_Options* options); +bool sass_option_get_source_map_embed (struct Sass_Options* options); +bool sass_option_get_source_map_contents (struct Sass_Options* options); +bool sass_option_get_source_map_file_urls (struct Sass_Options* options); +bool sass_option_get_omit_source_map_url (struct Sass_Options* options); +bool sass_option_get_is_indented_syntax_src (struct Sass_Options* options); +const char* sass_option_get_indent (struct Sass_Options* options); +const char* sass_option_get_linefeed (struct Sass_Options* options); +const char* sass_option_get_input_path (struct Sass_Options* options); +const char* sass_option_get_output_path (struct Sass_Options* options); +const char* sass_option_get_source_map_file (struct Sass_Options* options); +const char* sass_option_get_source_map_root (struct Sass_Options* options); +Sass_C_Function_List sass_option_get_c_functions (struct Sass_Options* options); +Sass_C_Import_Callback sass_option_get_importer (struct Sass_Options* options); + +// Getters for Context_Option include path array +size_t sass_option_get_include_path_size(struct Sass_Options* options); +const char* sass_option_get_include_path(struct Sass_Options* options, size_t i); +// Plugin paths to load dynamic libraries work the same +size_t sass_option_get_plugin_path_size(struct Sass_Options* options); +const char* sass_option_get_plugin_path(struct Sass_Options* options, size_t i); + +// Setters for Context_Option values +void sass_option_set_precision (struct Sass_Options* options, int precision); +void sass_option_set_output_style (struct Sass_Options* options, enum Sass_Output_Style output_style); +void sass_option_set_source_comments (struct Sass_Options* options, bool source_comments); +void sass_option_set_source_map_embed (struct Sass_Options* options, bool source_map_embed); +void sass_option_set_source_map_contents (struct Sass_Options* options, bool source_map_contents); +void sass_option_set_source_map_file_urls (struct Sass_Options* options, bool source_map_file_urls); +void sass_option_set_omit_source_map_url (struct Sass_Options* options, bool omit_source_map_url); +void sass_option_set_is_indented_syntax_src (struct Sass_Options* options, bool is_indented_syntax_src); +void sass_option_set_indent (struct Sass_Options* options, const char* indent); +void sass_option_set_linefeed (struct Sass_Options* options, const char* linefeed); +void sass_option_set_input_path (struct Sass_Options* options, const char* input_path); +void sass_option_set_output_path (struct Sass_Options* options, const char* output_path); +void sass_option_set_plugin_path (struct Sass_Options* options, const char* plugin_path); +void sass_option_set_include_path (struct Sass_Options* options, const char* include_path); +void sass_option_set_source_map_file (struct Sass_Options* options, const char* source_map_file); +void sass_option_set_source_map_root (struct Sass_Options* options, const char* source_map_root); +void sass_option_set_c_functions (struct Sass_Options* options, Sass_C_Function_List c_functions); +void sass_option_set_importer (struct Sass_Options* options, Sass_C_Import_Callback importer); + +// Push function for paths (no manipulation support for now) +void sass_option_push_plugin_path (struct Sass_Options* options, const char* path); +void sass_option_push_include_path (struct Sass_Options* options, const char* path); + +// Resolve a file via the given include paths in the sass option struct +// find_file looks for the exact file name while find_include does a regular sass include +char* sass_find_file (const char* path, struct Sass_Options* opt); +char* sass_find_include (const char* path, struct Sass_Options* opt); + +// Resolve a file relative to last import or include paths in the sass option struct +// find_file looks for the exact file name while find_include does a regular sass include +char* sass_compiler_find_file (const char* path, struct Sass_Compiler* compiler); +char* sass_compiler_find_include (const char* path, struct Sass_Compiler* compiler); +``` + +### More links + +- [Sass Context Example](api-context-example.md) +- [Sass Context Internal](api-context-internal.md) + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-doc.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-doc.md new file mode 100644 index 0000000..3765616 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-doc.md @@ -0,0 +1,215 @@ +## Introduction + +LibSass wouldn't be much good without a way to interface with it. These +interface documentations describe the various functions and data structures +available to implementers. They are split up over three major components, which +have all their own source files (plus some common functionality). + +- [Sass Context](api-context.md) - Trigger and handle the main Sass compilation +- [Sass Value](api-value.md) - Exchange values and its format with LibSass +- [Sass Function](api-function.md) - Get invoked by LibSass for function statments +- [Sass Importer](api-importer.md) - Get invoked by LibSass for @import statments + +### Basic usage + +First you will need to include the header file! +This will automatically load all other headers too! + +```C +#include "sass/context.h" +``` + +## Basic C Example + +```C +#include +#include "sass/context.h" + +int main() { + puts(libsass_version()); + return 0; +} +``` + +```bash +gcc -Wall version.c -lsass -o version && ./version +``` + +## More C Examples + +- [Sample code for Sass Context](api-context-example.md) +- [Sample code for Sass Value](api-value-example.md) +- [Sample code for Sass Function](api-function-example.md) +- [Sample code for Sass Importer](api-importer-example.md) + +## Compiling your code + +The most important is your sass file (or string of sass code). With this, you +will want to start a LibSass compiler. Here is some pseudocode describing the +process. The compiler has two different modes: direct input as a string with +`Sass_Data_Context` or LibSass will do file reading for you by using +`Sass_File_Context`. See the code for a list of options available +[Sass_Options](https://github.com/sass/libsass/blob/36feef0/include/sass/interface.h#L18) + +**Building a file compiler** + + context = sass_make_file_context("file.scss") + options = sass_file_context_get_options(context) + sass_option_set_precision(options, 1) + sass_option_set_source_comments(options, true) + + sass_file_context_set_options(context, options) + + compiler = sass_make_file_compiler(sass_context) + sass_compiler_parse(compiler) + sass_compiler_execute(compiler) + + output = sass_context_get_output_string(context) + // Retrieve errors during compilation + error_status = sass_context_get_error_status(context) + json_error = sass_context_get_error_json(context) + // Release memory dedicated to the C compiler + sass_delete_compiler(compiler) + +**Building a data compiler** + + context = sass_make_data_context("div { a { color: blue; } }") + options = sass_data_context_get_options(context) + sass_option_set_precision(options, 1) + sass_option_set_source_comments(options, true) + + sass_data_context_set_options(context, options) + + compiler = sass_make_data_compiler(context) + sass_compiler_parse(compiler) + sass_compiler_execute(compiler) + + output = sass_context_get_output_string(context) + // div a { color: blue; } + // Retrieve errors during compilation + error_status = sass_context_get_error_status(context) + json_error = sass_context_get_error_json(context) + // Release memory dedicated to the C compiler + sass_delete_compiler(compiler) + +## Sass Context Internals + +Everything is stored in structs: + +```C +struct Sass_Options; +struct Sass_Context : Sass_Options; +struct Sass_File_context : Sass_Context; +struct Sass_Data_context : Sass_Context; +``` + +This mirrors very well how `libsass` uses these structures. + +- `Sass_Options` holds everything you feed in before the compilation. It also hosts +`input_path` and `output_path` options, because they are used to generate/calculate +relative links in source-maps. The `input_path` is shared with `Sass_File_Context`. +- `Sass_Context` holds all the data returned by the compilation step. +- `Sass_File_Context` is a specific implementation that requires no additional fields +- `Sass_Data_Context` is a specific implementation that adds the `input_source` field + +Structs can be down-casted to access `context` or `options`! + +## Memory handling and life-cycles + +We keep memory around for as long as the main [context](api-context.md) object +is not destroyed (`sass_delete_context`). LibSass will create copies of most +inputs/options beside the main sass code. You need to allocate and fill that +buffer before passing it to LibSass. You may also overtake memory management +from libsass for certain return values (i.e. `sass_context_take_output_string`). + +```C +// to allocate buffer to be filled +void* sass_alloc_memory(size_t size); +// to allocate a buffer from existing string +char* sass_copy_c_string(const char* str); +// to free overtaken memory when done +void sass_free_memory(void* ptr); +``` + +## Miscellaneous API functions + +```C +// Some convenient string helper function +char* sass_string_unquote (const char* str); +char* sass_string_quote (const char* str, const char quote_mark); + +// Get compiled libsass version +const char* libsass_version(void); + +// Implemented sass language version +// Hardcoded version 3.4 for time being +const char* libsass_language_version(void); +``` + +## Common Pitfalls + +**input_path** + +The `input_path` is part of `Sass_Options`, but it also is the main option for +`Sass_File_Context`. It is also used to generate relative file links in source- +maps. Therefore it is pretty usefull to pass this information if you have a +`Sass_Data_Context` and know the original path. + +**output_path** + +Be aware that `libsass` does not write the output file itself. This option +merely exists to give `libsass` the proper information to generate links in +source-maps. The file has to be written to the disk by the +binding/implementation. If the `output_path` is omitted, `libsass` tries to +extrapolate one from the `input_path` by replacing (or adding) the file ending +with `.css`. + +## Error Codes + +The `error_code` is integer value which indicates the type of error that +occurred inside the LibSass process. Following is the list of error codes along +with the short description: + +* 1: normal errors like parsing or `eval` errors +* 2: bad allocation error (memory error) +* 3: "untranslated" C++ exception (`throw std::exception`) +* 4: legacy string exceptions ( `throw const char*` or `std::string` ) +* 5: Some other unknown exception + +Although for the API consumer, error codes do not offer much value except +indicating whether *any* error occurred during the compilation, it helps +debugging the LibSass internal code paths. + +## Real-World Implementations + +The proof is in the pudding, so we have highlighted a few implementations that +should be on par with the latest LibSass interface version. Some of them may not +have all features implemented! + +1. [Perl Example](https://github.com/sass/perl-libsass/blob/master/lib/CSS/Sass.xs) +2. [Go Example](https://godoc.org/github.com/wellington/go-libsass#example-Compiler--Stdin) +3. [Node Example](https://github.com/sass/node-sass/blob/master/src/binding.cpp) + +## ABI forward compatibility + +We use a functional API to make dynamic linking more robust and future +compatible. The API is not yet 100% stable, so we do not yet guarantee +[ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html) forward +compatibility. + +## Plugins (experimental) + +LibSass can load plugins from directories. Just define `plugin_path` on context +options to load all plugins from the directories. To implement plugins, please +consult the following example implementations. + +- https://github.com/mgreter/libsass-glob +- https://github.com/mgreter/libsass-math +- https://github.com/mgreter/libsass-digest + +## Internal Structs + +- [Sass Context Internals](api-context-internal.md) +- [Sass Value Internals](api-value-internal.md) +- [Sass Function Internals](api-function-internal.md) +- [Sass Importer Internals](api-importer-internal.md) diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-function-example.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-function-example.md new file mode 100644 index 0000000..38608e1 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-function-example.md @@ -0,0 +1,67 @@ +## Example main.c + +```C +#include +#include +#include "sass/context.h" + +union Sass_Value* call_fn_foo(const union Sass_Value* s_args, Sass_Function_Entry cb, struct Sass_Compiler* comp) +{ + // get context/option struct associated with this compiler + struct Sass_Context* ctx = sass_compiler_get_context(comp); + struct Sass_Options* opts = sass_compiler_get_options(comp); + // get information about previous importer entry from the stack + Sass_Import_Entry import = sass_compiler_get_last_import(comp); + const char* prev_abs_path = sass_import_get_abs_path(import); + const char* prev_imp_path = sass_import_get_imp_path(import); + // get the cookie from function descriptor + void* cookie = sass_function_get_cookie(cb); + // we actually abuse the void* to store an "int" + return sass_make_number((intptr_t)cookie, "px"); +} + +int main( int argc, const char* argv[] ) +{ + + // get the input file from first argument or use default + const char* input = argc > 1 ? argv[1] : "styles.scss"; + + // create the file context and get all related structs + struct Sass_File_Context* file_ctx = sass_make_file_context(input); + struct Sass_Context* ctx = sass_file_context_get_context(file_ctx); + struct Sass_Options* ctx_opt = sass_context_get_options(ctx); + + // allocate a custom function caller + Sass_Function_Entry fn_foo = + sass_make_function("foo()", call_fn_foo, (void*)42); + + // create list of all custom functions + Sass_Function_List fn_list = sass_make_function_list(1); + sass_function_set_list_entry(fn_list, 0, fn_foo); + sass_option_set_c_functions(ctx_opt, fn_list); + + // context is set up, call the compile step now + int status = sass_compile_file_context(file_ctx); + + // print the result or the error to the stdout + if (status == 0) puts(sass_context_get_output_string(ctx)); + else puts(sass_context_get_error_message(ctx)); + + // release allocated memory + sass_delete_file_context(file_ctx); + + // exit status + return status; + +} +``` + +### Compile main.c + +```bash +gcc -c main.c -o main.o +gcc -o sample main.o -lsass +echo "foo { margin: foo(); }" > foo.scss +./sample foo.scss => "foo { margin: 42px }" +``` + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-function-internal.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-function-internal.md new file mode 100644 index 0000000..69d81d0 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-function-internal.md @@ -0,0 +1,8 @@ +```C +// Struct to hold custom function callback +struct Sass_Function { + const char* signature; + Sass_Function_Fn function; + void* cookie; +}; +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-function.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-function.md new file mode 100644 index 0000000..8d9d97c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-function.md @@ -0,0 +1,74 @@ +Sass functions are used to define new custom functions callable by Sass code. They are also used to overload debug or error statements. You can also define a fallback function, which is called for every unknown function found in the Sass code. Functions get passed zero or more `Sass_Values` (a `Sass_List` value) and they must also return a `Sass_Value`. Return a `Sass_Error` if you want to signal an error. + +## Special signatures + +- `*` - Fallback implementation +- `@warn` - Overload warn statements +- `@error` - Overload error statements +- `@debug` - Overload debug statements + +Note: The fallback implementation will be given the name of the called function as the first argument, before all the original function arguments. These features are pretty new and should be considered experimental. + +### Basic Usage + +```C +#include "sass/functions.h" +``` + +## Sass Function API + +```C +// Forward declaration +struct Sass_Compiler; +struct Sass_Function; + +// Typedef helpers for custom functions lists +typedef struct Sass_Function (*Sass_Function_Entry); +typedef struct Sass_Function* (*Sass_Function_List); +// Typedef defining function signature and return type +typedef union Sass_Value* (*Sass_Function_Fn) + (const union Sass_Value*, Sass_Function_Entry cb, struct Sass_Compiler* compiler); + +// Creators for sass function list and function descriptors +Sass_Function_List sass_make_function_list (size_t length); +Sass_Function_Entry sass_make_function (const char* signature, Sass_Function_Fn cb, void* cookie); +// In case you need to free them yourself +void sass_delete_function (Sass_Function_Entry entry); +void sass_delete_function_list (Sass_Function_List list); + +// Setters and getters for callbacks on function lists +Sass_Function_Entry sass_function_get_list_entry(Sass_Function_List list, size_t pos); +void sass_function_set_list_entry(Sass_Function_List list, size_t pos, Sass_Function_Entry cb); + +// Setters to insert an entry into the import list (you may also use [] access directly) +// Since we are dealing with pointers they should have a guaranteed and fixed size +void sass_import_set_list_entry (Sass_Import_List list, size_t idx, Sass_Import_Entry entry); +Sass_Import_Entry sass_import_get_list_entry (Sass_Import_List list, size_t idx); + +// Getters for custom function descriptors +const char* sass_function_get_signature (Sass_Function_Entry cb); +Sass_Function_Fn sass_function_get_function (Sass_Function_Entry cb); +void* sass_function_get_cookie (Sass_Function_Entry cb); + +// Getters for callee entry +const char* sass_callee_get_name (Sass_Callee_Entry); +const char* sass_callee_get_path (Sass_Callee_Entry); +size_t sass_callee_get_line (Sass_Callee_Entry); +size_t sass_callee_get_column (Sass_Callee_Entry); +enum Sass_Callee_Type sass_callee_get_type (Sass_Callee_Entry); +Sass_Env_Frame sass_callee_get_env (Sass_Callee_Entry); + +// Getters and Setters for environments (lexical, local and global) +union Sass_Value* sass_env_get_lexical (Sass_Env_Frame, const char*); +void sass_env_set_lexical (Sass_Env_Frame, const char*, union Sass_Value*); +union Sass_Value* sass_env_get_local (Sass_Env_Frame, const char*); +void sass_env_set_local (Sass_Env_Frame, const char*, union Sass_Value*); +union Sass_Value* sass_env_get_global (Sass_Env_Frame, const char*); +void sass_env_set_global (Sass_Env_Frame, const char*, union Sass_Value*); +``` + +### More links + +- [Sass Function Example](api-function-example.md) +- [Sass Function Internal](api-function-internal.md) + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-importer-example.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-importer-example.md new file mode 100644 index 0000000..d83bf26 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-importer-example.md @@ -0,0 +1,112 @@ +## Example importer.c + +```C +#include +#include +#include "sass/context.h" + +Sass_Import_List sass_importer(const char* path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) +{ + // get the cookie from importer descriptor + void* cookie = sass_importer_get_cookie(cb); + Sass_Import_List list = sass_make_import_list(2); + char* local = sass_copy_c_string("local { color: green; }"); + char* remote = sass_copy_c_string("remote { color: red; }"); + list[0] = sass_make_import_entry("/tmp/styles.scss", local, 0); + list[1] = sass_make_import_entry("http://www.example.com", remote, 0); + return list; +} + +int main( int argc, const char* argv[] ) +{ + + // get the input file from first argument or use default + const char* input = argc > 1 ? argv[1] : "styles.scss"; + + // create the file context and get all related structs + struct Sass_File_Context* file_ctx = sass_make_file_context(input); + struct Sass_Context* ctx = sass_file_context_get_context(file_ctx); + struct Sass_Options* ctx_opt = sass_context_get_options(ctx); + + // allocate custom importer + Sass_Importer_Entry c_imp = + sass_make_importer(sass_importer, 0, 0); + // create list for all custom importers + Sass_Importer_List imp_list = sass_make_importer_list(1); + // put only the importer on to the list + sass_importer_set_list_entry(imp_list, 0, c_imp); + // register list on to the context options + sass_option_set_c_importers(ctx_opt, imp_list); + // context is set up, call the compile step now + int status = sass_compile_file_context(file_ctx); + + // print the result or the error to the stdout + if (status == 0) puts(sass_context_get_output_string(ctx)); + else puts(sass_context_get_error_message(ctx)); + + // release allocated memory + sass_delete_file_context(file_ctx); + + // exit status + return status; + +} +``` + +Compile importer.c + +```bash +gcc -c importer.c -o importer.o +gcc -o importer importer.o -lsass +echo "@import 'foobar';" > importer.scss +./importer importer.scss +``` + +## Importer Behavior Examples + +```C +Sass_Import_List importer(const char* path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) { + // let LibSass handle the import request + return NULL; +} + +Sass_Import_List importer(const char* path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) { + // let LibSass handle the request + // swallows »@import "http://…"« pass-through + // (arguably a bug) + Sass_Import_List list = sass_make_import_list(1); + list[0] = sass_make_import_entry(path, 0, 0); + return list; +} + +Sass_Import_List importer(const char* path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) { + // return an error to halt execution + Sass_Import_List list = sass_make_import_list(1); + const char* message = "some error message"; + list[0] = sass_make_import_entry(path, 0, 0); + sass_import_set_error(list[0], sass_copy_c_string(message), 0, 0); + return list; +} + +Sass_Import_List importer(const char* path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) { + // let LibSass load the file identifed by the importer + Sass_Import_List list = sass_make_import_list(1); + list[0] = sass_make_import_entry("/tmp/file.scss", 0, 0); + return list; +} + +Sass_Import_List importer(const char* path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) { + // completely hide the import + // (arguably a bug) + Sass_Import_List list = sass_make_import_list(0); + return list; +} + +Sass_Import_List importer(const char* path, Sass_Importer_Entry cb, struct Sass_Compiler* comp) { + // completely hide the import + // (arguably a bug) + Sass_Import_List list = sass_make_import_list(1); + list[0] = sass_make_import_entry(0, 0, 0); + return list; +} +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-importer-internal.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-importer-internal.md new file mode 100644 index 0000000..63d70fe --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-importer-internal.md @@ -0,0 +1,20 @@ +```C +// External import entry +struct Sass_Import { + char* imp_path; // path as found in the import statement + char *abs_path; // path after importer has resolved it + char* source; + char* srcmap; + // error handling + char* error; + size_t line; + size_t column; +}; + +// Struct to hold importer callback +struct Sass_Importer { + Sass_Importer_Fn importer; + double priority; + void* cookie; +}; +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-importer.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-importer.md new file mode 100644 index 0000000..b626500 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-importer.md @@ -0,0 +1,86 @@ +By using custom importers, Sass stylesheets can be implemented in any possible way, such as by being loaded via a remote server. Please note: this feature is experimental and is implemented differently than importers in Ruby Sass. Imports must be relative to the parent import context and therefore we need to pass this information to the importer callback. This is currently done by passing the complete import string/path of the previous import context. + +## Return Imports + +You actually have to return a list of imports, since some importers may want to import multiple files from one import statement (ie. a glob/star importer). The memory you pass with source and srcmap is taken over by LibSass and freed automatically when the import is done. You are also allowed to return `0` instead of a list, which will tell LibSass to handle the import by itself (as if no custom importer was in use). + +```C +Sass_Import_Entry* rv = sass_make_import_list(1); +rv[0] = sass_make_import(rel, abs, source, srcmap); +``` + +Every import will then be included in LibSass. You are allowed to only return a file path without any loaded source. This way you can ie. implement rewrite rules for import paths and leave the loading part for LibSass. + +Please note that LibSass doesn't use the srcmap parameter yet. It has been added to not deprecate the C-API once support has been implemented. It will be used to re-map the actual sourcemap with the provided ones. + +### Basic Usage + +```C +#include "sass/functions.h" +``` + +## Sass Importer API + +```C +// Forward declaration +struct Sass_Import; + +// Forward declaration +struct Sass_C_Import_Descriptor; + +// Typedef defining the custom importer callback +typedef struct Sass_C_Import_Descriptor (*Sass_C_Import_Callback); +// Typedef defining the importer c function prototype +typedef Sass_Import_Entry* (*Sass_C_Import_Fn) (const char* url, const char* prev, void* cookie); + +// Creators for custom importer callback (with some additional pointer) +// The pointer is mostly used to store the callback into the actual function +Sass_C_Import_Callback sass_make_importer (Sass_C_Import_Fn, void* cookie); + +// Getters for import function descriptors +Sass_C_Import_Fn sass_import_get_function (Sass_C_Import_Callback fn); +void* sass_import_get_cookie (Sass_C_Import_Callback fn); + +// Deallocator for associated memory +void sass_delete_importer (Sass_C_Import_Callback fn); + +// Creator for sass custom importer return argument list +Sass_Import_Entry* sass_make_import_list (size_t length); +// Creator for a single import entry returned by the custom importer inside the list +Sass_Import_Entry sass_make_import_entry (const char* path, char* source, char* srcmap); +Sass_Import_Entry sass_make_import (const char* rel, const char* abs, char* source, char* srcmap); + +// set error message to abort import and to print out a message (path from existing object is used in output) +Sass_Import_Entry sass_import_set_error(Sass_Import_Entry import, const char* message, size_t line, size_t col); + +// Setters to insert an entry into the import list (you may also use [] access directly) +// Since we are dealing with pointers they should have a guaranteed and fixed size +void sass_import_set_list_entry (Sass_Import_Entry* list, size_t idx, Sass_Import_Entry entry); +Sass_Import_Entry sass_import_get_list_entry (Sass_Import_Entry* list, size_t idx); + +// Getters for import entry +const char* sass_import_get_imp_path (Sass_Import_Entry); +const char* sass_import_get_abs_path (Sass_Import_Entry); +const char* sass_import_get_source (Sass_Import_Entry); +const char* sass_import_get_srcmap (Sass_Import_Entry); +// Explicit functions to take ownership of these items +// The property on our struct will be reset to NULL +char* sass_import_take_source (Sass_Import_Entry); +char* sass_import_take_srcmap (Sass_Import_Entry); + +// Getters for import error entries +size_t sass_import_get_error_line (Sass_Import_Entry); +size_t sass_import_get_error_column (Sass_Import_Entry); +const char* sass_import_get_error_message (Sass_Import_Entry); + +// Deallocator for associated memory (incl. entries) +void sass_delete_import_list (Sass_Import_Entry*); +// Just in case we have some stray import structs +void sass_delete_import (Sass_Import_Entry); +``` + +### More links + +- [Sass Importer Example](api-importer-example.md) +- [Sass Importer Internal](api-importer-internal.md) + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-value-example.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-value-example.md new file mode 100644 index 0000000..690654e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-value-example.md @@ -0,0 +1,55 @@ +## Example operation.c + +```C +#include +#include +#include "sass/values.h" + +int main( int argc, const char* argv[] ) +{ + + // create two new sass values to be added + union Sass_Value* string = sass_make_string("String"); + union Sass_Value* number = sass_make_number(42, "nits"); + + // invoke the add operation which returns a new sass value + union Sass_Value* total = sass_value_op(ADD, string, number); + + // no further use for the two operands + sass_delete_value(string); + sass_delete_value(number); + + // this works since libsass will always return a + // string for add operations with a string as the + // left hand side. But you should never rely on it! + puts(sass_string_get_value(total)); + + // invoke stringification (uncompressed with precision of 5) + union Sass_Value* result = sass_value_stringify(total, false, 5); + + // no further use for the sum + sass_delete_value(total); + + // print the result - you may want to make + // sure result is indeed a string, altough + // stringify guarantees to return a string + // if (sass_value_is_string(result)) {} + // really depends on your level of paranoia + puts(sass_string_get_value(result)); + + // finally free result + sass_delete_value(result); + + // exit status + return 0; + +} +``` + +## Compile operation.c + +```bash +gcc -c operation.c -o operation.o +gcc -o operation operation.o -lsass +./operation # => String42nits +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-value-internal.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-value-internal.md new file mode 100644 index 0000000..fed4022 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-value-internal.md @@ -0,0 +1,76 @@ +```C +struct Sass_Unknown { + enum Sass_Tag tag; +}; + +struct Sass_Boolean { + enum Sass_Tag tag; + bool value; +}; + +struct Sass_Number { + enum Sass_Tag tag; + double value; + char* unit; +}; + +struct Sass_Color { + enum Sass_Tag tag; + double r; + double g; + double b; + double a; +}; + +struct Sass_String { + enum Sass_Tag tag; + char* value; +}; + +struct Sass_List { + enum Sass_Tag tag; + enum Sass_Separator separator; + size_t length; + // null terminated "array" + union Sass_Value** values; +}; + +struct Sass_Map { + enum Sass_Tag tag; + size_t length; + struct Sass_MapPair* pairs; +}; + +struct Sass_Null { + enum Sass_Tag tag; +}; + +struct Sass_Error { + enum Sass_Tag tag; + char* message; +}; + +struct Sass_Warning { + enum Sass_Tag tag; + char* message; +}; + +union Sass_Value { + struct Sass_Unknown unknown; + struct Sass_Boolean boolean; + struct Sass_Number number; + struct Sass_Color color; + struct Sass_String string; + struct Sass_List list; + struct Sass_Map map; + struct Sass_Null null; + struct Sass_Error error; + struct Sass_Warning warning; +}; + +struct Sass_MapPair { + union Sass_Value* key; + union Sass_Value* value; +}; +``` + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/api-value.md b/mybulma/node_modules/node-sass/src/libsass/docs/api-value.md new file mode 100644 index 0000000..d786258 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/api-value.md @@ -0,0 +1,154 @@ +`Sass_Values` are used to pass values and their types between the implementer +and LibSass. Sass knows various different value types (including nested arrays +and hash-maps). If you implement a binding to another programming language, you +have to find a way to [marshal][1] (convert) `Sass_Values` between the target +language and C. `Sass_Values` are currently only used by custom functions, but +it should also be possible to use them without a compiler context. + +[1]: https://en.wikipedia.org/wiki/Marshalling_%28computer_science%29 + +### Basic Usage + +```C +#include "sass/values.h" +``` + +```C +// Type for Sass values +enum Sass_Tag { + SASS_BOOLEAN, + SASS_NUMBER, + SASS_COLOR, + SASS_STRING, + SASS_LIST, + SASS_MAP, + SASS_NULL, + SASS_ERROR, + SASS_WARNING +}; + +// Tags for denoting Sass list separators +enum Sass_Separator { + SASS_COMMA, + SASS_SPACE, + // only used internally to represent a hash map before evaluation + // otherwise we would be too early to check for duplicate keys + SASS_HASH +}; + +// Value Operators +enum Sass_OP { + AND, OR, // logical connectives + EQ, NEQ, GT, GTE, LT, LTE, // arithmetic relations + ADD, SUB, MUL, DIV, MOD, // arithmetic functions + NUM_OPS // so we know how big to make the op table +}; +``` + +### Sass Value API + +```C +// Forward declaration +union Sass_Value; + +// Creator functions for all value types +union Sass_Value* sass_make_null (void); +union Sass_Value* sass_make_boolean (bool val); +union Sass_Value* sass_make_string (const char* val); +union Sass_Value* sass_make_qstring (const char* val); +union Sass_Value* sass_make_number (double val, const char* unit); +union Sass_Value* sass_make_color (double r, double g, double b, double a); +union Sass_Value* sass_make_list (size_t len, enum Sass_Separator sep, bool is_bracketed); +union Sass_Value* sass_make_map (size_t len); +union Sass_Value* sass_make_error (const char* msg); +union Sass_Value* sass_make_warning (const char* msg); + +// Generic destructor function for all types +// Will release memory of all associated Sass_Values +// Means we will delete recursively for lists and maps +void sass_delete_value (union Sass_Value* val); + +// Make a deep cloned copy of the given sass value +union Sass_Value* sass_clone_value (const union Sass_Value* val); + +// Stringify a Sass_Values and also return the result as a Sass_Value (of type STRING) +union Sass_Value* sass_value_stringify (const union Sass_Value* a, bool compressed, int precision); + +// Execute an operation for two Sass_Values and return the result as a Sass_Value too +union Sass_Value* sass_value_op (enum Sass_OP op, const union Sass_Value* a, const union Sass_Value* b); + +// Return the sass tag for a generic sass value +// Check is needed before accessing specific values! +enum Sass_Tag sass_value_get_tag (const union Sass_Value* v); + +// Check value to be of a specific type +// Can also be used before accessing properties! +bool sass_value_is_null (const union Sass_Value* v); +bool sass_value_is_number (const union Sass_Value* v); +bool sass_value_is_string (const union Sass_Value* v); +bool sass_value_is_boolean (const union Sass_Value* v); +bool sass_value_is_color (const union Sass_Value* v); +bool sass_value_is_list (const union Sass_Value* v); +bool sass_value_is_map (const union Sass_Value* v); +bool sass_value_is_error (const union Sass_Value* v); +bool sass_value_is_warning (const union Sass_Value* v); + +// Getters and setters for Sass_Number +double sass_number_get_value (const union Sass_Value* v); +void sass_number_set_value (union Sass_Value* v, double value); +const char* sass_number_get_unit (const union Sass_Value* v); +void sass_number_set_unit (union Sass_Value* v, char* unit); + +// Getters and setters for Sass_String +const char* sass_string_get_value (const union Sass_Value* v); +void sass_string_set_value (union Sass_Value* v, char* value); +bool sass_string_is_quoted(const union Sass_Value* v); +void sass_string_set_quoted(union Sass_Value* v, bool quoted); + +// Getters and setters for Sass_Boolean +bool sass_boolean_get_value (const union Sass_Value* v); +void sass_boolean_set_value (union Sass_Value* v, bool value); + +// Getters and setters for Sass_Color +double sass_color_get_r (const union Sass_Value* v); +void sass_color_set_r (union Sass_Value* v, double r); +double sass_color_get_g (const union Sass_Value* v); +void sass_color_set_g (union Sass_Value* v, double g); +double sass_color_get_b (const union Sass_Value* v); +void sass_color_set_b (union Sass_Value* v, double b); +double sass_color_get_a (const union Sass_Value* v); +void sass_color_set_a (union Sass_Value* v, double a); + +// Getter for the number of items in list +size_t sass_list_get_length (const union Sass_Value* v); +// Getters and setters for Sass_List +enum Sass_Separator sass_list_get_separator (const union Sass_Value* v); +void sass_list_set_separator (union Sass_Value* v, enum Sass_Separator value); +bool sass_list_get_is_bracketed (const union Sass_Value* v); +void sass_list_set_is_bracketed (union Sass_Value* v, bool value); +// Getters and setters for Sass_List values +union Sass_Value* sass_list_get_value (const union Sass_Value* v, size_t i); +void sass_list_set_value (union Sass_Value* v, size_t i, union Sass_Value* value); + +// Getter for the number of items in map +size_t sass_map_get_length (const union Sass_Value* v); +// Getters and setters for Sass_Map keys and values +union Sass_Value* sass_map_get_key (const union Sass_Value* v, size_t i); +void sass_map_set_key (union Sass_Value* v, size_t i, union Sass_Value*); +union Sass_Value* sass_map_get_value (const union Sass_Value* v, size_t i); +void sass_map_set_value (union Sass_Value* v, size_t i, union Sass_Value*); + +// Getters and setters for Sass_Error +char* sass_error_get_message (const union Sass_Value* v); +void sass_error_set_message (union Sass_Value* v, char* msg); + +// Getters and setters for Sass_Warning +char* sass_warning_get_message (const union Sass_Value* v); +void sass_warning_set_message (union Sass_Value* v, char* msg); +``` + +### More links + +- [Sass Value Example](api-value-example.md) +- [Sass Value Internal](api-value-internal.md) + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-on-darwin.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-on-darwin.md new file mode 100644 index 0000000..119a535 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-on-darwin.md @@ -0,0 +1,27 @@ +To install LibSass, make sure the OS X build tools are installed: + + xcode-select --install + +## Homebrew + +To install homebrew, see [http://brew.sh](http://brew.sh) + + ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + +You can install the latest version of LibSass quite easily with brew. + + brew install --HEAD libsass + +To update this, do: + + brew reinstall --HEAD libsass + +Brew will build static and shared libraries, and a `libsass.pc` file in `/usr/local/lib/pkgconfig`. + +To use `libsass.pc`, make sure this path is in your `PKG_CONFIG_PATH` + + export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig + +## Manually + +See the linux instructions [Building-with-autotools](build-with-autotools.md) or [Building-with-makefiles](build-with-makefiles.md) diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-on-gentoo.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-on-gentoo.md new file mode 100644 index 0000000..601b1fe --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-on-gentoo.md @@ -0,0 +1,55 @@ +Here are two ebuilds to compile LibSass and sassc on gentoo linux. If you do not know how to use these ebuilds, you should probably read the gentoo wiki page about [portage overlays](http://wiki.gentoo.org/wiki/Overlay). + +## www-misc/libsass/libsass-9999.ebuild +```ebuild +EAPI=4 + +inherit eutils git-2 autotools + +DESCRIPTION="A C/C++ implementation of a Sass compiler." +HOMEPAGE="http://libsass.org/" +EGIT_PROJECT='libsass' +EGIT_REPO_URI="https://github.com/sass/libsass.git" +LICENSE="MIT" +SLOT="0" +KEYWORDS="" +IUSE="" +DEPEND="" +RDEPEND="${DEPEND}" +DEPEND="${DEPEND}" + +pkg_pretend() { + # older gcc is not supported + local major=$(gcc-major-version) + local minor=$(gcc-minor-version) + [[ "${MERGE_TYPE}" != "binary" && ( $major > 4 || ( $major == 4 && $minor < 5 ) ) ]] && \ + die "Sorry, but gcc earlier than 4.5 will not work for LibSass." +} + +src_prepare() { + eautoreconf +} +``` + +## www-misc/sassc/sassc-9999.ebuild +```ebuild +EAPI=4 + +inherit eutils git-2 autotools + +DESCRIPTION="Command Line Tool for LibSass." +HOMEPAGE="http://libsass.org/" +EGIT_PROJECT='sassc' +EGIT_REPO_URI="https://github.com/sass/sassc.git" +LICENSE="MIT" +SLOT="0" +KEYWORDS="" +IUSE="" +DEPEND="www-misc/libsass" +RDEPEND="${DEPEND}" +DEPEND="${DEPEND}" + +src_prepare() { + eautoreconf +} +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-on-windows.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-on-windows.md new file mode 100644 index 0000000..0afaa2e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-on-windows.md @@ -0,0 +1,139 @@ +We support builds via MingGW and via Visual Studio Community 2013. +Both should be considered experimental (MinGW was better tested)! + +## Building via MingGW (makefiles) + +First grab the latest [MinGW for windows][1] installer. Once it is installed, you can click on continue or open the Installation Manager via `bin\mingw-get.exe`. + +You need to have the following components installed: +![Visualization of components installed in the interface](https://cloud.githubusercontent.com/assets/282293/5525466/947bf396-89e6-11e4-841d-4aa916f14de1.png) + +Next we need to install [git for windows][2]. You probably want to check the option to add it to the global path, but you do not need to install the unix tools. + +If you want to run the spec test-suite you also need [ruby][3] and a few gems available. Grab the [latest installer][3] and make sure to add it the global path. Then install the missing gems: + +```bash +gem install minitest +``` + +### Mount the mingw root directory + +As mentioned in the [MinGW Getting Started](http://www.mingw.org/wiki/Getting_Started#toc5) guide, you should edit `C:\MinGW\msys\1.0\etc\fstab` to contain the following line: + +``` +C:\MinGW /mingw +``` + +### Starting a "MingGW" console + +Create a batch file with this content: +```bat +@echo off +set PATH=C:\MinGW\bin;%PATH% +REM only needed if not already available +set PATH=%PROGRAMFILES%\git\bin;%PATH% +REM C:\MinGW\msys\1.0\msys.bat +cmd +``` + +Execute it and make sure these commands can be called: `git`, `mingw32-make`, `rm` and `gcc`! Once this is all set, you should be ready to compile `libsass`! + +### Get the sources + +```bash +# using git is preferred +git clone https://github.com/sass/libsass.git +# only needed for sassc and/or testsuite +git clone https://github.com/sass/sassc.git libsass/sassc +git clone https://github.com/sass/sass-spec.git libsass/sass-spec +``` + +### Decide for static or shared library + +`libsass` can be built and linked as a `static` or as a `shared` library. The default is `static`. To change it you can set the `BUILD` environment variable: + +```bat +set BUILD="shared" +``` + +### Compile the library +```bash +mingw32-make -C libsass +``` + +### Results can be found in +```bash +$ ls libsass/lib +libsass.a libsass.dll libsass.so +``` + +### Run the spec test-suite +```bash +mingw32-make -C libsass test_build +``` + +## Building via MingGW 64bit (makefiles) +Building libass to dll on window 64bit. + ++ downloads [MinGW64 for windows7 64bit](http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/seh/x86_64-4.9.2-release-win32-seh-rt_v3-rev0.7z/download) , and unzip to "C:\mingw64". + ++ Create a batch file with this content: + +```bat +@echo off +set PATH=C:\mingw64\bin;%PATH% +set CC=gcc +REM only needed if not already available +set PATH=%PROGRAMFILES%\Git\bin;%PATH% +REM C:\MinGW\msys\1.0\msys.bat +cmd +``` + ++ By default , mingw64 dll will depends on "​m​i​n​g​w​m​1​0​.​d​l​l​、​ ​l​i​b​g​c​c​_​s​_​d​w​2​-​1​.​d​l​l​" , we can modify Makefile to fix this:(add "-static") + +``` bash +lib/libsass.dll: $(COBJECTS) $(OBJECTS) $(RCOBJECTS) + $(MKDIR) lib + $(CXX) -shared $(LDFLAGS) -o $@ $(COBJECTS) $(OBJECTS) $(RCOBJECTS) $(LDLIBS) -s -static -Wl,--subsystem,windows,--out-implib,lib/libsass.a +``` + ++ Compile the library + +```bash +mingw32-make -C libsass +``` + +By the way , if you are using java jna , [JNAerator](http://jnaerator.googlecode.com/) is a good tool. + +## Building via Visual Studio Community 2013 + +Open a Visual Studio 2013 command prompt: +- `VS2013 x86 Native Tools Command Prompt` + +Note: When I installed the community edition, I only got the 2012 command prompts. I copied them from the Startmenu to the Desktop and adjusted the paths from `Visual Studio 11.0` to `Visual Studio 12.0`. Since `libsass` uses some `C++11` features, you need at least a MSVC 2013 compiler (v120). + +### Get the source +```bash +# using git is preferred +git clone https://github.com/sass/libsass.git +git clone https://github.com/sass/sassc.git libsass/sassc +# only needed if you want to run the testsuite +git clone https://github.com/sass/sass-spec.git libsass/sass-spec +``` + +### Compile sassc + +Sometimes `msbuild` seems not available from the command prompt. Just search for it and add it to the global path. It seems to be included in the .net folders too. + +```bat +cd libsass +REM set PATH=%PATH%;%PROGRAMFILES%\MSBuild\12.0\Bin +msbuild /m:4 /p:Configuration=Release win\libsass.sln +REM running the spec test-suite manually (needs ruby and minitest gem) +ruby sass-spec\sass-spec.rb -V 3.5 -c win\bin\sassc.exe -s --impl libsass sass-spec/spec +cd .. +``` + +[1]: http://sourceforge.net/projects/mingw/files/latest/download?source=files +[2]: https://msysgit.github.io/ +[3]: http://rubyinstaller.org/ diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-shared-library.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-shared-library.md new file mode 100644 index 0000000..3c143b4 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-shared-library.md @@ -0,0 +1,35 @@ +This page is mostly intended for people that want to build a system library that gets distributed via RPMs or other means. This is currently in a experimental phase, as we currently do not really guarantee any ABI forward compatibility. The C API was rewritten to make this possible in the future, but we want to wait some more time till we can call this final and stable. + +Building via autotools +-- + +You want to build a system library only via autotools, since it will create the proper `libtool` files to make it loadable on multiple systems. We hope this works correctly, but nobody of the `libsass` core team has much knowledge in this area. Therefore we are open for comments or improvements by people that have more experience in that matter (like package maintainers from various linux distributions). + +```bash +apt-get install autoconf libtool +git clone https://github.com/sass/libsass.git +cd libsass +autoreconf --force --install +./configure \ + --disable-tests \ + --disable-static \ + --enable-shared \ + --prefix=/usr +make -j5 install +cd .. +``` + +This should install these files +```bash +# $ ls -la /usr/lib/libsass.* +/usr/lib/libsass.la +/usr/lib/libsass.so -> libsass.so.0.0.9 +/usr/lib/libsass.so.0 -> libsass.so.0.0.9 +/usr/lib/libsass.so.0.0.9 +# $ ls -la /usr/include/sass* +/usr/include/sass.h +/usr/include/sass2scss.h +/usr/include/sass/context.h +/usr/include/sass/functions.h +/usr/include/sass/values.h +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-with-autotools.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-autotools.md new file mode 100644 index 0000000..a48ed18 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-autotools.md @@ -0,0 +1,78 @@ +### Get the sources +```bash +# using git is preferred +git clone https://github.com/sass/libsass.git +# only needed for sassc and/or testsuite +git clone https://github.com/sass/sassc.git libsass/sassc +git clone https://github.com/sass/sass-spec.git libsass/sass-spec +``` + +### Prerequisites + +In order to run autotools you need a few tools installed on your system. +```bash +yum install automake libtool # RedHat Linux +emerge -a automake libtool # Gentoo Linux +pkgin install automake libtool # SmartOS +``` + + +### Create configure script +```bash +cd libsass +autoreconf --force --install +cd .. +``` + +### Create custom makefiles +```bash +cd libsass +./configure \ + --disable-tests \ + --disable-shared \ + --prefix=/usr +cd .. +``` + +### Build the library +```bash +make -C libsass -j5 +``` + +### Install the library +The library will be installed to the location given as `prefix` to `configure`. This is standard behavior for autotools and not `libsass` specific. +```bash +make -C libsass -j5 install +``` + +### Configure options +The `configure` script is created by autotools. To get an overview of available options you can call `./configure --help`. When you execute this script, it will create specific makefiles, which you then use via the regular make command. + +There are some `libsass` specific options: + +``` +Optional Features: + --enable-tests enable testing the build + --enable-coverage enable coverage report for test suite + --enable-shared build shared libraries [default=yes] + --enable-static build static libraries [default=yes] + +Optional Packages: + --with-sassc-dir= specify directory of sassc sources for + testing (default: sassc) + --with-sass-spec-dir= specify directory of sass-spec for testing + (default: sass-spec) +``` + +### Build sassc and run spec test-suite + +```bash +cd libsass +autoreconf --force --install +./configure \ + --enable-tests \ + --enable-shared \ + --prefix=/usr +make -j5 test_build +cd .. +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-with-makefiles.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-makefiles.md new file mode 100644 index 0000000..7ae2e33 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-makefiles.md @@ -0,0 +1,68 @@ +### Get the sources +```bash +# using git is preferred +git clone https://github.com/sass/libsass.git +# only needed for sassc and/or testsuite +git clone https://github.com/sass/sassc.git libsass/sassc +git clone https://github.com/sass/sass-spec.git libsass/sass-spec +``` + +### Decide for static or shared library + +`libsass` can be built and linked as a `static` or as a `shared` library. The default is `static`. To change it you can set the `BUILD` environment variable: + +```bash +export BUILD="shared" +``` + +Alternatively you can also define it directly when calling make: + +```bash +BUILD="shared" make ... +``` + +### Compile the library +```bash +make -C libsass -j5 +``` + +### Results can be found in +```bash +$ ls libsass/lib +libsass.a libsass.so +``` + +### Install onto the system + +We recommend to use [autotools to install](build-with-autotools.md) libsass onto the +system, since that brings all the benefits of using libtools as the main install method. +If you still want to install libsass via the makefile, you need to make sure that gnu +`install` utility (or compatible) is installed on your system. +```bash +yum install coreutils # RedHat Linux +emerge -a coreutils # Gentoo Linux +pkgin install coreutils # SmartOS +``` + +You can set the install location by setting `PREFIX` +```bash +PREFIX="/opt/local" make install +``` + + +### Compling sassc + +```bash +# Let build know library location +export SASS_LIBSASS_PATH="`pwd`/libsass" +# Invokes the sassc makefile +make -C libsass -j5 sassc +``` + +### Run the spec test-suite + +```bash +# needs ruby available +# also gem install minitest +make -C libsass -j5 test_build +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-with-mingw.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-mingw.md new file mode 100644 index 0000000..416507f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-mingw.md @@ -0,0 +1,107 @@ +## Building LibSass with MingGW (makefiles) + +First grab the latest [MinGW for windows][1] installer. Once it is installed, you can click on continue or open the Installation Manager via `bin\mingw-get.exe`. + +You need to have the following components installed: +![](https://cloud.githubusercontent.com/assets/282293/5525466/947bf396-89e6-11e4-841d-4aa916f14de1.png) + +Next we need to install [git for windows][2]. You probably want to check the option to add it to the global path, but you do not need to install the unix tools. + +If you want to run the spec test-suite you also need [ruby][3] and a few gems available. Grab the [latest installer][3] and make sure to add it the global path. Then install the missing gems: + +```bash +gem install minitest +``` + +### Mount the mingw root directory + +As mentioned in the [MinGW Getting Started](http://www.mingw.org/wiki/Getting_Started#toc5) guide, you should edit `C:\MinGW\msys\1.0\etc\fstab` to contain the following line: + +``` +C:\MinGW /mingw +``` + +### Starting a "MingGW" console + +Create a batch file with this content: +```bat +@echo off +set PATH=C:\MinGW\bin;%PATH% +REM only needed if not already available +set PATH=%PROGRAMFILES%\git\bin;%PATH% +REM C:\MinGW\msys\1.0\msys.bat +cmd +``` + +Execute it and make sure these commands can be called: `git`, `mingw32-make`, `rm` and `gcc`! Once this is all set, you should be ready to compile `libsass`! + +### Get the sources + +```bash +# using git is preferred +git clone https://github.com/sass/libsass.git +# only needed for sassc and/or testsuite +git clone https://github.com/sass/sassc.git libsass/sassc +git clone https://github.com/sass/sass-spec.git libsass/sass-spec +``` + +### Decide for static or shared library + +`libsass` can be built and linked as a `static` or as a `shared` library. The default is `static`. To change it you can set the `BUILD` environment variable: + +```bat +set BUILD="shared" +``` + +### Compile the library +```bash +mingw32-make -C libsass +``` + +### Results can be found in +```bash +$ ls libsass/lib +libsass.a libsass.dll libsass.so +``` + +### Run the spec test-suite +```bash +mingw32-make -C libsass test_build +``` + +## Building via MingGW 64bit (makefiles) +Building libass to dll on window 64bit. + +Download [MinGW64 for windows7 64bit](http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/seh/x86_64-4.9.2-release-win32-seh-rt_v3-rev0.7z/download) and unzip to "C:\mingw64". + +Create a batch file with this content: + +```bat +@echo off +set PATH=C:\mingw64\bin;%PATH% +set CC=gcc +REM only needed if not already available +set PATH=%PROGRAMFILES%\Git\bin;%PATH% +REM C:\MinGW\msys\1.0\msys.bat +cmd +``` + +By default, mingw64 dll will depends on "​m​i​n​g​w​m​1​0​.​d​l​l​、​ ​l​i​b​g​c​c​_​s​_​d​w​2​-​1​.​d​l​l​", we can modify Makefile to fix this:(add "-static") + +``` bash +lib/libsass.dll: $(COBJECTS) $(OBJECTS) $(RCOBJECTS) + $(MKDIR) lib + $(CXX) -shared $(LDFLAGS) -o $@ $(COBJECTS) $(OBJECTS) $(RCOBJECTS) $(LDLIBS) -s -static -Wl,--subsystem,windows,--out-implib,lib/libsass.a +``` + +Compile the library + +```bash +mingw32-make -C libsass +``` + +By the way, if you are using java jna, [JNAerator](http://jnaerator.googlecode.com/) is a good tool. + +[1]: http://sourceforge.net/projects/mingw/files/latest/download?source=files +[2]: https://msysgit.github.io/ +[3]: http://rubyinstaller.org/ diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build-with-visual-studio.md b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-visual-studio.md new file mode 100644 index 0000000..275b917 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build-with-visual-studio.md @@ -0,0 +1,90 @@ +## Building LibSass with Visual Studio + +### Requirements: + +The minimum requirement to build LibSass with Visual Studio is "Visual Studio 2013 Express for Desktop". + +Additionally, it is recommended to have `git` installed and available in `PATH`, so to deduce the `libsass` version information. For instance, if GitHub for Windows (https://windows.github.com/) is installed, the `PATH` will have an entry resembling: `X:\Users\\AppData\Local\GitHub\PortableGit_\cmd\` (where `X` is the drive letter of system drive). If `git` is not available, inquiring the LibSass version will result in `[NA]`. + +### Build Steps: + +#### From Visual Studio: + +On opening the `win\libsass.sln` solution and build (Ctrl+Shift+B) to build `libsass.dll`. + +To Build LibSass as a static Library, it is recommended to set an environment variable `LIBSASS_STATIC_LIB` before launching the project: + +```cmd +cd path\to\libsass +SET LIBSASS_STATIC_LIB=1 +:: +:: or in PowerShell: +:: $env:LIBSASS_STATIC_LIB=1 +:: +win\libsass.sln +``` + +Visual Studio will form the filtered source tree as shown below: + +![image](https://cloud.githubusercontent.com/assets/3840695/9298985/aae9e072-44bf-11e5-89eb-e7995c098085.png) + +`Header Files` contains the .h and .hpp files, while `Source Files` covers `.c` and `.cpp`. The other used headers/sources will appear under `External Dependencies`. + +If there is a LibSass code file appearing under External Dependencies, it can be changed by altering the `win\libsass.vcxproj.filters` file or dragging in Solution Explorer. + +#### From Command Prompt: + +Notice that in the following commands: + +* If the platform is 32-bit Windows, replace `ProgramFiles(x86)` with `ProgramFiles`. +* To build with Visual Studio 2015, replace `12.0` with `14.0` in the aforementioned command. + +Open a command prompt: + +To build dynamic/shared library (`libsass.dll`): + +```cmd +:: debug build: +"%ProgramFiles(x86)%\MSBuild\12.0\Bin\MSBuild" win\libsass.sln + +:: release build: +"%ProgramFiles(x86)%\MSBuild\12.0\Bin\MSBuild" win\libsass.sln ^ +/p:Configuration=Release +``` + +To build static library (`libsass.lib`): + +```cmd +:: debug build: +"%ProgramFiles(x86)%\MSBuild\12.0\Bin\MSBuild" win\libsass.sln ^ +/p:LIBSASS_STATIC_LIB=1 + +:: release build: +"%ProgramFiles(x86)%\MSBuild\12.0\Bin\MSBuild" win\libsass.sln ^ +/p:LIBSASS_STATIC_LIB=1 /p:Configuration=Release +``` + +#### From PowerShell: + +To build dynamic/shared library (`libsass.dll`): + +```powershell +# debug build: +&"${env:ProgramFiles(x86)}\MSBuild\12.0\Bin\MSBuild" win\libsass.sln + +# release build: +&"${env:ProgramFiles(x86)}\MSBuild\12.0\Bin\MSBuild" win\libsass.sln ` +/p:Configuration=Release +``` + +To build static library (`libsass.lib`): + +```powershell +# build: +&"${env:ProgramFiles(x86)}\MSBuild\12.0\Bin\MSBuild" win\libsass.sln ` +/p:LIBSASS_STATIC_LIB=1 + +# release build: +&"${env:ProgramFiles(x86)}\MSBuild\12.0\Bin\MSBuild" win\libsass.sln ` +/p:LIBSASS_STATIC_LIB=1 /p:Configuration=Release +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/build.md b/mybulma/node_modules/node-sass/src/libsass/docs/build.md new file mode 100644 index 0000000..c656d88 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/build.md @@ -0,0 +1,97 @@ +`libsass` is only a library and does not do much on its own. You need an implementation that you can use from the [command line][6]. Or some [bindings|Implementations][9] to use it within your favorite programming language. You should be able to get [`sassc`][6] running by following the instructions in this guide. + +Before starting, see [setup dev environment](setup-environment.md). + +Building on different Operating Systems +-- + +We try to keep the code as OS independent and standard compliant as possible. Reading files from the file-system has some OS depending code, but will ultimately fall back to a posix compatible implementation. We do use some `C++11` features, but are so far only committed to use `unordered_map`. This means you will need a pretty recent compiler on most systems (gcc 4.5 seems to be the minimum). + +### Building on Linux (and other *nix flavors) + +Linux is the main target for `libsass` and we support two ways to build `libsass` here. The old plain makefiles should still work on most systems (including MinGW), while the autotools build is preferred if you want to create a [system library] (experimental). + +- [Building with makefiles][1] +- [Building with autotools][2] + +### Building on Windows (experimental) + +Windows build support was added very recently and should be considered experimental. Credits go to @darrenkopp and @am11 for their work on getting `libsass` and `sassc` to compile with visual studio! + +- [Building with MinGW][3] +- [Building with Visual Studio][11] + +### Building on Max OS X (untested) + +Works the same as on linux, but you can also install LibSass via `homebrew`. + +- [Building on Mac OS X][10] + +### Building a system library (experimental) + +Since `libsass` is a library, it makes sense to install it as a shared library on your system. On linux this means creating a `.so` library via autotools. This should work pretty well already, but we are not yet committed to keep the ABI 100% stable. This should be the case once we increase the version number for the library to 1.0.0 or higher. On Windows you should be able get a `dll` by creating a shared build with MinGW. There is currently no target in the MSVC project files to do this. + +- [Building shared system library][4] + +Compiling with clang instead of gcc +-- + +To use clang you just need to set the appropriate environment variables: + +```bash +export CC=/usr/bin/clang +export CXX=/usr/bin/clang++ +``` + +Running the spec test-suite +-- + +We constantly and automatically test `libsass` against the official [spec test-suite][5]. To do this we need to have a test-runner (which is written in ruby) and a command-line tool ([`sassc`][6]) to run the tests. Therefore we need to additionally compile `sassc`. To do this, the build files of all three projects need to work together. This may not have the same quality for all build flavors. You definitely need to have ruby (2.1?) installed (version 1.9 seems to cause problems at least on windows). You also need some gems installed: + +```bash +ruby -v +gem install minitest +# should be optional +gem install minitap +``` + +Including the LibSass version +-- + +There is a function in `libsass` to query the current version. This has to be defined at compile time. We use a C macro for this, which can be defined by calling `g++ -DLIBSASS_VERSION="\"x.y.z.\""`. The two quotes are necessary, since it needs to end up as a valid C string. Normally you do not need to do anything if you use the makefiles or autotools. They will try to fetch the version via git directly. If you only have the sources without the git repo, you can pass the version as an environment variable to `make` or `configure`: + +``` +export LIBSASS_VERSION="x.y.z." +``` + +Continuous Integration +-- + +We use two CI services to automatically test all commits against the latest [spec test-suite][5]. + +- [LibSass on Travis-CI (linux)][7] +[![Build Status](https://travis-ci.org/sass/libsass.png?branch=master)](https://travis-ci.org/sass/libsass) +- [LibSass on AppVeyor (windows)][8] +[![Build status](https://ci.appveyor.com/api/projects/status/github/sass/libsass?svg=true)](https://ci.appveyor.com/project/mgreter/libsass-513/branch/master) + +Why not using CMake? +-- + +There were some efforts to get `libsass` to compile with CMake, which should make it easier to create build files for linux and windows. Unfortunately this was not completed. But we are certainly open for PRs! + +Miscellaneous +-- + +- [Ebuilds for Gentoo Linux](build-on-gentoo.md) + +[1]: build-with-makefiles.md +[2]: build-with-autotools.md +[3]: build-with-mingw.md +[4]: build-shared-library.md +[5]: https://github.com/sass/sass-spec +[6]: https://github.com/sass/sassc +[7]: https://github.com/sass/libsass/blob/master/.travis.yml +[8]: https://github.com/sass/libsass/blob/master/appveyor.yml +[9]: implementations.md +[10]: build-on-darwin.md +[11]: build-with-visual-studio.md diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/compatibility-plan.md b/mybulma/node_modules/node-sass/src/libsass/docs/compatibility-plan.md new file mode 100644 index 0000000..d8e538f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/compatibility-plan.md @@ -0,0 +1,48 @@ +This document is to serve as a living, changing plan for getting LibSass caught up with Ruby Sass. + +_Note: an "s" preceeding a version number is specifying a Ruby Sass version. Without an s, it's a version of LibSass._ + +# Goal +**Our goal is to reach full s3.4 compatibility as soon as possible. LibSass version 3.4 will behave just like Ruby Sass 3.4** + +I highlight the goal, because there are some things that are *not* currently priorities. To be clear, they WILL be priorities, but they are not at the moment: + +* Performance Improvements +* Extensibility + +The overriding goal is correctness. + +## Verifying Correctness +LibSass uses the spec for its testing. The spec was originally based off s3.2 tests. Many things have changed in Ruby Sass since then and some of the tests need to be updated and changed in order to get them to match both LibSass and Ruby Sass. + +Until this project is complete, the spec will be primarily a place to test LibSass. By the time LibSass reaches 3.4, it is our goal that sass-spec will be fully usable as an official testing source for ALL implementations of Sass. + +## Version Naming +Until LibSass reaches parity with Ruby Sass, we will be aggressively bumping versions, and LibSass 3.4 will be the peer to Ruby Sass 3.4 in every way. + +# Release Plan + +## 3.0 +The goal of 3.0 is to introduce some of the most demanded features for LibSass. That is, we are focusing on issues and features that have kept adoption down. This is a mongrel release wrt which version of Sass it's targeting. It's often a mixture of 3.2 / 3.3 / 3.4 behaviours. This is not ideal, but it's favourable to not existing. Targeting 3.4 strictly during this release would mean we never actually release. + +# 3.1 +The goal of 3.1 is to update all the passing specs to agree with 3.4. This will not be a complete representation of s3.4 (aka, there will me missing features), but the goal is to change existing features and implemented features to match 3.4 behaviour. + +By the end of this, the sass-spec must pass against 3.4. + +Major issues: +* Variable Scoping +* Color Handling +* Precision + +# 3.2 +This version will focus on edge case fixes. There are a LOT of edge cases in the _todo_ tests and this is the release where we hunt those down like dogs (not that we want to hurt dogs, it's just a figure of speech in English). + +# 3.3 +Dress rehearsal. When we are 99% sure that we've fixed the main issues keeping us from saying we are compliant in s3.4 behaviour. + +# 3.4 +Compass Compatibility. We need to be able to work with Compass and all the other libraries out there. At this point, we are calling LibSass "mature" + +# Beyond 3.4 +Obviously, there is matching Sass 3.5 behaviour. But, beyond that, we'll want to focus on performance, stability, and error handling. These can always be improved upon and are the life's work of an open source project. We'll have to work closely with Sass in the future. diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/contributing.md b/mybulma/node_modules/node-sass/src/libsass/docs/contributing.md new file mode 100644 index 0000000..4a2d470 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/contributing.md @@ -0,0 +1,17 @@ +First of all, welcome! Thanks for even reading this page. If you're here, you're probably wondering what you can do to help make the LibSass project even more awesome. And, even having that feeling means you are awesome! + +## I'm a programmer + +Awesome! We need your help. The best thing to do is go find issues that are tagged with both "bug" and "test written". We do spec driven development here and these issues have a test that's written already in the sass-spec project. Go find the test by going to sass-spec/spec/LibSass-todo-issues/issue_XXX/ where XXX is the issue number. Write the code, and compile, and then issue a pull request referencing the issue. We'll quickly verify it and get it merged in! + +To get your dev environment setup, check out our article on [Setup-Dev-Environment](setup-environment.md). + +## I'm not a backend programmer + +COOL! We also need your help. Doing [Issue-Triage](triage.md) is a big deal and something we need constant help with. That means helping to verify issues, write tests for them, and make sure they are getting fixed. It's being part of the smiling face of the project. + +Also, we need help with the Sass-Spec project itself. Just people to organize, refactor, and understand the tests in there. + +## I don't know what a computer is? + +Hmm.... well, it's the thing you are looking at right now. Ummm... check out training courses! Then, come back and join us! diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/custom-functions-internal.md b/mybulma/node_modules/node-sass/src/libsass/docs/custom-functions-internal.md new file mode 100644 index 0000000..57fec82 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/custom-functions-internal.md @@ -0,0 +1,122 @@ +# Developer Documentation + +Custom functions are internally represented by `struct Sass_C_Function_Descriptor`. + +## Sass_C_Function_Descriptor + +```C +struct Sass_C_Function_Descriptor { + const char* signature; + Sass_C_Function function; + void* cookie; +}; +``` + +- `signature`: The function declaration, like `foo($bar, $baz:1)` +- `function`: Reference to the C function callback +- `cookie`: any pointer you want to attach + +### signature + +The signature defines how the function can be invoked. It also declares which arguments are required and which are optional. Required arguments will be enforced by LibSass and a Sass error is thrown in the event a call as missing an argument. Optional arguments only need to be present when you want to overwrite the default value. + + foo($bar, $baz: 2) + +In this example, `$bar` is required and will error if not passed. `$baz` is optional and the default value of it is 2. A call like `foo(10)` is therefore equal to `foo(10, 2)`, while `foo()` will produce an error. + +### function + +The callback function needs to be of the following form: + +```C +union Sass_Value* call_sass_function( + const union Sass_Value* s_args, + void* cookie +) { + return sass_clone_value(s_args); +} +``` + +### cookie + +The cookie can hold any pointer you want. In the `perl-libsass` implementation it holds the structure with the reference of the actual registered callback into the perl interpreter. Before that call `perl-libsass` will convert all `Sass_Values` to corresponding perl data types (so they can be used natively inside the perl interpretor). The callback can also return a `Sass_Value`. In `perl-libsass` the actual function returns a perl value, which has to be converted before `libsass` can work with it again! + +## Sass_Values + +```C +// allocate memory (copies passed strings) +union Sass_Value* sass_make_null (void); +union Sass_Value* sass_make_boolean (bool val); +union Sass_Value* sass_make_string (const char* val); +union Sass_Value* sass_make_qstring (const char* val); +union Sass_Value* sass_make_number (double val, const char* unit); +union Sass_Value* sass_make_color (double r, double g, double b, double a); +union Sass_Value* sass_make_list (size_t len, enum Sass_Separator sep, bool is_bracketed); +union Sass_Value* sass_make_map (size_t len); +union Sass_Value* sass_make_error (const char* msg); +union Sass_Value* sass_make_warning (const char* msg); + +// Make a deep cloned copy of the given sass value +union Sass_Value* sass_clone_value (const union Sass_Value* val); + +// deallocate memory (incl. all copied memory) +void sass_delete_value (const union Sass_Value* val); +``` + +## Example main.c + +```C +#include +#include +#include "sass/context.h" + +union Sass_Value* call_fn_foo(const union Sass_Value* s_args, void* cookie) +{ + // we actually abuse the void* to store an "int" + return sass_make_number((size_t)cookie, "px"); +} + +int main( int argc, const char* argv[] ) +{ + + // get the input file from first argument or use default + const char* input = argc > 1 ? argv[1] : "styles.scss"; + + // create the file context and get all related structs + struct Sass_File_Context* file_ctx = sass_make_file_context(input); + struct Sass_Context* ctx = sass_file_context_get_context(file_ctx); + struct Sass_Options* ctx_opt = sass_context_get_options(ctx); + + // allocate a custom function caller + Sass_C_Function_Callback fn_foo = + sass_make_function("foo()", call_fn_foo, (void*)42); + + // create list of all custom functions + Sass_C_Function_List fn_list = sass_make_function_list(1); + sass_function_set_list_entry(fn_list, 0, fn_foo); + sass_option_set_c_functions(ctx_opt, fn_list); + + // context is set up, call the compile step now + int status = sass_compile_file_context(file_ctx); + + // print the result or the error to the stdout + if (status == 0) puts(sass_context_get_output_string(ctx)); + else puts(sass_context_get_error_message(ctx)); + + // release allocated memory + sass_delete_file_context(file_ctx); + + // exit status + return status; + +} +``` + +## Compile main.c + +```bash +gcc -c main.c -o main.o +gcc -o sample main.o -lsass +echo "foo { margin: foo(); }" > foo.scss +./sample foo.scss => "foo { margin: 42px }" +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/dev-ast-memory.md b/mybulma/node_modules/node-sass/src/libsass/docs/dev-ast-memory.md new file mode 100644 index 0000000..31004bc --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/dev-ast-memory.md @@ -0,0 +1,223 @@ +# LibSass smart pointer implementation + +LibSass uses smart pointers very similar to `shared_ptr` known +by Boost or C++11. Implementation is a bit less modular since +it was not needed. Various compile time debug options are +available if you need to debug memory life-cycles. + + +## Memory Classes + +### SharedObj + +Base class for the actual node implementations. This ensures +that every object has a reference counter and other values. + +```c++ +class AST_Node : public SharedObj { ... }; +``` + +### SharedPtr (base class for SharedImpl) + +Base class that holds on to the pointer. The reference counter +is stored inside the pointer object directly (`SharedObj`). + +### SharedImpl (inherits from SharedPtr) + +This is the main base class for objects you use in your code. It +will make sure that the memory it points at will be deleted once +all copies to the same object/memory go out of scope. + +```c++ +Class* pointer = new Class(...); +SharedImpl obj(pointer); +``` + +To spare the developer of typing the templated class every time, +we created typedefs for each available AST Node specialization. + +```c++ +typedef SharedImpl Number_Obj; +Number_Obj number = SASS_MEMORY_NEW(...); +``` + + +## Memory life-cycles + +### Pointer pickups + +I often use the terminology of "pickup". This means the moment when +a raw pointer not under any control is assigned to a reference counted +object (`XYZ_Obj = XYZ_Ptr`). From that point on memory will be +automatically released once the object goes out of scope (but only +if the reference counter reaches zero). Main point beeing, you don't +have to worry about memory management yourself. + +### Object detach + +Sometimes we can't return reference counted objects directly (see +invalid covariant return types problems below). But we often still +need to use reference objects inside a function to avoid leaks when +something throws. For this you can use `detach`, which basically +detaches the pointer memory from the reference counted object. So +when the reference counted object goes out of scope, it will not +free the attached memory. You are now again in charge of freeing +the memory (just assign it to a reference counted object again). + + +## Circular references + +Reference counted memory implementations are prone to circular references. +This can be addressed by using a multi generation garbage collector. But +for our use-case that seems overkill. There is no way so far for users +(sass code) to create circular references. Therefore we can code around +this possible issue. But developers should be aware of this limitation. + +There are AFAIR two places where circular references could happen. One is +the `sources` member on every `Selector`. The other one can happen in the +extend code (Node handling). The easy way to avoid this is to only assign +complete object clones to these members. If you know the objects lifetime +is longer than the reference you create, you can also just store the raw +pointer. Once needed this could be solved with weak pointers. + + +## Addressing the invalid covariant return types problems + +If you are not familiar with the mentioned problem, you may want +to read up on covariant return types and virtual functions, i.e. + +- http://stackoverflow.com/questions/6924754/return-type-covariance-with-smart-pointers +- http://stackoverflow.com/questions/196733/how-can-i-use-covariant-return-types-with-smart-pointers +- http://stackoverflow.com/questions/2687790/how-to-accomplish-covariant-return-types-when-returning-a-shared-ptr + +We hit this issue at least with the CRTP visitor pattern (eval, expand, +listize and so forth). This means we cannot return reference counted +objects directly. We are forced to return raw pointers or we would need +to have a lot of explicit and expensive upcasts by callers/consumers. + +### Simple functions that allocate new AST Nodes + +In the parser step we often create new objects and can just return a +unique pointer (meaning ownership clearly shifts back to the caller). +The caller/consumer is responsible that the memory is freed. + +```c++ +typedef Number* Number_Ptr; +int parse_integer() { + ... // do the parsing + return 42; +} +Number_Ptr parse_number() { + Number_Ptr p_nr = SASS_MEMORY_NEW(...); + p_nr->value(parse_integer()); + return p_nr; +} +Number_Obj nr = parse_number(); +``` + +The above would be the encouraged pattern for such simple cases. + +### Allocate new AST Nodes in functions that can throw + +There is a major caveat with the previous example, considering this +more real-life implementation that throws an error. The throw may +happen deep down in another function. Holding raw pointers that +we need to free would leak in this case. + +```c++ +int parse_integer() { + ... // do the parsing + if (error) throw(error); + return 42; +} +``` + +With this `parse_integer` function the previous example would leak memory. +I guess it is pretty obvious, as the allocated memory will not be freed, +as it was never assigned to a SharedObj value. Therefore the above code +would better be written as: + +```c++ +typedef Number* Number_Ptr; +int parse_integer() { + ... // do the parsing + if (error) throw(error); + return 42; +} +// this leaks due to pointer return +// should return Number_Obj instead +// though not possible for virtuals! +Number_Ptr parse_number() { + Number_Obj nr = SASS_MEMORY_NEW(...); + nr->value(parse_integer()); // throws + return &nr; // Ptr from Obj +} +Number_Obj nr = parse_number(); +// will now be freed automatically +``` + +The example above unfortunately will not work as is, since we return a +`Number_Ptr` from that function. Therefore the object allocated inside +the function is already gone when it is picked up again by the caller. +The easy fix for the given simplified use case would be to change the +return type of `parse_number` to `Number_Obj`. Indeed we do it exactly +this way in the parser. But as stated above, this will not work for +virtual functions due to invalid covariant return types! + +### Return managed objects from virtual functions + +The easy fix would be to just create a new copy on the heap and return +that. But this seems like a very inelegant solution to this problem. I +mean why can't we just tell the object to treat it like a newly allocated +object? And indeed we can. I've added a `detach` method that will tell +the object to survive deallocation until the next pickup. This means +that it will leak if it is not picked up by consumer. + +```c++ +typedef Number* Number_Ptr; +int parse_integer() { + ... // do the parsing + if (error) throw(error); + return 42; +} +Number_Ptr parse_number() { + Number_Obj nr = SASS_MEMORY_NEW(...); + nr->value(parse_integer()); // throws + return nr.detach(); +} +Number_Obj nr = parse_number(); +// will now be freed automatically +``` + + +## Compile time debug options + +To enable memory debugging you need to define `DEBUG_SHARED_PTR`. +This can i.e. be done in `include/sass/base.h` + +```c++ +define DEBUG_SHARED_PTR +``` + +This will print lost memory on exit to stderr. You can also use +`setDbg(true)` on sepecific variables to emit reference counter +increase, decrease and other events. + + +## Why reinvent the wheel when there is `shared_ptr` from C++11 + +First, implementing a smart pointer class is not really that hard. It +was indeed also a learning experience for myself. But there are more +profound advantages: + +- Better GCC 4.4 compatibility (which most code still has OOTB) +- Not thread safe (give us some free performance on some compiler) +- Beeing able to track memory allocations for debugging purposes +- Adding additional features if needed (as seen in `detach`) +- Optional: optimized weak pointer implementation possible + +### Thread Safety + +As said above, this is not thread safe currently. But we don't need +this ATM anyway. And I guess we probably never will share AST Nodes +across different threads. \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/implementations.md b/mybulma/node_modules/node-sass/src/libsass/docs/implementations.md new file mode 100644 index 0000000..5239adc --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/implementations.md @@ -0,0 +1,65 @@ +There are several implementations of `libsass` for a variety of languages. Here are just a few of them. Note, some implementations may or may not be up to date. We have not verified whether they work. + +### C +* [sassc](https://github.com/hcatlin/sassc) + +### Crystal +* [sass.cr](https://github.com/straight-shoota/sass.cr) + +### Elixir +* [sass.ex](https://github.com/scottdavis/sass.ex) + +### Go +* [go-libsass](https://github.com/wellington/go-libsass) +* [go_sass](https://github.com/suapapa/go_sass) +* [go-sass](https://github.com/SamWhited/go-sass) + +### Haskell +* [hLibsass](https://github.com/jakubfijalkowski/hlibsass) +* [hSass](https://github.com/jakubfijalkowski/hsass) + +### Java +* [libsass-maven-plugin](https://github.com/warmuuh/libsass-maven-plugin) +* [jsass](https://github.com/bit3/jsass) + +### JavaScript +* [sass.js](https://github.com/medialize/sass.js) + +### Lua +* [lua-sass](https://github.com/craigbarnes/lua-sass) + +### .NET +* [libsass-net](https://github.com/darrenkopp/libsass-net) +* [NSass](https://github.com/TBAPI-0KA/NSass) +* [Sass.Net](https://github.com/andyalm/Sass.Net) +* [SharpScss](https://github.com/xoofx/SharpScss) +* [LibSassHost](https://github.com/Taritsyn/LibSassHost) + +### Nim +* [nim-sass](https://github.com/zacharycarter/nim-sass) + +### node.js +* [node-sass](https://github.com/sass/node-sass) + +### Perl +* [CSS::Sass](https://github.com/caldwell/CSS-Sass) +* [Text::Sass::XS](https://github.com/ysasaki/Text-Sass-XS) + +### PHP +* [sassphp](https://github.com/sensational/sassphp) +* [php-sass](https://github.com/lesstif/php-sass) + +### Python +* [libsass-python](https://github.com/dahlia/libsass-python) +* [SassPython](https://github.com/marianoguerra/SassPython) +* [pylibsass](https://github.com/rsenk330/pylibsass) +* [python-scss](https://github.com/pistolero/python-scss) + +### Ruby +* [sassruby](https://github.com/hcatlin/sassruby) + +### Scala +* [Sass-Scala](https://github.com/kkung/Sass-Scala) + +### Tcl +* [tclsass](https://github.com/flightaware/tclsass) diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/plugins.md b/mybulma/node_modules/node-sass/src/libsass/docs/plugins.md new file mode 100644 index 0000000..a9711e3 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/plugins.md @@ -0,0 +1,47 @@ +Plugins are shared object files (.so on *nix and .dll on win) that can be loaded by LibSass on runtime. Currently we only provide a way to load internal/custom functions from plugins. In the future we probably will also add a way to provide custom importers via plugins (needs more refactoring to [support multiple importers with some kind of priority system](https://github.com/sass/libsass/issues/962)). + +## plugin.cpp + +```C++ +#include +#include +#include +#include "sass_values.h" + +union Sass_Value* ADDCALL call_fn_foo(const union Sass_Value* s_args, void* cookie) +{ + // we actually abuse the void* to store an "int" + return sass_make_number((intptr_t)cookie, "px"); +} + +extern "C" const char* ADDCALL libsass_get_version() { + return libsass_version(); +} + +extern "C" Sass_C_Function_List ADDCALL libsass_load_functions() +{ + // allocate a custom function caller + Sass_C_Function_Callback fn_foo = + sass_make_function("foo()", call_fn_foo, (void*)42); + // create list of all custom functions + Sass_C_Function_List fn_list = sass_make_function_list(1); + // put the only function in this plugin to the list + sass_function_set_list_entry(fn_list, 0, fn_foo); + // return the list + return fn_list; +} +``` + +To compile the plugin you need to have LibSass already built as a shared library (to link against it). The commands below expect the shared library in the `lib` sub-directory (`-Llib`). The plugin and the main LibSass process should "consume" the same shared LibSass library on runtime. It will propably also work if they use different LibSass versions. In this case we check if the major versions are compatible (i.e. 3.1.3 and 3.1.1 would be considered compatible). + +## Compile with gcc on linux + +```bash +g++ -O2 -shared plugin.cpp -o plugin.so -fPIC -Llib -lsass +``` + +## Compile with mingw on windows + +```bash +g++ -O2 -shared plugin.cpp -o plugin.dll -Llib -lsass +``` diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/setup-environment.md b/mybulma/node_modules/node-sass/src/libsass/docs/setup-environment.md new file mode 100644 index 0000000..8056136 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/setup-environment.md @@ -0,0 +1,68 @@ +## Requirements +In order to install and setup your local development environment, there are some prerequisites: + +* git +* gcc/clang/llvm (Linux: build tools, Mac OS X: XCode w/ Command Line Tools) +* ruby w/ bundler + +OS X: +First you'll need to install XCode which you can now get from the AppStore installed on your mac. After you download that and run it, then run this on the command line: + +```` +xcode-select --install +```` + +## Cloning the Projects + +First, clone the project and then add a line to your `~/.bash_profile` that will let other programs know where the LibSass dev files are. + +```` +git clone git@github.com:sass/libsass.git +cd libsass +echo "export SASS_LIBSASS_PATH=$(pwd)" >> ~/.bash_profile + +```` + +Then, if you run the "bootstrap" script, it should clone all the other required projects. + +```` +./script/bootstrap +```` + +You should now have a `sass-spec` and `sassc` folder within the libsass folder. Both of these are clones of their respective git projects. If you want to do a pull request, remember to work in those folders. For instance, if you want to add a test (see other documentation for how to do that), make sure to commit it to your *fork* of the sass-spec github project. Also, whenever you are running tests, make sure to `pull` from the origin! We want to make sure we are testing against the newest libsass, sassc, and sass-spec! + +Now, try and see if you can build the project. We do that with the `make` command. + +```` +make +```` + +At this point, if you get an error, something is most likely wrong with your compiler installation. Yikes. It's hard to cover how to fix this in an article. Feel free to open an issue and we'll try and help! But, remember, before you do that, googling the error message is your friend! Many problems are solved quickly that way. + +## Running The Spec Against LibSass + +Then, to run the spec against LibSass, just run: + +```` +./script/spec +```` + +If you get an error about `SASS_LIBSASS_PATH`, you may still need to set a variable pointing to the libsass folder, like this: + +```` +export SASS_LIBSASS_PATH=/Users/you/path/libsass +```` + +...where the latter part is to the `libsass` directory you've cloned. You can get this path by typing `pwd` in the Terminal + +## Running the Spec Against Ruby Sass + +Go into the sass-spec folder that should have been cloned earlier with the "bootstrap" command. Run the following. + +```` +bundle install +./sass-spec.rb +```` + +Voila! Now you are testing against Sass too! + diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/source-map-internals.md b/mybulma/node_modules/node-sass/src/libsass/docs/source-map-internals.md new file mode 100644 index 0000000..50f83b5 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/source-map-internals.md @@ -0,0 +1,51 @@ +This document is mainly intended for developers! + +# Documenting some of the source map internals + +Since source maps are somewhat a black box to all LibSass maintainers, [I](@mgreter) will try to document my findings with source maps in LibSass, as I come across them. This document will also brievely explain how LibSass parses the source and how it outputs the result. + +The main storage for SourceMap mappings is the `mappings` vector: + +``` +# in source_map.hpp +vector mappings +# in mappings.hpp +struct Mapping ... + Position original_position; + Position generated_position; +``` + +## Every parsed token has its source associated + +LibSass uses a lexical parser. Whenever LibSass finds a token of interest, it creates a specific `AST_Node`, which will hold a reference to the input source with line/column information. `AST_Node` is the base class for all parsed items. They are declared in `ast.hpp` and are used in `parser.hpp`. Here a simple example: + +``` +if (lex< custom_property_name >()) { + Sass::String* prop = new (ctx.mem) String_Constant(path, source_position, lexed); + return new (ctx.mem) Declaration(path, prop->position(), prop, ...); +} +``` + +## How is the `source_position` calculated + +This is automatically done with `lex` in `parser.hpp`. Whenever something is lexed, the `source_position` is updated. But be aware that `source_position` points to the begining of the parsed text. If you need a mapping for the position where the parsing ended, you need to add another call to `lex` (to match nothing)! + +``` +lex< exactly < empty_str > >(); +end = new (ctx.mem) String_Constant(path, source_position, lexed); +``` + +## How are mappings for the output created + +So far we have collected all needed data for all tokens in the input stream. We can now use this information to create mappings when we put things into the output stream. Mappings are created via the `add_mappings` method: + +``` +# in source_map.hpp +void add_mapping(AST_Node* node); +``` + +This method is called in two places: +- `Inspect::append_to_buffer` +- `Output_[Nested|Compressed]::append_to_buffer` + +Mappings can only be created for things that have been parsed into a `AST_Node`. Otherwise we do not have the information to create the mappings, which is the reason why LibSass currently only maps the most important tokens in source maps. diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/trace.md b/mybulma/node_modules/node-sass/src/libsass/docs/trace.md new file mode 100644 index 0000000..4a57c90 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/trace.md @@ -0,0 +1,26 @@ +## This is proposed interface in https://github.com/sass/libsass/pull/1288 + +Additional debugging macros with low overhead are available, `TRACE()` and `TRACEINST()`. + +Both macros simulate a string stream, so they can be used like this: + + TRACE() << "Reached."; + +produces: + + [LibSass] parse_value parser.cpp:1384 Reached. + +`TRACE()` + logs function name, source filename, source file name to the standard error and the attached + stream to the standard error. + +`TRACEINST(obj)` + logs object instance address, function name, source filename, source file name to the standard error and the attached stream to the standard error, for example: + + TRACEINST(this) << "String_Constant created " << this; + +produces: + + [LibSass] 0x8031ba980:String_Constant ./ast.hpp:1371 String_Constant created (0,"auto") + +The macros generate output only of `LibSass_TRACE` is set in the environment. diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/triage.md b/mybulma/node_modules/node-sass/src/libsass/docs/triage.md new file mode 100644 index 0000000..0fc1178 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/triage.md @@ -0,0 +1,17 @@ +This is an article about how to help with LibSass issues. Issue triage is a fancy word for explaining how we deal with incoming issues and make sure that the right problems get worked on. The lifecycle of an issue goes like this: + +1. Issue is reported by a user. +2. If the issue seems like a bug, then the "bug" tag is added. +3. If the reporting user didn't also create a spec test over at sass/sass-spec, the "needs test" tag is added. +4. Verify that Ruby Sass *does not* have the same bug. LibSass strives to be an exact replica of how Ruby Sass works. If it's an issue that neither project has solved, please close the ticket with the "not in sass" label. +5. The smallest possible breaking test is created in sass-spec. Cut away any extra information or non-breaking code until the core issue is made clear. +6. Again, verify that the expected output matches the latest Ruby Sass release. Do this by using your own tool OR by running ./sass-spec.rb in the spec folder and making sure that your test passes! +7. Create the test cases in sass-spec with the name spec/LibSass-todo-issues/issue_XXX/input.scss and expected_output.css where the XXX is the issue number here. +8. Commit that test to sass-spec, making sure to reference the issue in the comment message like "Test to demonstrate sass/LibSass#XXX". +9. Once the spec test exists, remove the "needs test" tag and replace it with "test written". +10. A C++ developer will then work on the issue and issue a pull request to fix the issue. +11. A core member verifies that the fix does actually fix the spec tests. +12. The fix is merged into the project. +13. The spec is moved from the LibSass-todo-issues folder into LibSass-closed-issues +14. The issue is closed +15. Have a soda pop or enjoyable beverage of your choice diff --git a/mybulma/node_modules/node-sass/src/libsass/docs/unicode.md b/mybulma/node_modules/node-sass/src/libsass/docs/unicode.md new file mode 100644 index 0000000..a1eb5b1 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/docs/unicode.md @@ -0,0 +1,45 @@ +LibSass currently expects all input to be utf8 encoded (and outputs only utf8), if you actually have any unicode characters at all. We do not support conversion between encodings, even if you declare it with a `@charset` rule. The text below was originally posted as an [issue](https://github.com/sass/libsass/issues/381) on the LibSass tracker. Since then the status is outdated as LibSass now expects your +input to be utf8/ascii compatible, as it has been proven that reading ANSI (e.g. single byte encodings) as utf8 can lead to unexpected +behavior, which can in the worst case lead to buffer overruns/segfaults. Therefore LibSass now checks your input to be valid utf8 encoded! + +### [Declaring character encodings in CSS](http://www.w3.org/International/questions/qa-css-charset.en) + +This [explains](http://www.w3.org/International/questions/qa-css-charset.en) how the character encoding of a css file is determined. Since we are only dealing with local files, we never have a HTTP header. So the precedence should be 'charset' rule, byte-order mark (BOM) or auto-detection (finally falling back to system default/UTF-8). This may not sound too hard to implement, but what about import rules? The CSS specs do not forbid the mixing of different encodings! I [solved that](https://github.com/mgreter/webmerge/) by converting all files to UTF-8 internally. On writing there is an option to tell the tool what encoding it should be (UTF-8 by default). One can also define if it should write a BOM or not and if it should add the charset declaration. + +Since my [tool]((https://github.com/mgreter/webmerge/)) is written in perl, I have a lot of utilities at hand to deal with different unicode charsets. I'm pretty sure that most OSS uses [ICU](http://site.icu-project.org/) or [libiconv](https://www.gnu.org/software/libiconv/) to convert between different encodings. But I have now idea how easy/hard this would be to integrate platform independent (it seems doable). ANSII (single byte encoding) to utf8 is basically just a conversion table (for every supported code-page). + +### Current status on LibSass unicode support + +LibSass should/is fully UTF (and therefore plain ASCII) compatible. + +~~Currently LibSass seems to handle the common UTF-8 case pretty well. I believe it should correctly support all ASCII compatible encodings (like UTF-8 or Latin-1). If all includes use the same encoding, the output should be correct (in the same encoding). It should also handle unicode chars in [selectors, variable names and other identifiers](https://github.com/hcatlin/libsass/issues/244#issuecomment-34681227). This is true for all ASCII compatible encodings. So the main incompatible encodings (I'm aware of) are UTF-16/UTF-32 (which could be converted to UTF-8 with libiconv).~~ + +LibSass 3.5 will enforce that your input is either plain ASCII (chars below 127) or utf8. It does not handle anything else, but therefore ensures that the output is in a valid form. Before version 3.5 you were able to mix different code-pages, which yielded unexpected behavior. + +### Current encoding auto detection + +LibSass currently reads all kind of BOMs and will error out if it finds something it doesn't know how to handle! It seems that it throws away the optional UTF-8 BOM (if any is found). IMO it would be nice if users could configure that (also if a charset rule should be added to the output). But it does not really take any `@charset` into account, it always assumes your input is utf8 and ignores any given `@charset`! + +### What is currently not supported + +- Using non ASCII compatible encodings (like UTF-16, Latin-1 etc.) +- Using non ASCII characters in different encodings in different includes + +### What is missing to support the above cases + +- A way to convert between encodings (like libiconv/ICU) +- Sniffing the charset inside the file (source is available) +- Handling the conversion on import (and export) +- Optional: Make output encoding configurable +- Optional: Add optional/mandatory BOM (configurable) + +### Low priority feature + +I guess the current implementation should handle more than 99% of all real world use cases. +A) Unicode characters are still seldomly seen (as they can be written escaped) +~~B) It will still work if it's UTF-8 or in any of the most common known western ISO codepages. +Although I'm not sure how this applies to asian and other "exotic" codepages!~~ + +I guess the biggest Problem is to have libiconv/ICU (or some other) library as a dependency. Since it contains a lot of rules for the conversions, I see it as the only way to handle this correctly. Once that is sorted out it should be pretty much straight forward to implement the missing pieces (in parser.cpp - Parser::parse should return encoding and add Parser::sniff_charset, then convert the source byte stream to UTF-8). + +I hope the statements above all hold true. Unicode is really not the easiest topic to wrap your head around. But since I did all the above recently in Perl, I wanted to document it here. Feel free to extend or criticize. diff --git a/mybulma/node_modules/node-sass/src/libsass/extconf.rb b/mybulma/node_modules/node-sass/src/libsass/extconf.rb new file mode 100644 index 0000000..3e6d00b --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/extconf.rb @@ -0,0 +1,6 @@ +require 'mkmf' +# .. more stuff +#$LIBPATH.push(Config::CONFIG['libdir']) +$CFLAGS << " #{ENV["CFLAGS"]}" +$LIBS << " #{ENV["LIBS"]}" +create_makefile("libsass") diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass.h b/mybulma/node_modules/node-sass/src/libsass/include/sass.h new file mode 100644 index 0000000..1dd8b06 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass.h @@ -0,0 +1,15 @@ +#ifndef SASS_H +#define SASS_H + +// #define DEBUG 1 + +// include API headers +#include +#include +#include +#include +#include +#include + +#endif + diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass/base.h b/mybulma/node_modules/node-sass/src/libsass/include/sass/base.h new file mode 100644 index 0000000..88dd8d3 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass/base.h @@ -0,0 +1,89 @@ +#ifndef SASS_BASE_H +#define SASS_BASE_H + +// #define DEBUG_SHARED_PTR + +#ifdef _MSC_VER + #pragma warning(disable : 4503) + #ifndef _SCL_SECURE_NO_WARNINGS + #define _SCL_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#include +#include + +#ifdef __GNUC__ + #define DEPRECATED(func) func __attribute__ ((deprecated)) +#elif defined(_MSC_VER) + #define DEPRECATED(func) __declspec(deprecated) func +#else + #pragma message("WARNING: You need to implement DEPRECATED for this compiler") + #define DEPRECATED(func) func +#endif + +#ifdef _WIN32 + + /* You should define ADD_EXPORTS *only* when building the DLL. */ + #ifdef ADD_EXPORTS + #define ADDAPI __declspec(dllexport) + #define ADDCALL __cdecl + #else + #define ADDAPI + #define ADDCALL + #endif + +#else /* _WIN32 not defined. */ + + /* Define with no value on non-Windows OSes. */ + #define ADDAPI + #define ADDCALL + +#endif + +/* Make sure functions are exported with C linkage under C++ compilers. */ +#ifdef __cplusplus +extern "C" { +#endif + + +// Different render styles +enum Sass_Output_Style { + SASS_STYLE_NESTED, + SASS_STYLE_EXPANDED, + SASS_STYLE_COMPACT, + SASS_STYLE_COMPRESSED, + // only used internaly + SASS_STYLE_INSPECT, + SASS_STYLE_TO_SASS +}; + +// to allocate buffer to be filled +ADDAPI void* ADDCALL sass_alloc_memory(size_t size); +// to allocate a buffer from existing string +ADDAPI char* ADDCALL sass_copy_c_string(const char* str); +// to free overtaken memory when done +ADDAPI void ADDCALL sass_free_memory(void* ptr); + +// Some convenient string helper function +ADDAPI char* ADDCALL sass_string_quote (const char* str, const char quote_mark); +ADDAPI char* ADDCALL sass_string_unquote (const char* str); + +// Implemented sass language version +// Hardcoded version 3.4 for time being +ADDAPI const char* ADDCALL libsass_version(void); + +// Get compiled libsass language +ADDAPI const char* ADDCALL libsass_language_version(void); + +#ifdef __cplusplus +} // __cplusplus defined. +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass/context.h b/mybulma/node_modules/node-sass/src/libsass/include/sass/context.h new file mode 100644 index 0000000..2f88d68 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass/context.h @@ -0,0 +1,170 @@ +#ifndef SASS_C_CONTEXT_H +#define SASS_C_CONTEXT_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +// Forward declaration +struct Sass_Compiler; + +// Forward declaration +struct Sass_Options; // base struct +struct Sass_Context; // : Sass_Options +struct Sass_File_Context; // : Sass_Context +struct Sass_Data_Context; // : Sass_Context + +// Compiler states +enum Sass_Compiler_State { + SASS_COMPILER_CREATED, + SASS_COMPILER_PARSED, + SASS_COMPILER_EXECUTED +}; + +// Create and initialize an option struct +ADDAPI struct Sass_Options* ADDCALL sass_make_options (void); +// Create and initialize a specific context +ADDAPI struct Sass_File_Context* ADDCALL sass_make_file_context (const char* input_path); +ADDAPI struct Sass_Data_Context* ADDCALL sass_make_data_context (char* source_string); + +// Call the compilation step for the specific context +ADDAPI int ADDCALL sass_compile_file_context (struct Sass_File_Context* ctx); +ADDAPI int ADDCALL sass_compile_data_context (struct Sass_Data_Context* ctx); + +// Create a sass compiler instance for more control +ADDAPI struct Sass_Compiler* ADDCALL sass_make_file_compiler (struct Sass_File_Context* file_ctx); +ADDAPI struct Sass_Compiler* ADDCALL sass_make_data_compiler (struct Sass_Data_Context* data_ctx); + +// Execute the different compilation steps individually +// Usefull if you only want to query the included files +ADDAPI int ADDCALL sass_compiler_parse(struct Sass_Compiler* compiler); +ADDAPI int ADDCALL sass_compiler_execute(struct Sass_Compiler* compiler); + +// Release all memory allocated with the compiler +// This does _not_ include any contexts or options +ADDAPI void ADDCALL sass_delete_compiler(struct Sass_Compiler* compiler); +ADDAPI void ADDCALL sass_delete_options(struct Sass_Options* options); + +// Release all memory allocated and also ourself +ADDAPI void ADDCALL sass_delete_file_context (struct Sass_File_Context* ctx); +ADDAPI void ADDCALL sass_delete_data_context (struct Sass_Data_Context* ctx); + +// Getters for context from specific implementation +ADDAPI struct Sass_Context* ADDCALL sass_file_context_get_context (struct Sass_File_Context* file_ctx); +ADDAPI struct Sass_Context* ADDCALL sass_data_context_get_context (struct Sass_Data_Context* data_ctx); + +// Getters for Context_Options from Sass_Context +ADDAPI struct Sass_Options* ADDCALL sass_context_get_options (struct Sass_Context* ctx); +ADDAPI struct Sass_Options* ADDCALL sass_file_context_get_options (struct Sass_File_Context* file_ctx); +ADDAPI struct Sass_Options* ADDCALL sass_data_context_get_options (struct Sass_Data_Context* data_ctx); +ADDAPI void ADDCALL sass_file_context_set_options (struct Sass_File_Context* file_ctx, struct Sass_Options* opt); +ADDAPI void ADDCALL sass_data_context_set_options (struct Sass_Data_Context* data_ctx, struct Sass_Options* opt); + + +// Getters for Context_Option values +ADDAPI int ADDCALL sass_option_get_precision (struct Sass_Options* options); +ADDAPI enum Sass_Output_Style ADDCALL sass_option_get_output_style (struct Sass_Options* options); +ADDAPI bool ADDCALL sass_option_get_source_comments (struct Sass_Options* options); +ADDAPI bool ADDCALL sass_option_get_source_map_embed (struct Sass_Options* options); +ADDAPI bool ADDCALL sass_option_get_source_map_contents (struct Sass_Options* options); +ADDAPI bool ADDCALL sass_option_get_source_map_file_urls (struct Sass_Options* options); +ADDAPI bool ADDCALL sass_option_get_omit_source_map_url (struct Sass_Options* options); +ADDAPI bool ADDCALL sass_option_get_is_indented_syntax_src (struct Sass_Options* options); +ADDAPI const char* ADDCALL sass_option_get_indent (struct Sass_Options* options); +ADDAPI const char* ADDCALL sass_option_get_linefeed (struct Sass_Options* options); +ADDAPI const char* ADDCALL sass_option_get_input_path (struct Sass_Options* options); +ADDAPI const char* ADDCALL sass_option_get_output_path (struct Sass_Options* options); +ADDAPI const char* ADDCALL sass_option_get_source_map_file (struct Sass_Options* options); +ADDAPI const char* ADDCALL sass_option_get_source_map_root (struct Sass_Options* options); +ADDAPI Sass_Importer_List ADDCALL sass_option_get_c_headers (struct Sass_Options* options); +ADDAPI Sass_Importer_List ADDCALL sass_option_get_c_importers (struct Sass_Options* options); +ADDAPI Sass_Function_List ADDCALL sass_option_get_c_functions (struct Sass_Options* options); + +// Setters for Context_Option values +ADDAPI void ADDCALL sass_option_set_precision (struct Sass_Options* options, int precision); +ADDAPI void ADDCALL sass_option_set_output_style (struct Sass_Options* options, enum Sass_Output_Style output_style); +ADDAPI void ADDCALL sass_option_set_source_comments (struct Sass_Options* options, bool source_comments); +ADDAPI void ADDCALL sass_option_set_source_map_embed (struct Sass_Options* options, bool source_map_embed); +ADDAPI void ADDCALL sass_option_set_source_map_contents (struct Sass_Options* options, bool source_map_contents); +ADDAPI void ADDCALL sass_option_set_source_map_file_urls (struct Sass_Options* options, bool source_map_file_urls); +ADDAPI void ADDCALL sass_option_set_omit_source_map_url (struct Sass_Options* options, bool omit_source_map_url); +ADDAPI void ADDCALL sass_option_set_is_indented_syntax_src (struct Sass_Options* options, bool is_indented_syntax_src); +ADDAPI void ADDCALL sass_option_set_indent (struct Sass_Options* options, const char* indent); +ADDAPI void ADDCALL sass_option_set_linefeed (struct Sass_Options* options, const char* linefeed); +ADDAPI void ADDCALL sass_option_set_input_path (struct Sass_Options* options, const char* input_path); +ADDAPI void ADDCALL sass_option_set_output_path (struct Sass_Options* options, const char* output_path); +ADDAPI void ADDCALL sass_option_set_plugin_path (struct Sass_Options* options, const char* plugin_path); +ADDAPI void ADDCALL sass_option_set_include_path (struct Sass_Options* options, const char* include_path); +ADDAPI void ADDCALL sass_option_set_source_map_file (struct Sass_Options* options, const char* source_map_file); +ADDAPI void ADDCALL sass_option_set_source_map_root (struct Sass_Options* options, const char* source_map_root); +ADDAPI void ADDCALL sass_option_set_c_headers (struct Sass_Options* options, Sass_Importer_List c_headers); +ADDAPI void ADDCALL sass_option_set_c_importers (struct Sass_Options* options, Sass_Importer_List c_importers); +ADDAPI void ADDCALL sass_option_set_c_functions (struct Sass_Options* options, Sass_Function_List c_functions); + + +// Getters for Sass_Context values +ADDAPI const char* ADDCALL sass_context_get_output_string (struct Sass_Context* ctx); +ADDAPI int ADDCALL sass_context_get_error_status (struct Sass_Context* ctx); +ADDAPI const char* ADDCALL sass_context_get_error_json (struct Sass_Context* ctx); +ADDAPI const char* ADDCALL sass_context_get_error_text (struct Sass_Context* ctx); +ADDAPI const char* ADDCALL sass_context_get_error_message (struct Sass_Context* ctx); +ADDAPI const char* ADDCALL sass_context_get_error_file (struct Sass_Context* ctx); +ADDAPI const char* ADDCALL sass_context_get_error_src (struct Sass_Context* ctx); +ADDAPI size_t ADDCALL sass_context_get_error_line (struct Sass_Context* ctx); +ADDAPI size_t ADDCALL sass_context_get_error_column (struct Sass_Context* ctx); +ADDAPI const char* ADDCALL sass_context_get_source_map_string (struct Sass_Context* ctx); +ADDAPI char** ADDCALL sass_context_get_included_files (struct Sass_Context* ctx); + +// Getters for options include path array +ADDAPI size_t ADDCALL sass_option_get_include_path_size(struct Sass_Options* options); +ADDAPI const char* ADDCALL sass_option_get_include_path(struct Sass_Options* options, size_t i); + +// Calculate the size of the stored null terminated array +ADDAPI size_t ADDCALL sass_context_get_included_files_size (struct Sass_Context* ctx); + +// Take ownership of memory (value on context is set to 0) +ADDAPI char* ADDCALL sass_context_take_error_json (struct Sass_Context* ctx); +ADDAPI char* ADDCALL sass_context_take_error_text (struct Sass_Context* ctx); +ADDAPI char* ADDCALL sass_context_take_error_message (struct Sass_Context* ctx); +ADDAPI char* ADDCALL sass_context_take_error_file (struct Sass_Context* ctx); +ADDAPI char* ADDCALL sass_context_take_output_string (struct Sass_Context* ctx); +ADDAPI char* ADDCALL sass_context_take_source_map_string (struct Sass_Context* ctx); +ADDAPI char** ADDCALL sass_context_take_included_files (struct Sass_Context* ctx); + +// Getters for Sass_Compiler options +ADDAPI enum Sass_Compiler_State ADDCALL sass_compiler_get_state(struct Sass_Compiler* compiler); +ADDAPI struct Sass_Context* ADDCALL sass_compiler_get_context(struct Sass_Compiler* compiler); +ADDAPI struct Sass_Options* ADDCALL sass_compiler_get_options(struct Sass_Compiler* compiler); +ADDAPI size_t ADDCALL sass_compiler_get_import_stack_size(struct Sass_Compiler* compiler); +ADDAPI Sass_Import_Entry ADDCALL sass_compiler_get_last_import(struct Sass_Compiler* compiler); +ADDAPI Sass_Import_Entry ADDCALL sass_compiler_get_import_entry(struct Sass_Compiler* compiler, size_t idx); +ADDAPI size_t ADDCALL sass_compiler_get_callee_stack_size(struct Sass_Compiler* compiler); +ADDAPI Sass_Callee_Entry ADDCALL sass_compiler_get_last_callee(struct Sass_Compiler* compiler); +ADDAPI Sass_Callee_Entry ADDCALL sass_compiler_get_callee_entry(struct Sass_Compiler* compiler, size_t idx); + +// Push function for paths (no manipulation support for now) +ADDAPI void ADDCALL sass_option_push_plugin_path (struct Sass_Options* options, const char* path); +ADDAPI void ADDCALL sass_option_push_include_path (struct Sass_Options* options, const char* path); + +// Resolve a file via the given include paths in the sass option struct +// find_file looks for the exact file name while find_include does a regular sass include +ADDAPI char* ADDCALL sass_find_file (const char* path, struct Sass_Options* opt); +ADDAPI char* ADDCALL sass_find_include (const char* path, struct Sass_Options* opt); + +// Resolve a file relative to last import or include paths in the sass option struct +// find_file looks for the exact file name while find_include does a regular sass include +ADDAPI char* ADDCALL sass_compiler_find_file (const char* path, struct Sass_Compiler* compiler); +ADDAPI char* ADDCALL sass_compiler_find_include (const char* path, struct Sass_Compiler* compiler); + +#ifdef __cplusplus +} // __cplusplus defined. +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass/functions.h b/mybulma/node_modules/node-sass/src/libsass/include/sass/functions.h new file mode 100644 index 0000000..ac47e8e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass/functions.h @@ -0,0 +1,139 @@ +#ifndef SASS_C_FUNCTIONS_H +#define SASS_C_FUNCTIONS_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +// Forward declaration +struct Sass_Env; +struct Sass_Callee; +struct Sass_Import; +struct Sass_Options; +struct Sass_Compiler; +struct Sass_Importer; +struct Sass_Function; + +// Typedef helpers for callee lists +typedef struct Sass_Env (*Sass_Env_Frame); +// Typedef helpers for callee lists +typedef struct Sass_Callee (*Sass_Callee_Entry); +// Typedef helpers for import lists +typedef struct Sass_Import (*Sass_Import_Entry); +typedef struct Sass_Import* (*Sass_Import_List); +// Typedef helpers for custom importer lists +typedef struct Sass_Importer (*Sass_Importer_Entry); +typedef struct Sass_Importer* (*Sass_Importer_List); +// Typedef defining importer signature and return type +typedef Sass_Import_List (*Sass_Importer_Fn) + (const char* url, Sass_Importer_Entry cb, struct Sass_Compiler* compiler); + +// Typedef helpers for custom functions lists +typedef struct Sass_Function (*Sass_Function_Entry); +typedef struct Sass_Function* (*Sass_Function_List); +// Typedef defining function signature and return type +typedef union Sass_Value* (*Sass_Function_Fn) + (const union Sass_Value*, Sass_Function_Entry cb, struct Sass_Compiler* compiler); + +// Type of function calls +enum Sass_Callee_Type { + SASS_CALLEE_MIXIN, + SASS_CALLEE_FUNCTION, + SASS_CALLEE_C_FUNCTION, +}; + +// Creator for sass custom importer return argument list +ADDAPI Sass_Importer_List ADDCALL sass_make_importer_list (size_t length); +ADDAPI Sass_Importer_Entry ADDCALL sass_importer_get_list_entry (Sass_Importer_List list, size_t idx); +ADDAPI void ADDCALL sass_importer_set_list_entry (Sass_Importer_List list, size_t idx, Sass_Importer_Entry entry); +ADDAPI void ADDCALL sass_delete_importer_list (Sass_Importer_List list); + + +// Creators for custom importer callback (with some additional pointer) +// The pointer is mostly used to store the callback into the actual binding +ADDAPI Sass_Importer_Entry ADDCALL sass_make_importer (Sass_Importer_Fn importer, double priority, void* cookie); + +// Getters for import function descriptors +ADDAPI Sass_Importer_Fn ADDCALL sass_importer_get_function (Sass_Importer_Entry cb); +ADDAPI double ADDCALL sass_importer_get_priority (Sass_Importer_Entry cb); +ADDAPI void* ADDCALL sass_importer_get_cookie (Sass_Importer_Entry cb); + +// Deallocator for associated memory +ADDAPI void ADDCALL sass_delete_importer (Sass_Importer_Entry cb); + +// Creator for sass custom importer return argument list +ADDAPI Sass_Import_List ADDCALL sass_make_import_list (size_t length); +// Creator for a single import entry returned by the custom importer inside the list +ADDAPI Sass_Import_Entry ADDCALL sass_make_import_entry (const char* path, char* source, char* srcmap); +ADDAPI Sass_Import_Entry ADDCALL sass_make_import (const char* imp_path, const char* abs_base, char* source, char* srcmap); +// set error message to abort import and to print out a message (path from existing object is used in output) +ADDAPI Sass_Import_Entry ADDCALL sass_import_set_error(Sass_Import_Entry import, const char* message, size_t line, size_t col); + +// Setters to insert an entry into the import list (you may also use [] access directly) +// Since we are dealing with pointers they should have a guaranteed and fixed size +ADDAPI void ADDCALL sass_import_set_list_entry (Sass_Import_List list, size_t idx, Sass_Import_Entry entry); +ADDAPI Sass_Import_Entry ADDCALL sass_import_get_list_entry (Sass_Import_List list, size_t idx); + +// Getters for callee entry +ADDAPI const char* ADDCALL sass_callee_get_name (Sass_Callee_Entry); +ADDAPI const char* ADDCALL sass_callee_get_path (Sass_Callee_Entry); +ADDAPI size_t ADDCALL sass_callee_get_line (Sass_Callee_Entry); +ADDAPI size_t ADDCALL sass_callee_get_column (Sass_Callee_Entry); +ADDAPI enum Sass_Callee_Type ADDCALL sass_callee_get_type (Sass_Callee_Entry); +ADDAPI Sass_Env_Frame ADDCALL sass_callee_get_env (Sass_Callee_Entry); + +// Getters and Setters for environments (lexical, local and global) +ADDAPI union Sass_Value* ADDCALL sass_env_get_lexical (Sass_Env_Frame, const char*); +ADDAPI void ADDCALL sass_env_set_lexical (Sass_Env_Frame, const char*, union Sass_Value*); +ADDAPI union Sass_Value* ADDCALL sass_env_get_local (Sass_Env_Frame, const char*); +ADDAPI void ADDCALL sass_env_set_local (Sass_Env_Frame, const char*, union Sass_Value*); +ADDAPI union Sass_Value* ADDCALL sass_env_get_global (Sass_Env_Frame, const char*); +ADDAPI void ADDCALL sass_env_set_global (Sass_Env_Frame, const char*, union Sass_Value*); + +// Getters for import entry +ADDAPI const char* ADDCALL sass_import_get_imp_path (Sass_Import_Entry); +ADDAPI const char* ADDCALL sass_import_get_abs_path (Sass_Import_Entry); +ADDAPI const char* ADDCALL sass_import_get_source (Sass_Import_Entry); +ADDAPI const char* ADDCALL sass_import_get_srcmap (Sass_Import_Entry); +// Explicit functions to take ownership of these items +// The property on our struct will be reset to NULL +ADDAPI char* ADDCALL sass_import_take_source (Sass_Import_Entry); +ADDAPI char* ADDCALL sass_import_take_srcmap (Sass_Import_Entry); +// Getters from import error entry +ADDAPI size_t ADDCALL sass_import_get_error_line (Sass_Import_Entry); +ADDAPI size_t ADDCALL sass_import_get_error_column (Sass_Import_Entry); +ADDAPI const char* ADDCALL sass_import_get_error_message (Sass_Import_Entry); + +// Deallocator for associated memory (incl. entries) +ADDAPI void ADDCALL sass_delete_import_list (Sass_Import_List); +// Just in case we have some stray import structs +ADDAPI void ADDCALL sass_delete_import (Sass_Import_Entry); + + + +// Creators for sass function list and function descriptors +ADDAPI Sass_Function_List ADDCALL sass_make_function_list (size_t length); +ADDAPI Sass_Function_Entry ADDCALL sass_make_function (const char* signature, Sass_Function_Fn cb, void* cookie); +ADDAPI void ADDCALL sass_delete_function (Sass_Function_Entry entry); +ADDAPI void ADDCALL sass_delete_function_list (Sass_Function_List list); + +// Setters and getters for callbacks on function lists +ADDAPI Sass_Function_Entry ADDCALL sass_function_get_list_entry(Sass_Function_List list, size_t pos); +ADDAPI void ADDCALL sass_function_set_list_entry(Sass_Function_List list, size_t pos, Sass_Function_Entry cb); + +// Getters for custom function descriptors +ADDAPI const char* ADDCALL sass_function_get_signature (Sass_Function_Entry cb); +ADDAPI Sass_Function_Fn ADDCALL sass_function_get_function (Sass_Function_Entry cb); +ADDAPI void* ADDCALL sass_function_get_cookie (Sass_Function_Entry cb); + + +#ifdef __cplusplus +} // __cplusplus defined. +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass/values.h b/mybulma/node_modules/node-sass/src/libsass/include/sass/values.h new file mode 100644 index 0000000..9832038 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass/values.h @@ -0,0 +1,145 @@ +#ifndef SASS_C_VALUES_H +#define SASS_C_VALUES_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +// Forward declaration +union Sass_Value; + +// Type for Sass values +enum Sass_Tag { + SASS_BOOLEAN, + SASS_NUMBER, + SASS_COLOR, + SASS_STRING, + SASS_LIST, + SASS_MAP, + SASS_NULL, + SASS_ERROR, + SASS_WARNING +}; + +// Tags for denoting Sass list separators +enum Sass_Separator { + SASS_COMMA, + SASS_SPACE, + // only used internally to represent a hash map before evaluation + // otherwise we would be too early to check for duplicate keys + SASS_HASH +}; + +// Value Operators +enum Sass_OP { + AND, OR, // logical connectives + EQ, NEQ, GT, GTE, LT, LTE, // arithmetic relations + ADD, SUB, MUL, DIV, MOD, // arithmetic functions + NUM_OPS // so we know how big to make the op table +}; + +// Creator functions for all value types +ADDAPI union Sass_Value* ADDCALL sass_make_null (void); +ADDAPI union Sass_Value* ADDCALL sass_make_boolean (bool val); +ADDAPI union Sass_Value* ADDCALL sass_make_string (const char* val); +ADDAPI union Sass_Value* ADDCALL sass_make_qstring (const char* val); +ADDAPI union Sass_Value* ADDCALL sass_make_number (double val, const char* unit); +ADDAPI union Sass_Value* ADDCALL sass_make_color (double r, double g, double b, double a); +ADDAPI union Sass_Value* ADDCALL sass_make_list (size_t len, enum Sass_Separator sep, bool is_bracketed); +ADDAPI union Sass_Value* ADDCALL sass_make_map (size_t len); +ADDAPI union Sass_Value* ADDCALL sass_make_error (const char* msg); +ADDAPI union Sass_Value* ADDCALL sass_make_warning (const char* msg); + +// Generic destructor function for all types +// Will release memory of all associated Sass_Values +// Means we will delete recursively for lists and maps +ADDAPI void ADDCALL sass_delete_value (union Sass_Value* val); + +// Make a deep cloned copy of the given sass value +ADDAPI union Sass_Value* ADDCALL sass_clone_value (const union Sass_Value* val); + +// Execute an operation for two Sass_Values and return the result as a Sass_Value too +ADDAPI union Sass_Value* ADDCALL sass_value_op (enum Sass_OP op, const union Sass_Value* a, const union Sass_Value* b); + +// Stringify a Sass_Values and also return the result as a Sass_Value (of type STRING) +ADDAPI union Sass_Value* ADDCALL sass_value_stringify (const union Sass_Value* a, bool compressed, int precision); + +// Return the sass tag for a generic sass value +// Check is needed before accessing specific values! +ADDAPI enum Sass_Tag ADDCALL sass_value_get_tag (const union Sass_Value* v); + +// Check value to be of a specific type +// Can also be used before accessing properties! +ADDAPI bool ADDCALL sass_value_is_null (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_number (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_string (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_boolean (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_color (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_list (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_map (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_error (const union Sass_Value* v); +ADDAPI bool ADDCALL sass_value_is_warning (const union Sass_Value* v); + +// Getters and setters for Sass_Number +ADDAPI double ADDCALL sass_number_get_value (const union Sass_Value* v); +ADDAPI void ADDCALL sass_number_set_value (union Sass_Value* v, double value); +ADDAPI const char* ADDCALL sass_number_get_unit (const union Sass_Value* v); +ADDAPI void ADDCALL sass_number_set_unit (union Sass_Value* v, char* unit); + +// Getters and setters for Sass_String +ADDAPI const char* ADDCALL sass_string_get_value (const union Sass_Value* v); +ADDAPI void ADDCALL sass_string_set_value (union Sass_Value* v, char* value); +ADDAPI bool ADDCALL sass_string_is_quoted(const union Sass_Value* v); +ADDAPI void ADDCALL sass_string_set_quoted(union Sass_Value* v, bool quoted); + +// Getters and setters for Sass_Boolean +ADDAPI bool ADDCALL sass_boolean_get_value (const union Sass_Value* v); +ADDAPI void ADDCALL sass_boolean_set_value (union Sass_Value* v, bool value); + +// Getters and setters for Sass_Color +ADDAPI double ADDCALL sass_color_get_r (const union Sass_Value* v); +ADDAPI void ADDCALL sass_color_set_r (union Sass_Value* v, double r); +ADDAPI double ADDCALL sass_color_get_g (const union Sass_Value* v); +ADDAPI void ADDCALL sass_color_set_g (union Sass_Value* v, double g); +ADDAPI double ADDCALL sass_color_get_b (const union Sass_Value* v); +ADDAPI void ADDCALL sass_color_set_b (union Sass_Value* v, double b); +ADDAPI double ADDCALL sass_color_get_a (const union Sass_Value* v); +ADDAPI void ADDCALL sass_color_set_a (union Sass_Value* v, double a); + +// Getter for the number of items in list +ADDAPI size_t ADDCALL sass_list_get_length (const union Sass_Value* v); +// Getters and setters for Sass_List +ADDAPI enum Sass_Separator ADDCALL sass_list_get_separator (const union Sass_Value* v); +ADDAPI void ADDCALL sass_list_set_separator (union Sass_Value* v, enum Sass_Separator value); +ADDAPI bool ADDCALL sass_list_get_is_bracketed (const union Sass_Value* v); +ADDAPI void ADDCALL sass_list_set_is_bracketed (union Sass_Value* v, bool value); +// Getters and setters for Sass_List values +ADDAPI union Sass_Value* ADDCALL sass_list_get_value (const union Sass_Value* v, size_t i); +ADDAPI void ADDCALL sass_list_set_value (union Sass_Value* v, size_t i, union Sass_Value* value); + +// Getter for the number of items in map +ADDAPI size_t ADDCALL sass_map_get_length (const union Sass_Value* v); +// Getters and setters for Sass_Map keys and values +ADDAPI union Sass_Value* ADDCALL sass_map_get_key (const union Sass_Value* v, size_t i); +ADDAPI void ADDCALL sass_map_set_key (union Sass_Value* v, size_t i, union Sass_Value*); +ADDAPI union Sass_Value* ADDCALL sass_map_get_value (const union Sass_Value* v, size_t i); +ADDAPI void ADDCALL sass_map_set_value (union Sass_Value* v, size_t i, union Sass_Value*); + +// Getters and setters for Sass_Error +ADDAPI char* ADDCALL sass_error_get_message (const union Sass_Value* v); +ADDAPI void ADDCALL sass_error_set_message (union Sass_Value* v, char* msg); + +// Getters and setters for Sass_Warning +ADDAPI char* ADDCALL sass_warning_get_message (const union Sass_Value* v); +ADDAPI void ADDCALL sass_warning_set_message (union Sass_Value* v, char* msg); + +#ifdef __cplusplus +} // __cplusplus defined. +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass/version.h b/mybulma/node_modules/node-sass/src/libsass/include/sass/version.h new file mode 100644 index 0000000..56ea016 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass/version.h @@ -0,0 +1,12 @@ +#ifndef SASS_VERSION_H +#define SASS_VERSION_H + +#ifndef LIBSASS_VERSION +#define LIBSASS_VERSION "[NA]" +#endif + +#ifndef LIBSASS_LANGUAGE_VERSION +#define LIBSASS_LANGUAGE_VERSION "3.5" +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass/version.h.in b/mybulma/node_modules/node-sass/src/libsass/include/sass/version.h.in new file mode 100644 index 0000000..b8d4072 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass/version.h.in @@ -0,0 +1,12 @@ +#ifndef SASS_VERSION_H +#define SASS_VERSION_H + +#ifndef LIBSASS_VERSION +#define LIBSASS_VERSION "@PACKAGE_VERSION@" +#endif + +#ifndef LIBSASS_LANGUAGE_VERSION +#define LIBSASS_LANGUAGE_VERSION "3.5" +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/include/sass2scss.h b/mybulma/node_modules/node-sass/src/libsass/include/sass2scss.h new file mode 100644 index 0000000..8736b2c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/include/sass2scss.h @@ -0,0 +1,120 @@ +/** + * sass2scss + * Licensed under the MIT License + * Copyright (c) Marcel Greter + */ + +#ifndef SASS2SCSS_H +#define SASS2SCSS_H + +#ifdef _WIN32 + + /* You should define ADD_EXPORTS *only* when building the DLL. */ + #ifdef ADD_EXPORTS + #define ADDAPI __declspec(dllexport) + #define ADDCALL __cdecl + #else + #define ADDAPI + #define ADDCALL + #endif + +#else /* _WIN32 not defined. */ + + /* Define with no value on non-Windows OSes. */ + #define ADDAPI + #define ADDCALL + +#endif + +#ifdef __cplusplus + +#include +#include +#include +#include +#include + +#ifndef SASS2SCSS_VERSION +// Hardcode once the file is copied from +// https://github.com/mgreter/sass2scss +#define SASS2SCSS_VERSION "1.1.1" +#endif + +// add namespace for c++ +namespace Sass +{ + + // pretty print options + const int SASS2SCSS_PRETTIFY_0 = 0; + const int SASS2SCSS_PRETTIFY_1 = 1; + const int SASS2SCSS_PRETTIFY_2 = 2; + const int SASS2SCSS_PRETTIFY_3 = 3; + + // remove one-line comment + const int SASS2SCSS_KEEP_COMMENT = 32; + // remove multi-line comments + const int SASS2SCSS_STRIP_COMMENT = 64; + // convert one-line to multi-line + const int SASS2SCSS_CONVERT_COMMENT = 128; + + // String for finding something interesting + const std::string SASS2SCSS_FIND_WHITESPACE = " \t\n\v\f\r"; + + // converter struct + // holding all states + struct converter + { + // bit options + int options; + // is selector + bool selector; + // concat lists + bool comma; + // has property + bool property; + // has semicolon + bool semicolon; + // comment context + std::string comment; + // flag end of file + bool end_of_file; + // whitespace buffer + std::string whitespace; + // context/block stack + std::stack indents; + }; + + // function only available in c++ code + char* sass2scss (const std::string& sass, const int options); + +} +// EO namespace + +// declare for c +extern "C" { +#endif + + // prettyfy print options + #define SASS2SCSS_PRETTIFY_0 0 + #define SASS2SCSS_PRETTIFY_1 1 + #define SASS2SCSS_PRETTIFY_2 2 + #define SASS2SCSS_PRETTIFY_3 3 + + // keep one-line comments + #define SASS2SCSS_KEEP_COMMENT 32 + // remove multi-line comments + #define SASS2SCSS_STRIP_COMMENT 64 + // convert one-line to multi-line + #define SASS2SCSS_CONVERT_COMMENT 128 + + // available to c and c++ code + ADDAPI char* ADDCALL sass2scss (const char* sass, const int options); + + // Get compiled sass2scss version + ADDAPI const char* ADDCALL sass2scss_version(void); + +#ifdef __cplusplus +} // __cplusplus defined. +#endif + +#endif \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/m4/.gitkeep b/mybulma/node_modules/node-sass/src/libsass/m4/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/node-sass/src/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 b/mybulma/node_modules/node-sass/src/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 new file mode 100644 index 0000000..395b13d --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 @@ -0,0 +1,167 @@ +# ============================================================================ +# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html +# ============================================================================ +# +# SYNOPSIS +# +# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) +# +# DESCRIPTION +# +# Check for baseline language coverage in the compiler for the C++11 +# standard; if necessary, add switches to CXXFLAGS to enable support. +# +# The first argument, if specified, indicates whether you insist on an +# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. +# -std=c++11). If neither is specified, you get whatever works, with +# preference for an extended mode. +# +# The second argument, if specified 'mandatory' or if left unspecified, +# indicates that baseline C++11 support is required and that the macro +# should error out if no mode with that support is found. If specified +# 'optional', then configuration proceeds regardless, after defining +# HAVE_CXX11 if and only if a supporting mode is found. +# +# LICENSE +# +# Copyright (c) 2008 Benjamin Kosnik +# Copyright (c) 2012 Zack Weinberg +# Copyright (c) 2013 Roy Stogner +# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 11 + +m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[ + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + struct Base { + virtual void f() {} + }; + struct Child : public Base { + virtual void f() override {} + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + + typedef check check_type; + check_type c; + check_type&& cr = static_cast(c); + + auto d = a; + auto l = [](){}; + // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable] + struct use_l { use_l() { l(); } }; + + // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae + // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this + namespace test_template_alias_sfinae { + struct foo {}; + + template + using member = typename T::member_type; + + template + void func(...) {} + + template + void func(member*) {} + + void test(); + + void test() { + func(0); + } + } +]]) + +AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl + m4_if([$1], [], [], + [$1], [ext], [], + [$1], [noext], [], + [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl + m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], + [$2], [mandatory], [ax_cxx_compile_cxx11_required=true], + [$2], [optional], [ax_cxx_compile_cxx11_required=false], + [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])]) + AC_LANG_PUSH([C++])dnl + ac_success=no + AC_CACHE_CHECK(whether $CXX supports C++11 features by default, + ax_cv_cxx_compile_cxx11, + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], + [ax_cv_cxx_compile_cxx11=yes], + [ax_cv_cxx_compile_cxx11=no])]) + if test x$ax_cv_cxx_compile_cxx11 = xyes; then + ac_success=yes + fi + + m4_if([$1], [noext], [], [dnl + if test x$ac_success = xno; then + for switch in -std=gnu++11 -std=gnu++0x; do + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) + AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, + $cachevar, + [ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $switch" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], + [eval $cachevar=yes], + [eval $cachevar=no]) + CXXFLAGS="$ac_save_CXXFLAGS"]) + if eval test x\$$cachevar = xyes; then + CXXFLAGS="$CXXFLAGS $switch" + ac_success=yes + break + fi + done + fi]) + + m4_if([$1], [ext], [], [dnl + if test x$ac_success = xno; then + dnl HP's aCC needs +std=c++11 according to: + dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf + for switch in -std=c++11 -std=c++0x +std=c++11; do + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) + AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, + $cachevar, + [ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $switch" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], + [eval $cachevar=yes], + [eval $cachevar=no]) + CXXFLAGS="$ac_save_CXXFLAGS"]) + if eval test x\$$cachevar = xyes; then + CXXFLAGS="$CXXFLAGS $switch" + ac_success=yes + break + fi + done + fi]) + AC_LANG_POP([C++]) + if test x$ax_cxx_compile_cxx11_required = xtrue; then + if test x$ac_success = xno; then + AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) + fi + else + if test x$ac_success = xno; then + HAVE_CXX11=0 + AC_MSG_NOTICE([No compiler with C++11 support was found]) + else + HAVE_CXX11=1 + AC_DEFINE(HAVE_CXX11,1, + [define if the compiler supports basic C++11 syntax]) + fi + + AC_SUBST(HAVE_CXX11) + fi +]) diff --git a/mybulma/node_modules/node-sass/src/libsass/res/resource.rc b/mybulma/node_modules/node-sass/src/libsass/res/resource.rc new file mode 100644 index 0000000..fc49e6a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/res/resource.rc @@ -0,0 +1,35 @@ +#include + +// DLL version information. +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG | VS_FF_PRERELEASE +#else + FILEFLAGS 0 +#endif +FILEOS VOS_NT_WINDOWS32 +FILETYPE VFT_DLL +FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904b0" + BEGIN + VALUE "CompanyName", "Sass Open Source Foundation" + VALUE "FileDescription", "A C/C++ implementation of a Sass compiler" + VALUE "FileVersion", "1.0.0.0" + VALUE "InternalName", "libsass" + VALUE "LegalCopyright", "\251 2017 libsass.org" + VALUE "OriginalFilename", "libsass.dll" + VALUE "ProductName", "LibSass Library" + VALUE "ProductVersion", "1.0.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1200 + END +END diff --git a/mybulma/node_modules/node-sass/src/libsass/script/bootstrap b/mybulma/node_modules/node-sass/src/libsass/script/bootstrap new file mode 100644 index 0000000..ab82fac --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/bootstrap @@ -0,0 +1,13 @@ +#!/bin/bash + +script/branding + +: ${SASS_SPEC_PATH:="sass-spec"} +: ${SASS_SASSC_PATH:="sassc" } + +if [ ! -d $SASS_SPEC_PATH ]; then + git clone https://github.com/sass/sass-spec.git $SASS_SPEC_PATH +fi +if [ ! -d $SASS_SASSC_PATH ]; then + git clone https://github.com/sass/sassc.git $SASS_SASSC_PATH +fi diff --git a/mybulma/node_modules/node-sass/src/libsass/script/branding b/mybulma/node_modules/node-sass/src/libsass/script/branding new file mode 100644 index 0000000..cd8cb2a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/branding @@ -0,0 +1,10 @@ +#! /bin/bash + +echo " " +echo " _ ___ ____ ____ _ ____ ____ " +echo "| | |_ _| __ ) ___| / \ / ___/ ___| " +echo "| | | || _ \___ \ / _ \ \___ \___ \ " +echo "| |___ | || |_) |__) / ___ \ ___) |__) |" +echo "|_____|___|____/____/_/ \_\____/____/ " +echo " " + diff --git a/mybulma/node_modules/node-sass/src/libsass/script/ci-build-libsass b/mybulma/node_modules/node-sass/src/libsass/script/ci-build-libsass new file mode 100644 index 0000000..40ea22f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/ci-build-libsass @@ -0,0 +1,134 @@ +#!/bin/bash + +set -e + +script/bootstrap + +# export this path right here (was in script/spec before) +export SASS_LIBSASS_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../ && pwd )" + +# use some defaults if not running under travis ci +if [ "x$CONTINUOUS_INTEGRATION" == "x" ]; then export CONTINUOUS_INTEGRATION=true; fi +if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then export TRAVIS_BUILD_DIR=$(pwd); fi +if [ "x$SASS_SASSC_PATH" == "x" ]; then export SASS_SASSC_PATH=$(pwd)/sassc; fi +if [ "x$SASS_SPEC_PATH" == "x" ]; then export SASS_SPEC_PATH=$(pwd)/sass-spec; fi + +# try to get the os name from uname (and filter via perl - probably not the most portable way?) +if [ "x$TRAVIS_OS_NAME" == "x" ]; then export TRAVIS_OS_NAME=`uname -s | perl -ne 'print lc \$1 if\(/^([a-zA-Z]+)/'\)`; fi + +if [ "x$COVERAGE" == "xyes" ]; then + COVERAGE_OPT="--enable-coverage" + export EXTRA_CFLAGS="-fprofile-arcs -ftest-coverage" + export EXTRA_CXXFLAGS="-fprofile-arcs -ftest-coverage" + if [ "$TRAVIS_OS_NAME" == "osx" ]; then + # osx doesn't seem to know gcov lib? + export EXTRA_LDFLAGS="--coverage" + else + export EXTRA_LDFLAGS="-lgcov --coverage" + fi +else + COVERAGE_OPT="--disable-coverage" +fi + +if [ "x$BUILD" == "xstatic" ]; then + SHARED_OPT="--disable-shared --enable-static" + MAKE_TARGET="static" +else + # Makefile of sassc wants to link to static + SHARED_OPT="--enable-shared --enable-static" + MAKE_TARGET="shared" +fi + +if [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then + MAKE_OPTS="$MAKE_OPTS -j1 V=1" +else + MAKE_OPTS="$MAKE_OPTS -j5 V=1" +fi + +if [ "x$PREFIX" == "x" ]; then + if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then + PREFIX=$SASS_LIBSASS_PATH/build + else + PREFIX=$TRAVIS_BUILD_DIR/build + fi +fi + +# enable address sanitation +# https://en.wikipedia.org/wiki/AddressSanitizer +if [ "x$CC" == "xclang" ]; then + if [ "x$COVERAGE" != "xyes" ]; then + if [ "$TRAVIS_OS_NAME" == "linux" ]; then + export EXTRA_CFLAGS="$EXTRA_CFLAGS -fsanitize=address" + export EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -fsanitize=address" + export EXTRA_LDFLAGS="$EXTRA_LDFLAGS -fsanitize=address" + fi + fi +fi + +echo SASS_LIBSASS_PATH: $SASS_LIBSASS_PATH +echo TRAVIS_BUILD_DIR: $TRAVIS_BUILD_DIR +echo SASS_SASSC_PATH: $SASS_SASSC_PATH +echo SASS_SPEC_PATH: $SASS_SPEC_PATH +echo INSTALL_LOCATION: $PREFIX + +if [ "x$AUTOTOOLS" == "xyes" ]; then + + echo -en 'travis_fold:start:configure\r' + autoreconf --force --install + ./configure --enable-tests $COVERAGE_OPT \ + --disable-silent-rules \ + --with-sassc-dir=$SASS_SASSC_PATH \ + --with-sass-spec-dir=$SASS_SPEC_PATH \ + --prefix=$PREFIX \ + ${SHARED_OPT} + echo -en 'travis_fold:end:configure\r' + + make $MAKE_OPTS clean + + # install to prefix directory + PREFIX="$PREFIX" make $MAKE_OPTS install + +else + + make $MAKE_OPTS clean + +fi + +# install to prefix directory +PREFIX="$PREFIX" make $MAKE_OPTS install + +ls -la $PREFIX/* + +echo successfully compiled libsass +echo AUTOTOOLS=$AUTOTOOLS COVERAGE=$COVERAGE BUILD=$BUILD + +if [ "$CONTINUOUS_INTEGRATION" == "true" ] && [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ "x$TRAVIS_PULL_REQUEST" != "x" ] && + ([ "$TRAVIS_OS_NAME" == "linux" ] || [ "$TRAVIS_OS_NAME" == "osx" ] || [ "$TRAVIS_OS_NAME" == "cygwin" ]); +then + + echo "Fetching PR $TRAVIS_PULL_REQUEST" + + JSON=$(curl -L -sS https://api.github.com/repos/sass/libsass/pulls/$TRAVIS_PULL_REQUEST) + + if [[ $JSON =~ "API rate limit exceeded" ]]; + then + echo "Travis rate limit on github exceeded" + echo "Retrying via 'special purpose proxy'" + JSON=$(curl -L -sS https://github-api-reverse-proxy.herokuapp.com/repos/sass/libsass/pulls/$TRAVIS_PULL_REQUEST) + fi + + RE_SPEC_PR="sass\/sass-spec(#|\/pull\/)([0-9]+)" + + if [[ $JSON =~ $RE_SPEC_PR ]]; + then + SPEC_PR="${BASH_REMATCH[2]}" + echo "Fetching Sass Spec PR $SPEC_PR" + git -C sass-spec fetch -u origin pull/$SPEC_PR/head:ci-spec-pr-$SPEC_PR + git -C sass-spec checkout --force ci-spec-pr-$SPEC_PR + LD_LIBRARY_PATH="$PREFIX/lib/" make $MAKE_OPTS test_probe + else + LD_LIBRARY_PATH="$PREFIX/lib/" make $MAKE_OPTS test_probe + fi +else + LD_LIBRARY_PATH="$PREFIX/lib/" make $MAKE_OPTS test_probe +fi diff --git a/mybulma/node_modules/node-sass/src/libsass/script/ci-build-plugin b/mybulma/node_modules/node-sass/src/libsass/script/ci-build-plugin new file mode 100644 index 0000000..0dd67b9 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/ci-build-plugin @@ -0,0 +1,62 @@ +#!/bin/bash + +PLUGIN=$1 +RUBY_BIN=ruby +SASS_SPEC_PATH=sass-spec +SASSC_BIN=sassc/bin/sassc +SASS_SPEC_SPEC_DIR=plugins/libsass-${PLUGIN}/test + +if [ -e ./tester ] ; then + SASSC_BIN=./tester +fi + +if [ -d ./build/lib ] ; then + cp -a build/lib lib +fi + +if [ "x$1" == "x" ] ; then + echo "No plugin name given" + exit 1 +fi + +if [ "x$COVERAGE" == "0" ] ; then + unset COVERAGE +fi + +export EXTRA_CFLAGS="" +export EXTRA_CXXFLAGS="" +if [ "$TRAVIS_OS_NAME" == "osx" ]; then + # osx doesn't seem to know gcov lib? + export EXTRA_LDFLAGS="--coverage" +else + export EXTRA_LDFLAGS="-lgcov --coverage" +fi + +mkdir -p plugins +if [ ! -d plugins/libsass-${PLUGIN} ] ; then + git clone https://github.com/mgreter/libsass-${PLUGIN} plugins/libsass-${PLUGIN} +fi +if [ ! -d plugins/libsass-${PLUGIN}/build ] ; then + mkdir plugins/libsass-${PLUGIN}/build +fi +RETVAL=$?; if [ "$RETVAL" != "0" ]; then exit $RETVAL; fi + +cd plugins/libsass-${PLUGIN}/build +cmake -G "Unix Makefiles" -D LIBSASS_DIR="../../.." .. +RETVAL=$?; if [ "$RETVAL" != "0" ]; then exit $RETVAL; fi +make VERBOSE=1 -j2 +RETVAL=$?; if [ "$RETVAL" != "0" ]; then exit $RETVAL; fi +cd ../../.. + +# glob only works on paths relative to imports +if [ "x$PLUGIN" == "xglob" ]; then + ${SASSC_BIN} --plugin-path plugins/libsass-${PLUGIN}/build ${SASS_SPEC_SPEC_DIR}/basic/input.scss > ${SASS_SPEC_SPEC_DIR}/basic/result.css + ${SASSC_BIN} --plugin-path plugins/libsass-${PLUGIN}/build ${SASS_SPEC_SPEC_DIR}/basic/input.scss --sourcemap > /dev/null +else + cat ${SASS_SPEC_SPEC_DIR}/basic/input.scss | ${SASSC_BIN} --precision 5 --plugin-path plugins/libsass-${PLUGIN}/build -I ${SASS_SPEC_SPEC_DIR}/basic > ${SASS_SPEC_SPEC_DIR}/basic/result.css + cat ${SASS_SPEC_SPEC_DIR}/basic/input.scss | ${SASSC_BIN} --precision 5 --plugin-path plugins/libsass-${PLUGIN}/build -I ${SASS_SPEC_SPEC_DIR}/basic --sourcemap > /dev/null +fi +RETVAL=$?; if [ "$RETVAL" != "0" ]; then exit $RETVAL; fi + +diff ${SASS_SPEC_SPEC_DIR}/basic/expected_output.css ${SASS_SPEC_SPEC_DIR}/basic/result.css +RETVAL=$?; if [ "$RETVAL" != "0" ]; then exit $RETVAL; fi diff --git a/mybulma/node_modules/node-sass/src/libsass/script/ci-install-compiler b/mybulma/node_modules/node-sass/src/libsass/script/ci-install-compiler new file mode 100644 index 0000000..3a68b3a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/ci-install-compiler @@ -0,0 +1,6 @@ +#!/bin/bash + +gem install minitest +gem install minitap + +pip2 install --user 'requests[security]' diff --git a/mybulma/node_modules/node-sass/src/libsass/script/ci-install-deps b/mybulma/node_modules/node-sass/src/libsass/script/ci-install-deps new file mode 100644 index 0000000..27b485a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/ci-install-deps @@ -0,0 +1,20 @@ +#!/bin/bash +if [ "x$COVERAGE" == "xyes" ]; then + pip2 install --user gcovr + pip2 install --user cpp-coveralls +else + echo "no dependencies to install" +fi + +if [ "x$AUTOTOOLS" == "xyes" ]; then + AUTOTOOLS=yes + + if [ "$TRAVIS_OS_NAME" == "linux" ]; then + sudo add-apt-repository -y ppa:rbose-debianizer/automake &> /dev/null + sudo apt-get -qq update + sudo apt-get -qq install automake + fi + +fi + +exit 0 diff --git a/mybulma/node_modules/node-sass/src/libsass/script/ci-report-coverage b/mybulma/node_modules/node-sass/src/libsass/script/ci-report-coverage new file mode 100644 index 0000000..495cb05 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/ci-report-coverage @@ -0,0 +1,42 @@ +#!/bin/bash + +if [ "x$COVERAGE" = "xyes" ]; then + + # find / -name "gcovr" + # find / -name "coveralls" + # this is only needed for mac os x builds! + PATH=$PATH:/Users/travis/Library/Python/2.7/bin/ + + + # exclude some directories from profiling (.libs is from autotools) + export EXCLUDE_COVERAGE="--exclude plugins + --exclude sassc/sassc.c + --exclude src/sass-spec + --exclude src/.libs + --exclude src/debug.hpp + --exclude src/json.cpp + --exclude src/json.hpp + --exclude src/cencode.c + --exclude src/b64 + --exclude src/utf8 + --exclude src/utf8_string.hpp + --exclude src/utf8.h + --exclude src/utf8_string.cpp + --exclude src/sass2scss.h + --exclude src/sass2scss.cpp + --exclude src/test + --exclude src/posix + --exclude src/debugger.hpp" + # debug used gcov version + # option not available on mac + if [ "$TRAVIS_OS_NAME" != "osx" ]; then + gcov -v + fi + # create summarized report + gcovr -r . + # submit report to coveralls.io + coveralls $EXCLUDE_COVERAGE --gcov-options '\-lp' + +else + echo "skip coverage reporting" +fi diff --git a/mybulma/node_modules/node-sass/src/libsass/script/spec b/mybulma/node_modules/node-sass/src/libsass/script/spec new file mode 100644 index 0000000..d0b864a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/spec @@ -0,0 +1,5 @@ +#!/bin/bash + +script/bootstrap + +make $MAKE_OPTS test_build diff --git a/mybulma/node_modules/node-sass/src/libsass/script/tap-driver b/mybulma/node_modules/node-sass/src/libsass/script/tap-driver new file mode 100644 index 0000000..ed8a9a9 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/tap-driver @@ -0,0 +1,652 @@ +#!/usr/bin/env sh +# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +scriptversion=2011-12-27.17; # UTC + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +me=tap-driver.sh + +fatal () +{ + echo "$me: fatal: $*" >&2 + exit 1 +} + +usage_error () +{ + echo "$me: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat < + # + trap : 1 3 2 13 15 + if test $merge -gt 0; then + exec 2>&1 + else + exec 2>&3 + fi + "$@" + echo $? + ) | LC_ALL=C ${AM_TAP_AWK-awk} \ + -v me="$me" \ + -v test_script_name="$test_name" \ + -v log_file="$log_file" \ + -v trs_file="$trs_file" \ + -v expect_failure="$expect_failure" \ + -v merge="$merge" \ + -v ignore_exit="$ignore_exit" \ + -v comments="$comments" \ + -v diag_string="$diag_string" \ +' +# FIXME: the usages of "cat >&3" below could be optimized when using +# FIXME: GNU awk, and/on on systems that supports /dev/fd/. + +# Implementation note: in what follows, `result_obj` will be an +# associative array that (partly) simulates a TAP result object +# from the `TAP::Parser` perl module. + +## ----------- ## +## FUNCTIONS ## +## ----------- ## + +function fatal(msg) +{ + print me ": " msg | "cat >&2" + exit 1 +} + +function abort(where) +{ + fatal("internal error " where) +} + +# Convert a boolean to a "yes"/"no" string. +function yn(bool) +{ + return bool ? "yes" : "no"; +} + +function add_test_result(result) +{ + if (!test_results_index) + test_results_index = 0 + test_results_list[test_results_index] = result + test_results_index += 1 + test_results_seen[result] = 1; +} + +# Whether the test script should be re-run by "make recheck". +function must_recheck() +{ + for (k in test_results_seen) + if (k != "XFAIL" && k != "PASS" && k != "SKIP") + return 1 + return 0 +} + +# Whether the content of the log file associated to this test should +# be copied into the "global" test-suite.log. +function copy_in_global_log() +{ + for (k in test_results_seen) + if (k != "PASS") + return 1 + return 0 +} + +# FIXME: this can certainly be improved ... +function get_global_test_result() +{ + if ("ERROR" in test_results_seen) + return "ERROR" + if ("FAIL" in test_results_seen || "XPASS" in test_results_seen) + return "FAIL" + all_skipped = 1 + for (k in test_results_seen) + if (k != "SKIP") + all_skipped = 0 + if (all_skipped) + return "SKIP" + return "PASS"; +} + +function stringify_result_obj(result_obj) +{ + if (result_obj["is_unplanned"] || result_obj["number"] != testno) + return "ERROR" + + if (plan_seen == LATE_PLAN) + return "ERROR" + + if (result_obj["directive"] == "TODO") + return result_obj["is_ok"] ? "XPASS" : "XFAIL" + + if (result_obj["directive"] == "SKIP") + return result_obj["is_ok"] ? "SKIP" : COOKED_FAIL; + + if (length(result_obj["directive"])) + abort("in function stringify_result_obj()") + + return result_obj["is_ok"] ? COOKED_PASS : COOKED_FAIL +} + +function decorate_result(result) +{ + color_name = color_for_result[result] + if (color_name) + return color_map[color_name] "" result "" color_map["std"] + # If we are not using colorized output, or if we do not know how + # to colorize the given result, we should return it unchanged. + return result +} + +function report(result, details) +{ + if (result ~ /^(X?(PASS|FAIL)|SKIP|ERROR)/) + { + msg = ": " test_script_name + add_test_result(result) + } + else if (result == "#") + { + msg = " " test_script_name ":" + } + else + { + abort("in function report()") + } + if (length(details)) + msg = msg " " details + # Output on console might be colorized. + print decorate_result(result) msg + # Log the result in the log file too, to help debugging (this is + # especially true when said result is a TAP error or "Bail out!"). + print result msg | "cat >&3"; +} + +function testsuite_error(error_message) +{ + report("ERROR", "- " error_message) +} + +function handle_tap_result() +{ + details = result_obj["number"]; + if (length(result_obj["description"])) + details = details " " result_obj["description"] + + if (plan_seen == LATE_PLAN) + { + details = details " # AFTER LATE PLAN"; + } + else if (result_obj["is_unplanned"]) + { + details = details " # UNPLANNED"; + } + else if (result_obj["number"] != testno) + { + details = sprintf("%s # OUT-OF-ORDER (expecting %d)", + details, testno); + } + else if (result_obj["directive"]) + { + details = details " # " result_obj["directive"]; + if (length(result_obj["explanation"])) + details = details " " result_obj["explanation"] + } + + report(stringify_result_obj(result_obj), details) +} + +# `skip_reason` should be empty whenever planned > 0. +function handle_tap_plan(planned, skip_reason) +{ + planned += 0 # Avoid getting confused if, say, `planned` is "00" + if (length(skip_reason) && planned > 0) + abort("in function handle_tap_plan()") + if (plan_seen) + { + # Error, only one plan per stream is acceptable. + testsuite_error("multiple test plans") + return; + } + planned_tests = planned + # The TAP plan can come before or after *all* the TAP results; we speak + # respectively of an "early" or a "late" plan. If we see the plan line + # after at least one TAP result has been seen, assume we have a late + # plan; in this case, any further test result seen after the plan will + # be flagged as an error. + plan_seen = (testno >= 1 ? LATE_PLAN : EARLY_PLAN) + # If testno > 0, we have an error ("too many tests run") that will be + # automatically dealt with later, so do not worry about it here. If + # $plan_seen is true, we have an error due to a repeated plan, and that + # has already been dealt with above. Otherwise, we have a valid "plan + # with SKIP" specification, and should report it as a particular kind + # of SKIP result. + if (planned == 0 && testno == 0) + { + if (length(skip_reason)) + skip_reason = "- " skip_reason; + report("SKIP", skip_reason); + } +} + +function extract_tap_comment(line) +{ + if (index(line, diag_string) == 1) + { + # Strip leading `diag_string` from `line`. + line = substr(line, length(diag_string) + 1) + # And strip any leading and trailing whitespace left. + sub("^[ \t]*", "", line) + sub("[ \t]*$", "", line) + # Return what is left (if any). + return line; + } + return ""; +} + +# When this function is called, we know that line is a TAP result line, +# so that it matches the (perl) RE "^(not )?ok\b". +function setup_result_obj(line) +{ + # Get the result, and remove it from the line. + result_obj["is_ok"] = (substr(line, 1, 2) == "ok" ? 1 : 0) + sub("^(not )?ok[ \t]*", "", line) + + # If the result has an explicit number, get it and strip it; otherwise, + # automatically assing the next progresive number to it. + if (line ~ /^[0-9]+$/ || line ~ /^[0-9]+[^a-zA-Z0-9_]/) + { + match(line, "^[0-9]+") + # The final `+ 0` is to normalize numbers with leading zeros. + result_obj["number"] = substr(line, 1, RLENGTH) + 0 + line = substr(line, RLENGTH + 1) + } + else + { + result_obj["number"] = testno + } + + if (plan_seen == LATE_PLAN) + # No further test results are acceptable after a "late" TAP plan + # has been seen. + result_obj["is_unplanned"] = 1 + else if (plan_seen && testno > planned_tests) + result_obj["is_unplanned"] = 1 + else + result_obj["is_unplanned"] = 0 + + # Strip trailing and leading whitespace. + sub("^[ \t]*", "", line) + sub("[ \t]*$", "", line) + + # This will have to be corrected if we have a "TODO"/"SKIP" directive. + result_obj["description"] = line + result_obj["directive"] = "" + result_obj["explanation"] = "" + + if (index(line, "#") == 0) + return # No possible directive, nothing more to do. + + # Directives are case-insensitive. + rx = "[ \t]*#[ \t]*([tT][oO][dD][oO]|[sS][kK][iI][pP])[ \t]*" + + # See whether we have the directive, and if yes, where. + pos = match(line, rx "$") + if (!pos) + pos = match(line, rx "[^a-zA-Z0-9_]") + + # If there was no TAP directive, we have nothing more to do. + if (!pos) + return + + # Let`s now see if the TAP directive has been escaped. For example: + # escaped: ok \# SKIP + # not escaped: ok \\# SKIP + # escaped: ok \\\\\# SKIP + # not escaped: ok \ # SKIP + if (substr(line, pos, 1) == "#") + { + bslash_count = 0 + for (i = pos; i > 1 && substr(line, i - 1, 1) == "\\"; i--) + bslash_count += 1 + if (bslash_count % 2) + return # Directive was escaped. + } + + # Strip the directive and its explanation (if any) from the test + # description. + result_obj["description"] = substr(line, 1, pos - 1) + # Now remove the test description from the line, that has been dealt + # with already. + line = substr(line, pos) + # Strip the directive, and save its value (normalized to upper case). + sub("^[ \t]*#[ \t]*", "", line) + result_obj["directive"] = toupper(substr(line, 1, 4)) + line = substr(line, 5) + # Now get the explanation for the directive (if any), with leading + # and trailing whitespace removed. + sub("^[ \t]*", "", line) + sub("[ \t]*$", "", line) + result_obj["explanation"] = line +} + +function get_test_exit_message(status) +{ + if (status == 0) + return "" + if (status !~ /^[1-9][0-9]*$/) + abort("getting exit status") + if (status < 127) + exit_details = "" + else if (status == 127) + exit_details = " (command not found?)" + else if (status >= 128 && status <= 255) + exit_details = sprintf(" (terminated by signal %d?)", status - 128) + else if (status > 256 && status <= 384) + # We used to report an "abnormal termination" here, but some Korn + # shells, when a child process die due to signal number n, can leave + # in $? an exit status of 256+n instead of the more standard 128+n. + # Apparently, both behaviours are allowed by POSIX (2008), so be + # prepared to handle them both. See also Austing Group report ID + # 0000051 + exit_details = sprintf(" (terminated by signal %d?)", status - 256) + else + # Never seen in practice. + exit_details = " (abnormal termination)" + return sprintf("exited with status %d%s", status, exit_details) +} + +function write_test_results() +{ + print ":global-test-result: " get_global_test_result() > trs_file + print ":recheck: " yn(must_recheck()) > trs_file + print ":copy-in-global-log: " yn(copy_in_global_log()) > trs_file + for (i = 0; i < test_results_index; i += 1) + print ":test-result: " test_results_list[i] > trs_file + close(trs_file); +} + +BEGIN { + +## ------- ## +## SETUP ## +## ------- ## + +'"$init_colors"' + +# Properly initialized once the TAP plan is seen. +planned_tests = 0 + +COOKED_PASS = expect_failure ? "XPASS": "PASS"; +COOKED_FAIL = expect_failure ? "XFAIL": "FAIL"; + +# Enumeration-like constants to remember which kind of plan (if any) +# has been seen. It is important that NO_PLAN evaluates "false" as +# a boolean. +NO_PLAN = 0 +EARLY_PLAN = 1 +LATE_PLAN = 2 + +testno = 0 # Number of test results seen so far. +bailed_out = 0 # Whether a "Bail out!" directive has been seen. + +# Whether the TAP plan has been seen or not, and if yes, which kind +# it is ("early" is seen before any test result, "late" otherwise). +plan_seen = NO_PLAN + +## --------- ## +## PARSING ## +## --------- ## + +is_first_read = 1 + +while (1) + { + # Involutions required so that we are able to read the exit status + # from the last input line. + st = getline + if (st < 0) # I/O error. + fatal("I/O error while reading from input stream") + else if (st == 0) # End-of-input + { + if (is_first_read) + abort("in input loop: only one input line") + break + } + if (is_first_read) + { + is_first_read = 0 + nextline = $0 + continue + } + else + { + curline = nextline + nextline = $0 + $0 = curline + } + # Copy any input line verbatim into the log file. + print | "cat >&3" + # Parsing of TAP input should stop after a "Bail out!" directive. + if (bailed_out) + continue + + # TAP test result. + if ($0 ~ /^(not )?ok$/ || $0 ~ /^(not )?ok[^a-zA-Z0-9_]/) + { + testno += 1 + setup_result_obj($0) + handle_tap_result() + } + # TAP plan (normal or "SKIP" without explanation). + else if ($0 ~ /^1\.\.[0-9]+[ \t]*$/) + { + # The next two lines will put the number of planned tests in $0. + sub("^1\\.\\.", "") + sub("[^0-9]*$", "") + handle_tap_plan($0, "") + continue + } + # TAP "SKIP" plan, with an explanation. + else if ($0 ~ /^1\.\.0+[ \t]*#/) + { + # The next lines will put the skip explanation in $0, stripping + # any leading and trailing whitespace. This is a little more + # tricky in truth, since we want to also strip a potential leading + # "SKIP" string from the message. + sub("^[^#]*#[ \t]*(SKIP[: \t][ \t]*)?", "") + sub("[ \t]*$", ""); + handle_tap_plan(0, $0) + } + # "Bail out!" magic. + # Older versions of prove and TAP::Harness (e.g., 3.17) did not + # recognize a "Bail out!" directive when preceded by leading + # whitespace, but more modern versions (e.g., 3.23) do. So we + # emulate the latter, "more modern" behaviour. + else if ($0 ~ /^[ \t]*Bail out!/) + { + bailed_out = 1 + # Get the bailout message (if any), with leading and trailing + # whitespace stripped. The message remains stored in `$0`. + sub("^[ \t]*Bail out![ \t]*", ""); + sub("[ \t]*$", ""); + # Format the error message for the + bailout_message = "Bail out!" + if (length($0)) + bailout_message = bailout_message " " $0 + testsuite_error(bailout_message) + } + # Maybe we have too look for dianogtic comments too. + else if (comments != 0) + { + comment = extract_tap_comment($0); + if (length(comment)) + report("#", comment); + } + } + +## -------- ## +## FINISH ## +## -------- ## + +# A "Bail out!" directive should cause us to ignore any following TAP +# error, as well as a non-zero exit status from the TAP producer. +if (!bailed_out) + { + if (!plan_seen) + { + testsuite_error("missing test plan") + } + else if (planned_tests != testno) + { + bad_amount = testno > planned_tests ? "many" : "few" + testsuite_error(sprintf("too %s tests run (expected %d, got %d)", + bad_amount, planned_tests, testno)) + } + if (!ignore_exit) + { + # Fetch exit status from the last line. + exit_message = get_test_exit_message(nextline) + if (exit_message) + testsuite_error(exit_message) + } + } + +write_test_results() + +exit 0 + +} # End of "BEGIN" block. +' + +# TODO: document that we consume the file descriptor 3 :-( +} 3>"$log_file" + +test $? -eq 0 || fatal "I/O or internal error" + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/mybulma/node_modules/node-sass/src/libsass/script/tap-runner b/mybulma/node_modules/node-sass/src/libsass/script/tap-runner new file mode 100644 index 0000000..56c13bf --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/tap-runner @@ -0,0 +1 @@ +$@ $TEST_FLAGS --tap --silent | tapout tap diff --git a/mybulma/node_modules/node-sass/src/libsass/script/test-leaks.pl b/mybulma/node_modules/node-sass/src/libsass/script/test-leaks.pl new file mode 100644 index 0000000..bfb8653 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/script/test-leaks.pl @@ -0,0 +1,103 @@ +#!/usr/bin/perl +############################################################ +# this perl script is meant for developers only! +# it will run all spec-tests (without verifying the +# results) via valgrind to detect possible leaks. +# expect that it takes 1h or more to finish! +############################################################ +# Prerequisite install: `cpan Parallel::Runner` +# You may also need to install `cpan File::Find` +# You may also need to install `cpan IPC::Run3` +############################################################ +# usage: `perl test-leaks.pl [threads]` +# example: `time perl test-leaks.pl 4` +############################################################ +# leaks will be reported in "mem-leaks.log" +############################################################ + +use strict; +use warnings; + +############################################################ +# configurations (you may adjust) +############################################################ + +# number of threads to use +my $threads = $ARGV[0] || 8; + +# the github repositories to checkout +# if you need other branch, clone manually! +my $sassc = "https://www.github.com/sass/sassc"; +my $specs = "https://www.github.com/sass/sass-spec"; + +############################################################ +# load modules +############################################################ + +use IPC::Run3; +use IO::Handle; +use Fcntl qw(:flock); +use File::Find::Rule; +use Parallel::Runner; +use List::Util qw(shuffle); + +############################################################ +# check prerequisites +############################################################ + +unless (-d "../sassc") { + warn "sassc folder not found\n"; + warn "trying to checkout via git\n"; + system("git", "clone", $sassc, "../sassc"); + die "git command did not exit gracefully" if $?; +} + +unless (-d "../sass-spec") { + warn "sass-spec folder not found\n"; + warn "trying to checkout via git\n"; + system("git", "clone", $specs, "../sass-spec"); + die "git command did not exit gracefully" if $?; +} + +unless (-f "../sassc/bin/sassc") { + warn "sassc executable not found\n"; + warn "trying to compile via make\n"; + system("make", "-C", "../sassc", "-j", $threads); + die "make command did not exit gracefully" if $?; +} + +############################################################ +# main runner code +############################################################ + +my $root = "../sass-spec/spec"; +my @files = File::Find::Rule->file() + ->name('input.scss')->in($root); + +open(my $leaks, ">", "mem-leaks.log"); +die "Cannot open log" unless $leaks; +my $runner = Parallel::Runner->new($threads); +die "Cannot start runner" unless $runner; + +print "##########################\n"; +print "Testing $#files spec files\n"; +print "##########################\n"; + +foreach my $file (shuffle @files) { + $runner->run(sub { + $| = 1; select STDOUT; + my $cmd = sprintf('../sassc/bin/sassc %s', $file); + my $check = sprintf('valgrind --leak-check=yes %s', $cmd); + run3($check, undef, \ my $out, \ my $err); + if ($err =~ m/in use at exit: 0 bytes in 0 blocks/) { + print "."; # print success indicator + } else { + print "F"; # print error indicator + flock($leaks, LOCK_EX) or die "Cannot lock log"; + $leaks->printflush("#" x 80, "\n", $err, "\n"); + flock($leaks, LOCK_UN) or die "Cannot unlock log"; + } + }); +} + +$runner->finish; diff --git a/mybulma/node_modules/node-sass/src/libsass/src/GNUmakefile.am b/mybulma/node_modules/node-sass/src/libsass/src/GNUmakefile.am new file mode 100644 index 0000000..fee9312 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/GNUmakefile.am @@ -0,0 +1,54 @@ +ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4 -I script + +AM_COPT = -Wall -O2 +AM_COVLDFLAGS = + +if ENABLE_COVERAGE + AM_COPT = -O0 --coverage + AM_COVLDFLAGS += -lgcov +endif + +AM_CPPFLAGS = -I$(top_srcdir)/include +AM_CFLAGS = $(AM_COPT) +AM_CXXFLAGS = $(AM_COPT) +AM_LDFLAGS = $(AM_COPT) $(AM_COVLDFLAGS) + +if COMPILER_IS_MINGW32 + AM_CXXFLAGS += -std=gnu++0x +else + AM_CXXFLAGS += -std=c++0x +endif + +EXTRA_DIST = \ + COPYING \ + INSTALL \ + LICENSE \ + Readme.md + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = support/libsass.pc + +lib_LTLIBRARIES = libsass.la + +include $(top_srcdir)/Makefile.conf + +libsass_la_SOURCES = ${CSOURCES} ${SOURCES} + +libsass_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined -version-info 1:0:0 + +if ENABLE_TESTS +if ENABLE_COVERAGE +nodist_EXTRA_libsass_la_SOURCES = non-existent-file-to-force-CXX-linking.cxx +endif +endif + +include_HEADERS = $(top_srcdir)/include/sass.h \ + $(top_srcdir)/include/sass2scss.h + +sass_includedir = $(includedir)/sass + +sass_include_HEADERS = $(top_srcdir)/include/sass/base.h \ + $(top_srcdir)/include/sass/values.h \ + $(top_srcdir)/include/sass/version.h \ + $(top_srcdir)/include/sass/context.h \ + $(top_srcdir)/include/sass/functions.h diff --git a/mybulma/node_modules/node-sass/src/libsass/src/ast.cpp b/mybulma/node_modules/node-sass/src/libsass/src/ast.cpp new file mode 100644 index 0000000..c3b38ef --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/ast.cpp @@ -0,0 +1,2226 @@ +#include "sass.hpp" +#include "ast.hpp" +#include "context.hpp" +#include "node.hpp" +#include "eval.hpp" +#include "extend.hpp" +#include "emitter.hpp" +#include "color_maps.hpp" +#include "ast_fwd_decl.hpp" +#include +#include +#include +#include +#include +#include +#include + +namespace Sass { + + static Null sass_null(ParserState("null")); + + bool Wrapped_Selector::find ( bool (*f)(AST_Node_Obj) ) + { + // check children first + if (selector_) { + if (selector_->find(f)) return true; + } + // execute last + return f(this); + } + + bool Selector_List::find ( bool (*f)(AST_Node_Obj) ) + { + // check children first + for (Complex_Selector_Obj sel : elements()) { + if (sel->find(f)) return true; + } + // execute last + return f(this); + } + + bool Compound_Selector::find ( bool (*f)(AST_Node_Obj) ) + { + // check children first + for (Simple_Selector_Obj sel : elements()) { + if (sel->find(f)) return true; + } + // execute last + return f(this); + } + + bool Complex_Selector::find ( bool (*f)(AST_Node_Obj) ) + { + // check children first + if (head_ && head_->find(f)) return true; + if (tail_ && tail_->find(f)) return true; + // execute last + return f(this); + } + + bool Supports_Operator::needs_parens(Supports_Condition_Obj cond) const { + if (Supports_Operator_Obj op = Cast(cond)) { + return op->operand() != operand(); + } + return Cast(cond) != NULL; + } + + bool Supports_Negation::needs_parens(Supports_Condition_Obj cond) const { + return Cast(cond) || + Cast(cond); + } + + void str_rtrim(std::string& str, const std::string& delimiters = " \f\n\r\t\v") + { + str.erase( str.find_last_not_of( delimiters ) + 1 ); + } + + void String_Constant::rtrim() + { + str_rtrim(value_); + } + + void String_Schema::rtrim() + { + if (!empty()) { + if (String_Ptr str = Cast(last())) str->rtrim(); + } + } + + void Argument::set_delayed(bool delayed) + { + if (value_) value_->set_delayed(delayed); + is_delayed(delayed); + } + + void Arguments::set_delayed(bool delayed) + { + for (Argument_Obj arg : elements()) { + if (arg) arg->set_delayed(delayed); + } + is_delayed(delayed); + } + + + bool At_Root_Query::exclude(std::string str) + { + bool with = feature() && unquote(feature()->to_string()).compare("with") == 0; + List_Ptr l = static_cast(value().ptr()); + std::string v; + + if (with) + { + if (!l || l->length() == 0) return str.compare("rule") != 0; + for (size_t i = 0, L = l->length(); i < L; ++i) + { + v = unquote((*l)[i]->to_string()); + if (v.compare("all") == 0 || v == str) return false; + } + return true; + } + else + { + if (!l || !l->length()) return str.compare("rule") == 0; + for (size_t i = 0, L = l->length(); i < L; ++i) + { + v = unquote((*l)[i]->to_string()); + if (v.compare("all") == 0 || v == str) return true; + } + return false; + } + } + + void AST_Node::update_pstate(const ParserState& pstate) + { + pstate_.offset += pstate - pstate_ + pstate.offset; + } + + bool Simple_Selector::is_ns_eq(const Simple_Selector& r) const + { + // https://github.com/sass/sass/issues/2229 + if ((has_ns_ == r.has_ns_) || + (has_ns_ && ns_.empty()) || + (r.has_ns_ && r.ns_.empty()) + ) { + if (ns_.empty() && r.ns() == "*") return false; + else if (r.ns().empty() && ns() == "*") return false; + else return ns() == r.ns(); + } + return false; + } + + bool Compound_Selector::operator< (const Compound_Selector& rhs) const + { + size_t L = std::min(length(), rhs.length()); + for (size_t i = 0; i < L; ++i) + { + Simple_Selector_Obj l = (*this)[i]; + Simple_Selector_Obj r = rhs[i]; + if (!l && !r) return false; + else if (!r) return false; + else if (!l) return true; + else if (*l != *r) + { return *l < *r; } + } + // just compare the length now + return length() < rhs.length(); + } + + bool Compound_Selector::has_parent_ref() const + { + for (Simple_Selector_Obj s : *this) { + if (s && s->has_parent_ref()) return true; + } + return false; + } + + bool Compound_Selector::has_real_parent_ref() const + { + for (Simple_Selector_Obj s : *this) { + if (s && s->has_real_parent_ref()) return true; + } + return false; + } + + bool Complex_Selector::has_parent_ref() const + { + return (head() && head()->has_parent_ref()) || + (tail() && tail()->has_parent_ref()); + } + + bool Complex_Selector::has_real_parent_ref() const + { + return (head() && head()->has_real_parent_ref()) || + (tail() && tail()->has_real_parent_ref()); + } + + bool Complex_Selector::operator< (const Complex_Selector& rhs) const + { + // const iterators for tails + Complex_Selector_Ptr_Const l = this; + Complex_Selector_Ptr_Const r = &rhs; + Compound_Selector_Ptr l_h = NULL; + Compound_Selector_Ptr r_h = NULL; + if (l) l_h = l->head(); + if (r) r_h = r->head(); + // process all tails + while (true) + { + #ifdef DEBUG + // skip empty ancestor first + if (l && l->is_empty_ancestor()) + { + l_h = NULL; + l = l->tail(); + if(l) l_h = l->head(); + continue; + } + // skip empty ancestor first + if (r && r->is_empty_ancestor()) + { + r_h = NULL; + r = r->tail(); + if (r) r_h = r->head(); + continue; + } + #endif + // check for valid selectors + if (!l) return !!r; + if (!r) return false; + // both are null + else if (!l_h && !r_h) + { + // check combinator after heads + if (l->combinator() != r->combinator()) + { return l->combinator() < r->combinator(); } + // advance to next tails + l = l->tail(); + r = r->tail(); + // fetch the next headers + l_h = NULL; r_h = NULL; + if (l) l_h = l->head(); + if (r) r_h = r->head(); + } + // one side is null + else if (!r_h) return true; + else if (!l_h) return false; + // heads ok and equal + else if (*l_h == *r_h) + { + // check combinator after heads + if (l->combinator() != r->combinator()) + { return l->combinator() < r->combinator(); } + // advance to next tails + l = l->tail(); + r = r->tail(); + // fetch the next headers + l_h = NULL; r_h = NULL; + if (l) l_h = l->head(); + if (r) r_h = r->head(); + } + // heads are not equal + else return *l_h < *r_h; + } + } + + bool Complex_Selector::operator== (const Complex_Selector& rhs) const + { + // const iterators for tails + Complex_Selector_Ptr_Const l = this; + Complex_Selector_Ptr_Const r = &rhs; + Compound_Selector_Ptr l_h = NULL; + Compound_Selector_Ptr r_h = NULL; + if (l) l_h = l->head(); + if (r) r_h = r->head(); + // process all tails + while (true) + { + #ifdef DEBUG + // skip empty ancestor first + if (l && l->is_empty_ancestor()) + { + l_h = NULL; + l = l->tail(); + if (l) l_h = l->head(); + continue; + } + // skip empty ancestor first + if (r && r->is_empty_ancestor()) + { + r_h = NULL; + r = r->tail(); + if (r) r_h = r->head(); + continue; + } + #endif + // check the pointers + if (!r) return !l; + if (!l) return !r; + // both are null + if (!l_h && !r_h) + { + // check combinator after heads + if (l->combinator() != r->combinator()) + { return l->combinator() < r->combinator(); } + // advance to next tails + l = l->tail(); + r = r->tail(); + // fetch the next heads + l_h = NULL; r_h = NULL; + if (l) l_h = l->head(); + if (r) r_h = r->head(); + } + // equals if other head is empty + else if ((!l_h && !r_h) || + (!l_h && r_h->empty()) || + (!r_h && l_h->empty()) || + (l_h && r_h && *l_h == *r_h)) + { + // check combinator after heads + if (l->combinator() != r->combinator()) + { return l->combinator() == r->combinator(); } + // advance to next tails + l = l->tail(); + r = r->tail(); + // fetch the next heads + l_h = NULL; r_h = NULL; + if (l) l_h = l->head(); + if (r) r_h = r->head(); + } + // abort + else break; + } + // unreachable + return false; + } + + Compound_Selector_Ptr Compound_Selector::unify_with(Compound_Selector_Ptr rhs) + { + if (empty()) return rhs; + Compound_Selector_Obj unified = SASS_MEMORY_COPY(rhs); + for (size_t i = 0, L = length(); i < L; ++i) + { + if (unified.isNull()) break; + unified = at(i)->unify_with(unified); + } + return unified.detach(); + } + + bool Complex_Selector::operator== (const Selector& rhs) const + { + if (const Selector_List* sl = Cast(&rhs)) return *this == *sl; + if (const Simple_Selector* sp = Cast(&rhs)) return *this == *sp; + if (const Complex_Selector* cs = Cast(&rhs)) return *this == *cs; + if (const Compound_Selector* ch = Cast(&rhs)) return *this == *ch; + throw std::runtime_error("invalid selector base classes to compare"); + } + + + bool Complex_Selector::operator< (const Selector& rhs) const + { + if (const Selector_List* sl = Cast(&rhs)) return *this < *sl; + if (const Simple_Selector* sp = Cast(&rhs)) return *this < *sp; + if (const Complex_Selector* cs = Cast(&rhs)) return *this < *cs; + if (const Compound_Selector* ch = Cast(&rhs)) return *this < *ch; + throw std::runtime_error("invalid selector base classes to compare"); + } + + bool Compound_Selector::operator== (const Selector& rhs) const + { + if (const Selector_List* sl = Cast(&rhs)) return *this == *sl; + if (const Simple_Selector* sp = Cast(&rhs)) return *this == *sp; + if (const Complex_Selector* cs = Cast(&rhs)) return *this == *cs; + if (const Compound_Selector* ch = Cast(&rhs)) return *this == *ch; + throw std::runtime_error("invalid selector base classes to compare"); + } + + bool Compound_Selector::operator< (const Selector& rhs) const + { + if (const Selector_List* sl = Cast(&rhs)) return *this < *sl; + if (const Simple_Selector* sp = Cast(&rhs)) return *this < *sp; + if (const Complex_Selector* cs = Cast(&rhs)) return *this < *cs; + if (const Compound_Selector* ch = Cast(&rhs)) return *this < *ch; + throw std::runtime_error("invalid selector base classes to compare"); + } + + bool Selector_Schema::operator== (const Selector& rhs) const + { + if (const Selector_List* sl = Cast(&rhs)) return *this == *sl; + if (const Simple_Selector* sp = Cast(&rhs)) return *this == *sp; + if (const Complex_Selector* cs = Cast(&rhs)) return *this == *cs; + if (const Compound_Selector* ch = Cast(&rhs)) return *this == *ch; + throw std::runtime_error("invalid selector base classes to compare"); + } + + bool Selector_Schema::operator< (const Selector& rhs) const + { + if (const Selector_List* sl = Cast(&rhs)) return *this < *sl; + if (const Simple_Selector* sp = Cast(&rhs)) return *this < *sp; + if (const Complex_Selector* cs = Cast(&rhs)) return *this < *cs; + if (const Compound_Selector* ch = Cast(&rhs)) return *this < *ch; + throw std::runtime_error("invalid selector base classes to compare"); + } + + bool Simple_Selector::operator== (const Selector& rhs) const + { + if (Simple_Selector_Ptr_Const sp = Cast(&rhs)) return *this == *sp; + return false; + } + + bool Simple_Selector::operator< (const Selector& rhs) const + { + if (Simple_Selector_Ptr_Const sp = Cast(&rhs)) return *this < *sp; + return false; + } + + bool Simple_Selector::operator== (const Simple_Selector& rhs) const + { + // solve the double dispatch problem by using RTTI information via dynamic cast + if (const Pseudo_Selector* lhs = Cast(this)) {return *lhs == rhs; } + else if (const Wrapped_Selector* lhs = Cast(this)) {return *lhs == rhs; } + else if (const Element_Selector* lhs = Cast(this)) {return *lhs == rhs; } + else if (const Attribute_Selector* lhs = Cast(this)) {return *lhs == rhs; } + else if (name_ == rhs.name_) + { return is_ns_eq(rhs); } + else return false; + } + + bool Simple_Selector::operator< (const Simple_Selector& rhs) const + { + // solve the double dispatch problem by using RTTI information via dynamic cast + if (const Pseudo_Selector* lhs = Cast(this)) {return *lhs < rhs; } + else if (const Wrapped_Selector* lhs = Cast(this)) {return *lhs < rhs; } + else if (const Element_Selector* lhs = Cast(this)) {return *lhs < rhs; } + else if (const Attribute_Selector* lhs = Cast(this)) {return *lhs < rhs; } + if (is_ns_eq(rhs)) + { return name_ < rhs.name_; } + return ns_ < rhs.ns_; + } + + bool Selector_List::operator== (const Selector& rhs) const + { + // solve the double dispatch problem by using RTTI information via dynamic cast + if (Selector_List_Ptr_Const sl = Cast(&rhs)) { return *this == *sl; } + else if (Complex_Selector_Ptr_Const cpx = Cast(&rhs)) { return *this == *cpx; } + else if (Compound_Selector_Ptr_Const cpd = Cast(&rhs)) { return *this == *cpd; } + // no compare method + return this == &rhs; + } + + // Selector lists can be compared to comma lists + bool Selector_List::operator== (const Expression& rhs) const + { + // solve the double dispatch problem by using RTTI information via dynamic cast + if (List_Ptr_Const ls = Cast(&rhs)) { return *ls == *this; } + if (Selector_Ptr_Const ls = Cast(&rhs)) { return *this == *ls; } + // compare invalid (maybe we should error?) + return false; + } + + bool Selector_List::operator== (const Selector_List& rhs) const + { + // for array access + size_t i = 0, n = 0; + size_t iL = length(); + size_t nL = rhs.length(); + // create temporary vectors and sort them + std::vector l_lst = this->elements(); + std::vector r_lst = rhs.elements(); + std::sort(l_lst.begin(), l_lst.end(), OrderNodes()); + std::sort(r_lst.begin(), r_lst.end(), OrderNodes()); + // process loop + while (true) + { + // first check for valid index + if (i == iL) return iL == nL; + else if (n == nL) return iL == nL; + // the access the vector items + Complex_Selector_Obj l = l_lst[i]; + Complex_Selector_Obj r = r_lst[n]; + // skip nulls + if (!l) ++i; + else if (!r) ++n; + // do the check + else if (*l != *r) + { return false; } + // advance + ++i; ++n; + } + // there is no break?! + } + + bool Selector_List::operator< (const Selector& rhs) const + { + if (Selector_List_Ptr_Const sp = Cast(&rhs)) return *this < *sp; + return false; + } + + bool Selector_List::operator< (const Selector_List& rhs) const + { + size_t l = rhs.length(); + if (length() < l) l = length(); + for (size_t i = 0; i < l; i ++) { + if (*at(i) < *rhs.at(i)) return true; + } + return false; + } + + Compound_Selector_Ptr Simple_Selector::unify_with(Compound_Selector_Ptr rhs) + { + for (size_t i = 0, L = rhs->length(); i < L; ++i) + { if (to_string() == rhs->at(i)->to_string()) return rhs; } + + // check for pseudo elements because they are always last + size_t i, L; + bool found = false; + if (typeid(*this) == typeid(Pseudo_Selector) || typeid(*this) == typeid(Wrapped_Selector) || typeid(*this) == typeid(Attribute_Selector)) + { + for (i = 0, L = rhs->length(); i < L; ++i) + { + if ((Cast((*rhs)[i]) || Cast((*rhs)[i]) || Cast((*rhs)[i])) && (*rhs)[L-1]->is_pseudo_element()) + { found = true; break; } + } + } + else + { + for (i = 0, L = rhs->length(); i < L; ++i) + { + if (Cast((*rhs)[i]) || Cast((*rhs)[i]) || Cast((*rhs)[i])) + { found = true; break; } + } + } + if (!found) + { + rhs->append(this); + } else { + rhs->elements().insert(rhs->elements().begin() + i, this); + } + return rhs; + } + + Simple_Selector_Ptr Element_Selector::unify_with(Simple_Selector_Ptr rhs) + { + // check if ns can be extended + // true for no ns or universal + if (has_universal_ns()) + { + // but dont extend with universal + // true for valid ns and universal + if (!rhs->is_universal_ns()) + { + // overwrite the name if star is given as name + if (this->name() == "*") { this->name(rhs->name()); } + // now overwrite the namespace name and flag + this->ns(rhs->ns()); this->has_ns(rhs->has_ns()); + // return copy + return this; + } + } + // namespace may changed, check the name now + // overwrite star (but not with another star) + if (name() == "*" && rhs->name() != "*") + { + // simply set the new name + this->name(rhs->name()); + // return copy + return this; + } + // return original + return this; + } + + Compound_Selector_Ptr Element_Selector::unify_with(Compound_Selector_Ptr rhs) + { + // TODO: handle namespaces + + // if the rhs is empty, just return a copy of this + if (rhs->length() == 0) { + rhs->append(this); + return rhs; + } + + Simple_Selector_Ptr rhs_0 = rhs->at(0); + // otherwise, this is a tag name + if (name() == "*") + { + if (typeid(*rhs_0) == typeid(Element_Selector)) + { + // if rhs is universal, just return this tagname + rhs's qualifiers + Element_Selector_Ptr ts = Cast(rhs_0); + rhs->at(0) = this->unify_with(ts); + return rhs; + } + else if (Cast(rhs_0) || Cast(rhs_0)) { + // qualifier is `.class`, so we can prefix with `ns|*.class` + if (has_ns() && !rhs_0->has_ns()) { + if (ns() != "*") rhs->elements().insert(rhs->begin(), this); + } + return rhs; + } + + + return rhs; + } + + if (typeid(*rhs_0) == typeid(Element_Selector)) + { + // if rhs is universal, just return this tagname + rhs's qualifiers + if (rhs_0->name() != "*" && rhs_0->ns() != "*" && rhs_0->name() != name()) return 0; + // otherwise create new compound and unify first simple selector + rhs->at(0) = this->unify_with(rhs_0); + return rhs; + + } + // else it's a tag name and a bunch of qualifiers -- just append them + if (name() != "*") rhs->elements().insert(rhs->begin(), this); + return rhs; + } + + Compound_Selector_Ptr Class_Selector::unify_with(Compound_Selector_Ptr rhs) + { + rhs->has_line_break(has_line_break()); + return Simple_Selector::unify_with(rhs); + } + + Compound_Selector_Ptr Id_Selector::unify_with(Compound_Selector_Ptr rhs) + { + for (size_t i = 0, L = rhs->length(); i < L; ++i) + { + if (Id_Selector_Ptr sel = Cast(rhs->at(i))) { + if (sel->name() != name()) return 0; + } + } + rhs->has_line_break(has_line_break()); + return Simple_Selector::unify_with(rhs); + } + + Compound_Selector_Ptr Pseudo_Selector::unify_with(Compound_Selector_Ptr rhs) + { + if (is_pseudo_element()) + { + for (size_t i = 0, L = rhs->length(); i < L; ++i) + { + if (Pseudo_Selector_Ptr sel = Cast(rhs->at(i))) { + if (sel->is_pseudo_element() && sel->name() != name()) return 0; + } + } + } + return Simple_Selector::unify_with(rhs); + } + + bool Attribute_Selector::operator< (const Attribute_Selector& rhs) const + { + if (is_ns_eq(rhs)) { + if (name() == rhs.name()) { + if (matcher() == rhs.matcher()) { + bool no_lhs_val = value().isNull(); + bool no_rhs_val = rhs.value().isNull(); + if (no_lhs_val && no_rhs_val) return false; // equal + else if (no_lhs_val) return true; // lhs is null + else if (no_rhs_val) return false; // rhs is null + return *value() < *rhs.value(); // both are given + } else { return matcher() < rhs.matcher(); } + } else { return name() < rhs.name(); } + } else { return ns() < rhs.ns(); } + } + + bool Attribute_Selector::operator< (const Simple_Selector& rhs) const + { + if (Attribute_Selector_Ptr_Const w = Cast(&rhs)) + { + return *this < *w; + } + if (is_ns_eq(rhs)) + { return name() < rhs.name(); } + return ns() < rhs.ns(); + } + + bool Attribute_Selector::operator== (const Attribute_Selector& rhs) const + { + // get optional value state + bool no_lhs_val = value().isNull(); + bool no_rhs_val = rhs.value().isNull(); + // both are null, therefore equal + if (no_lhs_val && no_rhs_val) { + return (name() == rhs.name()) + && (matcher() == rhs.matcher()) + && (is_ns_eq(rhs)); + } + // both are defined, evaluate + if (no_lhs_val == no_rhs_val) { + return (name() == rhs.name()) + && (matcher() == rhs.matcher()) + && (is_ns_eq(rhs)) + && (*value() == *rhs.value()); + } + // not equal + return false; + + } + + bool Attribute_Selector::operator== (const Simple_Selector& rhs) const + { + if (Attribute_Selector_Ptr_Const w = Cast(&rhs)) + { + return is_ns_eq(rhs) && + name() == rhs.name() && + *this == *w; + } + return false; + } + + bool Element_Selector::operator< (const Element_Selector& rhs) const + { + if (is_ns_eq(rhs)) + { return name() < rhs.name(); } + return ns() < rhs.ns(); + } + + bool Element_Selector::operator< (const Simple_Selector& rhs) const + { + if (Element_Selector_Ptr_Const w = Cast(&rhs)) + { + return *this < *w; + } + if (is_ns_eq(rhs)) + { return name() < rhs.name(); } + return ns() < rhs.ns(); + } + + bool Element_Selector::operator== (const Element_Selector& rhs) const + { + return is_ns_eq(rhs) && + name() == rhs.name(); + } + + bool Element_Selector::operator== (const Simple_Selector& rhs) const + { + if (Element_Selector_Ptr_Const w = Cast(&rhs)) + { + return is_ns_eq(rhs) && + name() == rhs.name() && + *this == *w; + } + return false; + } + + bool Pseudo_Selector::operator== (const Pseudo_Selector& rhs) const + { + if (is_ns_eq(rhs) && name() == rhs.name()) + { + String_Obj lhs_ex = expression(); + String_Obj rhs_ex = rhs.expression(); + if (rhs_ex && lhs_ex) return *lhs_ex == *rhs_ex; + else return lhs_ex.ptr() == rhs_ex.ptr(); + } + else return false; + } + + bool Pseudo_Selector::operator== (const Simple_Selector& rhs) const + { + if (Pseudo_Selector_Ptr_Const w = Cast(&rhs)) + { + return *this == *w; + } + return is_ns_eq(rhs) && + name() == rhs.name(); + } + + bool Pseudo_Selector::operator< (const Pseudo_Selector& rhs) const + { + if (is_ns_eq(rhs) && name() == rhs.name()) + { + String_Obj lhs_ex = expression(); + String_Obj rhs_ex = rhs.expression(); + if (rhs_ex && lhs_ex) return *lhs_ex < *rhs_ex; + else return lhs_ex.ptr() < rhs_ex.ptr(); + } + if (is_ns_eq(rhs)) + { return name() < rhs.name(); } + return ns() < rhs.ns(); + } + + bool Pseudo_Selector::operator< (const Simple_Selector& rhs) const + { + if (Pseudo_Selector_Ptr_Const w = Cast(&rhs)) + { + return *this < *w; + } + if (is_ns_eq(rhs)) + { return name() < rhs.name(); } + return ns() < rhs.ns(); + } + + bool Wrapped_Selector::operator== (const Wrapped_Selector& rhs) const + { + if (is_ns_eq(rhs) && name() == rhs.name()) + { return *(selector()) == *(rhs.selector()); } + else return false; + } + + bool Wrapped_Selector::operator== (const Simple_Selector& rhs) const + { + if (Wrapped_Selector_Ptr_Const w = Cast(&rhs)) + { + return *this == *w; + } + return is_ns_eq(rhs) && + name() == rhs.name(); + } + + bool Wrapped_Selector::operator< (const Wrapped_Selector& rhs) const + { + if (is_ns_eq(rhs) && name() == rhs.name()) + { return *(selector()) < *(rhs.selector()); } + if (is_ns_eq(rhs)) + { return name() < rhs.name(); } + return ns() < rhs.ns(); + } + + bool Wrapped_Selector::operator< (const Simple_Selector& rhs) const + { + if (Wrapped_Selector_Ptr_Const w = Cast(&rhs)) + { + return *this < *w; + } + if (is_ns_eq(rhs)) + { return name() < rhs.name(); } + return ns() < rhs.ns(); + } + + bool Wrapped_Selector::is_superselector_of(Wrapped_Selector_Obj sub) + { + if (this->name() != sub->name()) return false; + if (this->name() == ":current") return false; + if (Selector_List_Obj rhs_list = Cast(sub->selector())) { + if (Selector_List_Obj lhs_list = Cast(selector())) { + return lhs_list->is_superselector_of(rhs_list); + } + } + coreError("is_superselector expected a Selector_List", sub->pstate()); + return false; + } + + bool Compound_Selector::is_superselector_of(Selector_List_Obj rhs, std::string wrapped) + { + for (Complex_Selector_Obj item : rhs->elements()) { + if (is_superselector_of(item, wrapped)) return true; + } + return false; + } + + bool Compound_Selector::is_superselector_of(Complex_Selector_Obj rhs, std::string wrapped) + { + if (rhs->head()) return is_superselector_of(rhs->head(), wrapped); + return false; + } + + bool Compound_Selector::is_superselector_of(Compound_Selector_Obj rhs, std::string wrapping) + { + Compound_Selector_Ptr lhs = this; + Simple_Selector_Ptr lbase = lhs->base(); + Simple_Selector_Ptr rbase = rhs->base(); + + // Check if pseudo-elements are the same between the selectors + + std::set lpsuedoset, rpsuedoset; + for (size_t i = 0, L = length(); i < L; ++i) + { + if ((*this)[i]->is_pseudo_element()) { + std::string pseudo((*this)[i]->to_string()); + pseudo = pseudo.substr(pseudo.find_first_not_of(":")); // strip off colons to ensure :after matches ::after since ruby sass is forgiving + lpsuedoset.insert(pseudo); + } + } + for (size_t i = 0, L = rhs->length(); i < L; ++i) + { + if ((*rhs)[i]->is_pseudo_element()) { + std::string pseudo((*rhs)[i]->to_string()); + pseudo = pseudo.substr(pseudo.find_first_not_of(":")); // strip off colons to ensure :after matches ::after since ruby sass is forgiving + rpsuedoset.insert(pseudo); + } + } + if (lpsuedoset != rpsuedoset) { + return false; + } + + // would like to replace this without stringification + // https://github.com/sass/sass/issues/2229 + // SimpleSelectorSet lset, rset; + std::set lset, rset; + + if (lbase && rbase) + { + if (lbase->to_string() == rbase->to_string()) { + for (size_t i = 1, L = length(); i < L; ++i) + { lset.insert((*this)[i]->to_string()); } + for (size_t i = 1, L = rhs->length(); i < L; ++i) + { rset.insert((*rhs)[i]->to_string()); } + return includes(rset.begin(), rset.end(), lset.begin(), lset.end()); + } + return false; + } + + for (size_t i = 0, iL = length(); i < iL; ++i) + { + Selector_Obj wlhs = (*this)[i]; + // very special case for wrapped matches selector + if (Wrapped_Selector_Obj wrapped = Cast(wlhs)) { + if (wrapped->name() == ":not") { + if (Selector_List_Obj not_list = Cast(wrapped->selector())) { + if (not_list->is_superselector_of(rhs, wrapped->name())) return false; + } else { + throw std::runtime_error("wrapped not selector is not a list"); + } + } + if (wrapped->name() == ":matches" || wrapped->name() == ":-moz-any") { + wlhs = wrapped->selector(); + if (Selector_List_Obj list = Cast(wrapped->selector())) { + if (Compound_Selector_Obj comp = Cast(rhs)) { + if (!wrapping.empty() && wrapping != wrapped->name()) return false; + if (wrapping.empty() || wrapping != wrapped->name()) {; + if (list->is_superselector_of(comp, wrapped->name())) return true; + } + } + } + } + Simple_Selector_Ptr rhs_sel = NULL; + if (rhs->elements().size() > i) rhs_sel = (*rhs)[i]; + if (Wrapped_Selector_Ptr wrapped_r = Cast(rhs_sel)) { + if (wrapped->name() == wrapped_r->name()) { + if (wrapped->is_superselector_of(wrapped_r)) { + continue; + }} + } + } + // match from here on as strings + lset.insert(wlhs->to_string()); + } + + for (size_t n = 0, nL = rhs->length(); n < nL; ++n) + { + Selector_Obj r = (*rhs)[n]; + if (Wrapped_Selector_Obj wrapped = Cast(r)) { + if (wrapped->name() == ":not") { + if (Selector_List_Obj ls = Cast(wrapped->selector())) { + ls->remove_parent_selectors(); + if (is_superselector_of(ls, wrapped->name())) return false; + } + } + if (wrapped->name() == ":matches" || wrapped->name() == ":-moz-any") { + if (!wrapping.empty()) { + if (wrapping != wrapped->name()) return false; + } + if (Selector_List_Obj ls = Cast(wrapped->selector())) { + ls->remove_parent_selectors(); + return (is_superselector_of(ls, wrapped->name())); + } + } + } + rset.insert(r->to_string()); + } + + //for (auto l : lset) { cerr << "l: " << l << endl; } + //for (auto r : rset) { cerr << "r: " << r << endl; } + + if (lset.empty()) return true; + // return true if rset contains all the elements of lset + return includes(rset.begin(), rset.end(), lset.begin(), lset.end()); + + } + + // create complex selector (ancestor of) from compound selector + Complex_Selector_Obj Compound_Selector::to_complex() + { + // create an intermediate complex selector + return SASS_MEMORY_NEW(Complex_Selector, + pstate(), + Complex_Selector::ANCESTOR_OF, + this, + 0); + } + + Selector_List_Ptr Complex_Selector::unify_with(Complex_Selector_Ptr other) + { + + // get last tails (on the right side) + Complex_Selector_Obj l_last = this->last(); + Complex_Selector_Obj r_last = other->last(); + + // check valid pointers (assertion) + SASS_ASSERT(l_last, "lhs is null"); + SASS_ASSERT(r_last, "rhs is null"); + + // Not sure about this check, but closest way I could check + // was to see if this is a ruby 'SimpleSequence' equivalent. + // It seems to do the job correctly as some specs react to this + if (l_last->combinator() != Combinator::ANCESTOR_OF) return 0; + if (r_last->combinator() != Combinator::ANCESTOR_OF ) return 0; + + // get the headers for the last tails + Compound_Selector_Obj l_last_head = l_last->head(); + Compound_Selector_Obj r_last_head = r_last->head(); + + // check valid head pointers (assertion) + SASS_ASSERT(l_last_head, "lhs head is null"); + SASS_ASSERT(r_last_head, "rhs head is null"); + + // get the unification of the last compound selectors + Compound_Selector_Obj unified = r_last_head->unify_with(l_last_head); + + // abort if we could not unify heads + if (unified == 0) return 0; + + // check for universal (star: `*`) selector + bool is_universal = l_last_head->is_universal() || + r_last_head->is_universal(); + + if (is_universal) + { + // move the head + l_last->head(0); + r_last->head(unified); + } + + // create nodes from both selectors + Node lhsNode = complexSelectorToNode(this); + Node rhsNode = complexSelectorToNode(other); + + // overwrite universal base + if (!is_universal) + { + // create some temporaries to convert to node + Complex_Selector_Obj fake = unified->to_complex(); + Node unified_node = complexSelectorToNode(fake); + // add to permutate the list? + rhsNode.plus(unified_node); + } + + // do some magic we inherit from node and extend + Node node = subweave(lhsNode, rhsNode); + Selector_List_Obj result = SASS_MEMORY_NEW(Selector_List, pstate()); + NodeDequePtr col = node.collection(); // move from collection to list + for (NodeDeque::iterator it = col->begin(), end = col->end(); it != end; it++) + { result->append(nodeToComplexSelector(Node::naiveTrim(*it))); } + + // only return if list has some entries + return result->length() ? result.detach() : 0; + + } + + bool Compound_Selector::operator== (const Compound_Selector& rhs) const + { + // for array access + size_t i = 0, n = 0; + size_t iL = length(); + size_t nL = rhs.length(); + // create temporary vectors and sort them + std::vector l_lst = this->elements(); + std::vector r_lst = rhs.elements(); + std::sort(l_lst.begin(), l_lst.end(), OrderNodes()); + std::sort(r_lst.begin(), r_lst.end(), OrderNodes()); + // process loop + while (true) + { + // first check for valid index + if (i == iL) return iL == nL; + else if (n == nL) return iL == nL; + // the access the vector items + Simple_Selector_Obj l = l_lst[i]; + Simple_Selector_Obj r = r_lst[n]; + // skip nulls + if (!l) ++i; + if (!r) ++n; + // do the check now + else if (*l != *r) + { return false; } + // advance now + ++i; ++n; + } + // there is no break?! + } + + bool Complex_Selector::is_superselector_of(Compound_Selector_Obj rhs, std::string wrapping) + { + return last()->head() && last()->head()->is_superselector_of(rhs, wrapping); + } + + bool Complex_Selector::is_superselector_of(Complex_Selector_Obj rhs, std::string wrapping) + { + Complex_Selector_Ptr lhs = this; + // check for selectors with leading or trailing combinators + if (!lhs->head() || !rhs->head()) + { return false; } + Complex_Selector_Obj l_innermost = lhs->innermost(); + if (l_innermost->combinator() != Complex_Selector::ANCESTOR_OF) + { return false; } + Complex_Selector_Obj r_innermost = rhs->innermost(); + if (r_innermost->combinator() != Complex_Selector::ANCESTOR_OF) + { return false; } + // more complex (i.e., longer) selectors are always more specific + size_t l_len = lhs->length(), r_len = rhs->length(); + if (l_len > r_len) + { return false; } + + if (l_len == 1) + { return lhs->head()->is_superselector_of(rhs->last()->head(), wrapping); } + + // we have to look one tail deeper, since we cary the + // combinator around for it (which is important here) + if (rhs->tail() && lhs->tail() && combinator() != Complex_Selector::ANCESTOR_OF) { + Complex_Selector_Obj lhs_tail = lhs->tail(); + Complex_Selector_Obj rhs_tail = rhs->tail(); + if (lhs_tail->combinator() != rhs_tail->combinator()) return false; + if (lhs_tail->head() && !rhs_tail->head()) return false; + if (!lhs_tail->head() && rhs_tail->head()) return false; + if (lhs_tail->head() && rhs_tail->head()) { + if (!lhs_tail->head()->is_superselector_of(rhs_tail->head())) return false; + } + } + + bool found = false; + Complex_Selector_Obj marker = rhs; + for (size_t i = 0, L = rhs->length(); i < L; ++i) { + if (i == L-1) + { return false; } + if (lhs->head() && marker->head() && lhs->head()->is_superselector_of(marker->head(), wrapping)) + { found = true; break; } + marker = marker->tail(); + } + if (!found) + { return false; } + + /* + Hmm, I hope I have the logic right: + + if lhs has a combinator: + if !(marker has a combinator) return false + if !(lhs.combinator == '~' ? marker.combinator != '>' : lhs.combinator == marker.combinator) return false + return lhs.tail-without-innermost.is_superselector_of(marker.tail-without-innermost) + else if marker has a combinator: + if !(marker.combinator == ">") return false + return lhs.tail.is_superselector_of(marker.tail) + else + return lhs.tail.is_superselector_of(marker.tail) + */ + if (lhs->combinator() != Complex_Selector::ANCESTOR_OF) + { + if (marker->combinator() == Complex_Selector::ANCESTOR_OF) + { return false; } + if (!(lhs->combinator() == Complex_Selector::PRECEDES ? marker->combinator() != Complex_Selector::PARENT_OF : lhs->combinator() == marker->combinator())) + { return false; } + return lhs->tail()->is_superselector_of(marker->tail()); + } + else if (marker->combinator() != Complex_Selector::ANCESTOR_OF) + { + if (marker->combinator() != Complex_Selector::PARENT_OF) + { return false; } + return lhs->tail()->is_superselector_of(marker->tail()); + } + return lhs->tail()->is_superselector_of(marker->tail()); + } + + size_t Complex_Selector::length() const + { + // TODO: make this iterative + if (!tail()) return 1; + return 1 + tail()->length(); + } + + // append another complex selector at the end + // check if we need to append some headers + // then we need to check for the combinator + // only then we can safely set the new tail + void Complex_Selector::append(Complex_Selector_Obj ss, Backtraces& traces) + { + + Complex_Selector_Obj t = ss->tail(); + Combinator c = ss->combinator(); + String_Obj r = ss->reference(); + Compound_Selector_Obj h = ss->head(); + + if (ss->has_line_feed()) has_line_feed(true); + if (ss->has_line_break()) has_line_break(true); + + // append old headers + if (h && h->length()) { + if (last()->combinator() != ANCESTOR_OF && c != ANCESTOR_OF) { + traces.push_back(Backtrace(pstate())); + throw Exception::InvalidParent(this, traces, ss); + } else if (last()->head_ && last()->head_->length()) { + Compound_Selector_Obj rh = last()->head(); + size_t i; + size_t L = h->length(); + if (Cast(h->first())) { + if (Class_Selector_Ptr cs = Cast(rh->last())) { + Class_Selector_Ptr sqs = SASS_MEMORY_COPY(cs); + sqs->name(sqs->name() + (*h)[0]->name()); + sqs->pstate((*h)[0]->pstate()); + (*rh)[rh->length()-1] = sqs; + rh->pstate(h->pstate()); + for (i = 1; i < L; ++i) rh->append((*h)[i]); + } else if (Id_Selector_Ptr is = Cast(rh->last())) { + Id_Selector_Ptr sqs = SASS_MEMORY_COPY(is); + sqs->name(sqs->name() + (*h)[0]->name()); + sqs->pstate((*h)[0]->pstate()); + (*rh)[rh->length()-1] = sqs; + rh->pstate(h->pstate()); + for (i = 1; i < L; ++i) rh->append((*h)[i]); + } else if (Element_Selector_Ptr ts = Cast(rh->last())) { + Element_Selector_Ptr tss = SASS_MEMORY_COPY(ts); + tss->name(tss->name() + (*h)[0]->name()); + tss->pstate((*h)[0]->pstate()); + (*rh)[rh->length()-1] = tss; + rh->pstate(h->pstate()); + for (i = 1; i < L; ++i) rh->append((*h)[i]); + } else if (Placeholder_Selector_Ptr ps = Cast(rh->last())) { + Placeholder_Selector_Ptr pss = SASS_MEMORY_COPY(ps); + pss->name(pss->name() + (*h)[0]->name()); + pss->pstate((*h)[0]->pstate()); + (*rh)[rh->length()-1] = pss; + rh->pstate(h->pstate()); + for (i = 1; i < L; ++i) rh->append((*h)[i]); + } else { + last()->head_->concat(h); + } + } else { + last()->head_->concat(h); + } + } else if (last()->head_) { + last()->head_->concat(h); + } + } else { + // std::cerr << "has no or empty head\n"; + } + + if (last()) { + if (last()->combinator() != ANCESTOR_OF && c != ANCESTOR_OF) { + Complex_Selector_Ptr inter = SASS_MEMORY_NEW(Complex_Selector, pstate()); + inter->reference(r); + inter->combinator(c); + inter->tail(t); + last()->tail(inter); + } else { + if (last()->combinator() == ANCESTOR_OF) { + last()->combinator(c); + last()->reference(r); + } + last()->tail(t); + } + } + + } + + Selector_List_Obj Selector_List::eval(Eval& eval) + { + Selector_List_Obj list = schema() ? + eval(schema()) : eval(this); + list->schema(schema()); + return list; + } + + Selector_List_Ptr Selector_List::resolve_parent_refs(std::vector& pstack, Backtraces& traces, bool implicit_parent) + { + if (!this->has_parent_ref()) return this; + Selector_List_Ptr ss = SASS_MEMORY_NEW(Selector_List, pstate()); + Selector_List_Ptr ps = pstack.back(); + for (size_t pi = 0, pL = ps->length(); pi < pL; ++pi) { + for (size_t si = 0, sL = this->length(); si < sL; ++si) { + Selector_List_Obj rv = at(si)->resolve_parent_refs(pstack, traces, implicit_parent); + ss->concat(rv); + } + } + return ss; + } + + Selector_List_Ptr Complex_Selector::resolve_parent_refs(std::vector& pstack, Backtraces& traces, bool implicit_parent) + { + Complex_Selector_Obj tail = this->tail(); + Compound_Selector_Obj head = this->head(); + Selector_List_Ptr parents = pstack.back(); + + if (!this->has_real_parent_ref() && !implicit_parent) { + Selector_List_Ptr retval = SASS_MEMORY_NEW(Selector_List, pstate()); + retval->append(this); + return retval; + } + + // first resolve_parent_refs the tail (which may return an expanded list) + Selector_List_Obj tails = tail ? tail->resolve_parent_refs(pstack, traces, implicit_parent) : 0; + + if (head && head->length() > 0) { + + Selector_List_Obj retval; + // we have a parent selector in a simple compound list + // mix parent complex selector into the compound list + if (Cast((*head)[0])) { + retval = SASS_MEMORY_NEW(Selector_List, pstate()); + + // it turns out that real parent references reach + // across @at-root rules, which comes unexpected + if (parents == NULL && head->has_real_parent_ref()) { + int i = pstack.size() - 1; + while (!parents && i > -1) { + parents = pstack.at(i--); + } + } + + if (parents && parents->length()) { + if (tails && tails->length() > 0) { + for (size_t n = 0, nL = tails->length(); n < nL; ++n) { + for (size_t i = 0, iL = parents->length(); i < iL; ++i) { + Complex_Selector_Obj t = (*tails)[n]; + Complex_Selector_Obj parent = (*parents)[i]; + Complex_Selector_Obj s = SASS_MEMORY_CLONE(parent); + Complex_Selector_Obj ss = SASS_MEMORY_CLONE(this); + ss->tail(t ? SASS_MEMORY_CLONE(t) : NULL); + Compound_Selector_Obj h = SASS_MEMORY_COPY(head_); + // remove parent selector from sequence + if (h->length()) { + h->erase(h->begin()); + ss->head(h); + } else { + ss->head(NULL); + } + // adjust for parent selector (1 char) + // if (h->length()) { + // ParserState state(h->at(0)->pstate()); + // state.offset.column += 1; + // state.column -= 1; + // (*h)[0]->pstate(state); + // } + // keep old parser state + s->pstate(pstate()); + // append new tail + s->append(ss, traces); + retval->append(s); + } + } + } + // have no tails but parents + // loop above is inside out + else { + for (size_t i = 0, iL = parents->length(); i < iL; ++i) { + Complex_Selector_Obj parent = (*parents)[i]; + Complex_Selector_Obj s = SASS_MEMORY_CLONE(parent); + Complex_Selector_Obj ss = SASS_MEMORY_CLONE(this); + // this is only if valid if the parent has no trailing op + // otherwise we cannot append more simple selectors to head + if (parent->last()->combinator() != ANCESTOR_OF) { + traces.push_back(Backtrace(pstate())); + throw Exception::InvalidParent(parent, traces, ss); + } + ss->tail(tail ? SASS_MEMORY_CLONE(tail) : NULL); + Compound_Selector_Obj h = SASS_MEMORY_COPY(head_); + // remove parent selector from sequence + if (h->length()) { + h->erase(h->begin()); + ss->head(h); + } else { + ss->head(NULL); + } + // \/ IMO ruby sass bug \/ + ss->has_line_feed(false); + // adjust for parent selector (1 char) + // if (h->length()) { + // ParserState state(h->at(0)->pstate()); + // state.offset.column += 1; + // state.column -= 1; + // (*h)[0]->pstate(state); + // } + // keep old parser state + s->pstate(pstate()); + // append new tail + s->append(ss, traces); + retval->append(s); + } + } + } + // have no parent but some tails + else { + if (tails && tails->length() > 0) { + for (size_t n = 0, nL = tails->length(); n < nL; ++n) { + Complex_Selector_Obj cpy = SASS_MEMORY_CLONE(this); + cpy->tail(SASS_MEMORY_CLONE(tails->at(n))); + cpy->head(SASS_MEMORY_NEW(Compound_Selector, head->pstate())); + for (size_t i = 1, L = this->head()->length(); i < L; ++i) + cpy->head()->append((*this->head())[i]); + if (!cpy->head()->length()) cpy->head(0); + retval->append(cpy->skip_empty_reference()); + } + } + // have no parent nor tails + else { + Complex_Selector_Obj cpy = SASS_MEMORY_CLONE(this); + cpy->head(SASS_MEMORY_NEW(Compound_Selector, head->pstate())); + for (size_t i = 1, L = this->head()->length(); i < L; ++i) + cpy->head()->append((*this->head())[i]); + if (!cpy->head()->length()) cpy->head(0); + retval->append(cpy->skip_empty_reference()); + } + } + } + // no parent selector in head + else { + retval = this->tails(tails); + } + + for (Simple_Selector_Obj ss : head->elements()) { + if (Wrapped_Selector_Ptr ws = Cast(ss)) { + if (Selector_List_Ptr sl = Cast(ws->selector())) { + if (parents) ws->selector(sl->resolve_parent_refs(pstack, traces, implicit_parent)); + } + } + } + + return retval.detach(); + + } + // has no head + return this->tails(tails); + } + + Selector_List_Ptr Complex_Selector::tails(Selector_List_Ptr tails) + { + Selector_List_Ptr rv = SASS_MEMORY_NEW(Selector_List, pstate_); + if (tails && tails->length()) { + for (size_t i = 0, iL = tails->length(); i < iL; ++i) { + Complex_Selector_Obj pr = SASS_MEMORY_CLONE(this); + pr->tail(tails->at(i)); + rv->append(pr); + } + } + else { + rv->append(this); + } + return rv; + } + + // return the last tail that is defined + Complex_Selector_Obj Complex_Selector::first() + { + // declare variables used in loop + Complex_Selector_Obj cur = this; + Compound_Selector_Obj head; + // processing loop + while (cur) + { + // get the head + head = cur->head_; + // abort (and return) if it is not a parent selector + if (!head || head->length() != 1 || !Cast((*head)[0])) { + break; + } + // advance to next + cur = cur->tail_; + } + // result + return cur; + } + + // return the last tail that is defined + Complex_Selector_Obj Complex_Selector::last() + { + Complex_Selector_Ptr cur = this; + Complex_Selector_Ptr nxt = cur; + // loop until last + while (nxt) { + cur = nxt; + nxt = cur->tail(); + } + return cur; + } + + Complex_Selector::Combinator Complex_Selector::clear_innermost() + { + Combinator c; + if (!tail() || tail()->tail() == 0) + { c = combinator(); combinator(ANCESTOR_OF); tail(0); } + else + { c = tail()->clear_innermost(); } + return c; + } + + void Complex_Selector::set_innermost(Complex_Selector_Obj val, Combinator c) + { + if (!tail()) + { tail(val); combinator(c); } + else + { tail()->set_innermost(val, c); } + } + + void Complex_Selector::cloneChildren() + { + if (head()) head(SASS_MEMORY_CLONE(head())); + if (tail()) tail(SASS_MEMORY_CLONE(tail())); + } + + void Compound_Selector::cloneChildren() + { + for (size_t i = 0, l = length(); i < l; i++) { + at(i) = SASS_MEMORY_CLONE(at(i)); + } + } + + void Selector_List::cloneChildren() + { + for (size_t i = 0, l = length(); i < l; i++) { + at(i) = SASS_MEMORY_CLONE(at(i)); + } + } + + void Wrapped_Selector::cloneChildren() + { + selector(SASS_MEMORY_CLONE(selector())); + } + + // remove parent selector references + // basically unwraps parsed selectors + void Selector_List::remove_parent_selectors() + { + // Check every rhs selector against left hand list + for(size_t i = 0, L = length(); i < L; ++i) { + if (!(*this)[i]->head()) continue; + if ((*this)[i]->head()->is_empty_reference()) { + // simply move to the next tail if we have "no" combinator + if ((*this)[i]->combinator() == Complex_Selector::ANCESTOR_OF) { + if ((*this)[i]->tail()) { + if ((*this)[i]->has_line_feed()) { + (*this)[i]->tail()->has_line_feed(true); + } + (*this)[i] = (*this)[i]->tail(); + } + } + // otherwise remove the first item from head + else { + (*this)[i]->head()->erase((*this)[i]->head()->begin()); + } + } + } + } + + size_t Wrapped_Selector::hash() + { + if (hash_ == 0) { + hash_combine(hash_, Simple_Selector::hash()); + if (selector_) hash_combine(hash_, selector_->hash()); + } + return hash_; + } + bool Wrapped_Selector::has_parent_ref() const { + // if (has_reference()) return true; + if (!selector()) return false; + return selector()->has_parent_ref(); + } + bool Wrapped_Selector::has_real_parent_ref() const { + // if (has_reference()) return true; + if (!selector()) return false; + return selector()->has_real_parent_ref(); + } + unsigned long Wrapped_Selector::specificity() const + { + return selector_ ? selector_->specificity() : 0; + } + + + bool Selector_List::has_parent_ref() const + { + for (Complex_Selector_Obj s : elements()) { + if (s && s->has_parent_ref()) return true; + } + return false; + } + + bool Selector_List::has_real_parent_ref() const + { + for (Complex_Selector_Obj s : elements()) { + if (s && s->has_real_parent_ref()) return true; + } + return false; + } + + bool Selector_Schema::has_parent_ref() const + { + if (String_Schema_Obj schema = Cast(contents())) { + return schema->length() > 0 && Cast(schema->at(0)) != NULL; + } + return false; + } + + bool Selector_Schema::has_real_parent_ref() const + { + if (String_Schema_Obj schema = Cast(contents())) { + Parent_Selector_Obj p = Cast(schema->at(0)); + return schema->length() > 0 && p && p->is_real_parent_ref(); + } + return false; + } + + void Selector_List::adjust_after_pushing(Complex_Selector_Obj c) + { + // if (c->has_reference()) has_reference(true); + } + + // it's a superselector if every selector of the right side + // list is a superselector of the given left side selector + bool Complex_Selector::is_superselector_of(Selector_List_Obj sub, std::string wrapping) + { + // Check every rhs selector against left hand list + for(size_t i = 0, L = sub->length(); i < L; ++i) { + if (!is_superselector_of((*sub)[i], wrapping)) return false; + } + return true; + } + + // it's a superselector if every selector of the right side + // list is a superselector of the given left side selector + bool Selector_List::is_superselector_of(Selector_List_Obj sub, std::string wrapping) + { + // Check every rhs selector against left hand list + for(size_t i = 0, L = sub->length(); i < L; ++i) { + if (!is_superselector_of((*sub)[i], wrapping)) return false; + } + return true; + } + + // it's a superselector if every selector on the right side + // is a superselector of any one of the left side selectors + bool Selector_List::is_superselector_of(Compound_Selector_Obj sub, std::string wrapping) + { + // Check every lhs selector against right hand + for(size_t i = 0, L = length(); i < L; ++i) { + if ((*this)[i]->is_superselector_of(sub, wrapping)) return true; + } + return false; + } + + // it's a superselector if every selector on the right side + // is a superselector of any one of the left side selectors + bool Selector_List::is_superselector_of(Complex_Selector_Obj sub, std::string wrapping) + { + // Check every lhs selector against right hand + for(size_t i = 0, L = length(); i < L; ++i) { + if ((*this)[i]->is_superselector_of(sub)) return true; + } + return false; + } + + Selector_List_Ptr Selector_List::unify_with(Selector_List_Ptr rhs) { + std::vector unified_complex_selectors; + // Unify all of children with RHS's children, storing the results in `unified_complex_selectors` + for (size_t lhs_i = 0, lhs_L = length(); lhs_i < lhs_L; ++lhs_i) { + Complex_Selector_Obj seq1 = (*this)[lhs_i]; + for(size_t rhs_i = 0, rhs_L = rhs->length(); rhs_i < rhs_L; ++rhs_i) { + Complex_Selector_Ptr seq2 = rhs->at(rhs_i); + + Selector_List_Obj result = seq1->unify_with(seq2); + if( result ) { + for(size_t i = 0, L = result->length(); i < L; ++i) { + unified_complex_selectors.push_back( (*result)[i] ); + } + } + } + } + + // Creates the final Selector_List by combining all the complex selectors + Selector_List_Ptr final_result = SASS_MEMORY_NEW(Selector_List, pstate()); + for (auto itr = unified_complex_selectors.begin(); itr != unified_complex_selectors.end(); ++itr) { + final_result->append(*itr); + } + return final_result; + } + + void Selector_List::populate_extends(Selector_List_Obj extendee, Subset_Map& extends) + { + + Selector_List_Ptr extender = this; + for (auto complex_sel : extendee->elements()) { + Complex_Selector_Obj c = complex_sel; + + + // Ignore any parent selectors, until we find the first non Selectorerence head + Compound_Selector_Obj compound_sel = c->head(); + Complex_Selector_Obj pIter = complex_sel; + while (pIter) { + Compound_Selector_Obj pHead = pIter->head(); + if (pHead && Cast(pHead->elements()[0]) == NULL) { + compound_sel = pHead; + break; + } + + pIter = pIter->tail(); + } + + if (!pIter->head() || pIter->tail()) { + coreError("nested selectors may not be extended", c->pstate()); + } + + compound_sel->is_optional(extendee->is_optional()); + + for (size_t i = 0, L = extender->length(); i < L; ++i) { + extends.put(compound_sel, std::make_pair((*extender)[i], compound_sel)); + } + } + }; + + void Compound_Selector::append(Simple_Selector_Ptr element) + { + Vectorized::append(element); + pstate_.offset += element->pstate().offset; + } + + Compound_Selector_Ptr Compound_Selector::minus(Compound_Selector_Ptr rhs) + { + Compound_Selector_Ptr result = SASS_MEMORY_NEW(Compound_Selector, pstate()); + // result->has_parent_reference(has_parent_reference()); + + // not very efficient because it needs to preserve order + for (size_t i = 0, L = length(); i < L; ++i) + { + bool found = false; + std::string thisSelector((*this)[i]->to_string()); + for (size_t j = 0, M = rhs->length(); j < M; ++j) + { + if (thisSelector == (*rhs)[j]->to_string()) + { + found = true; + break; + } + } + if (!found) result->append((*this)[i]); + } + + return result; + } + + void Compound_Selector::mergeSources(ComplexSelectorSet& sources) + { + for (ComplexSelectorSet::iterator iterator = sources.begin(), endIterator = sources.end(); iterator != endIterator; ++iterator) { + this->sources_.insert(SASS_MEMORY_CLONE(*iterator)); + } + } + + Argument_Obj Arguments::get_rest_argument() + { + if (this->has_rest_argument()) { + for (Argument_Obj arg : this->elements()) { + if (arg->is_rest_argument()) { + return arg; + } + } + } + return NULL; + } + + Argument_Obj Arguments::get_keyword_argument() + { + if (this->has_keyword_argument()) { + for (Argument_Obj arg : this->elements()) { + if (arg->is_keyword_argument()) { + return arg; + } + } + } + return NULL; + } + + void Arguments::adjust_after_pushing(Argument_Obj a) + { + if (!a->name().empty()) { + if (has_keyword_argument()) { + coreError("named arguments must precede variable-length argument", a->pstate()); + } + has_named_arguments(true); + } + else if (a->is_rest_argument()) { + if (has_rest_argument()) { + coreError("functions and mixins may only be called with one variable-length argument", a->pstate()); + } + if (has_keyword_argument_) { + coreError("only keyword arguments may follow variable arguments", a->pstate()); + } + has_rest_argument(true); + } + else if (a->is_keyword_argument()) { + if (has_keyword_argument()) { + coreError("functions and mixins may only be called with one keyword argument", a->pstate()); + } + has_keyword_argument(true); + } + else { + if (has_rest_argument()) { + coreError("ordinal arguments must precede variable-length arguments", a->pstate()); + } + if (has_named_arguments()) { + coreError("ordinal arguments must precede named arguments", a->pstate()); + } + } + } + + bool Ruleset::is_invisible() const { + if (Selector_List_Ptr sl = Cast(selector())) { + for (size_t i = 0, L = sl->length(); i < L; ++i) + if (!(*sl)[i]->has_placeholder()) return false; + } + return true; + } + + bool Media_Block::is_invisible() const { + for (size_t i = 0, L = block()->length(); i < L; ++i) { + Statement_Obj stm = block()->at(i); + if (!stm->is_invisible()) return false; + } + return true; + } + + Number::Number(ParserState pstate, double val, std::string u, bool zero) + : Value(pstate), + Units(), + value_(val), + zero_(zero), + hash_(0) + { + size_t l = 0; + size_t r; + if (!u.empty()) { + bool nominator = true; + while (true) { + r = u.find_first_of("*/", l); + std::string unit(u.substr(l, r == std::string::npos ? r : r - l)); + if (!unit.empty()) { + if (nominator) numerators.push_back(unit); + else denominators.push_back(unit); + } + if (r == std::string::npos) break; + // ToDo: should error for multiple slashes + // if (!nominator && u[r] == '/') error(...) + if (u[r] == '/') + nominator = false; + // strange math parsing? + // else if (u[r] == '*') + // nominator = true; + l = r + 1; + } + } + concrete_type(NUMBER); + } + + // cancel out unnecessary units + void Number::reduce() + { + // apply conversion factor + value_ *= this->Units::reduce(); + } + + void Number::normalize() + { + // apply conversion factor + value_ *= this->Units::normalize(); + } + + bool Custom_Warning::operator== (const Expression& rhs) const + { + if (Custom_Warning_Ptr_Const r = Cast(&rhs)) { + return message() == r->message(); + } + return false; + } + + bool Custom_Error::operator== (const Expression& rhs) const + { + if (Custom_Error_Ptr_Const r = Cast(&rhs)) { + return message() == r->message(); + } + return false; + } + + bool Number::operator== (const Expression& rhs) const + { + if (auto rhsnr = Cast(&rhs)) { + return *this == *rhsnr; + } + return false; + } + + bool Number::operator== (const Number& rhs) const + { + Number l(*this), r(rhs); l.reduce(); r.reduce(); + size_t lhs_units = l.numerators.size() + l.denominators.size(); + size_t rhs_units = r.numerators.size() + r.denominators.size(); + // unitless and only having one unit seems equivalent (will change in future) + if (!lhs_units || !rhs_units) { + return NEAR_EQUAL(l.value(), r.value()); + } + l.normalize(); r.normalize(); + Units &lhs_unit = l, &rhs_unit = r; + return lhs_unit == rhs_unit && + NEAR_EQUAL(l.value(), r.value()); + } + + bool Number::operator< (const Number& rhs) const + { + Number l(*this), r(rhs); l.reduce(); r.reduce(); + size_t lhs_units = l.numerators.size() + l.denominators.size(); + size_t rhs_units = r.numerators.size() + r.denominators.size(); + // unitless and only having one unit seems equivalent (will change in future) + if (!lhs_units || !rhs_units) { + return l.value() < r.value(); + } + l.normalize(); r.normalize(); + Units &lhs_unit = l, &rhs_unit = r; + if (!(lhs_unit == rhs_unit)) { + /* ToDo: do we always get usefull backtraces? */ + throw Exception::IncompatibleUnits(rhs, *this); + } + return lhs_unit < rhs_unit || + l.value() < r.value(); + } + + bool String_Quoted::operator== (const Expression& rhs) const + { + if (String_Quoted_Ptr_Const qstr = Cast(&rhs)) { + return (value() == qstr->value()); + } else if (String_Constant_Ptr_Const cstr = Cast(&rhs)) { + return (value() == cstr->value()); + } + return false; + } + + bool String_Constant::is_invisible() const { + return value_.empty() && quote_mark_ == 0; + } + + bool String_Constant::operator== (const Expression& rhs) const + { + if (String_Quoted_Ptr_Const qstr = Cast(&rhs)) { + return (value() == qstr->value()); + } else if (String_Constant_Ptr_Const cstr = Cast(&rhs)) { + return (value() == cstr->value()); + } + return false; + } + + bool String_Schema::is_left_interpolant(void) const + { + return length() && first()->is_left_interpolant(); + } + bool String_Schema::is_right_interpolant(void) const + { + return length() && last()->is_right_interpolant(); + } + + bool String_Schema::operator== (const Expression& rhs) const + { + if (String_Schema_Ptr_Const r = Cast(&rhs)) { + if (length() != r->length()) return false; + for (size_t i = 0, L = length(); i < L; ++i) { + Expression_Obj rv = (*r)[i]; + Expression_Obj lv = (*this)[i]; + if (!lv || !rv) return false; + if (!(*lv == *rv)) return false; + } + return true; + } + return false; + } + + bool Boolean::operator== (const Expression& rhs) const + { + if (Boolean_Ptr_Const r = Cast(&rhs)) { + return (value() == r->value()); + } + return false; + } + + bool Color::operator== (const Expression& rhs) const + { + if (Color_Ptr_Const r = Cast(&rhs)) { + return r_ == r->r() && + g_ == r->g() && + b_ == r->b() && + a_ == r->a(); + } + return false; + } + + bool List::operator== (const Expression& rhs) const + { + if (List_Ptr_Const r = Cast(&rhs)) { + if (length() != r->length()) return false; + if (separator() != r->separator()) return false; + if (is_bracketed() != r->is_bracketed()) return false; + for (size_t i = 0, L = length(); i < L; ++i) { + Expression_Obj rv = r->at(i); + Expression_Obj lv = this->at(i); + if (!lv || !rv) return false; + if (!(*lv == *rv)) return false; + } + return true; + } + return false; + } + + bool Map::operator== (const Expression& rhs) const + { + if (Map_Ptr_Const r = Cast(&rhs)) { + if (length() != r->length()) return false; + for (auto key : keys()) { + Expression_Obj lv = at(key); + Expression_Obj rv = r->at(key); + if (!rv || !lv) return false; + if (!(*lv == *rv)) return false; + } + return true; + } + return false; + } + + bool Null::operator== (const Expression& rhs) const + { + return rhs.concrete_type() == NULL_VAL; + } + + bool Function::operator== (const Expression& rhs) const + { + if (Function_Ptr_Const r = Cast(&rhs)) { + Definition_Ptr_Const d1 = Cast(definition()); + Definition_Ptr_Const d2 = Cast(r->definition()); + return d1 && d2 && d1 == d2 && is_css() == r->is_css(); + } + return false; + } + + size_t List::size() const { + if (!is_arglist_) return length(); + // arglist expects a list of arguments + // so we need to break before keywords + for (size_t i = 0, L = length(); i < L; ++i) { + Expression_Obj obj = this->at(i); + if (Argument_Ptr arg = Cast(obj)) { + if (!arg->name().empty()) return i; + } + } + return length(); + } + + Expression_Obj Hashed::at(Expression_Obj k) const + { + if (elements_.count(k)) + { return elements_.at(k); } + else { return NULL; } + } + + bool Binary_Expression::is_left_interpolant(void) const + { + return is_interpolant() || (left() && left()->is_left_interpolant()); + } + bool Binary_Expression::is_right_interpolant(void) const + { + return is_interpolant() || (right() && right()->is_right_interpolant()); + } + + const std::string AST_Node::to_string(Sass_Inspect_Options opt) const + { + Sass_Output_Options out(opt); + Emitter emitter(out); + Inspect i(emitter); + i.in_declaration = true; + // ToDo: inspect should be const + const_cast(this)->perform(&i); + return i.get_buffer(); + } + + const std::string AST_Node::to_string() const + { + return to_string({ NESTED, 5 }); + } + + std::string String_Quoted::inspect() const + { + return quote(value_, '*'); + } + + std::string String_Constant::inspect() const + { + return quote(value_, '*'); + } + + bool Declaration::is_invisible() const + { + if (is_custom_property()) return false; + + return !(value_ && value_->concrete_type() != Expression::NULL_VAL); + } + + ////////////////////////////////////////////////////////////////////////////////////////// + // Additional method on Lists to retrieve values directly or from an encompassed Argument. + ////////////////////////////////////////////////////////////////////////////////////////// + Expression_Obj List::value_at_index(size_t i) { + Expression_Obj obj = this->at(i); + if (is_arglist_) { + if (Argument_Ptr arg = Cast(obj)) { + return arg->value(); + } else { + return obj; + } + } else { + return obj; + } + } + + ////////////////////////////////////////////////////////////////////////////////////////// + // Convert map to (key, value) list. + ////////////////////////////////////////////////////////////////////////////////////////// + List_Obj Map::to_list(ParserState& pstate) { + List_Obj ret = SASS_MEMORY_NEW(List, pstate, length(), SASS_COMMA); + + for (auto key : keys()) { + List_Obj l = SASS_MEMORY_NEW(List, pstate, 2); + l->append(key); + l->append(at(key)); + ret->append(l); + } + + return ret; + } + + ////////////////////////////////////////////////////////////////////////////////////////// + // Copy implementations + ////////////////////////////////////////////////////////////////////////////////////////// + + #ifdef DEBUG_SHARED_PTR + + #define IMPLEMENT_AST_OPERATORS(klass) \ + klass##_Ptr klass::copy(std::string file, size_t line) const { \ + klass##_Ptr cpy = new klass(this); \ + cpy->trace(file, line); \ + return cpy; \ + } \ + klass##_Ptr klass::clone(std::string file, size_t line) const { \ + klass##_Ptr cpy = copy(file, line); \ + cpy->cloneChildren(); \ + return cpy; \ + } \ + + #else + + #define IMPLEMENT_AST_OPERATORS(klass) \ + klass##_Ptr klass::copy() const { \ + return new klass(this); \ + } \ + klass##_Ptr klass::clone() const { \ + klass##_Ptr cpy = copy(); \ + cpy->cloneChildren(); \ + return cpy; \ + } \ + + #endif + + IMPLEMENT_AST_OPERATORS(Supports_Operator); + IMPLEMENT_AST_OPERATORS(Supports_Negation); + IMPLEMENT_AST_OPERATORS(Compound_Selector); + IMPLEMENT_AST_OPERATORS(Complex_Selector); + IMPLEMENT_AST_OPERATORS(Element_Selector); + IMPLEMENT_AST_OPERATORS(Class_Selector); + IMPLEMENT_AST_OPERATORS(Id_Selector); + IMPLEMENT_AST_OPERATORS(Pseudo_Selector); + IMPLEMENT_AST_OPERATORS(Wrapped_Selector); + IMPLEMENT_AST_OPERATORS(Selector_List); + IMPLEMENT_AST_OPERATORS(Ruleset); + IMPLEMENT_AST_OPERATORS(Media_Block); + IMPLEMENT_AST_OPERATORS(Custom_Warning); + IMPLEMENT_AST_OPERATORS(Custom_Error); + IMPLEMENT_AST_OPERATORS(List); + IMPLEMENT_AST_OPERATORS(Map); + IMPLEMENT_AST_OPERATORS(Function); + IMPLEMENT_AST_OPERATORS(Number); + IMPLEMENT_AST_OPERATORS(Binary_Expression); + IMPLEMENT_AST_OPERATORS(String_Schema); + IMPLEMENT_AST_OPERATORS(String_Constant); + IMPLEMENT_AST_OPERATORS(String_Quoted); + IMPLEMENT_AST_OPERATORS(Boolean); + IMPLEMENT_AST_OPERATORS(Color); + IMPLEMENT_AST_OPERATORS(Null); + IMPLEMENT_AST_OPERATORS(Parent_Selector); + IMPLEMENT_AST_OPERATORS(Import); + IMPLEMENT_AST_OPERATORS(Import_Stub); + IMPLEMENT_AST_OPERATORS(Function_Call); + IMPLEMENT_AST_OPERATORS(Directive); + IMPLEMENT_AST_OPERATORS(At_Root_Block); + IMPLEMENT_AST_OPERATORS(Supports_Block); + IMPLEMENT_AST_OPERATORS(While); + IMPLEMENT_AST_OPERATORS(Each); + IMPLEMENT_AST_OPERATORS(For); + IMPLEMENT_AST_OPERATORS(If); + IMPLEMENT_AST_OPERATORS(Mixin_Call); + IMPLEMENT_AST_OPERATORS(Extension); + IMPLEMENT_AST_OPERATORS(Media_Query); + IMPLEMENT_AST_OPERATORS(Media_Query_Expression); + IMPLEMENT_AST_OPERATORS(Debug); + IMPLEMENT_AST_OPERATORS(Error); + IMPLEMENT_AST_OPERATORS(Warning); + IMPLEMENT_AST_OPERATORS(Assignment); + IMPLEMENT_AST_OPERATORS(Return); + IMPLEMENT_AST_OPERATORS(At_Root_Query); + IMPLEMENT_AST_OPERATORS(Variable); + IMPLEMENT_AST_OPERATORS(Comment); + IMPLEMENT_AST_OPERATORS(Attribute_Selector); + IMPLEMENT_AST_OPERATORS(Supports_Interpolation); + IMPLEMENT_AST_OPERATORS(Supports_Declaration); + IMPLEMENT_AST_OPERATORS(Supports_Condition); + IMPLEMENT_AST_OPERATORS(Parameters); + IMPLEMENT_AST_OPERATORS(Parameter); + IMPLEMENT_AST_OPERATORS(Arguments); + IMPLEMENT_AST_OPERATORS(Argument); + IMPLEMENT_AST_OPERATORS(Unary_Expression); + IMPLEMENT_AST_OPERATORS(Function_Call_Schema); + IMPLEMENT_AST_OPERATORS(Block); + IMPLEMENT_AST_OPERATORS(Content); + IMPLEMENT_AST_OPERATORS(Trace); + IMPLEMENT_AST_OPERATORS(Keyframe_Rule); + IMPLEMENT_AST_OPERATORS(Bubble); + IMPLEMENT_AST_OPERATORS(Selector_Schema); + IMPLEMENT_AST_OPERATORS(Placeholder_Selector); + IMPLEMENT_AST_OPERATORS(Definition); + IMPLEMENT_AST_OPERATORS(Declaration); +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/ast.hpp b/mybulma/node_modules/node-sass/src/libsass/src/ast.hpp new file mode 100644 index 0000000..a2be868 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/ast.hpp @@ -0,0 +1,3049 @@ +#ifndef SASS_AST_H +#define SASS_AST_H + +#include "sass.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include "sass/base.h" +#include "ast_fwd_decl.hpp" + +#ifdef DEBUG_SHARED_PTR + +#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \ + virtual klass##_Ptr copy(std::string, size_t) const = 0; \ + virtual klass##_Ptr clone(std::string, size_t) const = 0; \ + +#define ATTACH_AST_OPERATIONS(klass) \ + virtual klass##_Ptr copy(std::string, size_t) const; \ + virtual klass##_Ptr clone(std::string, size_t) const; \ + +#else + +#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \ + virtual klass##_Ptr copy() const = 0; \ + virtual klass##_Ptr clone() const = 0; \ + +#define ATTACH_AST_OPERATIONS(klass) \ + virtual klass##_Ptr copy() const; \ + virtual klass##_Ptr clone() const; \ + +#endif + +#ifdef __clang__ + +/* + * There are some overloads used here that trigger the clang overload + * hiding warning. Specifically: + * + * Type type() which hides string type() from Expression + * + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Woverloaded-virtual" + +#endif + +#include "util.hpp" +#include "units.hpp" +#include "context.hpp" +#include "position.hpp" +#include "constants.hpp" +#include "operation.hpp" +#include "position.hpp" +#include "inspect.hpp" +#include "source_map.hpp" +#include "environment.hpp" +#include "error_handling.hpp" +#include "ast_def_macros.hpp" +#include "ast_fwd_decl.hpp" +#include "source_map.hpp" + +#include "sass.h" + +namespace Sass { + + // easier to search with name + const bool DELAYED = true; + + // ToDo: should this really be hardcoded + // Note: most methods follow precision option + const double NUMBER_EPSILON = 0.00000000000001; + + // macro to test if numbers are equal within a small error margin + #define NEAR_EQUAL(lhs, rhs) std::fabs(lhs - rhs) < NUMBER_EPSILON + + // ToDo: where does this fit best? + // We don't share this with C-API? + class Operand { + public: + Operand(Sass_OP operand, bool ws_before = false, bool ws_after = false) + : operand(operand), ws_before(ws_before), ws_after(ws_after) + { } + public: + enum Sass_OP operand; + bool ws_before; + bool ws_after; + }; + + ////////////////////////////////////////////////////////// + // `hash_combine` comes from boost (functional/hash): + // http://www.boost.org/doc/libs/1_35_0/doc/html/hash/combine.html + // Boost Software License - Version 1.0 + // http://www.boost.org/users/license.html + template + void hash_combine (std::size_t& seed, const T& val) + { + seed ^= std::hash()(val) + 0x9e3779b9 + + (seed<<6) + (seed>>2); + } + ////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////// + // Abstract base class for all abstract syntax tree nodes. + ////////////////////////////////////////////////////////// + class AST_Node : public SharedObj { + ADD_PROPERTY(ParserState, pstate) + public: + AST_Node(ParserState pstate) + : pstate_(pstate) + { } + AST_Node(const AST_Node* ptr) + : pstate_(ptr->pstate_) + { } + + // AST_Node(AST_Node& ptr) = delete; + + virtual ~AST_Node() = 0; + virtual size_t hash() { return 0; } + ATTACH_VIRTUAL_AST_OPERATIONS(AST_Node); + virtual std::string inspect() const { return to_string({ INSPECT, 5 }); } + virtual std::string to_sass() const { return to_string({ TO_SASS, 5 }); } + virtual const std::string to_string(Sass_Inspect_Options opt) const; + virtual const std::string to_string() const; + virtual void cloneChildren() {}; + // generic find function (not fully implemented yet) + // ToDo: add specific implementions to all children + virtual bool find ( bool (*f)(AST_Node_Obj) ) { return f(this); }; + public: + void update_pstate(const ParserState& pstate); + public: + Offset off() { return pstate(); } + Position pos() { return pstate(); } + ATTACH_OPERATIONS() + }; + inline AST_Node::~AST_Node() { } + + ////////////////////////////////////////////////////////////////////// + // define cast template now (need complete type) + ////////////////////////////////////////////////////////////////////// + + template + T* Cast(AST_Node* ptr) { + return ptr && typeid(T) == typeid(*ptr) ? + static_cast(ptr) : NULL; + }; + + template + const T* Cast(const AST_Node* ptr) { + return ptr && typeid(T) == typeid(*ptr) ? + static_cast(ptr) : NULL; + }; + + ////////////////////////////////////////////////////////////////////// + // Abstract base class for expressions. This side of the AST hierarchy + // represents elements in value contexts, which exist primarily to be + // evaluated and returned. + ////////////////////////////////////////////////////////////////////// + class Expression : public AST_Node { + public: + enum Concrete_Type { + NONE, + BOOLEAN, + NUMBER, + COLOR, + STRING, + LIST, + MAP, + SELECTOR, + NULL_VAL, + FUNCTION_VAL, + C_WARNING, + C_ERROR, + FUNCTION, + VARIABLE, + NUM_TYPES + }; + enum Simple_Type { + SIMPLE, + ATTR_SEL, + PSEUDO_SEL, + WRAPPED_SEL, + }; + private: + // expressions in some contexts shouldn't be evaluated + ADD_PROPERTY(bool, is_delayed) + ADD_PROPERTY(bool, is_expanded) + ADD_PROPERTY(bool, is_interpolant) + ADD_PROPERTY(Concrete_Type, concrete_type) + public: + Expression(ParserState pstate, + bool d = false, bool e = false, bool i = false, Concrete_Type ct = NONE) + : AST_Node(pstate), + is_delayed_(d), + is_expanded_(e), + is_interpolant_(i), + concrete_type_(ct) + { } + Expression(const Expression* ptr) + : AST_Node(ptr), + is_delayed_(ptr->is_delayed_), + is_expanded_(ptr->is_expanded_), + is_interpolant_(ptr->is_interpolant_), + concrete_type_(ptr->concrete_type_) + { } + virtual operator bool() { return true; } + virtual ~Expression() { } + virtual std::string type() const { return ""; /* TODO: raise an error? */ } + virtual bool is_invisible() const { return false; } + static std::string type_name() { return ""; } + virtual bool is_false() { return false; } + // virtual bool is_true() { return !is_false(); } + virtual bool operator== (const Expression& rhs) const { return false; } + virtual bool eq(const Expression& rhs) const { return *this == rhs; }; + virtual void set_delayed(bool delayed) { is_delayed(delayed); } + virtual bool has_interpolant() const { return is_interpolant(); } + virtual bool is_left_interpolant() const { return is_interpolant(); } + virtual bool is_right_interpolant() const { return is_interpolant(); } + virtual std::string inspect() const { return to_string({ INSPECT, 5 }); } + virtual std::string to_sass() const { return to_string({ TO_SASS, 5 }); } + ATTACH_VIRTUAL_AST_OPERATIONS(Expression); + virtual size_t hash() { return 0; } + }; + + ////////////////////////////////////////////////////////////////////// + // Still just an expression, but with a to_string method + ////////////////////////////////////////////////////////////////////// + class PreValue : public Expression { + public: + PreValue(ParserState pstate, + bool d = false, bool e = false, bool i = false, Concrete_Type ct = NONE) + : Expression(pstate, d, e, i, ct) + { } + PreValue(const PreValue* ptr) + : Expression(ptr) + { } + ATTACH_VIRTUAL_AST_OPERATIONS(PreValue); + virtual ~PreValue() { } + }; + + ////////////////////////////////////////////////////////////////////// + // base class for values that support operations + ////////////////////////////////////////////////////////////////////// + class Value : public Expression { + public: + Value(ParserState pstate, + bool d = false, bool e = false, bool i = false, Concrete_Type ct = NONE) + : Expression(pstate, d, e, i, ct) + { } + Value(const Value* ptr) + : Expression(ptr) + { } + ATTACH_VIRTUAL_AST_OPERATIONS(Value); + virtual bool operator== (const Expression& rhs) const = 0; + }; +} + +///////////////////////////////////////////////////////////////////////////////////// +// Hash method specializations for std::unordered_map to work with Sass::Expression +///////////////////////////////////////////////////////////////////////////////////// + +namespace std { + template<> + struct hash + { + size_t operator()(Sass::Expression_Obj s) const + { + return s->hash(); + } + }; + template<> + struct equal_to + { + bool operator()( Sass::Expression_Obj lhs, Sass::Expression_Obj rhs) const + { + return lhs->hash() == rhs->hash(); + } + }; +} + +namespace Sass { + + ///////////////////////////////////////////////////////////////////////////// + // Mixin class for AST nodes that should behave like vectors. Uses the + // "Template Method" design pattern to allow subclasses to adjust their flags + // when certain objects are pushed. + ///////////////////////////////////////////////////////////////////////////// + template + class Vectorized { + std::vector elements_; + protected: + size_t hash_; + void reset_hash() { hash_ = 0; } + virtual void adjust_after_pushing(T element) { } + public: + Vectorized(size_t s = 0) : elements_(std::vector()), hash_(0) + { elements_.reserve(s); } + virtual ~Vectorized() = 0; + size_t length() const { return elements_.size(); } + bool empty() const { return elements_.empty(); } + void clear() { return elements_.clear(); } + T last() const { return elements_.back(); } + T first() const { return elements_.front(); } + T& operator[](size_t i) { return elements_[i]; } + virtual const T& at(size_t i) const { return elements_.at(i); } + virtual T& at(size_t i) { return elements_.at(i); } + const T& operator[](size_t i) const { return elements_[i]; } + virtual void append(T element) + { + if (element) { + reset_hash(); + elements_.push_back(element); + adjust_after_pushing(element); + } + } + virtual void concat(Vectorized* v) + { + for (size_t i = 0, L = v->length(); i < L; ++i) this->append((*v)[i]); + } + Vectorized& unshift(T element) + { + elements_.insert(elements_.begin(), element); + return *this; + } + std::vector& elements() { return elements_; } + const std::vector& elements() const { return elements_; } + std::vector& elements(std::vector& e) { elements_ = e; return elements_; } + + virtual size_t hash() + { + if (hash_ == 0) { + for (T& el : elements_) { + hash_combine(hash_, el->hash()); + } + } + return hash_; + } + + typename std::vector::iterator end() { return elements_.end(); } + typename std::vector::iterator begin() { return elements_.begin(); } + typename std::vector::const_iterator end() const { return elements_.end(); } + typename std::vector::const_iterator begin() const { return elements_.begin(); } + typename std::vector::iterator erase(typename std::vector::iterator el) { return elements_.erase(el); } + typename std::vector::const_iterator erase(typename std::vector::const_iterator el) { return elements_.erase(el); } + + }; + template + inline Vectorized::~Vectorized() { } + + ///////////////////////////////////////////////////////////////////////////// + // Mixin class for AST nodes that should behave like a hash table. Uses an + // extra internally to maintain insertion order for interation. + ///////////////////////////////////////////////////////////////////////////// + class Hashed { + private: + ExpressionMap elements_; + std::vector list_; + protected: + size_t hash_; + Expression_Obj duplicate_key_; + void reset_hash() { hash_ = 0; } + void reset_duplicate_key() { duplicate_key_ = 0; } + virtual void adjust_after_pushing(std::pair p) { } + public: + Hashed(size_t s = 0) + : elements_(ExpressionMap(s)), + list_(std::vector()), + hash_(0), duplicate_key_(NULL) + { elements_.reserve(s); list_.reserve(s); } + virtual ~Hashed(); + size_t length() const { return list_.size(); } + bool empty() const { return list_.empty(); } + bool has(Expression_Obj k) const { return elements_.count(k) == 1; } + Expression_Obj at(Expression_Obj k) const; + bool has_duplicate_key() const { return duplicate_key_ != 0; } + Expression_Obj get_duplicate_key() const { return duplicate_key_; } + const ExpressionMap elements() { return elements_; } + Hashed& operator<<(std::pair p) + { + reset_hash(); + + if (!has(p.first)) list_.push_back(p.first); + else if (!duplicate_key_) duplicate_key_ = p.first; + + elements_[p.first] = p.second; + + adjust_after_pushing(p); + return *this; + } + Hashed& operator+=(Hashed* h) + { + if (length() == 0) { + this->elements_ = h->elements_; + this->list_ = h->list_; + return *this; + } + + for (auto key : h->keys()) { + *this << std::make_pair(key, h->at(key)); + } + + reset_duplicate_key(); + return *this; + } + const ExpressionMap& pairs() const { return elements_; } + const std::vector& keys() const { return list_; } + +// std::unordered_map::iterator end() { return elements_.end(); } +// std::unordered_map::iterator begin() { return elements_.begin(); } +// std::unordered_map::const_iterator end() const { return elements_.end(); } +// std::unordered_map::const_iterator begin() const { return elements_.begin(); } + + }; + inline Hashed::~Hashed() { } + + + ///////////////////////////////////////////////////////////////////////// + // Abstract base class for statements. This side of the AST hierarchy + // represents elements in expansion contexts, which exist primarily to be + // rewritten and macro-expanded. + ///////////////////////////////////////////////////////////////////////// + class Statement : public AST_Node { + public: + enum Statement_Type { + NONE, + RULESET, + MEDIA, + DIRECTIVE, + SUPPORTS, + ATROOT, + BUBBLE, + CONTENT, + KEYFRAMERULE, + DECLARATION, + ASSIGNMENT, + IMPORT_STUB, + IMPORT, + COMMENT, + WARNING, + RETURN, + EXTEND, + ERROR, + DEBUGSTMT, + WHILE, + EACH, + FOR, + IF + }; + private: + ADD_PROPERTY(Statement_Type, statement_type) + ADD_PROPERTY(size_t, tabs) + ADD_PROPERTY(bool, group_end) + public: + Statement(ParserState pstate, Statement_Type st = NONE, size_t t = 0) + : AST_Node(pstate), statement_type_(st), tabs_(t), group_end_(false) + { } + Statement(const Statement* ptr) + : AST_Node(ptr), + statement_type_(ptr->statement_type_), + tabs_(ptr->tabs_), + group_end_(ptr->group_end_) + { } + virtual ~Statement() = 0; + // needed for rearranging nested rulesets during CSS emission + virtual bool is_invisible() const { return false; } + virtual bool bubbles() { return false; } + virtual bool has_content() + { + return statement_type_ == CONTENT; + } + }; + inline Statement::~Statement() { } + + //////////////////////// + // Blocks of statements. + //////////////////////// + class Block : public Statement, public Vectorized { + ADD_PROPERTY(bool, is_root) + // needed for properly formatted CSS emission + protected: + void adjust_after_pushing(Statement_Obj s) + { + } + public: + Block(ParserState pstate, size_t s = 0, bool r = false) + : Statement(pstate), + Vectorized(s), + is_root_(r) + { } + Block(const Block* ptr) + : Statement(ptr), + Vectorized(*ptr), + is_root_(ptr->is_root_) + { } + virtual bool has_content() + { + for (size_t i = 0, L = elements().size(); i < L; ++i) { + if (elements()[i]->has_content()) return true; + } + return Statement::has_content(); + } + ATTACH_AST_OPERATIONS(Block) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////// + // Abstract base class for statements that contain blocks of statements. + //////////////////////////////////////////////////////////////////////// + class Has_Block : public Statement { + ADD_PROPERTY(Block_Obj, block) + public: + Has_Block(ParserState pstate, Block_Obj b) + : Statement(pstate), block_(b) + { } + Has_Block(const Has_Block* ptr) + : Statement(ptr), block_(ptr->block_) + { } + virtual bool has_content() + { + return (block_ && block_->has_content()) || Statement::has_content(); + } + virtual ~Has_Block() = 0; + }; + inline Has_Block::~Has_Block() { } + + ///////////////////////////////////////////////////////////////////////////// + // Rulesets (i.e., sets of styles headed by a selector and containing a block + // of style declarations. + ///////////////////////////////////////////////////////////////////////////// + class Ruleset : public Has_Block { + ADD_PROPERTY(Selector_List_Obj, selector) + ADD_PROPERTY(bool, is_root); + public: + Ruleset(ParserState pstate, Selector_List_Obj s = 0, Block_Obj b = 0) + : Has_Block(pstate, b), selector_(s), is_root_(false) + { statement_type(RULESET); } + Ruleset(const Ruleset* ptr) + : Has_Block(ptr), + selector_(ptr->selector_), + is_root_(ptr->is_root_) + { statement_type(RULESET); } + bool is_invisible() const; + ATTACH_AST_OPERATIONS(Ruleset) + ATTACH_OPERATIONS() + }; + + ///////////////// + // Bubble. + ///////////////// + class Bubble : public Statement { + ADD_PROPERTY(Statement_Obj, node) + ADD_PROPERTY(bool, group_end) + public: + Bubble(ParserState pstate, Statement_Obj n, Statement_Obj g = 0, size_t t = 0) + : Statement(pstate, Statement::BUBBLE, t), node_(n), group_end_(g == 0) + { } + Bubble(const Bubble* ptr) + : Statement(ptr), + node_(ptr->node_), + group_end_(ptr->group_end_) + { } + bool bubbles() { return true; } + ATTACH_AST_OPERATIONS(Bubble) + ATTACH_OPERATIONS() + }; + + ///////////////// + // Trace. + ///////////////// + class Trace : public Has_Block { + ADD_CONSTREF(char, type) + ADD_CONSTREF(std::string, name) + public: + Trace(ParserState pstate, std::string n, Block_Obj b = 0, char type = 'm') + : Has_Block(pstate, b), type_(type), name_(n) + { } + Trace(const Trace* ptr) + : Has_Block(ptr), + type_(ptr->type_), + name_(ptr->name_) + { } + ATTACH_AST_OPERATIONS(Trace) + ATTACH_OPERATIONS() + }; + + ///////////////// + // Media queries. + ///////////////// + class Media_Block : public Has_Block { + ADD_PROPERTY(List_Obj, media_queries) + public: + Media_Block(ParserState pstate, List_Obj mqs, Block_Obj b) + : Has_Block(pstate, b), media_queries_(mqs) + { statement_type(MEDIA); } + Media_Block(const Media_Block* ptr) + : Has_Block(ptr), media_queries_(ptr->media_queries_) + { statement_type(MEDIA); } + bool bubbles() { return true; } + bool is_invisible() const; + ATTACH_AST_OPERATIONS(Media_Block) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////////////////////////////////// + // At-rules -- arbitrary directives beginning with "@" that may have an + // optional statement block. + /////////////////////////////////////////////////////////////////////// + class Directive : public Has_Block { + ADD_CONSTREF(std::string, keyword) + ADD_PROPERTY(Selector_List_Obj, selector) + ADD_PROPERTY(Expression_Obj, value) + public: + Directive(ParserState pstate, std::string kwd, Selector_List_Obj sel = 0, Block_Obj b = 0, Expression_Obj val = 0) + : Has_Block(pstate, b), keyword_(kwd), selector_(sel), value_(val) // set value manually if needed + { statement_type(DIRECTIVE); } + Directive(const Directive* ptr) + : Has_Block(ptr), + keyword_(ptr->keyword_), + selector_(ptr->selector_), + value_(ptr->value_) // set value manually if needed + { statement_type(DIRECTIVE); } + bool bubbles() { return is_keyframes() || is_media(); } + bool is_media() { + return keyword_.compare("@-webkit-media") == 0 || + keyword_.compare("@-moz-media") == 0 || + keyword_.compare("@-o-media") == 0 || + keyword_.compare("@media") == 0; + } + bool is_keyframes() { + return keyword_.compare("@-webkit-keyframes") == 0 || + keyword_.compare("@-moz-keyframes") == 0 || + keyword_.compare("@-o-keyframes") == 0 || + keyword_.compare("@keyframes") == 0; + } + ATTACH_AST_OPERATIONS(Directive) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////////////////////////////////// + // Keyframe-rules -- the child blocks of "@keyframes" nodes. + /////////////////////////////////////////////////////////////////////// + class Keyframe_Rule : public Has_Block { + // according to css spec, this should be + // = | + ADD_PROPERTY(Selector_List_Obj, name) + public: + Keyframe_Rule(ParserState pstate, Block_Obj b) + : Has_Block(pstate, b), name_() + { statement_type(KEYFRAMERULE); } + Keyframe_Rule(const Keyframe_Rule* ptr) + : Has_Block(ptr), name_(ptr->name_) + { statement_type(KEYFRAMERULE); } + ATTACH_AST_OPERATIONS(Keyframe_Rule) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////// + // Declarations -- style rules consisting of a property name and values. + //////////////////////////////////////////////////////////////////////// + class Declaration : public Has_Block { + ADD_PROPERTY(String_Obj, property) + ADD_PROPERTY(Expression_Obj, value) + ADD_PROPERTY(bool, is_important) + ADD_PROPERTY(bool, is_custom_property) + ADD_PROPERTY(bool, is_indented) + public: + Declaration(ParserState pstate, + String_Obj prop, Expression_Obj val, bool i = false, bool c = false, Block_Obj b = 0) + : Has_Block(pstate, b), property_(prop), value_(val), is_important_(i), is_custom_property_(c), is_indented_(false) + { statement_type(DECLARATION); } + Declaration(const Declaration* ptr) + : Has_Block(ptr), + property_(ptr->property_), + value_(ptr->value_), + is_important_(ptr->is_important_), + is_custom_property_(ptr->is_custom_property_), + is_indented_(ptr->is_indented_) + { statement_type(DECLARATION); } + virtual bool is_invisible() const; + ATTACH_AST_OPERATIONS(Declaration) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////// + // Assignments -- variable and value. + ///////////////////////////////////// + class Assignment : public Statement { + ADD_CONSTREF(std::string, variable) + ADD_PROPERTY(Expression_Obj, value) + ADD_PROPERTY(bool, is_default) + ADD_PROPERTY(bool, is_global) + public: + Assignment(ParserState pstate, + std::string var, Expression_Obj val, + bool is_default = false, + bool is_global = false) + : Statement(pstate), variable_(var), value_(val), is_default_(is_default), is_global_(is_global) + { statement_type(ASSIGNMENT); } + Assignment(const Assignment* ptr) + : Statement(ptr), + variable_(ptr->variable_), + value_(ptr->value_), + is_default_(ptr->is_default_), + is_global_(ptr->is_global_) + { statement_type(ASSIGNMENT); } + ATTACH_AST_OPERATIONS(Assignment) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////////// + // Import directives. CSS and Sass import lists can be intermingled, so it's + // necessary to store a list of each in an Import node. + //////////////////////////////////////////////////////////////////////////// + class Import : public Statement { + std::vector urls_; + std::vector incs_; + ADD_PROPERTY(List_Obj, import_queries); + public: + Import(ParserState pstate) + : Statement(pstate), + urls_(std::vector()), + incs_(std::vector()), + import_queries_() + { statement_type(IMPORT); } + Import(const Import* ptr) + : Statement(ptr), + urls_(ptr->urls_), + incs_(ptr->incs_), + import_queries_(ptr->import_queries_) + { statement_type(IMPORT); } + std::vector& urls() { return urls_; } + std::vector& incs() { return incs_; } + ATTACH_AST_OPERATIONS(Import) + ATTACH_OPERATIONS() + }; + + // not yet resolved single import + // so far we only know requested name + class Import_Stub : public Statement { + Include resource_; + public: + std::string abs_path() { return resource_.abs_path; }; + std::string imp_path() { return resource_.imp_path; }; + Include resource() { return resource_; }; + + Import_Stub(ParserState pstate, Include res) + : Statement(pstate), resource_(res) + { statement_type(IMPORT_STUB); } + Import_Stub(const Import_Stub* ptr) + : Statement(ptr), resource_(ptr->resource_) + { statement_type(IMPORT_STUB); } + ATTACH_AST_OPERATIONS(Import_Stub) + ATTACH_OPERATIONS() + }; + + ////////////////////////////// + // The Sass `@warn` directive. + ////////////////////////////// + class Warning : public Statement { + ADD_PROPERTY(Expression_Obj, message) + public: + Warning(ParserState pstate, Expression_Obj msg) + : Statement(pstate), message_(msg) + { statement_type(WARNING); } + Warning(const Warning* ptr) + : Statement(ptr), message_(ptr->message_) + { statement_type(WARNING); } + ATTACH_AST_OPERATIONS(Warning) + ATTACH_OPERATIONS() + }; + + /////////////////////////////// + // The Sass `@error` directive. + /////////////////////////////// + class Error : public Statement { + ADD_PROPERTY(Expression_Obj, message) + public: + Error(ParserState pstate, Expression_Obj msg) + : Statement(pstate), message_(msg) + { statement_type(ERROR); } + Error(const Error* ptr) + : Statement(ptr), message_(ptr->message_) + { statement_type(ERROR); } + ATTACH_AST_OPERATIONS(Error) + ATTACH_OPERATIONS() + }; + + /////////////////////////////// + // The Sass `@debug` directive. + /////////////////////////////// + class Debug : public Statement { + ADD_PROPERTY(Expression_Obj, value) + public: + Debug(ParserState pstate, Expression_Obj val) + : Statement(pstate), value_(val) + { statement_type(DEBUGSTMT); } + Debug(const Debug* ptr) + : Statement(ptr), value_(ptr->value_) + { statement_type(DEBUGSTMT); } + ATTACH_AST_OPERATIONS(Debug) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////// + // CSS comments. These may be interpolated. + /////////////////////////////////////////// + class Comment : public Statement { + ADD_PROPERTY(String_Obj, text) + ADD_PROPERTY(bool, is_important) + public: + Comment(ParserState pstate, String_Obj txt, bool is_important) + : Statement(pstate), text_(txt), is_important_(is_important) + { statement_type(COMMENT); } + Comment(const Comment* ptr) + : Statement(ptr), + text_(ptr->text_), + is_important_(ptr->is_important_) + { statement_type(COMMENT); } + virtual bool is_invisible() const + { return /* is_important() == */ false; } + ATTACH_AST_OPERATIONS(Comment) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////// + // The Sass `@if` control directive. + //////////////////////////////////// + class If : public Has_Block { + ADD_PROPERTY(Expression_Obj, predicate) + ADD_PROPERTY(Block_Obj, alternative) + public: + If(ParserState pstate, Expression_Obj pred, Block_Obj con, Block_Obj alt = 0) + : Has_Block(pstate, con), predicate_(pred), alternative_(alt) + { statement_type(IF); } + If(const If* ptr) + : Has_Block(ptr), + predicate_(ptr->predicate_), + alternative_(ptr->alternative_) + { statement_type(IF); } + virtual bool has_content() + { + return Has_Block::has_content() || (alternative_ && alternative_->has_content()); + } + ATTACH_AST_OPERATIONS(If) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////// + // The Sass `@for` control directive. + ///////////////////////////////////// + class For : public Has_Block { + ADD_CONSTREF(std::string, variable) + ADD_PROPERTY(Expression_Obj, lower_bound) + ADD_PROPERTY(Expression_Obj, upper_bound) + ADD_PROPERTY(bool, is_inclusive) + public: + For(ParserState pstate, + std::string var, Expression_Obj lo, Expression_Obj hi, Block_Obj b, bool inc) + : Has_Block(pstate, b), + variable_(var), lower_bound_(lo), upper_bound_(hi), is_inclusive_(inc) + { statement_type(FOR); } + For(const For* ptr) + : Has_Block(ptr), + variable_(ptr->variable_), + lower_bound_(ptr->lower_bound_), + upper_bound_(ptr->upper_bound_), + is_inclusive_(ptr->is_inclusive_) + { statement_type(FOR); } + ATTACH_AST_OPERATIONS(For) + ATTACH_OPERATIONS() + }; + + ////////////////////////////////////// + // The Sass `@each` control directive. + ////////////////////////////////////// + class Each : public Has_Block { + ADD_PROPERTY(std::vector, variables) + ADD_PROPERTY(Expression_Obj, list) + public: + Each(ParserState pstate, std::vector vars, Expression_Obj lst, Block_Obj b) + : Has_Block(pstate, b), variables_(vars), list_(lst) + { statement_type(EACH); } + Each(const Each* ptr) + : Has_Block(ptr), variables_(ptr->variables_), list_(ptr->list_) + { statement_type(EACH); } + ATTACH_AST_OPERATIONS(Each) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////// + // The Sass `@while` control directive. + /////////////////////////////////////// + class While : public Has_Block { + ADD_PROPERTY(Expression_Obj, predicate) + public: + While(ParserState pstate, Expression_Obj pred, Block_Obj b) + : Has_Block(pstate, b), predicate_(pred) + { statement_type(WHILE); } + While(const While* ptr) + : Has_Block(ptr), predicate_(ptr->predicate_) + { statement_type(WHILE); } + ATTACH_AST_OPERATIONS(While) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////////////////// + // The @return directive for use inside SassScript functions. + ///////////////////////////////////////////////////////////// + class Return : public Statement { + ADD_PROPERTY(Expression_Obj, value) + public: + Return(ParserState pstate, Expression_Obj val) + : Statement(pstate), value_(val) + { statement_type(RETURN); } + Return(const Return* ptr) + : Statement(ptr), value_(ptr->value_) + { statement_type(RETURN); } + ATTACH_AST_OPERATIONS(Return) + ATTACH_OPERATIONS() + }; + + //////////////////////////////// + // The Sass `@extend` directive. + //////////////////////////////// + class Extension : public Statement { + ADD_PROPERTY(Selector_List_Obj, selector) + public: + Extension(ParserState pstate, Selector_List_Obj s) + : Statement(pstate), selector_(s) + { statement_type(EXTEND); } + Extension(const Extension* ptr) + : Statement(ptr), selector_(ptr->selector_) + { statement_type(EXTEND); } + ATTACH_AST_OPERATIONS(Extension) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////////////////////////////////// + // Definitions for both mixins and functions. The two cases are distinguished + // by a type tag. + ///////////////////////////////////////////////////////////////////////////// + struct Backtrace; + typedef const char* Signature; + typedef Expression_Ptr (*Native_Function)(Env&, Env&, Context&, Signature, ParserState, Backtraces, std::vector); + class Definition : public Has_Block { + public: + enum Type { MIXIN, FUNCTION }; + ADD_CONSTREF(std::string, name) + ADD_PROPERTY(Parameters_Obj, parameters) + ADD_PROPERTY(Env*, environment) + ADD_PROPERTY(Type, type) + ADD_PROPERTY(Native_Function, native_function) + ADD_PROPERTY(Sass_Function_Entry, c_function) + ADD_PROPERTY(void*, cookie) + ADD_PROPERTY(bool, is_overload_stub) + ADD_PROPERTY(Signature, signature) + public: + Definition(const Definition* ptr) + : Has_Block(ptr), + name_(ptr->name_), + parameters_(ptr->parameters_), + environment_(ptr->environment_), + type_(ptr->type_), + native_function_(ptr->native_function_), + c_function_(ptr->c_function_), + cookie_(ptr->cookie_), + is_overload_stub_(ptr->is_overload_stub_), + signature_(ptr->signature_) + { } + + Definition(ParserState pstate, + std::string n, + Parameters_Obj params, + Block_Obj b, + Type t) + : Has_Block(pstate, b), + name_(n), + parameters_(params), + environment_(0), + type_(t), + native_function_(0), + c_function_(0), + cookie_(0), + is_overload_stub_(false), + signature_(0) + { } + Definition(ParserState pstate, + Signature sig, + std::string n, + Parameters_Obj params, + Native_Function func_ptr, + bool overload_stub = false) + : Has_Block(pstate, 0), + name_(n), + parameters_(params), + environment_(0), + type_(FUNCTION), + native_function_(func_ptr), + c_function_(0), + cookie_(0), + is_overload_stub_(overload_stub), + signature_(sig) + { } + Definition(ParserState pstate, + Signature sig, + std::string n, + Parameters_Obj params, + Sass_Function_Entry c_func, + bool whatever, + bool whatever2) + : Has_Block(pstate, 0), + name_(n), + parameters_(params), + environment_(0), + type_(FUNCTION), + native_function_(0), + c_function_(c_func), + cookie_(sass_function_get_cookie(c_func)), + is_overload_stub_(false), + signature_(sig) + { } + ATTACH_AST_OPERATIONS(Definition) + ATTACH_OPERATIONS() + }; + + ////////////////////////////////////// + // Mixin calls (i.e., `@include ...`). + ////////////////////////////////////// + class Mixin_Call : public Has_Block { + ADD_CONSTREF(std::string, name) + ADD_PROPERTY(Arguments_Obj, arguments) + public: + Mixin_Call(ParserState pstate, std::string n, Arguments_Obj args, Block_Obj b = 0) + : Has_Block(pstate, b), name_(n), arguments_(args) + { } + Mixin_Call(const Mixin_Call* ptr) + : Has_Block(ptr), + name_(ptr->name_), + arguments_(ptr->arguments_) + { } + ATTACH_AST_OPERATIONS(Mixin_Call) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////////////// + // The @content directive for mixin content blocks. + /////////////////////////////////////////////////// + class Content : public Statement { + ADD_PROPERTY(Media_Block_Ptr, media_block) + public: + Content(ParserState pstate) + : Statement(pstate), + media_block_(NULL) + { statement_type(CONTENT); } + Content(const Content* ptr) + : Statement(ptr), + media_block_(ptr->media_block_) + { statement_type(CONTENT); } + ATTACH_AST_OPERATIONS(Content) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////////////////////////////////// + // Lists of values, both comma- and space-separated (distinguished by a + // type-tag.) Also used to represent variable-length argument lists. + /////////////////////////////////////////////////////////////////////// + class List : public Value, public Vectorized { + void adjust_after_pushing(Expression_Obj e) { is_expanded(false); } + private: + ADD_PROPERTY(enum Sass_Separator, separator) + ADD_PROPERTY(bool, is_arglist) + ADD_PROPERTY(bool, is_bracketed) + ADD_PROPERTY(bool, from_selector) + public: + List(ParserState pstate, + size_t size = 0, enum Sass_Separator sep = SASS_SPACE, bool argl = false, bool bracket = false) + : Value(pstate), + Vectorized(size), + separator_(sep), + is_arglist_(argl), + is_bracketed_(bracket), + from_selector_(false) + { concrete_type(LIST); } + List(const List* ptr) + : Value(ptr), + Vectorized(*ptr), + separator_(ptr->separator_), + is_arglist_(ptr->is_arglist_), + is_bracketed_(ptr->is_bracketed_), + from_selector_(ptr->from_selector_) + { concrete_type(LIST); } + std::string type() const { return is_arglist_ ? "arglist" : "list"; } + static std::string type_name() { return "list"; } + const char* sep_string(bool compressed = false) const { + return separator() == SASS_SPACE ? + " " : (compressed ? "," : ", "); + } + bool is_invisible() const { return empty() && !is_bracketed(); } + Expression_Obj value_at_index(size_t i); + + virtual size_t size() const; + + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(sep_string()); + hash_combine(hash_, std::hash()(is_bracketed())); + for (size_t i = 0, L = length(); i < L; ++i) + hash_combine(hash_, (elements()[i])->hash()); + } + return hash_; + } + + virtual void set_delayed(bool delayed) + { + is_delayed(delayed); + // don't set children + } + + virtual bool operator== (const Expression& rhs) const; + + ATTACH_AST_OPERATIONS(List) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////////////////////////////////// + // Key value paris. + /////////////////////////////////////////////////////////////////////// + class Map : public Value, public Hashed { + void adjust_after_pushing(std::pair p) { is_expanded(false); } + public: + Map(ParserState pstate, + size_t size = 0) + : Value(pstate), + Hashed(size) + { concrete_type(MAP); } + Map(const Map* ptr) + : Value(ptr), + Hashed(*ptr) + { concrete_type(MAP); } + std::string type() const { return "map"; } + static std::string type_name() { return "map"; } + bool is_invisible() const { return empty(); } + List_Obj to_list(ParserState& pstate); + + virtual size_t hash() + { + if (hash_ == 0) { + for (auto key : keys()) { + hash_combine(hash_, key->hash()); + hash_combine(hash_, at(key)->hash()); + } + } + + return hash_; + } + + virtual bool operator== (const Expression& rhs) const; + + ATTACH_AST_OPERATIONS(Map) + ATTACH_OPERATIONS() + }; + + inline static const std::string sass_op_to_name(enum Sass_OP op) { + switch (op) { + case AND: return "and"; + case OR: return "or"; + case EQ: return "eq"; + case NEQ: return "neq"; + case GT: return "gt"; + case GTE: return "gte"; + case LT: return "lt"; + case LTE: return "lte"; + case ADD: return "plus"; + case SUB: return "sub"; + case MUL: return "times"; + case DIV: return "div"; + case MOD: return "mod"; + // this is only used internally! + case NUM_OPS: return "[OPS]"; + default: return "invalid"; + } + } + + inline static const std::string sass_op_separator(enum Sass_OP op) { + switch (op) { + case AND: return "&&"; + case OR: return "||"; + case EQ: return "=="; + case NEQ: return "!="; + case GT: return ">"; + case GTE: return ">="; + case LT: return "<"; + case LTE: return "<="; + case ADD: return "+"; + case SUB: return "-"; + case MUL: return "*"; + case DIV: return "/"; + case MOD: return "%"; + // this is only used internally! + case NUM_OPS: return "[OPS]"; + default: return "invalid"; + } + } + + ////////////////////////////////////////////////////////////////////////// + // Binary expressions. Represents logical, relational, and arithmetic + // operations. Templatized to avoid large switch statements and repetitive + // subclassing. + ////////////////////////////////////////////////////////////////////////// + class Binary_Expression : public PreValue { + private: + HASH_PROPERTY(Operand, op) + HASH_PROPERTY(Expression_Obj, left) + HASH_PROPERTY(Expression_Obj, right) + size_t hash_; + public: + Binary_Expression(ParserState pstate, + Operand op, Expression_Obj lhs, Expression_Obj rhs) + : PreValue(pstate), op_(op), left_(lhs), right_(rhs), hash_(0) + { } + Binary_Expression(const Binary_Expression* ptr) + : PreValue(ptr), + op_(ptr->op_), + left_(ptr->left_), + right_(ptr->right_), + hash_(ptr->hash_) + { } + const std::string type_name() { + return sass_op_to_name(optype()); + } + const std::string separator() { + return sass_op_separator(optype()); + } + bool is_left_interpolant(void) const; + bool is_right_interpolant(void) const; + bool has_interpolant() const + { + return is_left_interpolant() || + is_right_interpolant(); + } + virtual void set_delayed(bool delayed) + { + right()->set_delayed(delayed); + left()->set_delayed(delayed); + is_delayed(delayed); + } + virtual bool operator==(const Expression& rhs) const + { + try + { + Binary_Expression_Ptr_Const m = Cast(&rhs); + if (m == 0) return false; + return type() == m->type() && + *left() == *m->left() && + *right() == *m->right(); + } + catch (std::bad_cast&) + { + return false; + } + catch (...) { throw; } + } + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(optype()); + hash_combine(hash_, left()->hash()); + hash_combine(hash_, right()->hash()); + } + return hash_; + } + enum Sass_OP optype() const { return op_.operand; } + ATTACH_AST_OPERATIONS(Binary_Expression) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////////// + // Arithmetic negation (logical negation is just an ordinary function call). + //////////////////////////////////////////////////////////////////////////// + class Unary_Expression : public Expression { + public: + enum Type { PLUS, MINUS, NOT, SLASH }; + private: + HASH_PROPERTY(Type, optype) + HASH_PROPERTY(Expression_Obj, operand) + size_t hash_; + public: + Unary_Expression(ParserState pstate, Type t, Expression_Obj o) + : Expression(pstate), optype_(t), operand_(o), hash_(0) + { } + Unary_Expression(const Unary_Expression* ptr) + : Expression(ptr), + optype_(ptr->optype_), + operand_(ptr->operand_), + hash_(ptr->hash_) + { } + const std::string type_name() { + switch (optype_) { + case PLUS: return "plus"; + case MINUS: return "minus"; + case SLASH: return "slash"; + case NOT: return "not"; + default: return "invalid"; + } + } + virtual bool operator==(const Expression& rhs) const + { + try + { + Unary_Expression_Ptr_Const m = Cast(&rhs); + if (m == 0) return false; + return type() == m->type() && + *operand() == *m->operand(); + } + catch (std::bad_cast&) + { + return false; + } + catch (...) { throw; } + } + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(optype_); + hash_combine(hash_, operand()->hash()); + }; + return hash_; + } + ATTACH_AST_OPERATIONS(Unary_Expression) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////// + // Individual argument objects for mixin and function calls. + //////////////////////////////////////////////////////////// + class Argument : public Expression { + HASH_PROPERTY(Expression_Obj, value) + HASH_CONSTREF(std::string, name) + ADD_PROPERTY(bool, is_rest_argument) + ADD_PROPERTY(bool, is_keyword_argument) + size_t hash_; + public: + Argument(ParserState pstate, Expression_Obj val, std::string n = "", bool rest = false, bool keyword = false) + : Expression(pstate), value_(val), name_(n), is_rest_argument_(rest), is_keyword_argument_(keyword), hash_(0) + { + if (!name_.empty() && is_rest_argument_) { + coreError("variable-length argument may not be passed by name", pstate_); + } + } + Argument(const Argument* ptr) + : Expression(ptr), + value_(ptr->value_), + name_(ptr->name_), + is_rest_argument_(ptr->is_rest_argument_), + is_keyword_argument_(ptr->is_keyword_argument_), + hash_(ptr->hash_) + { + if (!name_.empty() && is_rest_argument_) { + coreError("variable-length argument may not be passed by name", pstate_); + } + } + + virtual void set_delayed(bool delayed); + virtual bool operator==(const Expression& rhs) const + { + try + { + Argument_Ptr_Const m = Cast(&rhs); + if (!(m && name() == m->name())) return false; + return *value() == *m->value(); + } + catch (std::bad_cast&) + { + return false; + } + catch (...) { throw; } + } + + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(name()); + hash_combine(hash_, value()->hash()); + } + return hash_; + } + + ATTACH_AST_OPERATIONS(Argument) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////// + // Argument lists -- in their own class to facilitate context-sensitive + // error checking (e.g., ensuring that all ordinal arguments precede all + // named arguments). + //////////////////////////////////////////////////////////////////////// + class Arguments : public Expression, public Vectorized { + ADD_PROPERTY(bool, has_named_arguments) + ADD_PROPERTY(bool, has_rest_argument) + ADD_PROPERTY(bool, has_keyword_argument) + protected: + void adjust_after_pushing(Argument_Obj a); + public: + Arguments(ParserState pstate) + : Expression(pstate), + Vectorized(), + has_named_arguments_(false), + has_rest_argument_(false), + has_keyword_argument_(false) + { } + Arguments(const Arguments* ptr) + : Expression(ptr), + Vectorized(*ptr), + has_named_arguments_(ptr->has_named_arguments_), + has_rest_argument_(ptr->has_rest_argument_), + has_keyword_argument_(ptr->has_keyword_argument_) + { } + + virtual void set_delayed(bool delayed); + + Argument_Obj get_rest_argument(); + Argument_Obj get_keyword_argument(); + + ATTACH_AST_OPERATIONS(Arguments) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////// + // Function reference. + //////////////////////////////////////////////////// + class Function : public Value { + public: + ADD_PROPERTY(Definition_Obj, definition) + ADD_PROPERTY(bool, is_css) + public: + Function(ParserState pstate, Definition_Obj def, bool css) + : Value(pstate), definition_(def), is_css_(css) + { concrete_type(FUNCTION_VAL); } + Function(const Function* ptr) + : Value(ptr), definition_(ptr->definition_), is_css_(ptr->is_css_) + { concrete_type(FUNCTION_VAL); } + + std::string type() const { return "function"; } + static std::string type_name() { return "function"; } + bool is_invisible() const { return true; } + + std::string name() { + if (definition_) { + return definition_->name(); + } + return ""; + } + + virtual bool operator== (const Expression& rhs) const; + + ATTACH_AST_OPERATIONS(Function) + ATTACH_OPERATIONS() + }; + + ////////////////// + // Function calls. + ////////////////// + class Function_Call : public PreValue { + HASH_CONSTREF(std::string, name) + HASH_PROPERTY(Arguments_Obj, arguments) + HASH_PROPERTY(Function_Obj, func) + ADD_PROPERTY(bool, via_call) + ADD_PROPERTY(void*, cookie) + size_t hash_; + public: + Function_Call(ParserState pstate, std::string n, Arguments_Obj args, void* cookie) + : PreValue(pstate), name_(n), arguments_(args), func_(0), via_call_(false), cookie_(cookie), hash_(0) + { concrete_type(FUNCTION); } + Function_Call(ParserState pstate, std::string n, Arguments_Obj args, Function_Obj func) + : PreValue(pstate), name_(n), arguments_(args), func_(func), via_call_(false), cookie_(0), hash_(0) + { concrete_type(FUNCTION); } + Function_Call(ParserState pstate, std::string n, Arguments_Obj args) + : PreValue(pstate), name_(n), arguments_(args), via_call_(false), cookie_(0), hash_(0) + { concrete_type(FUNCTION); } + Function_Call(const Function_Call* ptr) + : PreValue(ptr), + name_(ptr->name_), + arguments_(ptr->arguments_), + func_(ptr->func_), + via_call_(ptr->via_call_), + cookie_(ptr->cookie_), + hash_(ptr->hash_) + { concrete_type(FUNCTION); } + + bool is_css() { + if (func_) return func_->is_css(); + return false; + } + + virtual bool operator==(const Expression& rhs) const + { + try + { + Function_Call_Ptr_Const m = Cast(&rhs); + if (!(m && name() == m->name())) return false; + if (!(m && arguments()->length() == m->arguments()->length())) return false; + for (size_t i =0, L = arguments()->length(); i < L; ++i) + if (!(*(*arguments())[i] == *(*m->arguments())[i])) return false; + return true; + } + catch (std::bad_cast&) + { + return false; + } + catch (...) { throw; } + } + + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(name()); + for (auto argument : arguments()->elements()) + hash_combine(hash_, argument->hash()); + } + return hash_; + } + ATTACH_AST_OPERATIONS(Function_Call) + ATTACH_OPERATIONS() + }; + + ///////////////////////// + // Function call schemas. + ///////////////////////// + class Function_Call_Schema : public Expression { + ADD_PROPERTY(String_Obj, name) + ADD_PROPERTY(Arguments_Obj, arguments) + public: + Function_Call_Schema(ParserState pstate, String_Obj n, Arguments_Obj args) + : Expression(pstate), name_(n), arguments_(args) + { concrete_type(STRING); } + Function_Call_Schema(const Function_Call_Schema* ptr) + : Expression(ptr), + name_(ptr->name_), + arguments_(ptr->arguments_) + { concrete_type(STRING); } + ATTACH_AST_OPERATIONS(Function_Call_Schema) + ATTACH_OPERATIONS() + }; + + /////////////////////// + // Variable references. + /////////////////////// + class Variable : public PreValue { + ADD_CONSTREF(std::string, name) + public: + Variable(ParserState pstate, std::string n) + : PreValue(pstate), name_(n) + { concrete_type(VARIABLE); } + Variable(const Variable* ptr) + : PreValue(ptr), name_(ptr->name_) + { concrete_type(VARIABLE); } + + virtual bool operator==(const Expression& rhs) const + { + try + { + Variable_Ptr_Const e = Cast(&rhs); + return e && name() == e->name(); + } + catch (std::bad_cast&) + { + return false; + } + catch (...) { throw; } + } + + virtual size_t hash() + { + return std::hash()(name()); + } + + ATTACH_AST_OPERATIONS(Variable) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////// + // Numbers, percentages, dimensions, and colors. + //////////////////////////////////////////////// + class Number : public Value, public Units { + HASH_PROPERTY(double, value) + ADD_PROPERTY(bool, zero) + size_t hash_; + public: + Number(ParserState pstate, double val, std::string u = "", bool zero = true); + + Number(const Number* ptr) + : Value(ptr), + Units(ptr), + value_(ptr->value_), zero_(ptr->zero_), + hash_(ptr->hash_) + { concrete_type(NUMBER); } + + bool zero() { return zero_; } + std::string type() const { return "number"; } + static std::string type_name() { return "number"; } + + void reduce(); + void normalize(); + + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(value_); + for (const auto numerator : numerators) + hash_combine(hash_, std::hash()(numerator)); + for (const auto denominator : denominators) + hash_combine(hash_, std::hash()(denominator)); + } + return hash_; + } + + virtual bool operator< (const Number& rhs) const; + virtual bool operator== (const Number& rhs) const; + virtual bool operator== (const Expression& rhs) const; + ATTACH_AST_OPERATIONS(Number) + ATTACH_OPERATIONS() + }; + + ////////// + // Colors. + ////////// + class Color : public Value { + HASH_PROPERTY(double, r) + HASH_PROPERTY(double, g) + HASH_PROPERTY(double, b) + HASH_PROPERTY(double, a) + ADD_CONSTREF(std::string, disp) + size_t hash_; + public: + Color(ParserState pstate, double r, double g, double b, double a = 1, const std::string disp = "") + : Value(pstate), r_(r), g_(g), b_(b), a_(a), disp_(disp), + hash_(0) + { concrete_type(COLOR); } + Color(const Color* ptr) + : Value(ptr), + r_(ptr->r_), + g_(ptr->g_), + b_(ptr->b_), + a_(ptr->a_), + disp_(ptr->disp_), + hash_(ptr->hash_) + { concrete_type(COLOR); } + std::string type() const { return "color"; } + static std::string type_name() { return "color"; } + + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(a_); + hash_combine(hash_, std::hash()(r_)); + hash_combine(hash_, std::hash()(g_)); + hash_combine(hash_, std::hash()(b_)); + } + return hash_; + } + + virtual bool operator== (const Expression& rhs) const; + + ATTACH_AST_OPERATIONS(Color) + ATTACH_OPERATIONS() + }; + + ////////////////////////////// + // Errors from Sass_Values. + ////////////////////////////// + class Custom_Error : public Value { + ADD_CONSTREF(std::string, message) + public: + Custom_Error(ParserState pstate, std::string msg) + : Value(pstate), message_(msg) + { concrete_type(C_ERROR); } + Custom_Error(const Custom_Error* ptr) + : Value(ptr), message_(ptr->message_) + { concrete_type(C_ERROR); } + virtual bool operator== (const Expression& rhs) const; + ATTACH_AST_OPERATIONS(Custom_Error) + ATTACH_OPERATIONS() + }; + + ////////////////////////////// + // Warnings from Sass_Values. + ////////////////////////////// + class Custom_Warning : public Value { + ADD_CONSTREF(std::string, message) + public: + Custom_Warning(ParserState pstate, std::string msg) + : Value(pstate), message_(msg) + { concrete_type(C_WARNING); } + Custom_Warning(const Custom_Warning* ptr) + : Value(ptr), message_(ptr->message_) + { concrete_type(C_WARNING); } + virtual bool operator== (const Expression& rhs) const; + ATTACH_AST_OPERATIONS(Custom_Warning) + ATTACH_OPERATIONS() + }; + + //////////// + // Booleans. + //////////// + class Boolean : public Value { + HASH_PROPERTY(bool, value) + size_t hash_; + public: + Boolean(ParserState pstate, bool val) + : Value(pstate), value_(val), + hash_(0) + { concrete_type(BOOLEAN); } + Boolean(const Boolean* ptr) + : Value(ptr), + value_(ptr->value_), + hash_(ptr->hash_) + { concrete_type(BOOLEAN); } + virtual operator bool() { return value_; } + std::string type() const { return "bool"; } + static std::string type_name() { return "bool"; } + virtual bool is_false() { return !value_; } + + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(value_); + } + return hash_; + } + + virtual bool operator== (const Expression& rhs) const; + + ATTACH_AST_OPERATIONS(Boolean) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////// + // Abstract base class for Sass string values. Includes interpolated and + // "flat" strings. + //////////////////////////////////////////////////////////////////////// + class String : public Value { + public: + String(ParserState pstate, bool delayed = false) + : Value(pstate, delayed) + { concrete_type(STRING); } + String(const String* ptr) + : Value(ptr) + { concrete_type(STRING); } + static std::string type_name() { return "string"; } + virtual ~String() = 0; + virtual void rtrim() = 0; + virtual bool operator==(const Expression& rhs) const = 0; + virtual bool operator<(const Expression& rhs) const { + return this->to_string() < rhs.to_string(); + }; + ATTACH_VIRTUAL_AST_OPERATIONS(String); + ATTACH_OPERATIONS() + }; + inline String::~String() { }; + + /////////////////////////////////////////////////////////////////////// + // Interpolated strings. Meant to be reduced to flat strings during the + // evaluation phase. + /////////////////////////////////////////////////////////////////////// + class String_Schema : public String, public Vectorized { + ADD_PROPERTY(bool, css) + size_t hash_; + public: + String_Schema(ParserState pstate, size_t size = 0, bool css = true) + : String(pstate), Vectorized(size), css_(css), hash_(0) + { concrete_type(STRING); } + String_Schema(const String_Schema* ptr) + : String(ptr), + Vectorized(*ptr), + css_(ptr->css_), + hash_(ptr->hash_) + { concrete_type(STRING); } + + std::string type() const { return "string"; } + static std::string type_name() { return "string"; } + + bool is_left_interpolant(void) const; + bool is_right_interpolant(void) const; + // void has_interpolants(bool tc) { } + bool has_interpolants() { + for (auto el : elements()) { + if (el->is_interpolant()) return true; + } + return false; + } + virtual void rtrim(); + + virtual size_t hash() + { + if (hash_ == 0) { + for (auto string : elements()) + hash_combine(hash_, string->hash()); + } + return hash_; + } + + virtual void set_delayed(bool delayed) { + is_delayed(delayed); + } + + virtual bool operator==(const Expression& rhs) const; + ATTACH_AST_OPERATIONS(String_Schema) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////// + // Flat strings -- the lowest level of raw textual data. + //////////////////////////////////////////////////////// + class String_Constant : public String { + ADD_PROPERTY(char, quote_mark) + ADD_PROPERTY(bool, can_compress_whitespace) + HASH_CONSTREF(std::string, value) + protected: + size_t hash_; + public: + String_Constant(const String_Constant* ptr) + : String(ptr), + quote_mark_(ptr->quote_mark_), + can_compress_whitespace_(ptr->can_compress_whitespace_), + value_(ptr->value_), + hash_(ptr->hash_) + { } + String_Constant(ParserState pstate, std::string val, bool css = true) + : String(pstate), quote_mark_(0), can_compress_whitespace_(false), value_(read_css_string(val, css)), hash_(0) + { } + String_Constant(ParserState pstate, const char* beg, bool css = true) + : String(pstate), quote_mark_(0), can_compress_whitespace_(false), value_(read_css_string(std::string(beg), css)), hash_(0) + { } + String_Constant(ParserState pstate, const char* beg, const char* end, bool css = true) + : String(pstate), quote_mark_(0), can_compress_whitespace_(false), value_(read_css_string(std::string(beg, end-beg), css)), hash_(0) + { } + String_Constant(ParserState pstate, const Token& tok, bool css = true) + : String(pstate), quote_mark_(0), can_compress_whitespace_(false), value_(read_css_string(std::string(tok.begin, tok.end), css)), hash_(0) + { } + std::string type() const { return "string"; } + static std::string type_name() { return "string"; } + virtual bool is_invisible() const; + virtual void rtrim(); + + virtual size_t hash() + { + if (hash_ == 0) { + hash_ = std::hash()(value_); + } + return hash_; + } + + virtual bool operator==(const Expression& rhs) const; + virtual std::string inspect() const; // quotes are forced on inspection + + // static char auto_quote() { return '*'; } + static char double_quote() { return '"'; } + static char single_quote() { return '\''; } + + ATTACH_AST_OPERATIONS(String_Constant) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////// + // Possibly quoted string (unquote on instantiation) + //////////////////////////////////////////////////////// + class String_Quoted : public String_Constant { + public: + String_Quoted(ParserState pstate, std::string val, char q = 0, + bool keep_utf8_escapes = false, bool skip_unquoting = false, + bool strict_unquoting = true, bool css = true) + : String_Constant(pstate, val, css) + { + if (skip_unquoting == false) { + value_ = unquote(value_, "e_mark_, keep_utf8_escapes, strict_unquoting); + } + if (q && quote_mark_) quote_mark_ = q; + } + String_Quoted(const String_Quoted* ptr) + : String_Constant(ptr) + { } + virtual bool operator==(const Expression& rhs) const; + virtual std::string inspect() const; // quotes are forced on inspection + ATTACH_AST_OPERATIONS(String_Quoted) + ATTACH_OPERATIONS() + }; + + ///////////////// + // Media queries. + ///////////////// + class Media_Query : public Expression, + public Vectorized { + ADD_PROPERTY(String_Obj, media_type) + ADD_PROPERTY(bool, is_negated) + ADD_PROPERTY(bool, is_restricted) + public: + Media_Query(ParserState pstate, + String_Obj t = 0, size_t s = 0, bool n = false, bool r = false) + : Expression(pstate), Vectorized(s), + media_type_(t), is_negated_(n), is_restricted_(r) + { } + Media_Query(const Media_Query* ptr) + : Expression(ptr), + Vectorized(*ptr), + media_type_(ptr->media_type_), + is_negated_(ptr->is_negated_), + is_restricted_(ptr->is_restricted_) + { } + ATTACH_AST_OPERATIONS(Media_Query) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////// + // Media expressions (for use inside media queries). + //////////////////////////////////////////////////// + class Media_Query_Expression : public Expression { + ADD_PROPERTY(Expression_Obj, feature) + ADD_PROPERTY(Expression_Obj, value) + ADD_PROPERTY(bool, is_interpolated) + public: + Media_Query_Expression(ParserState pstate, + Expression_Obj f, Expression_Obj v, bool i = false) + : Expression(pstate), feature_(f), value_(v), is_interpolated_(i) + { } + Media_Query_Expression(const Media_Query_Expression* ptr) + : Expression(ptr), + feature_(ptr->feature_), + value_(ptr->value_), + is_interpolated_(ptr->is_interpolated_) + { } + ATTACH_AST_OPERATIONS(Media_Query_Expression) + ATTACH_OPERATIONS() + }; + + //////////////////// + // `@supports` rule. + //////////////////// + class Supports_Block : public Has_Block { + ADD_PROPERTY(Supports_Condition_Obj, condition) + public: + Supports_Block(ParserState pstate, Supports_Condition_Obj condition, Block_Obj block = 0) + : Has_Block(pstate, block), condition_(condition) + { statement_type(SUPPORTS); } + Supports_Block(const Supports_Block* ptr) + : Has_Block(ptr), condition_(ptr->condition_) + { statement_type(SUPPORTS); } + bool bubbles() { return true; } + ATTACH_AST_OPERATIONS(Supports_Block) + ATTACH_OPERATIONS() + }; + + ////////////////////////////////////////////////////// + // The abstract superclass of all Supports conditions. + ////////////////////////////////////////////////////// + class Supports_Condition : public Expression { + public: + Supports_Condition(ParserState pstate) + : Expression(pstate) + { } + Supports_Condition(const Supports_Condition* ptr) + : Expression(ptr) + { } + virtual bool needs_parens(Supports_Condition_Obj cond) const { return false; } + ATTACH_AST_OPERATIONS(Supports_Condition) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////// + // An operator condition (e.g. `CONDITION1 and CONDITION2`). + //////////////////////////////////////////////////////////// + class Supports_Operator : public Supports_Condition { + public: + enum Operand { AND, OR }; + private: + ADD_PROPERTY(Supports_Condition_Obj, left); + ADD_PROPERTY(Supports_Condition_Obj, right); + ADD_PROPERTY(Operand, operand); + public: + Supports_Operator(ParserState pstate, Supports_Condition_Obj l, Supports_Condition_Obj r, Operand o) + : Supports_Condition(pstate), left_(l), right_(r), operand_(o) + { } + Supports_Operator(const Supports_Operator* ptr) + : Supports_Condition(ptr), + left_(ptr->left_), + right_(ptr->right_), + operand_(ptr->operand_) + { } + virtual bool needs_parens(Supports_Condition_Obj cond) const; + ATTACH_AST_OPERATIONS(Supports_Operator) + ATTACH_OPERATIONS() + }; + + ////////////////////////////////////////// + // A negation condition (`not CONDITION`). + ////////////////////////////////////////// + class Supports_Negation : public Supports_Condition { + private: + ADD_PROPERTY(Supports_Condition_Obj, condition); + public: + Supports_Negation(ParserState pstate, Supports_Condition_Obj c) + : Supports_Condition(pstate), condition_(c) + { } + Supports_Negation(const Supports_Negation* ptr) + : Supports_Condition(ptr), condition_(ptr->condition_) + { } + virtual bool needs_parens(Supports_Condition_Obj cond) const; + ATTACH_AST_OPERATIONS(Supports_Negation) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////////// + // A declaration condition (e.g. `(feature: value)`). + ///////////////////////////////////////////////////// + class Supports_Declaration : public Supports_Condition { + private: + ADD_PROPERTY(Expression_Obj, feature); + ADD_PROPERTY(Expression_Obj, value); + public: + Supports_Declaration(ParserState pstate, Expression_Obj f, Expression_Obj v) + : Supports_Condition(pstate), feature_(f), value_(v) + { } + Supports_Declaration(const Supports_Declaration* ptr) + : Supports_Condition(ptr), + feature_(ptr->feature_), + value_(ptr->value_) + { } + virtual bool needs_parens(Supports_Condition_Obj cond) const { return false; } + ATTACH_AST_OPERATIONS(Supports_Declaration) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////////// + // An interpolation condition (e.g. `#{$var}`). + /////////////////////////////////////////////// + class Supports_Interpolation : public Supports_Condition { + private: + ADD_PROPERTY(Expression_Obj, value); + public: + Supports_Interpolation(ParserState pstate, Expression_Obj v) + : Supports_Condition(pstate), value_(v) + { } + Supports_Interpolation(const Supports_Interpolation* ptr) + : Supports_Condition(ptr), + value_(ptr->value_) + { } + virtual bool needs_parens(Supports_Condition_Obj cond) const { return false; } + ATTACH_AST_OPERATIONS(Supports_Interpolation) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////// + // At root expressions (for use inside @at-root). + ///////////////////////////////////////////////// + class At_Root_Query : public Expression { + private: + ADD_PROPERTY(Expression_Obj, feature) + ADD_PROPERTY(Expression_Obj, value) + public: + At_Root_Query(ParserState pstate, Expression_Obj f = 0, Expression_Obj v = 0, bool i = false) + : Expression(pstate), feature_(f), value_(v) + { } + At_Root_Query(const At_Root_Query* ptr) + : Expression(ptr), + feature_(ptr->feature_), + value_(ptr->value_) + { } + bool exclude(std::string str); + ATTACH_AST_OPERATIONS(At_Root_Query) + ATTACH_OPERATIONS() + }; + + /////////// + // At-root. + /////////// + class At_Root_Block : public Has_Block { + ADD_PROPERTY(At_Root_Query_Obj, expression) + public: + At_Root_Block(ParserState pstate, Block_Obj b = 0, At_Root_Query_Obj e = 0) + : Has_Block(pstate, b), expression_(e) + { statement_type(ATROOT); } + At_Root_Block(const At_Root_Block* ptr) + : Has_Block(ptr), expression_(ptr->expression_) + { statement_type(ATROOT); } + bool bubbles() { return true; } + bool exclude_node(Statement_Obj s) { + if (expression() == 0) + { + return s->statement_type() == Statement::RULESET; + } + + if (s->statement_type() == Statement::DIRECTIVE) + { + if (Directive_Obj dir = Cast(s)) + { + std::string keyword(dir->keyword()); + if (keyword.length() > 0) keyword.erase(0, 1); + return expression()->exclude(keyword); + } + } + if (s->statement_type() == Statement::MEDIA) + { + return expression()->exclude("media"); + } + if (s->statement_type() == Statement::RULESET) + { + return expression()->exclude("rule"); + } + if (s->statement_type() == Statement::SUPPORTS) + { + return expression()->exclude("supports"); + } + if (Directive_Obj dir = Cast(s)) + { + if (dir->is_keyframes()) return expression()->exclude("keyframes"); + } + return false; + } + ATTACH_AST_OPERATIONS(At_Root_Block) + ATTACH_OPERATIONS() + }; + + ////////////////// + // The null value. + ////////////////// + class Null : public Value { + public: + Null(ParserState pstate) : Value(pstate) { concrete_type(NULL_VAL); } + Null(const Null* ptr) : Value(ptr) { concrete_type(NULL_VAL); } + std::string type() const { return "null"; } + static std::string type_name() { return "null"; } + bool is_invisible() const { return true; } + operator bool() { return false; } + bool is_false() { return true; } + + virtual size_t hash() + { + return -1; + } + + virtual bool operator== (const Expression& rhs) const; + + ATTACH_AST_OPERATIONS(Null) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////// + // Thunks for delayed evaluation. + ///////////////////////////////// + class Thunk : public Expression { + ADD_PROPERTY(Expression_Obj, expression) + ADD_PROPERTY(Env*, environment) + public: + Thunk(ParserState pstate, Expression_Obj exp, Env* env = 0) + : Expression(pstate), expression_(exp), environment_(env) + { } + }; + + ///////////////////////////////////////////////////////// + // Individual parameter objects for mixins and functions. + ///////////////////////////////////////////////////////// + class Parameter : public AST_Node { + ADD_CONSTREF(std::string, name) + ADD_PROPERTY(Expression_Obj, default_value) + ADD_PROPERTY(bool, is_rest_parameter) + public: + Parameter(ParserState pstate, + std::string n, Expression_Obj def = 0, bool rest = false) + : AST_Node(pstate), name_(n), default_value_(def), is_rest_parameter_(rest) + { + // tried to come up with a spec test for this, but it does no longer + // get past the parser (it error out earlier). A spec test was added! + // if (default_value_ && is_rest_parameter_) { + // error("variable-length parameter may not have a default value", pstate_); + // } + } + Parameter(const Parameter* ptr) + : AST_Node(ptr), + name_(ptr->name_), + default_value_(ptr->default_value_), + is_rest_parameter_(ptr->is_rest_parameter_) + { + // tried to come up with a spec test for this, but it does no longer + // get past the parser (it error out earlier). A spec test was added! + // if (default_value_ && is_rest_parameter_) { + // error("variable-length parameter may not have a default value", pstate_); + // } + } + ATTACH_AST_OPERATIONS(Parameter) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////////////////////////////// + // Parameter lists -- in their own class to facilitate context-sensitive + // error checking (e.g., ensuring that all optional parameters follow all + // required parameters). + ///////////////////////////////////////////////////////////////////////// + class Parameters : public AST_Node, public Vectorized { + ADD_PROPERTY(bool, has_optional_parameters) + ADD_PROPERTY(bool, has_rest_parameter) + protected: + void adjust_after_pushing(Parameter_Obj p) + { + if (p->default_value()) { + if (has_rest_parameter()) { + coreError("optional parameters may not be combined with variable-length parameters", p->pstate()); + } + has_optional_parameters(true); + } + else if (p->is_rest_parameter()) { + if (has_rest_parameter()) { + coreError("functions and mixins cannot have more than one variable-length parameter", p->pstate()); + } + has_rest_parameter(true); + } + else { + if (has_rest_parameter()) { + coreError("required parameters must precede variable-length parameters", p->pstate()); + } + if (has_optional_parameters()) { + coreError("required parameters must precede optional parameters", p->pstate()); + } + } + } + public: + Parameters(ParserState pstate) + : AST_Node(pstate), + Vectorized(), + has_optional_parameters_(false), + has_rest_parameter_(false) + { } + Parameters(const Parameters* ptr) + : AST_Node(ptr), + Vectorized(*ptr), + has_optional_parameters_(ptr->has_optional_parameters_), + has_rest_parameter_(ptr->has_rest_parameter_) + { } + ATTACH_AST_OPERATIONS(Parameters) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////// + // Abstract base class for CSS selectors. + ///////////////////////////////////////// + class Selector : public Expression { + // ADD_PROPERTY(bool, has_reference) + // line break before list separator + ADD_PROPERTY(bool, has_line_feed) + // line break after list separator + ADD_PROPERTY(bool, has_line_break) + // maybe we have optional flag + ADD_PROPERTY(bool, is_optional) + // parent block pointers + + // must not be a reference counted object + // otherwise we create circular references + ADD_PROPERTY(Media_Block_Ptr, media_block) + protected: + size_t hash_; + public: + Selector(ParserState pstate) + : Expression(pstate), + has_line_feed_(false), + has_line_break_(false), + is_optional_(false), + media_block_(0), + hash_(0) + { concrete_type(SELECTOR); } + Selector(const Selector* ptr) + : Expression(ptr), + // has_reference_(ptr->has_reference_), + has_line_feed_(ptr->has_line_feed_), + has_line_break_(ptr->has_line_break_), + is_optional_(ptr->is_optional_), + media_block_(ptr->media_block_), + hash_(ptr->hash_) + { concrete_type(SELECTOR); } + virtual ~Selector() = 0; + virtual size_t hash() = 0; + virtual unsigned long specificity() const = 0; + virtual void set_media_block(Media_Block_Ptr mb) { + media_block(mb); + } + virtual bool has_parent_ref() const { + return false; + } + virtual bool has_real_parent_ref() const { + return false; + } + // dispatch to correct handlers + virtual bool operator<(const Selector& rhs) const = 0; + virtual bool operator==(const Selector& rhs) const = 0; + ATTACH_VIRTUAL_AST_OPERATIONS(Selector); + }; + inline Selector::~Selector() { } + + ///////////////////////////////////////////////////////////////////////// + // Interpolated selectors -- the interpolated String will be expanded and + // re-parsed into a normal selector class. + ///////////////////////////////////////////////////////////////////////// + class Selector_Schema : public AST_Node { + ADD_PROPERTY(String_Obj, contents) + ADD_PROPERTY(bool, connect_parent); + // must not be a reference counted object + // otherwise we create circular references + ADD_PROPERTY(Media_Block_Ptr, media_block) + // store computed hash + size_t hash_; + public: + Selector_Schema(ParserState pstate, String_Obj c) + : AST_Node(pstate), + contents_(c), + connect_parent_(true), + media_block_(NULL), + hash_(0) + { } + Selector_Schema(const Selector_Schema* ptr) + : AST_Node(ptr), + contents_(ptr->contents_), + connect_parent_(ptr->connect_parent_), + media_block_(ptr->media_block_), + hash_(ptr->hash_) + { } + virtual bool has_parent_ref() const; + virtual bool has_real_parent_ref() const; + virtual bool operator<(const Selector& rhs) const; + virtual bool operator==(const Selector& rhs) const; + // selector schema is not yet a final selector, so we do not + // have a specificity for it yet. We need to + virtual unsigned long specificity() const { return 0; } + virtual size_t hash() { + if (hash_ == 0) { + hash_combine(hash_, contents_->hash()); + } + return hash_; + } + ATTACH_AST_OPERATIONS(Selector_Schema) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////// + // Abstract base class for simple selectors. + //////////////////////////////////////////// + class Simple_Selector : public Selector { + ADD_CONSTREF(std::string, ns) + ADD_CONSTREF(std::string, name) + ADD_PROPERTY(Simple_Type, simple_type) + ADD_PROPERTY(bool, has_ns) + public: + Simple_Selector(ParserState pstate, std::string n = "") + : Selector(pstate), ns_(""), name_(n), has_ns_(false) + { + simple_type(SIMPLE); + size_t pos = n.find('|'); + // found some namespace + if (pos != std::string::npos) { + has_ns_ = true; + ns_ = n.substr(0, pos); + name_ = n.substr(pos + 1); + } + } + Simple_Selector(const Simple_Selector* ptr) + : Selector(ptr), + ns_(ptr->ns_), + name_(ptr->name_), + has_ns_(ptr->has_ns_) + { simple_type(SIMPLE); } + virtual std::string ns_name() const + { + std::string name(""); + if (has_ns_) + name += ns_ + "|"; + return name + name_; + } + virtual size_t hash() + { + if (hash_ == 0) { + hash_combine(hash_, std::hash()(SELECTOR)); + hash_combine(hash_, std::hash()(ns())); + hash_combine(hash_, std::hash()(name())); + } + return hash_; + } + // namespace compare functions + bool is_ns_eq(const Simple_Selector& r) const; + // namespace query functions + bool is_universal_ns() const + { + return has_ns_ && ns_ == "*"; + } + bool has_universal_ns() const + { + return !has_ns_ || ns_ == "*"; + } + bool is_empty_ns() const + { + return !has_ns_ || ns_ == ""; + } + bool has_empty_ns() const + { + return has_ns_ && ns_ == ""; + } + bool has_qualified_ns() const + { + return has_ns_ && ns_ != "" && ns_ != "*"; + } + // name query functions + bool is_universal() const + { + return name_ == "*"; + } + + virtual bool has_placeholder() { + return false; + } + + virtual ~Simple_Selector() = 0; + virtual Compound_Selector_Ptr unify_with(Compound_Selector_Ptr); + virtual bool has_parent_ref() const { return false; }; + virtual bool has_real_parent_ref() const { return false; }; + virtual bool is_pseudo_element() const { return false; } + + virtual bool is_superselector_of(Compound_Selector_Obj sub) { return false; } + + virtual bool operator==(const Selector& rhs) const; + virtual bool operator==(const Simple_Selector& rhs) const; + inline bool operator!=(const Simple_Selector& rhs) const { return !(*this == rhs); } + + bool operator<(const Selector& rhs) const; + bool operator<(const Simple_Selector& rhs) const; + // default implementation should work for most of the simple selectors (otherwise overload) + ATTACH_VIRTUAL_AST_OPERATIONS(Simple_Selector); + ATTACH_OPERATIONS(); + }; + inline Simple_Selector::~Simple_Selector() { } + + + ////////////////////////////////// + // The Parent Selector Expression. + ////////////////////////////////// + // parent selectors can occur in selectors but also + // inside strings in declarations (Compound_Selector). + // only one simple parent selector means the first case. + class Parent_Selector : public Simple_Selector { + ADD_PROPERTY(bool, real) + public: + Parent_Selector(ParserState pstate, bool r = true) + : Simple_Selector(pstate, "&"), real_(r) + { /* has_reference(true); */ } + Parent_Selector(const Parent_Selector* ptr) + : Simple_Selector(ptr), real_(ptr->real_) + { /* has_reference(true); */ } + bool is_real_parent_ref() const { return real(); }; + virtual bool has_parent_ref() const { return true; }; + virtual bool has_real_parent_ref() const { return is_real_parent_ref(); }; + virtual unsigned long specificity() const + { + return 0; + } + std::string type() const { return "selector"; } + static std::string type_name() { return "selector"; } + ATTACH_AST_OPERATIONS(Parent_Selector) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////////////////////////////// + // Placeholder selectors (e.g., "%foo") for use in extend-only selectors. + ///////////////////////////////////////////////////////////////////////// + class Placeholder_Selector : public Simple_Selector { + public: + Placeholder_Selector(ParserState pstate, std::string n) + : Simple_Selector(pstate, n) + { } + Placeholder_Selector(const Placeholder_Selector* ptr) + : Simple_Selector(ptr) + { } + virtual unsigned long specificity() const + { + return Constants::Specificity_Base; + } + virtual bool has_placeholder() { + return true; + } + virtual ~Placeholder_Selector() {}; + ATTACH_AST_OPERATIONS(Placeholder_Selector) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////////////////////////// + // Element selectors (and the universal selector) -- e.g., div, span, *. + ///////////////////////////////////////////////////////////////////// + class Element_Selector : public Simple_Selector { + public: + Element_Selector(ParserState pstate, std::string n) + : Simple_Selector(pstate, n) + { } + Element_Selector(const Element_Selector* ptr) + : Simple_Selector(ptr) + { } + virtual unsigned long specificity() const + { + if (name() == "*") return 0; + else return Constants::Specificity_Element; + } + virtual Simple_Selector_Ptr unify_with(Simple_Selector_Ptr); + virtual Compound_Selector_Ptr unify_with(Compound_Selector_Ptr); + virtual bool operator==(const Simple_Selector& rhs) const; + virtual bool operator==(const Element_Selector& rhs) const; + virtual bool operator<(const Simple_Selector& rhs) const; + virtual bool operator<(const Element_Selector& rhs) const; + ATTACH_AST_OPERATIONS(Element_Selector) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////// + // Class selectors -- i.e., .foo. + //////////////////////////////////////////////// + class Class_Selector : public Simple_Selector { + public: + Class_Selector(ParserState pstate, std::string n) + : Simple_Selector(pstate, n) + { } + Class_Selector(const Class_Selector* ptr) + : Simple_Selector(ptr) + { } + virtual unsigned long specificity() const + { + return Constants::Specificity_Class; + } + virtual Compound_Selector_Ptr unify_with(Compound_Selector_Ptr); + ATTACH_AST_OPERATIONS(Class_Selector) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////// + // ID selectors -- i.e., #foo. + //////////////////////////////////////////////// + class Id_Selector : public Simple_Selector { + public: + Id_Selector(ParserState pstate, std::string n) + : Simple_Selector(pstate, n) + { } + Id_Selector(const Id_Selector* ptr) + : Simple_Selector(ptr) + { } + virtual unsigned long specificity() const + { + return Constants::Specificity_ID; + } + virtual Compound_Selector_Ptr unify_with(Compound_Selector_Ptr); + ATTACH_AST_OPERATIONS(Id_Selector) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////////////////////// + // Attribute selectors -- e.g., [src*=".jpg"], etc. + /////////////////////////////////////////////////// + class Attribute_Selector : public Simple_Selector { + ADD_CONSTREF(std::string, matcher) + // this cannot be changed to obj atm!!!!!!????!!!!!!! + ADD_PROPERTY(String_Obj, value) // might be interpolated + ADD_PROPERTY(char, modifier); + public: + Attribute_Selector(ParserState pstate, std::string n, std::string m, String_Obj v, char o = 0) + : Simple_Selector(pstate, n), matcher_(m), value_(v), modifier_(o) + { simple_type(ATTR_SEL); } + Attribute_Selector(const Attribute_Selector* ptr) + : Simple_Selector(ptr), + matcher_(ptr->matcher_), + value_(ptr->value_), + modifier_(ptr->modifier_) + { simple_type(ATTR_SEL); } + virtual size_t hash() + { + if (hash_ == 0) { + hash_combine(hash_, Simple_Selector::hash()); + hash_combine(hash_, std::hash()(matcher())); + if (value_) hash_combine(hash_, value_->hash()); + } + return hash_; + } + virtual unsigned long specificity() const + { + return Constants::Specificity_Attr; + } + virtual bool operator==(const Simple_Selector& rhs) const; + virtual bool operator==(const Attribute_Selector& rhs) const; + virtual bool operator<(const Simple_Selector& rhs) const; + virtual bool operator<(const Attribute_Selector& rhs) const; + ATTACH_AST_OPERATIONS(Attribute_Selector) + ATTACH_OPERATIONS() + }; + + ////////////////////////////////////////////////////////////////// + // Pseudo selectors -- e.g., :first-child, :nth-of-type(...), etc. + ////////////////////////////////////////////////////////////////// + /* '::' starts a pseudo-element, ':' a pseudo-class */ + /* Except :first-line, :first-letter, :before and :after */ + /* Note that pseudo-elements are restricted to one per selector */ + /* and occur only in the last simple_selector_sequence. */ + inline bool is_pseudo_class_element(const std::string& name) + { + return name == ":before" || + name == ":after" || + name == ":first-line" || + name == ":first-letter"; + } + + // Pseudo Selector cannot have any namespace? + class Pseudo_Selector : public Simple_Selector { + ADD_PROPERTY(String_Obj, expression) + public: + Pseudo_Selector(ParserState pstate, std::string n, String_Obj expr = 0) + : Simple_Selector(pstate, n), expression_(expr) + { simple_type(PSEUDO_SEL); } + Pseudo_Selector(const Pseudo_Selector* ptr) + : Simple_Selector(ptr), expression_(ptr->expression_) + { simple_type(PSEUDO_SEL); } + + // A pseudo-element is made of two colons (::) followed by the name. + // The `::` notation is introduced by the current document in order to + // establish a discrimination between pseudo-classes and pseudo-elements. + // For compatibility with existing style sheets, user agents must also + // accept the previous one-colon notation for pseudo-elements introduced + // in CSS levels 1 and 2 (namely, :first-line, :first-letter, :before and + // :after). This compatibility is not allowed for the new pseudo-elements + // introduced in this specification. + virtual bool is_pseudo_element() const + { + return (name_[0] == ':' && name_[1] == ':') + || is_pseudo_class_element(name_); + } + virtual size_t hash() + { + if (hash_ == 0) { + hash_combine(hash_, Simple_Selector::hash()); + if (expression_) hash_combine(hash_, expression_->hash()); + } + return hash_; + } + virtual unsigned long specificity() const + { + if (is_pseudo_element()) + return Constants::Specificity_Element; + return Constants::Specificity_Pseudo; + } + virtual bool operator==(const Simple_Selector& rhs) const; + virtual bool operator==(const Pseudo_Selector& rhs) const; + virtual bool operator<(const Simple_Selector& rhs) const; + virtual bool operator<(const Pseudo_Selector& rhs) const; + virtual Compound_Selector_Ptr unify_with(Compound_Selector_Ptr); + ATTACH_AST_OPERATIONS(Pseudo_Selector) + ATTACH_OPERATIONS() + }; + + ///////////////////////////////////////////////// + // Wrapped selector -- pseudo selector that takes a list of selectors as argument(s) e.g., :not(:first-of-type), :-moz-any(ol p.blah, ul, menu, dir) + ///////////////////////////////////////////////// + class Wrapped_Selector : public Simple_Selector { + ADD_PROPERTY(Selector_List_Obj, selector) + public: + Wrapped_Selector(ParserState pstate, std::string n, Selector_List_Obj sel) + : Simple_Selector(pstate, n), selector_(sel) + { simple_type(WRAPPED_SEL); } + Wrapped_Selector(const Wrapped_Selector* ptr) + : Simple_Selector(ptr), selector_(ptr->selector_) + { simple_type(WRAPPED_SEL); } + virtual bool is_superselector_of(Wrapped_Selector_Obj sub); + // Selectors inside the negation pseudo-class are counted like any + // other, but the negation itself does not count as a pseudo-class. + virtual size_t hash(); + virtual bool has_parent_ref() const; + virtual bool has_real_parent_ref() const; + virtual unsigned long specificity() const; + virtual bool find ( bool (*f)(AST_Node_Obj) ); + virtual bool operator==(const Simple_Selector& rhs) const; + virtual bool operator==(const Wrapped_Selector& rhs) const; + virtual bool operator<(const Simple_Selector& rhs) const; + virtual bool operator<(const Wrapped_Selector& rhs) const; + virtual void cloneChildren(); + ATTACH_AST_OPERATIONS(Wrapped_Selector) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////////// + // Simple selector sequences. Maintains flags indicating whether it contains + // any parent references or placeholders, to simplify expansion. + //////////////////////////////////////////////////////////////////////////// + class Compound_Selector : public Selector, public Vectorized { + private: + ComplexSelectorSet sources_; + ADD_PROPERTY(bool, extended); + ADD_PROPERTY(bool, has_parent_reference); + protected: + void adjust_after_pushing(Simple_Selector_Obj s) + { + // if (s->has_reference()) has_reference(true); + // if (s->has_placeholder()) has_placeholder(true); + } + public: + Compound_Selector(ParserState pstate, size_t s = 0) + : Selector(pstate), + Vectorized(s), + extended_(false), + has_parent_reference_(false) + { } + Compound_Selector(const Compound_Selector* ptr) + : Selector(ptr), + Vectorized(*ptr), + extended_(ptr->extended_), + has_parent_reference_(ptr->has_parent_reference_) + { } + bool contains_placeholder() { + for (size_t i = 0, L = length(); i < L; ++i) { + if ((*this)[i]->has_placeholder()) return true; + } + return false; + }; + + void append(Simple_Selector_Ptr element); + + bool is_universal() const + { + return length() == 1 && (*this)[0]->is_universal(); + } + + Complex_Selector_Obj to_complex(); + Compound_Selector_Ptr unify_with(Compound_Selector_Ptr rhs); + // virtual Placeholder_Selector_Ptr find_placeholder(); + virtual bool has_parent_ref() const; + virtual bool has_real_parent_ref() const; + Simple_Selector_Ptr base() const { + if (length() == 0) return 0; + // ToDo: why is this needed? + if (Cast((*this)[0])) + return (*this)[0]; + return 0; + } + virtual bool is_superselector_of(Compound_Selector_Obj sub, std::string wrapped = ""); + virtual bool is_superselector_of(Complex_Selector_Obj sub, std::string wrapped = ""); + virtual bool is_superselector_of(Selector_List_Obj sub, std::string wrapped = ""); + virtual size_t hash() + { + if (Selector::hash_ == 0) { + hash_combine(Selector::hash_, std::hash()(SELECTOR)); + if (length()) hash_combine(Selector::hash_, Vectorized::hash()); + } + return Selector::hash_; + } + virtual unsigned long specificity() const + { + int sum = 0; + for (size_t i = 0, L = length(); i < L; ++i) + { sum += (*this)[i]->specificity(); } + return sum; + } + + virtual bool has_placeholder() + { + if (length() == 0) return false; + if (Simple_Selector_Obj ss = elements().front()) { + if (ss->has_placeholder()) return true; + } + return false; + } + + bool is_empty_reference() + { + return length() == 1 && + Cast((*this)[0]); + } + + virtual bool find ( bool (*f)(AST_Node_Obj) ); + virtual bool operator<(const Selector& rhs) const; + virtual bool operator==(const Selector& rhs) const; + virtual bool operator<(const Compound_Selector& rhs) const; + virtual bool operator==(const Compound_Selector& rhs) const; + inline bool operator!=(const Compound_Selector& rhs) const { return !(*this == rhs); } + + ComplexSelectorSet& sources() { return sources_; } + void clearSources() { sources_.clear(); } + void mergeSources(ComplexSelectorSet& sources); + + Compound_Selector_Ptr minus(Compound_Selector_Ptr rhs); + virtual void cloneChildren(); + ATTACH_AST_OPERATIONS(Compound_Selector) + ATTACH_OPERATIONS() + }; + + //////////////////////////////////////////////////////////////////////////// + // General selectors -- i.e., simple sequences combined with one of the four + // CSS selector combinators (">", "+", "~", and whitespace). Essentially a + // linked list. + //////////////////////////////////////////////////////////////////////////// + class Complex_Selector : public Selector { + public: + enum Combinator { ANCESTOR_OF, PARENT_OF, PRECEDES, ADJACENT_TO, REFERENCE }; + private: + HASH_CONSTREF(Combinator, combinator) + HASH_PROPERTY(Compound_Selector_Obj, head) + HASH_PROPERTY(Complex_Selector_Obj, tail) + HASH_PROPERTY(String_Obj, reference); + public: + bool contains_placeholder() { + if (head() && head()->contains_placeholder()) return true; + if (tail() && tail()->contains_placeholder()) return true; + return false; + }; + Complex_Selector(ParserState pstate, + Combinator c = ANCESTOR_OF, + Compound_Selector_Obj h = 0, + Complex_Selector_Obj t = 0, + String_Obj r = 0) + : Selector(pstate), + combinator_(c), + head_(h), tail_(t), + reference_(r) + {} + Complex_Selector(const Complex_Selector* ptr) + : Selector(ptr), + combinator_(ptr->combinator_), + head_(ptr->head_), tail_(ptr->tail_), + reference_(ptr->reference_) + {}; + virtual bool has_parent_ref() const; + virtual bool has_real_parent_ref() const; + + Complex_Selector_Obj skip_empty_reference() + { + if ((!head_ || !head_->length() || head_->is_empty_reference()) && + combinator() == Combinator::ANCESTOR_OF) + { + if (!tail_) return 0; + tail_->has_line_feed_ = this->has_line_feed_; + // tail_->has_line_break_ = this->has_line_break_; + return tail_->skip_empty_reference(); + } + return this; + } + + // can still have a tail + bool is_empty_ancestor() const + { + return (!head() || head()->length() == 0) && + combinator() == Combinator::ANCESTOR_OF; + } + + Selector_List_Ptr tails(Selector_List_Ptr tails); + + // front returns the first real tail + // skips over parent and empty ones + Complex_Selector_Obj first(); + // last returns the last real tail + Complex_Selector_Obj last(); + + // some shortcuts that should be removed + Complex_Selector_Obj innermost() { return last(); }; + + size_t length() const; + Selector_List_Ptr resolve_parent_refs(std::vector& pstack, Backtraces& traces, bool implicit_parent = true); + virtual bool is_superselector_of(Compound_Selector_Obj sub, std::string wrapping = ""); + virtual bool is_superselector_of(Complex_Selector_Obj sub, std::string wrapping = ""); + virtual bool is_superselector_of(Selector_List_Obj sub, std::string wrapping = ""); + Selector_List_Ptr unify_with(Complex_Selector_Ptr rhs); + Combinator clear_innermost(); + void append(Complex_Selector_Obj, Backtraces& traces); + void set_innermost(Complex_Selector_Obj, Combinator); + virtual size_t hash() + { + if (hash_ == 0) { + hash_combine(hash_, std::hash()(SELECTOR)); + hash_combine(hash_, std::hash()(combinator_)); + if (head_) hash_combine(hash_, head_->hash()); + if (tail_) hash_combine(hash_, tail_->hash()); + } + return hash_; + } + virtual unsigned long specificity() const + { + int sum = 0; + if (head()) sum += head()->specificity(); + if (tail()) sum += tail()->specificity(); + return sum; + } + virtual void set_media_block(Media_Block_Ptr mb) { + media_block(mb); + if (tail_) tail_->set_media_block(mb); + if (head_) head_->set_media_block(mb); + } + virtual bool has_placeholder() { + if (head_ && head_->has_placeholder()) return true; + if (tail_ && tail_->has_placeholder()) return true; + return false; + } + virtual bool find ( bool (*f)(AST_Node_Obj) ); + virtual bool operator<(const Selector& rhs) const; + virtual bool operator==(const Selector& rhs) const; + virtual bool operator<(const Complex_Selector& rhs) const; + virtual bool operator==(const Complex_Selector& rhs) const; + inline bool operator!=(const Complex_Selector& rhs) const { return !(*this == rhs); } + const ComplexSelectorSet sources() + { + //s = Set.new + //seq.map {|sseq_or_op| s.merge sseq_or_op.sources if sseq_or_op.is_a?(SimpleSequence)} + //s + + ComplexSelectorSet srcs; + + Compound_Selector_Obj pHead = head(); + Complex_Selector_Obj pTail = tail(); + + if (pHead) { + const ComplexSelectorSet& headSources = pHead->sources(); + srcs.insert(headSources.begin(), headSources.end()); + } + + if (pTail) { + const ComplexSelectorSet& tailSources = pTail->sources(); + srcs.insert(tailSources.begin(), tailSources.end()); + } + + return srcs; + } + void addSources(ComplexSelectorSet& sources) { + // members.map! {|m| m.is_a?(SimpleSequence) ? m.with_more_sources(sources) : m} + Complex_Selector_Ptr pIter = this; + while (pIter) { + Compound_Selector_Ptr pHead = pIter->head(); + + if (pHead) { + pHead->mergeSources(sources); + } + + pIter = pIter->tail(); + } + } + void clearSources() { + Complex_Selector_Ptr pIter = this; + while (pIter) { + Compound_Selector_Ptr pHead = pIter->head(); + + if (pHead) { + pHead->clearSources(); + } + + pIter = pIter->tail(); + } + } + + virtual void cloneChildren(); + ATTACH_AST_OPERATIONS(Complex_Selector) + ATTACH_OPERATIONS() + }; + + /////////////////////////////////// + // Comma-separated selector groups. + /////////////////////////////////// + class Selector_List : public Selector, public Vectorized { + ADD_PROPERTY(Selector_Schema_Obj, schema) + ADD_CONSTREF(std::vector, wspace) + protected: + void adjust_after_pushing(Complex_Selector_Obj c); + public: + Selector_List(ParserState pstate, size_t s = 0) + : Selector(pstate), + Vectorized(s), + schema_(NULL), + wspace_(0) + { } + Selector_List(const Selector_List* ptr) + : Selector(ptr), + Vectorized(*ptr), + schema_(ptr->schema_), + wspace_(ptr->wspace_) + { } + std::string type() const { return "list"; } + // remove parent selector references + // basically unwraps parsed selectors + virtual bool has_parent_ref() const; + virtual bool has_real_parent_ref() const; + void remove_parent_selectors(); + Selector_List_Ptr resolve_parent_refs(std::vector& pstack, Backtraces& traces, bool implicit_parent = true); + virtual bool is_superselector_of(Compound_Selector_Obj sub, std::string wrapping = ""); + virtual bool is_superselector_of(Complex_Selector_Obj sub, std::string wrapping = ""); + virtual bool is_superselector_of(Selector_List_Obj sub, std::string wrapping = ""); + Selector_List_Ptr unify_with(Selector_List_Ptr); + void populate_extends(Selector_List_Obj, Subset_Map&); + Selector_List_Obj eval(Eval& eval); + virtual size_t hash() + { + if (Selector::hash_ == 0) { + hash_combine(Selector::hash_, std::hash()(SELECTOR)); + hash_combine(Selector::hash_, Vectorized::hash()); + } + return Selector::hash_; + } + virtual unsigned long specificity() const + { + unsigned long sum = 0; + unsigned long specificity; + for (size_t i = 0, L = length(); i < L; ++i) + { + specificity = (*this)[i]->specificity(); + if (sum < specificity) sum = specificity; + } + return sum; + } + virtual void set_media_block(Media_Block_Ptr mb) { + media_block(mb); + for (Complex_Selector_Obj cs : elements()) { + cs->set_media_block(mb); + } + } + virtual bool has_placeholder() { + for (Complex_Selector_Obj cs : elements()) { + if (cs->has_placeholder()) return true; + } + return false; + } + virtual bool find ( bool (*f)(AST_Node_Obj) ); + virtual bool operator<(const Selector& rhs) const; + virtual bool operator==(const Selector& rhs) const; + virtual bool operator<(const Selector_List& rhs) const; + virtual bool operator==(const Selector_List& rhs) const; + // Selector Lists can be compared to comma lists + virtual bool operator==(const Expression& rhs) const; + virtual void cloneChildren(); + ATTACH_AST_OPERATIONS(Selector_List) + ATTACH_OPERATIONS() + }; + + // compare function for sorting and probably other other uses + struct cmp_complex_selector { inline bool operator() (const Complex_Selector_Obj l, const Complex_Selector_Obj r) { return (*l < *r); } }; + struct cmp_compound_selector { inline bool operator() (const Compound_Selector_Obj l, const Compound_Selector_Obj r) { return (*l < *r); } }; + struct cmp_simple_selector { inline bool operator() (const Simple_Selector_Obj l, const Simple_Selector_Obj r) { return (*l < *r); } }; + +} + +#ifdef __clang__ + +#pragma clang diagnostic pop + +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/ast_def_macros.hpp b/mybulma/node_modules/node-sass/src/libsass/src/ast_def_macros.hpp new file mode 100644 index 0000000..b3a7f8d --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/ast_def_macros.hpp @@ -0,0 +1,80 @@ +#ifndef SASS_AST_DEF_MACROS_H +#define SASS_AST_DEF_MACROS_H + +// Helper class to switch a flag and revert once we go out of scope +template +class LocalOption { + private: + T* var; // pointer to original variable + T orig; // copy of the original option + public: + LocalOption(T& var) + { + this->var = &var; + this->orig = var; + } + LocalOption(T& var, T orig) + { + this->var = &var; + this->orig = var; + *(this->var) = orig; + } + void reset() + { + *(this->var) = this->orig; + } + ~LocalOption() { + *(this->var) = this->orig; + } +}; + +#define LOCAL_FLAG(name,opt) LocalOption flag_##name(name, opt) +#define LOCAL_COUNT(name,opt) LocalOption cnt_##name(name, opt) + +#define NESTING_GUARD(name) \ + LocalOption cnt_##name(name, name + 1); \ + if (name > MAX_NESTING) throw Exception::NestingLimitError(pstate, traces); \ + +#define ATTACH_OPERATIONS()\ +virtual void perform(Operation* op) { (*op)(this); }\ +virtual AST_Node_Ptr perform(Operation* op) { return (*op)(this); }\ +virtual Statement_Ptr perform(Operation* op) { return (*op)(this); }\ +virtual Expression_Ptr perform(Operation* op) { return (*op)(this); }\ +virtual Selector_Ptr perform(Operation* op) { return (*op)(this); }\ +virtual std::string perform(Operation* op) { return (*op)(this); }\ +virtual union Sass_Value* perform(Operation* op) { return (*op)(this); }\ +virtual Value_Ptr perform(Operation* op) { return (*op)(this); } + +#define ADD_PROPERTY(type, name)\ +protected:\ + type name##_;\ +public:\ + type name() const { return name##_; }\ + type name(type name##__) { return name##_ = name##__; }\ +private: + +#define HASH_PROPERTY(type, name)\ +protected:\ + type name##_;\ +public:\ + type name() const { return name##_; }\ + type name(type name##__) { hash_ = 0; return name##_ = name##__; }\ +private: + +#define ADD_CONSTREF(type, name) \ +protected: \ + type name##_; \ +public: \ + const type& name() const { return name##_; } \ + void name(type name##__) { name##_ = name##__; } \ +private: + +#define HASH_CONSTREF(type, name) \ +protected: \ + type name##_; \ +public: \ + const type& name() const { return name##_; } \ + void name(type name##__) { hash_ = 0; name##_ = name##__; } \ +private: + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.cpp b/mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.cpp new file mode 100644 index 0000000..c9c7672 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.cpp @@ -0,0 +1,29 @@ +#include "ast.hpp" + +namespace Sass { + + #define IMPLEMENT_BASE_CAST(T) \ + template<> \ + T* Cast(AST_Node* ptr) { \ + return dynamic_cast(ptr); \ + }; \ + \ + template<> \ + const T* Cast(const AST_Node* ptr) { \ + return dynamic_cast(ptr); \ + }; \ + + IMPLEMENT_BASE_CAST(AST_Node) + IMPLEMENT_BASE_CAST(Expression) + IMPLEMENT_BASE_CAST(Statement) + IMPLEMENT_BASE_CAST(Has_Block) + IMPLEMENT_BASE_CAST(PreValue) + IMPLEMENT_BASE_CAST(Value) + IMPLEMENT_BASE_CAST(List) + IMPLEMENT_BASE_CAST(String) + IMPLEMENT_BASE_CAST(String_Constant) + IMPLEMENT_BASE_CAST(Supports_Condition) + IMPLEMENT_BASE_CAST(Selector) + IMPLEMENT_BASE_CAST(Simple_Selector) + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.hpp b/mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.hpp new file mode 100644 index 0000000..5145a09 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/ast_fwd_decl.hpp @@ -0,0 +1,463 @@ +#ifndef SASS_AST_FWD_DECL_H +#define SASS_AST_FWD_DECL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "memory/SharedPtr.hpp" +#include "sass/functions.h" + +///////////////////////////////////////////// +// Forward declarations for the AST visitors. +///////////////////////////////////////////// +namespace Sass { + + class AST_Node; + typedef AST_Node* AST_Node_Ptr; + typedef AST_Node const* AST_Node_Ptr_Const; + + class Has_Block; + typedef Has_Block* Has_Block_Ptr; + typedef Has_Block const* Has_Block_Ptr_Const; + + class Simple_Selector; + typedef Simple_Selector* Simple_Selector_Ptr; + typedef Simple_Selector const* Simple_Selector_Ptr_Const; + + class PreValue; + typedef PreValue* PreValue_Ptr; + typedef PreValue const* PreValue_Ptr_Const; + class Thunk; + typedef Thunk* Thunk_Ptr; + typedef Thunk const* Thunk_Ptr_Const; + class Block; + typedef Block* Block_Ptr; + typedef Block const* Block_Ptr_Const; + class Expression; + typedef Expression* Expression_Ptr; + typedef Expression const* Expression_Ptr_Const; + class Statement; + typedef Statement* Statement_Ptr; + typedef Statement const* Statement_Ptr_Const; + class Value; + typedef Value* Value_Ptr; + typedef Value const* Value_Ptr_Const; + class Declaration; + typedef Declaration* Declaration_Ptr; + typedef Declaration const* Declaration_Ptr_Const; + class Ruleset; + typedef Ruleset* Ruleset_Ptr; + typedef Ruleset const* Ruleset_Ptr_Const; + class Bubble; + typedef Bubble* Bubble_Ptr; + typedef Bubble const* Bubble_Ptr_Const; + class Trace; + typedef Trace* Trace_Ptr; + typedef Trace const* Trace_Ptr_Const; + + class Media_Block; + typedef Media_Block* Media_Block_Ptr; + typedef Media_Block const* Media_Block_Ptr_Const; + class Supports_Block; + typedef Supports_Block* Supports_Block_Ptr; + typedef Supports_Block const* Supports_Block_Ptr_Const; + class Directive; + typedef Directive* Directive_Ptr; + typedef Directive const* Directive_Ptr_Const; + + + class Keyframe_Rule; + typedef Keyframe_Rule* Keyframe_Rule_Ptr; + typedef Keyframe_Rule const* Keyframe_Rule_Ptr_Const; + class At_Root_Block; + typedef At_Root_Block* At_Root_Block_Ptr; + typedef At_Root_Block const* At_Root_Block_Ptr_Const; + class Assignment; + typedef Assignment* Assignment_Ptr; + typedef Assignment const* Assignment_Ptr_Const; + + class Import; + typedef Import* Import_Ptr; + typedef Import const* Import_Ptr_Const; + class Import_Stub; + typedef Import_Stub* Import_Stub_Ptr; + typedef Import_Stub const* Import_Stub_Ptr_Const; + class Warning; + typedef Warning* Warning_Ptr; + typedef Warning const* Warning_Ptr_Const; + + class Error; + typedef Error* Error_Ptr; + typedef Error const* Error_Ptr_Const; + class Debug; + typedef Debug* Debug_Ptr; + typedef Debug const* Debug_Ptr_Const; + class Comment; + typedef Comment* Comment_Ptr; + typedef Comment const* Comment_Ptr_Const; + + class If; + typedef If* If_Ptr; + typedef If const* If_Ptr_Const; + class For; + typedef For* For_Ptr; + typedef For const* For_Ptr_Const; + class Each; + typedef Each* Each_Ptr; + typedef Each const* Each_Ptr_Const; + class While; + typedef While* While_Ptr; + typedef While const* While_Ptr_Const; + class Return; + typedef Return* Return_Ptr; + typedef Return const* Return_Ptr_Const; + class Content; + typedef Content* Content_Ptr; + typedef Content const* Content_Ptr_Const; + class Extension; + typedef Extension* Extension_Ptr; + typedef Extension const* Extension_Ptr_Const; + class Definition; + typedef Definition* Definition_Ptr; + typedef Definition const* Definition_Ptr_Const; + + class List; + typedef List* List_Ptr; + typedef List const* List_Ptr_Const; + class Map; + typedef Map* Map_Ptr; + typedef Map const* Map_Ptr_Const; + class Function; + typedef Function* Function_Ptr; + typedef Function const* Function_Ptr_Const; + + class Mixin_Call; + typedef Mixin_Call* Mixin_Call_Ptr; + typedef Mixin_Call const* Mixin_Call_Ptr_Const; + class Binary_Expression; + typedef Binary_Expression* Binary_Expression_Ptr; + typedef Binary_Expression const* Binary_Expression_Ptr_Const; + class Unary_Expression; + typedef Unary_Expression* Unary_Expression_Ptr; + typedef Unary_Expression const* Unary_Expression_Ptr_Const; + class Function_Call; + typedef Function_Call* Function_Call_Ptr; + typedef Function_Call const* Function_Call_Ptr_Const; + class Function_Call_Schema; + typedef Function_Call_Schema* Function_Call_Schema_Ptr; + typedef Function_Call_Schema const* Function_Call_Schema_Ptr_Const; + class Custom_Warning; + typedef Custom_Warning* Custom_Warning_Ptr; + typedef Custom_Warning const* Custom_Warning_Ptr_Const; + class Custom_Error; + typedef Custom_Error* Custom_Error_Ptr; + typedef Custom_Error const* Custom_Error_Ptr_Const; + + class Variable; + typedef Variable* Variable_Ptr; + typedef Variable const* Variable_Ptr_Const; + class Number; + typedef Number* Number_Ptr; + typedef Number const* Number_Ptr_Const; + class Color; + typedef Color* Color_Ptr; + typedef Color const* Color_Ptr_Const; + class Boolean; + typedef Boolean* Boolean_Ptr; + typedef Boolean const* Boolean_Ptr_Const; + class String; + typedef String* String_Ptr; + typedef String const* String_Ptr_Const; + + class String_Schema; + typedef String_Schema* String_Schema_Ptr; + typedef String_Schema const* String_Schema_Ptr_Const; + class String_Constant; + typedef String_Constant* String_Constant_Ptr; + typedef String_Constant const* String_Constant_Ptr_Const; + class String_Quoted; + typedef String_Quoted* String_Quoted_Ptr; + typedef String_Quoted const* String_Quoted_Ptr_Const; + + class Media_Query; + typedef Media_Query* Media_Query_Ptr; + typedef Media_Query const* Media_Query_Ptr_Const; + class Media_Query_Expression; + typedef Media_Query_Expression* Media_Query_Expression_Ptr; + typedef Media_Query_Expression const* Media_Query_Expression_Ptr_Const; + class Supports_Condition; + typedef Supports_Condition* Supports_Condition_Ptr; + typedef Supports_Condition const* Supports_Condition_Ptr_Const; + class Supports_Operator; + typedef Supports_Operator* Supports_Operator_Ptr; + typedef Supports_Operator const* Supports_Operator_Ptr_Const; + class Supports_Negation; + typedef Supports_Negation* Supports_Negation_Ptr; + typedef Supports_Negation const* Supports_Negation_Ptr_Const; + class Supports_Declaration; + typedef Supports_Declaration* Supports_Declaration_Ptr; + typedef Supports_Declaration const* Supports_Declaration_Ptr_Const; + class Supports_Interpolation; + typedef Supports_Interpolation* Supports_Interpolation_Ptr; + typedef Supports_Interpolation const* Supports_Interpolation_Ptr_Const; + + + class Null; + typedef Null* Null_Ptr; + typedef Null const* Null_Ptr_Const; + + class At_Root_Query; + typedef At_Root_Query* At_Root_Query_Ptr; + typedef At_Root_Query const* At_Root_Query_Ptr_Const; + class Parent_Selector; + typedef Parent_Selector* Parent_Selector_Ptr; + typedef Parent_Selector const* Parent_Selector_Ptr_Const; + class Parameter; + typedef Parameter* Parameter_Ptr; + typedef Parameter const* Parameter_Ptr_Const; + class Parameters; + typedef Parameters* Parameters_Ptr; + typedef Parameters const* Parameters_Ptr_Const; + class Argument; + typedef Argument* Argument_Ptr; + typedef Argument const* Argument_Ptr_Const; + class Arguments; + typedef Arguments* Arguments_Ptr; + typedef Arguments const* Arguments_Ptr_Const; + class Selector; + typedef Selector* Selector_Ptr; + typedef Selector const* Selector_Ptr_Const; + + + class Selector_Schema; + typedef Selector_Schema* Selector_Schema_Ptr; + typedef Selector_Schema const* Selector_Schema_Ptr_Const; + class Placeholder_Selector; + typedef Placeholder_Selector* Placeholder_Selector_Ptr; + typedef Placeholder_Selector const* Placeholder_Selector_Ptr_Const; + class Element_Selector; + typedef Element_Selector* Element_Selector_Ptr; + typedef Element_Selector const* Element_Selector_Ptr_Const; + class Class_Selector; + typedef Class_Selector* Class_Selector_Ptr; + typedef Class_Selector const* Class_Selector_Ptr_Const; + class Id_Selector; + typedef Id_Selector* Id_Selector_Ptr; + typedef Id_Selector const* Id_Selector_Ptr_Const; + class Attribute_Selector; + typedef Attribute_Selector* Attribute_Selector_Ptr; + typedef Attribute_Selector const* Attribute_Selector_Ptr_Const; + + class Pseudo_Selector; + typedef Pseudo_Selector* Pseudo_Selector_Ptr; + typedef Pseudo_Selector const * Pseudo_Selector_Ptr_Const; + class Wrapped_Selector; + typedef Wrapped_Selector* Wrapped_Selector_Ptr; + typedef Wrapped_Selector const * Wrapped_Selector_Ptr_Const; + class Compound_Selector; + typedef Compound_Selector* Compound_Selector_Ptr; + typedef Compound_Selector const * Compound_Selector_Ptr_Const; + class Complex_Selector; + typedef Complex_Selector* Complex_Selector_Ptr; + typedef Complex_Selector const * Complex_Selector_Ptr_Const; + class Selector_List; + typedef Selector_List* Selector_List_Ptr; + typedef Selector_List const * Selector_List_Ptr_Const; + + + // common classes + class Context; + class Expand; + class Eval; + + // declare classes that are instances of memory nodes + // #define IMPL_MEM_OBJ(type) using type##_Obj = SharedImpl + #define IMPL_MEM_OBJ(type) typedef SharedImpl type##_Obj + + IMPL_MEM_OBJ(AST_Node); + IMPL_MEM_OBJ(Statement); + IMPL_MEM_OBJ(Block); + IMPL_MEM_OBJ(Ruleset); + IMPL_MEM_OBJ(Bubble); + IMPL_MEM_OBJ(Trace); + IMPL_MEM_OBJ(Media_Block); + IMPL_MEM_OBJ(Supports_Block); + IMPL_MEM_OBJ(Directive); + IMPL_MEM_OBJ(Keyframe_Rule); + IMPL_MEM_OBJ(At_Root_Block); + IMPL_MEM_OBJ(Declaration); + IMPL_MEM_OBJ(Assignment); + IMPL_MEM_OBJ(Import); + IMPL_MEM_OBJ(Import_Stub); + IMPL_MEM_OBJ(Warning); + IMPL_MEM_OBJ(Error); + IMPL_MEM_OBJ(Debug); + IMPL_MEM_OBJ(Comment); + IMPL_MEM_OBJ(PreValue); + IMPL_MEM_OBJ(Has_Block); + IMPL_MEM_OBJ(Thunk); + IMPL_MEM_OBJ(If); + IMPL_MEM_OBJ(For); + IMPL_MEM_OBJ(Each); + IMPL_MEM_OBJ(While); + IMPL_MEM_OBJ(Return); + IMPL_MEM_OBJ(Content); + IMPL_MEM_OBJ(Extension); + IMPL_MEM_OBJ(Definition); + IMPL_MEM_OBJ(Mixin_Call); + IMPL_MEM_OBJ(Value); + IMPL_MEM_OBJ(Expression); + IMPL_MEM_OBJ(List); + IMPL_MEM_OBJ(Map); + IMPL_MEM_OBJ(Function); + IMPL_MEM_OBJ(Binary_Expression); + IMPL_MEM_OBJ(Unary_Expression); + IMPL_MEM_OBJ(Function_Call); + IMPL_MEM_OBJ(Function_Call_Schema); + IMPL_MEM_OBJ(Custom_Warning); + IMPL_MEM_OBJ(Custom_Error); + IMPL_MEM_OBJ(Variable); + IMPL_MEM_OBJ(Number); + IMPL_MEM_OBJ(Color); + IMPL_MEM_OBJ(Boolean); + IMPL_MEM_OBJ(String_Schema); + IMPL_MEM_OBJ(String); + IMPL_MEM_OBJ(String_Constant); + IMPL_MEM_OBJ(String_Quoted); + IMPL_MEM_OBJ(Media_Query); + IMPL_MEM_OBJ(Media_Query_Expression); + IMPL_MEM_OBJ(Supports_Condition); + IMPL_MEM_OBJ(Supports_Operator); + IMPL_MEM_OBJ(Supports_Negation); + IMPL_MEM_OBJ(Supports_Declaration); + IMPL_MEM_OBJ(Supports_Interpolation); + IMPL_MEM_OBJ(At_Root_Query); + IMPL_MEM_OBJ(Null); + IMPL_MEM_OBJ(Parent_Selector); + IMPL_MEM_OBJ(Parameter); + IMPL_MEM_OBJ(Parameters); + IMPL_MEM_OBJ(Argument); + IMPL_MEM_OBJ(Arguments); + IMPL_MEM_OBJ(Selector); + IMPL_MEM_OBJ(Selector_Schema); + IMPL_MEM_OBJ(Simple_Selector); + IMPL_MEM_OBJ(Placeholder_Selector); + IMPL_MEM_OBJ(Element_Selector); + IMPL_MEM_OBJ(Class_Selector); + IMPL_MEM_OBJ(Id_Selector); + IMPL_MEM_OBJ(Attribute_Selector); + IMPL_MEM_OBJ(Pseudo_Selector); + IMPL_MEM_OBJ(Wrapped_Selector); + IMPL_MEM_OBJ(Compound_Selector); + IMPL_MEM_OBJ(Complex_Selector); + IMPL_MEM_OBJ(Selector_List); + + // ########################################################################### + // Implement compare, order and hashing operations for AST Nodes + // ########################################################################### + + struct HashNodes { + template + size_t operator() (const T& ex) const { + return ex.isNull() ? 0 : ex->hash(); + } + }; + struct OrderNodes { + template + bool operator() (const T& lhs, const T& rhs) const { + return !lhs.isNull() && !rhs.isNull() && *lhs < *rhs; + } + }; + struct CompareNodes { + template + bool operator() (const T& lhs, const T& rhs) const { + // code around sass logic issue. 1px == 1 is true + // but both items are still different keys in maps + if (dynamic_cast(lhs.ptr())) + if (dynamic_cast(rhs.ptr())) + return lhs->hash() == rhs->hash(); + return !lhs.isNull() && !rhs.isNull() && *lhs == *rhs; + } + }; + + // ########################################################################### + // some often used typedefs + // ########################################################################### + + typedef std::unordered_map< + Expression_Obj, // key + Expression_Obj, // value + HashNodes, // hasher + CompareNodes // compare + > ExpressionMap; + typedef std::unordered_set< + Expression_Obj, // value + HashNodes, // hasher + CompareNodes // compare + > ExpressionSet; + + typedef std::string SubSetMapKey; + typedef std::vector SubSetMapKeys; + + typedef std::pair SubSetMapPair; + typedef std::pair SubSetMapLookup; + typedef std::vector SubSetMapPairs; + typedef std::vector SubSetMapLookups; + + typedef std::pair SubSetMapResult; + typedef std::vector SubSetMapResults; + + typedef std::deque ComplexSelectorDeque; + typedef std::set SimpleSelectorSet; + typedef std::set ComplexSelectorSet; + typedef std::set CompoundSelectorSet; + typedef std::unordered_set SimpleSelectorDict; + + typedef std::vector* ImporterStack; + + // only to switch implementations for testing + #define environment_map std::map + + // ########################################################################### + // explicit type conversion functions + // ########################################################################### + + template + T* Cast(AST_Node* ptr); + + template + const T* Cast(const AST_Node* ptr); + + // sometimes you know the class you want to cast to is final + // in this case a simple typeid check is faster and safe to use + + #define DECLARE_BASE_CAST(T) \ + template<> T* Cast(AST_Node* ptr); \ + template<> const T* Cast(const AST_Node* ptr); \ + + // ########################################################################### + // implement specialization for final classes + // ########################################################################### + + DECLARE_BASE_CAST(AST_Node) + DECLARE_BASE_CAST(Expression) + DECLARE_BASE_CAST(Statement) + DECLARE_BASE_CAST(Has_Block) + DECLARE_BASE_CAST(PreValue) + DECLARE_BASE_CAST(Value) + DECLARE_BASE_CAST(List) + DECLARE_BASE_CAST(String) + DECLARE_BASE_CAST(String_Constant) + DECLARE_BASE_CAST(Supports_Condition) + DECLARE_BASE_CAST(Selector) + DECLARE_BASE_CAST(Simple_Selector) + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/b64/cencode.h b/mybulma/node_modules/node-sass/src/libsass/src/b64/cencode.h new file mode 100644 index 0000000..1d71e83 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/b64/cencode.h @@ -0,0 +1,32 @@ +/* +cencode.h - c header for a base64 encoding algorithm + +This is part of the libb64 project, and has been placed in the public domain. +For details, see http://sourceforge.net/projects/libb64 +*/ + +#ifndef BASE64_CENCODE_H +#define BASE64_CENCODE_H + +typedef enum +{ + step_A, step_B, step_C +} base64_encodestep; + +typedef struct +{ + base64_encodestep step; + char result; + int stepcount; +} base64_encodestate; + +void base64_init_encodestate(base64_encodestate* state_in); + +char base64_encode_value(char value_in); + +int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in); + +int base64_encode_blockend(char* code_out, base64_encodestate* state_in); + +#endif /* BASE64_CENCODE_H */ + diff --git a/mybulma/node_modules/node-sass/src/libsass/src/b64/encode.h b/mybulma/node_modules/node-sass/src/libsass/src/b64/encode.h new file mode 100644 index 0000000..92df8ec --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/b64/encode.h @@ -0,0 +1,79 @@ +// :mode=c++: +/* +encode.h - c++ wrapper for a base64 encoding algorithm + +This is part of the libb64 project, and has been placed in the public domain. +For details, see http://sourceforge.net/projects/libb64 +*/ +#ifndef BASE64_ENCODE_H +#define BASE64_ENCODE_H + +#include + +namespace base64 +{ + extern "C" + { + #include "cencode.h" + } + + struct encoder + { + base64_encodestate _state; + int _buffersize; + + encoder(int buffersize_in = BUFFERSIZE) + : _buffersize(buffersize_in) + { + base64_init_encodestate(&_state); + } + + int encode(char value_in) + { + return base64_encode_value(value_in); + } + + int encode(const char* code_in, const int length_in, char* plaintext_out) + { + return base64_encode_block(code_in, length_in, plaintext_out, &_state); + } + + int encode_end(char* plaintext_out) + { + return base64_encode_blockend(plaintext_out, &_state); + } + + void encode(std::istream& istream_in, std::ostream& ostream_in) + { + base64_init_encodestate(&_state); + // + const int N = _buffersize; + char* plaintext = new char[N]; + char* code = new char[2*N]; + int plainlength; + int codelength; + + do + { + istream_in.read(plaintext, N); + plainlength = static_cast(istream_in.gcount()); + // + codelength = encode(plaintext, plainlength, code); + ostream_in.write(code, codelength); + } + while (istream_in.good() && plainlength > 0); + + codelength = encode_end(code); + ostream_in.write(code, codelength); + // + base64_init_encodestate(&_state); + + delete [] code; + delete [] plaintext; + } + }; + +} // namespace base64 + +#endif // BASE64_ENCODE_H + diff --git a/mybulma/node_modules/node-sass/src/libsass/src/backtrace.cpp b/mybulma/node_modules/node-sass/src/libsass/src/backtrace.cpp new file mode 100644 index 0000000..8da963a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/backtrace.cpp @@ -0,0 +1,46 @@ +#include "backtrace.hpp" + +namespace Sass { + + const std::string traces_to_string(Backtraces traces, std::string indent) { + + std::stringstream ss; + std::string cwd(File::get_cwd()); + + bool first = true; + size_t i_beg = traces.size() - 1; + size_t i_end = std::string::npos; + for (size_t i = i_beg; i != i_end; i --) { + + const Backtrace& trace = traces[i]; + + // make path relative to the current directory + std::string rel_path(File::abs2rel(trace.pstate.path, cwd, cwd)); + + // skip functions on error cases (unsure why ruby sass does this) + // if (trace.caller.substr(0, 6) == ", in f") continue; + + if (first) { + ss << indent; + ss << "on line "; + ss << trace.pstate.line + 1; + ss << " of " << rel_path; + // ss << trace.caller; + first = false; + } else { + ss << trace.caller; + ss << std::endl; + ss << indent; + ss << "from line "; + ss << trace.pstate.line + 1; + ss << " of " << rel_path; + } + + } + + ss << std::endl; + return ss.str(); + + } + +}; diff --git a/mybulma/node_modules/node-sass/src/libsass/src/backtrace.hpp b/mybulma/node_modules/node-sass/src/libsass/src/backtrace.hpp new file mode 100644 index 0000000..72d5fe5 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/backtrace.hpp @@ -0,0 +1,29 @@ +#ifndef SASS_BACKTRACE_H +#define SASS_BACKTRACE_H + +#include +#include +#include "file.hpp" +#include "position.hpp" + +namespace Sass { + + struct Backtrace { + + ParserState pstate; + std::string caller; + + Backtrace(ParserState pstate, std::string c = "") + : pstate(pstate), + caller(c) + { } + + }; + + typedef std::vector Backtraces; + + const std::string traces_to_string(Backtraces traces, std::string indent = "\t"); + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/base64vlq.cpp b/mybulma/node_modules/node-sass/src/libsass/src/base64vlq.cpp new file mode 100644 index 0000000..be2fb49 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/base64vlq.cpp @@ -0,0 +1,44 @@ +#include "sass.hpp" +#include "base64vlq.hpp" + +namespace Sass { + + std::string Base64VLQ::encode(const int number) const + { + std::string encoded = ""; + + int vlq = to_vlq_signed(number); + + do { + int digit = vlq & VLQ_BASE_MASK; + vlq >>= VLQ_BASE_SHIFT; + if (vlq > 0) { + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64_encode(digit); + } while (vlq > 0); + + return encoded; + } + + char Base64VLQ::base64_encode(const int number) const + { + int index = number; + if (index < 0) index = 0; + if (index > 63) index = 63; + return CHARACTERS[index]; + } + + int Base64VLQ::to_vlq_signed(const int number) const + { + return (number < 0) ? ((-number) << 1) + 1 : (number << 1) + 0; + } + + const char* Base64VLQ::CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + const int Base64VLQ::VLQ_BASE_SHIFT = 5; + const int Base64VLQ::VLQ_BASE = 1 << VLQ_BASE_SHIFT; + const int Base64VLQ::VLQ_BASE_MASK = VLQ_BASE - 1; + const int Base64VLQ::VLQ_CONTINUATION_BIT = VLQ_BASE; + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/base64vlq.hpp b/mybulma/node_modules/node-sass/src/libsass/src/base64vlq.hpp new file mode 100644 index 0000000..aca315a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/base64vlq.hpp @@ -0,0 +1,30 @@ +#ifndef SASS_BASE64VLQ_H +#define SASS_BASE64VLQ_H + +#include + +namespace Sass { + + class Base64VLQ { + + public: + + std::string encode(const int number) const; + + private: + + char base64_encode(const int number) const; + + int to_vlq_signed(const int number) const; + + static const char* CHARACTERS; + + static const int VLQ_BASE_SHIFT; + static const int VLQ_BASE; + static const int VLQ_BASE_MASK; + static const int VLQ_CONTINUATION_BIT; + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/bind.cpp b/mybulma/node_modules/node-sass/src/libsass/src/bind.cpp new file mode 100644 index 0000000..ec20ac8 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/bind.cpp @@ -0,0 +1,311 @@ +#include "sass.hpp" +#include "bind.hpp" +#include "ast.hpp" +#include "context.hpp" +#include "expand.hpp" +#include "eval.hpp" +#include +#include +#include + +namespace Sass { + + void bind(std::string type, std::string name, Parameters_Obj ps, Arguments_Obj as, Context* ctx, Env* env, Eval* eval) + { + std::string callee(type + " " + name); + + std::map param_map; + List_Obj varargs = SASS_MEMORY_NEW(List, as->pstate()); + varargs->is_arglist(true); // enable keyword size handling + + for (size_t i = 0, L = as->length(); i < L; ++i) { + if (auto str = Cast((*as)[i]->value())) { + // force optional quotes (only if needed) + if (str->quote_mark()) { + str->quote_mark('*'); + } + } + } + + // Set up a map to ensure named arguments refer to actual parameters. Also + // eval each default value left-to-right, wrt env, populating env as we go. + for (size_t i = 0, L = ps->length(); i < L; ++i) { + Parameter_Obj p = ps->at(i); + param_map[p->name()] = p; + // if (p->default_value()) { + // env->local_frame()[p->name()] = p->default_value()->perform(eval->with(env)); + // } + } + + // plug in all args; if we have leftover params, deal with it later + size_t ip = 0, LP = ps->length(); + size_t ia = 0, LA = as->length(); + while (ia < LA) { + Argument_Obj a = as->at(ia); + if (ip >= LP) { + // skip empty rest arguments + if (a->is_rest_argument()) { + if (List_Obj l = Cast(a->value())) { + if (l->length() == 0) { + ++ ia; continue; + } + } + } + std::stringstream msg; + msg << "wrong number of arguments (" << LA << " for " << LP << ")"; + msg << " for `" << name << "'"; + return error(msg.str(), as->pstate(), eval->exp.traces); + } + Parameter_Obj p = ps->at(ip); + + // If the current parameter is the rest parameter, process and break the loop + if (p->is_rest_parameter()) { + // The next argument by coincidence provides a rest argument + if (a->is_rest_argument()) { + + // We should always get a list for rest arguments + if (List_Obj rest = Cast(a->value())) { + // create a new list object for wrapped items + List_Ptr arglist = SASS_MEMORY_NEW(List, + p->pstate(), + 0, + rest->separator(), + true); + // wrap each item from list as an argument + for (Expression_Obj item : rest->elements()) { + if (Argument_Obj arg = Cast(item)) { + arglist->append(SASS_MEMORY_COPY(arg)); // copy + } else { + arglist->append(SASS_MEMORY_NEW(Argument, + item->pstate(), + item, + "", + false, + false)); + } + } + // assign new arglist to environment + env->local_frame()[p->name()] = arglist; + } + // invalid state + else { + throw std::runtime_error("invalid state"); + } + } else if (a->is_keyword_argument()) { + + // expand keyword arguments into their parameters + List_Ptr arglist = SASS_MEMORY_NEW(List, p->pstate(), 0, SASS_COMMA, true); + env->local_frame()[p->name()] = arglist; + Map_Obj argmap = Cast(a->value()); + for (auto key : argmap->keys()) { + if (String_Constant_Obj str = Cast(key)) { + std::string param = unquote(str->value()); + arglist->append(SASS_MEMORY_NEW(Argument, + key->pstate(), + argmap->at(key), + "$" + param, + false, + false)); + } else { + eval->exp.traces.push_back(Backtrace(key->pstate())); + throw Exception::InvalidVarKwdType(key->pstate(), eval->exp.traces, key->inspect(), a); + } + } + + } else { + + // create a new list object for wrapped items + List_Obj arglist = SASS_MEMORY_NEW(List, + p->pstate(), + 0, + SASS_COMMA, + true); + // consume the next args + while (ia < LA) { + // get and post inc + a = (*as)[ia++]; + // maybe we have another list as argument + List_Obj ls = Cast(a->value()); + // skip any list completely if empty + if (ls && ls->empty() && a->is_rest_argument()) continue; + + Expression_Obj value = a->value(); + if (Argument_Obj arg = Cast(value)) { + arglist->append(arg); + } + // check if we have rest argument + else if (a->is_rest_argument()) { + // preserve the list separator from rest args + if (List_Obj rest = Cast(a->value())) { + arglist->separator(rest->separator()); + + for (size_t i = 0, L = rest->length(); i < L; ++i) { + Expression_Obj obj = rest->value_at_index(i); + arglist->append(SASS_MEMORY_NEW(Argument, + obj->pstate(), + obj, + "", + false, + false)); + } + } + // no more arguments + break; + } + // wrap all other value types into Argument + else { + arglist->append(SASS_MEMORY_NEW(Argument, + a->pstate(), + a->value(), + a->name(), + false, + false)); + } + } + // assign new arglist to environment + env->local_frame()[p->name()] = arglist; + } + // consumed parameter + ++ip; + // no more paramaters + break; + } + + // If the current argument is the rest argument, extract a value for processing + else if (a->is_rest_argument()) { + // normal param and rest arg + List_Obj arglist = Cast(a->value()); + if (!arglist) { + if (Expression_Obj arg = Cast(a->value())) { + arglist = SASS_MEMORY_NEW(List, a->pstate(), 1); + arglist->append(arg); + } + } + + // empty rest arg - treat all args as default values + if (!arglist || !arglist->length()) { + break; + } else { + if (arglist->length() > LP - ip && !ps->has_rest_parameter()) { + size_t arg_count = (arglist->length() + LA - 1); + std::stringstream msg; + msg << callee << " takes " << LP; + msg << (LP == 1 ? " argument" : " arguments"); + msg << " but " << arg_count; + msg << (arg_count == 1 ? " was passed" : " were passed."); + deprecated_bind(msg.str(), as->pstate()); + + while (arglist->length() > LP - ip) { + arglist->elements().erase(arglist->elements().end() - 1); + } + } + } + // otherwise move one of the rest args into the param, converting to argument if necessary + Expression_Obj obj = arglist->at(0); + if (!(a = Cast(obj))) { + Expression_Ptr a_to_convert = obj; + a = SASS_MEMORY_NEW(Argument, + a_to_convert->pstate(), + a_to_convert, + "", + false, + false); + } + arglist->elements().erase(arglist->elements().begin()); + if (!arglist->length() || (!arglist->is_arglist() && ip + 1 == LP)) { + ++ia; + } + + } else if (a->is_keyword_argument()) { + Map_Obj argmap = Cast(a->value()); + + for (auto key : argmap->keys()) { + String_Constant_Ptr val = Cast(key); + if (val == NULL) { + eval->exp.traces.push_back(Backtrace(key->pstate())); + throw Exception::InvalidVarKwdType(key->pstate(), eval->exp.traces, key->inspect(), a); + } + std::string param = "$" + unquote(val->value()); + + if (!param_map.count(param)) { + std::stringstream msg; + msg << callee << " has no parameter named " << param; + error(msg.str(), a->pstate(), eval->exp.traces); + } + env->local_frame()[param] = argmap->at(key); + } + ++ia; + continue; + } else { + ++ia; + } + + if (a->name().empty()) { + if (env->has_local(p->name())) { + std::stringstream msg; + msg << "parameter " << p->name() + << " provided more than once in call to " << callee; + error(msg.str(), a->pstate(), eval->exp.traces); + } + // ordinal arg -- bind it to the next param + env->local_frame()[p->name()] = a->value(); + ++ip; + } + else { + // named arg -- bind it to the appropriately named param + if (!param_map.count(a->name())) { + if (ps->has_rest_parameter()) { + varargs->append(a); + } else { + std::stringstream msg; + msg << callee << " has no parameter named " << a->name(); + error(msg.str(), a->pstate(), eval->exp.traces); + } + } + if (param_map[a->name()]) { + if (param_map[a->name()]->is_rest_parameter()) { + std::stringstream msg; + msg << "argument " << a->name() << " of " << callee + << "cannot be used as named argument"; + error(msg.str(), a->pstate(), eval->exp.traces); + } + } + if (env->has_local(a->name())) { + std::stringstream msg; + msg << "parameter " << p->name() + << "provided more than once in call to " << callee; + error(msg.str(), a->pstate(), eval->exp.traces); + } + env->local_frame()[a->name()] = a->value(); + } + } + // EO while ia + + // If we make it here, we're out of args but may have leftover params. + // That's only okay if they have default values, or were already bound by + // named arguments, or if it's a single rest-param. + for (size_t i = ip; i < LP; ++i) { + Parameter_Obj leftover = ps->at(i); + // cerr << "env for default params:" << endl; + // env->print(); + // cerr << "********" << endl; + if (!env->has_local(leftover->name())) { + if (leftover->is_rest_parameter()) { + env->local_frame()[leftover->name()] = varargs; + } + else if (leftover->default_value()) { + Expression_Ptr dv = leftover->default_value()->perform(eval); + env->local_frame()[leftover->name()] = dv; + } + else { + // param is unbound and has no default value -- error + throw Exception::MissingArgument(as->pstate(), eval->exp.traces, name, leftover->name(), type); + } + } + } + + return; + } + + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/bind.hpp b/mybulma/node_modules/node-sass/src/libsass/src/bind.hpp new file mode 100644 index 0000000..93a503a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/bind.hpp @@ -0,0 +1,13 @@ +#ifndef SASS_BIND_H +#define SASS_BIND_H + +#include +#include "environment.hpp" +#include "ast_fwd_decl.hpp" + +namespace Sass { + + void bind(std::string type, std::string name, Parameters_Obj, Arguments_Obj, Context*, Env*, Eval*); +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/c99func.c b/mybulma/node_modules/node-sass/src/libsass/src/c99func.c new file mode 100644 index 0000000..f846eee --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/c99func.c @@ -0,0 +1,54 @@ +/* + Copyright (C) 2011 Joseph A. Adams (joeyadams3.14159@gmail.com) + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#if defined(_MSC_VER) && _MSC_VER < 1900 + +#include +#include +#include + +static int c99_vsnprintf(char* str, size_t size, const char* format, va_list ap) +{ + int count = -1; + + if (size != 0) + count = _vsnprintf_s(str, size, _TRUNCATE, format, ap); + if (count == -1) + count = _vscprintf(format, ap); + + return count; +} + +int snprintf(char* str, size_t size, const char* format, ...) +{ + int count; + va_list ap; + + va_start(ap, format); + count = c99_vsnprintf(str, size, format, ap); + va_end(ap); + + return count; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/cencode.c b/mybulma/node_modules/node-sass/src/libsass/src/cencode.c new file mode 100644 index 0000000..9109f4b --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/cencode.c @@ -0,0 +1,108 @@ +/* +cencoder.c - c source to a base64 encoding algorithm implementation + +This is part of the libb64 project, and has been placed in the public domain. +For details, see http://sourceforge.net/projects/libb64 +*/ + +#include "b64/cencode.h" + +void base64_init_encodestate(base64_encodestate* state_in) +{ + state_in->step = step_A; + state_in->result = 0; + state_in->stepcount = 0; +} + +char base64_encode_value(char value_in) +{ + static const char* encoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + if (value_in > 63) return '='; + return encoding[(int)value_in]; +} + +int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in) +{ + const char* plainchar = plaintext_in; + const char* const plaintextend = plaintext_in + length_in; + char* codechar = code_out; + char result; + char fragment; + + result = state_in->result; + + switch (state_in->step) + { + while (1) + { + case step_A: + if (plainchar == plaintextend) + { + state_in->result = result; + state_in->step = step_A; + return (int)(codechar - code_out); + } + fragment = *plainchar++; + result = (fragment & 0x0fc) >> 2; + *codechar++ = base64_encode_value(result); + result = (fragment & 0x003) << 4; + #ifndef _MSC_VER + /* fall through */ + #endif + case step_B: + if (plainchar == plaintextend) + { + state_in->result = result; + state_in->step = step_B; + return (int)(codechar - code_out); + } + fragment = *plainchar++; + result |= (fragment & 0x0f0) >> 4; + *codechar++ = base64_encode_value(result); + result = (fragment & 0x00f) << 2; + #ifndef _MSC_VER + /* fall through */ + #endif + case step_C: + if (plainchar == plaintextend) + { + state_in->result = result; + state_in->step = step_C; + return (int)(codechar - code_out); + } + fragment = *plainchar++; + result |= (fragment & 0x0c0) >> 6; + *codechar++ = base64_encode_value(result); + result = (fragment & 0x03f) >> 0; + *codechar++ = base64_encode_value(result); + + ++(state_in->stepcount); + } + } + /* control should not reach here */ + return (int)(codechar - code_out); +} + +int base64_encode_blockend(char* code_out, base64_encodestate* state_in) +{ + char* codechar = code_out; + + switch (state_in->step) + { + case step_B: + *codechar++ = base64_encode_value(state_in->result); + *codechar++ = '='; + *codechar++ = '='; + break; + case step_C: + *codechar++ = base64_encode_value(state_in->result); + *codechar++ = '='; + break; + case step_A: + break; + } + *codechar++ = '\n'; + + return (int)(codechar - code_out); +} + diff --git a/mybulma/node_modules/node-sass/src/libsass/src/check_nesting.cpp b/mybulma/node_modules/node-sass/src/libsass/src/check_nesting.cpp new file mode 100644 index 0000000..880bcca --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/check_nesting.cpp @@ -0,0 +1,398 @@ +#include "sass.hpp" +#include + +#include "check_nesting.hpp" + +namespace Sass { + + CheckNesting::CheckNesting() + : parents(std::vector()), + traces(std::vector()), + parent(0), current_mixin_definition(0) + { } + + void error(AST_Node_Ptr node, Backtraces traces, std::string msg) { + traces.push_back(Backtrace(node->pstate())); + throw Exception::InvalidSass(node->pstate(), traces, msg); + } + + Statement_Ptr CheckNesting::visit_children(Statement_Ptr parent) + { + Statement_Ptr old_parent = this->parent; + + if (At_Root_Block_Ptr root = Cast(parent)) { + std::vector old_parents = this->parents; + std::vector new_parents; + + for (size_t i = 0, L = this->parents.size(); i < L; i++) { + Statement_Ptr p = this->parents.at(i); + if (!root->exclude_node(p)) { + new_parents.push_back(p); + } + } + this->parents = new_parents; + + for (size_t i = this->parents.size(); i > 0; i--) { + Statement_Ptr p = 0; + Statement_Ptr gp = 0; + if (i > 0) p = this->parents.at(i - 1); + if (i > 1) gp = this->parents.at(i - 2); + + if (!this->is_transparent_parent(p, gp)) { + this->parent = p; + break; + } + } + + At_Root_Block_Ptr ar = Cast(parent); + Block_Ptr ret = ar->block(); + + if (ret != NULL) { + for (auto n : ret->elements()) { + n->perform(this); + } + } + + this->parent = old_parent; + this->parents = old_parents; + + return ret; + } + + if (!this->is_transparent_parent(parent, old_parent)) { + this->parent = parent; + } + + this->parents.push_back(parent); + + Block_Ptr b = Cast(parent); + + if (Trace_Ptr trace = Cast(parent)) { + if (trace->type() == 'i') { + this->traces.push_back(Backtrace(trace->pstate())); + } + } + + if (!b) { + if (Has_Block_Ptr bb = Cast(parent)) { + b = bb->block(); + } + } + + if (b) { + for (auto n : b->elements()) { + n->perform(this); + } + } + + this->parent = old_parent; + this->parents.pop_back(); + + if (Trace_Ptr trace = Cast(parent)) { + if (trace->type() == 'i') { + this->traces.pop_back(); + } + } + + return b; + } + + + Statement_Ptr CheckNesting::operator()(Block_Ptr b) + { + return this->visit_children(b); + } + + Statement_Ptr CheckNesting::operator()(Definition_Ptr n) + { + if (!this->should_visit(n)) return NULL; + if (!is_mixin(n)) { + visit_children(n); + return n; + } + + Definition_Ptr old_mixin_definition = this->current_mixin_definition; + this->current_mixin_definition = n; + + visit_children(n); + + this->current_mixin_definition = old_mixin_definition; + + return n; + } + + Statement_Ptr CheckNesting::operator()(If_Ptr i) + { + this->visit_children(i); + + if (Block_Ptr b = Cast(i->alternative())) { + for (auto n : b->elements()) n->perform(this); + } + + return i; + } + + Statement_Ptr CheckNesting::fallback_impl(Statement_Ptr s) + { + Block_Ptr b1 = Cast(s); + Has_Block_Ptr b2 = Cast(s); + return b1 || b2 ? visit_children(s) : s; + } + + bool CheckNesting::should_visit(Statement_Ptr node) + { + if (!this->parent) return true; + + if (Cast(node)) + { this->invalid_content_parent(this->parent, node); } + + if (is_charset(node)) + { this->invalid_charset_parent(this->parent, node); } + + if (Cast(node)) + { this->invalid_extend_parent(this->parent, node); } + + // if (Cast(node)) + // { this->invalid_import_parent(this->parent); } + + if (this->is_mixin(node)) + { this->invalid_mixin_definition_parent(this->parent, node); } + + if (this->is_function(node)) + { this->invalid_function_parent(this->parent, node); } + + if (this->is_function(this->parent)) + { this->invalid_function_child(node); } + + if (Declaration_Ptr d = Cast(node)) + { + this->invalid_prop_parent(this->parent, node); + this->invalid_value_child(d->value()); + } + + if (Cast(this->parent)) + { this->invalid_prop_child(node); } + + if (Cast(node)) + { this->invalid_return_parent(this->parent, node); } + + return true; + } + + void CheckNesting::invalid_content_parent(Statement_Ptr parent, AST_Node_Ptr node) + { + if (!this->current_mixin_definition) { + error(node, traces, "@content may only be used within a mixin."); + } + } + + void CheckNesting::invalid_charset_parent(Statement_Ptr parent, AST_Node_Ptr node) + { + if (!( + is_root_node(parent) + )) { + error(node, traces, "@charset may only be used at the root of a document."); + } + } + + void CheckNesting::invalid_extend_parent(Statement_Ptr parent, AST_Node_Ptr node) + { + if (!( + Cast(parent) || + Cast(parent) || + is_mixin(parent) + )) { + error(node, traces, "Extend directives may only be used within rules."); + } + } + + // void CheckNesting::invalid_import_parent(Statement_Ptr parent, AST_Node_Ptr node) + // { + // for (auto pp : this->parents) { + // if ( + // Cast(pp) || + // Cast(pp) || + // Cast(pp) || + // Cast(pp) || + // Cast(pp) || + // Cast(pp) || + // is_mixin(pp) + // ) { + // error(node, traces, "Import directives may not be defined within control directives or other mixins."); + // } + // } + + // if (this->is_root_node(parent)) { + // return; + // } + + // if (false/*n.css_import?*/) { + // error(node, traces, "CSS import directives may only be used at the root of a document."); + // } + // } + + void CheckNesting::invalid_mixin_definition_parent(Statement_Ptr parent, AST_Node_Ptr node) + { + for (Statement_Ptr pp : this->parents) { + if ( + Cast(pp) || + Cast(pp) || + Cast(pp) || + Cast(pp) || + Cast(pp) || + Cast(pp) || + is_mixin(pp) + ) { + error(node, traces, "Mixins may not be defined within control directives or other mixins."); + } + } + } + + void CheckNesting::invalid_function_parent(Statement_Ptr parent, AST_Node_Ptr node) + { + for (Statement_Ptr pp : this->parents) { + if ( + Cast(pp) || + Cast(pp) || + Cast(pp) || + Cast(pp) || + Cast(pp) || + Cast(pp) || + is_mixin(pp) + ) { + error(node, traces, "Functions may not be defined within control directives or other mixins."); + } + } + } + + void CheckNesting::invalid_function_child(Statement_Ptr child) + { + if (!( + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + // Ruby Sass doesn't distinguish variables and assignments + Cast(child) || + Cast(child) || + Cast(child) + )) { + error(child, traces, "Functions can only contain variable declarations and control directives."); + } + } + + void CheckNesting::invalid_prop_child(Statement_Ptr child) + { + if (!( + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) || + Cast(child) + )) { + error(child, traces, "Illegal nesting: Only properties may be nested beneath properties."); + } + } + + void CheckNesting::invalid_prop_parent(Statement_Ptr parent, AST_Node_Ptr node) + { + if (!( + is_mixin(parent) || + is_directive_node(parent) || + Cast(parent) || + Cast(parent) || + Cast(parent) || + Cast(parent) + )) { + error(node, traces, "Properties are only allowed within rules, directives, mixin includes, or other properties."); + } + } + + void CheckNesting::invalid_value_child(AST_Node_Ptr d) + { + if (Map_Ptr m = Cast(d)) { + traces.push_back(Backtrace(m->pstate())); + throw Exception::InvalidValue(traces, *m); + } + if (Number_Ptr n = Cast(d)) { + if (!n->is_valid_css_unit()) { + traces.push_back(Backtrace(n->pstate())); + throw Exception::InvalidValue(traces, *n); + } + } + + // error(dbg + " isn't a valid CSS value.", m->pstate(),); + + } + + void CheckNesting::invalid_return_parent(Statement_Ptr parent, AST_Node_Ptr node) + { + if (!this->is_function(parent)) { + error(node, traces, "@return may only be used within a function."); + } + } + + bool CheckNesting::is_transparent_parent(Statement_Ptr parent, Statement_Ptr grandparent) + { + bool parent_bubbles = parent && parent->bubbles(); + + bool valid_bubble_node = parent_bubbles && + !is_root_node(grandparent) && + !is_at_root_node(grandparent); + + return Cast(parent) || + Cast(parent) || + Cast(parent) || + Cast(parent) || + Cast(parent) || + Cast(parent) || + valid_bubble_node; + } + + bool CheckNesting::is_charset(Statement_Ptr n) + { + Directive_Ptr d = Cast(n); + return d && d->keyword() == "charset"; + } + + bool CheckNesting::is_mixin(Statement_Ptr n) + { + Definition_Ptr def = Cast(n); + return def && def->type() == Definition::MIXIN; + } + + bool CheckNesting::is_function(Statement_Ptr n) + { + Definition_Ptr def = Cast(n); + return def && def->type() == Definition::FUNCTION; + } + + bool CheckNesting::is_root_node(Statement_Ptr n) + { + if (Cast(n)) return false; + + Block_Ptr b = Cast(n); + return b && b->is_root(); + } + + bool CheckNesting::is_at_root_node(Statement_Ptr n) + { + return Cast(n) != NULL; + } + + bool CheckNesting::is_directive_node(Statement_Ptr n) + { + return Cast(n) || + Cast(n) || + Cast(n) || + Cast(n); + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/check_nesting.hpp b/mybulma/node_modules/node-sass/src/libsass/src/check_nesting.hpp new file mode 100644 index 0000000..62c38d9 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/check_nesting.hpp @@ -0,0 +1,65 @@ +#ifndef SASS_CHECK_NESTING_H +#define SASS_CHECK_NESTING_H + +#include "ast.hpp" +#include "operation.hpp" + +namespace Sass { + + class CheckNesting : public Operation_CRTP { + + std::vector parents; + Backtraces traces; + Statement_Ptr parent; + Definition_Ptr current_mixin_definition; + + Statement_Ptr fallback_impl(Statement_Ptr); + Statement_Ptr before(Statement_Ptr); + Statement_Ptr visit_children(Statement_Ptr); + + public: + CheckNesting(); + ~CheckNesting() { } + + Statement_Ptr operator()(Block_Ptr); + Statement_Ptr operator()(Definition_Ptr); + Statement_Ptr operator()(If_Ptr); + + template + Statement_Ptr fallback(U x) { + Statement_Ptr n = Cast(x); + if (this->should_visit(n)) { + return fallback_impl(n); + } + return NULL; + } + + private: + void invalid_content_parent(Statement_Ptr, AST_Node_Ptr); + void invalid_charset_parent(Statement_Ptr, AST_Node_Ptr); + void invalid_extend_parent(Statement_Ptr, AST_Node_Ptr); + // void invalid_import_parent(Statement_Ptr); + void invalid_mixin_definition_parent(Statement_Ptr, AST_Node_Ptr); + void invalid_function_parent(Statement_Ptr, AST_Node_Ptr); + + void invalid_function_child(Statement_Ptr); + void invalid_prop_child(Statement_Ptr); + void invalid_prop_parent(Statement_Ptr, AST_Node_Ptr); + void invalid_return_parent(Statement_Ptr, AST_Node_Ptr); + void invalid_value_child(AST_Node_Ptr); + + bool is_transparent_parent(Statement_Ptr, Statement_Ptr); + + bool should_visit(Statement_Ptr); + + bool is_charset(Statement_Ptr); + bool is_mixin(Statement_Ptr); + bool is_function(Statement_Ptr); + bool is_root_node(Statement_Ptr); + bool is_at_root_node(Statement_Ptr); + bool is_directive_node(Statement_Ptr); + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/color_maps.cpp b/mybulma/node_modules/node-sass/src/libsass/src/color_maps.cpp new file mode 100644 index 0000000..129e47c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/color_maps.cpp @@ -0,0 +1,648 @@ +#include "sass.hpp" +#include "ast.hpp" +#include "color_maps.hpp" + +namespace Sass { + + namespace ColorNames + { + const char aliceblue [] = "aliceblue"; + const char antiquewhite [] = "antiquewhite"; + const char cyan [] = "cyan"; + const char aqua [] = "aqua"; + const char aquamarine [] = "aquamarine"; + const char azure [] = "azure"; + const char beige [] = "beige"; + const char bisque [] = "bisque"; + const char black [] = "black"; + const char blanchedalmond [] = "blanchedalmond"; + const char blue [] = "blue"; + const char blueviolet [] = "blueviolet"; + const char brown [] = "brown"; + const char burlywood [] = "burlywood"; + const char cadetblue [] = "cadetblue"; + const char chartreuse [] = "chartreuse"; + const char chocolate [] = "chocolate"; + const char coral [] = "coral"; + const char cornflowerblue [] = "cornflowerblue"; + const char cornsilk [] = "cornsilk"; + const char crimson [] = "crimson"; + const char darkblue [] = "darkblue"; + const char darkcyan [] = "darkcyan"; + const char darkgoldenrod [] = "darkgoldenrod"; + const char darkgray [] = "darkgray"; + const char darkgrey [] = "darkgrey"; + const char darkgreen [] = "darkgreen"; + const char darkkhaki [] = "darkkhaki"; + const char darkmagenta [] = "darkmagenta"; + const char darkolivegreen [] = "darkolivegreen"; + const char darkorange [] = "darkorange"; + const char darkorchid [] = "darkorchid"; + const char darkred [] = "darkred"; + const char darksalmon [] = "darksalmon"; + const char darkseagreen [] = "darkseagreen"; + const char darkslateblue [] = "darkslateblue"; + const char darkslategray [] = "darkslategray"; + const char darkslategrey [] = "darkslategrey"; + const char darkturquoise [] = "darkturquoise"; + const char darkviolet [] = "darkviolet"; + const char deeppink [] = "deeppink"; + const char deepskyblue [] = "deepskyblue"; + const char dimgray [] = "dimgray"; + const char dimgrey [] = "dimgrey"; + const char dodgerblue [] = "dodgerblue"; + const char firebrick [] = "firebrick"; + const char floralwhite [] = "floralwhite"; + const char forestgreen [] = "forestgreen"; + const char magenta [] = "magenta"; + const char fuchsia [] = "fuchsia"; + const char gainsboro [] = "gainsboro"; + const char ghostwhite [] = "ghostwhite"; + const char gold [] = "gold"; + const char goldenrod [] = "goldenrod"; + const char gray [] = "gray"; + const char grey [] = "grey"; + const char green [] = "green"; + const char greenyellow [] = "greenyellow"; + const char honeydew [] = "honeydew"; + const char hotpink [] = "hotpink"; + const char indianred [] = "indianred"; + const char indigo [] = "indigo"; + const char ivory [] = "ivory"; + const char khaki [] = "khaki"; + const char lavender [] = "lavender"; + const char lavenderblush [] = "lavenderblush"; + const char lawngreen [] = "lawngreen"; + const char lemonchiffon [] = "lemonchiffon"; + const char lightblue [] = "lightblue"; + const char lightcoral [] = "lightcoral"; + const char lightcyan [] = "lightcyan"; + const char lightgoldenrodyellow [] = "lightgoldenrodyellow"; + const char lightgray [] = "lightgray"; + const char lightgrey [] = "lightgrey"; + const char lightgreen [] = "lightgreen"; + const char lightpink [] = "lightpink"; + const char lightsalmon [] = "lightsalmon"; + const char lightseagreen [] = "lightseagreen"; + const char lightskyblue [] = "lightskyblue"; + const char lightslategray [] = "lightslategray"; + const char lightslategrey [] = "lightslategrey"; + const char lightsteelblue [] = "lightsteelblue"; + const char lightyellow [] = "lightyellow"; + const char lime [] = "lime"; + const char limegreen [] = "limegreen"; + const char linen [] = "linen"; + const char maroon [] = "maroon"; + const char mediumaquamarine [] = "mediumaquamarine"; + const char mediumblue [] = "mediumblue"; + const char mediumorchid [] = "mediumorchid"; + const char mediumpurple [] = "mediumpurple"; + const char mediumseagreen [] = "mediumseagreen"; + const char mediumslateblue [] = "mediumslateblue"; + const char mediumspringgreen [] = "mediumspringgreen"; + const char mediumturquoise [] = "mediumturquoise"; + const char mediumvioletred [] = "mediumvioletred"; + const char midnightblue [] = "midnightblue"; + const char mintcream [] = "mintcream"; + const char mistyrose [] = "mistyrose"; + const char moccasin [] = "moccasin"; + const char navajowhite [] = "navajowhite"; + const char navy [] = "navy"; + const char oldlace [] = "oldlace"; + const char olive [] = "olive"; + const char olivedrab [] = "olivedrab"; + const char orange [] = "orange"; + const char orangered [] = "orangered"; + const char orchid [] = "orchid"; + const char palegoldenrod [] = "palegoldenrod"; + const char palegreen [] = "palegreen"; + const char paleturquoise [] = "paleturquoise"; + const char palevioletred [] = "palevioletred"; + const char papayawhip [] = "papayawhip"; + const char peachpuff [] = "peachpuff"; + const char peru [] = "peru"; + const char pink [] = "pink"; + const char plum [] = "plum"; + const char powderblue [] = "powderblue"; + const char purple [] = "purple"; + const char red [] = "red"; + const char rosybrown [] = "rosybrown"; + const char royalblue [] = "royalblue"; + const char saddlebrown [] = "saddlebrown"; + const char salmon [] = "salmon"; + const char sandybrown [] = "sandybrown"; + const char seagreen [] = "seagreen"; + const char seashell [] = "seashell"; + const char sienna [] = "sienna"; + const char silver [] = "silver"; + const char skyblue [] = "skyblue"; + const char slateblue [] = "slateblue"; + const char slategray [] = "slategray"; + const char slategrey [] = "slategrey"; + const char snow [] = "snow"; + const char springgreen [] = "springgreen"; + const char steelblue [] = "steelblue"; + const char tan [] = "tan"; + const char teal [] = "teal"; + const char thistle [] = "thistle"; + const char tomato [] = "tomato"; + const char turquoise [] = "turquoise"; + const char violet [] = "violet"; + const char wheat [] = "wheat"; + const char white [] = "white"; + const char whitesmoke [] = "whitesmoke"; + const char yellow [] = "yellow"; + const char yellowgreen [] = "yellowgreen"; + const char rebeccapurple [] = "rebeccapurple"; + const char transparent [] = "transparent"; + } + + namespace Colors { + const ParserState color_table("[COLOR TABLE]"); + const Color aliceblue(color_table, 240, 248, 255, 1); + const Color antiquewhite(color_table, 250, 235, 215, 1); + const Color cyan(color_table, 0, 255, 255, 1); + const Color aqua(color_table, 0, 255, 255, 1); + const Color aquamarine(color_table, 127, 255, 212, 1); + const Color azure(color_table, 240, 255, 255, 1); + const Color beige(color_table, 245, 245, 220, 1); + const Color bisque(color_table, 255, 228, 196, 1); + const Color black(color_table, 0, 0, 0, 1); + const Color blanchedalmond(color_table, 255, 235, 205, 1); + const Color blue(color_table, 0, 0, 255, 1); + const Color blueviolet(color_table, 138, 43, 226, 1); + const Color brown(color_table, 165, 42, 42, 1); + const Color burlywood(color_table, 222, 184, 135, 1); + const Color cadetblue(color_table, 95, 158, 160, 1); + const Color chartreuse(color_table, 127, 255, 0, 1); + const Color chocolate(color_table, 210, 105, 30, 1); + const Color coral(color_table, 255, 127, 80, 1); + const Color cornflowerblue(color_table, 100, 149, 237, 1); + const Color cornsilk(color_table, 255, 248, 220, 1); + const Color crimson(color_table, 220, 20, 60, 1); + const Color darkblue(color_table, 0, 0, 139, 1); + const Color darkcyan(color_table, 0, 139, 139, 1); + const Color darkgoldenrod(color_table, 184, 134, 11, 1); + const Color darkgray(color_table, 169, 169, 169, 1); + const Color darkgrey(color_table, 169, 169, 169, 1); + const Color darkgreen(color_table, 0, 100, 0, 1); + const Color darkkhaki(color_table, 189, 183, 107, 1); + const Color darkmagenta(color_table, 139, 0, 139, 1); + const Color darkolivegreen(color_table, 85, 107, 47, 1); + const Color darkorange(color_table, 255, 140, 0, 1); + const Color darkorchid(color_table, 153, 50, 204, 1); + const Color darkred(color_table, 139, 0, 0, 1); + const Color darksalmon(color_table, 233, 150, 122, 1); + const Color darkseagreen(color_table, 143, 188, 143, 1); + const Color darkslateblue(color_table, 72, 61, 139, 1); + const Color darkslategray(color_table, 47, 79, 79, 1); + const Color darkslategrey(color_table, 47, 79, 79, 1); + const Color darkturquoise(color_table, 0, 206, 209, 1); + const Color darkviolet(color_table, 148, 0, 211, 1); + const Color deeppink(color_table, 255, 20, 147, 1); + const Color deepskyblue(color_table, 0, 191, 255, 1); + const Color dimgray(color_table, 105, 105, 105, 1); + const Color dimgrey(color_table, 105, 105, 105, 1); + const Color dodgerblue(color_table, 30, 144, 255, 1); + const Color firebrick(color_table, 178, 34, 34, 1); + const Color floralwhite(color_table, 255, 250, 240, 1); + const Color forestgreen(color_table, 34, 139, 34, 1); + const Color magenta(color_table, 255, 0, 255, 1); + const Color fuchsia(color_table, 255, 0, 255, 1); + const Color gainsboro(color_table, 220, 220, 220, 1); + const Color ghostwhite(color_table, 248, 248, 255, 1); + const Color gold(color_table, 255, 215, 0, 1); + const Color goldenrod(color_table, 218, 165, 32, 1); + const Color gray(color_table, 128, 128, 128, 1); + const Color grey(color_table, 128, 128, 128, 1); + const Color green(color_table, 0, 128, 0, 1); + const Color greenyellow(color_table, 173, 255, 47, 1); + const Color honeydew(color_table, 240, 255, 240, 1); + const Color hotpink(color_table, 255, 105, 180, 1); + const Color indianred(color_table, 205, 92, 92, 1); + const Color indigo(color_table, 75, 0, 130, 1); + const Color ivory(color_table, 255, 255, 240, 1); + const Color khaki(color_table, 240, 230, 140, 1); + const Color lavender(color_table, 230, 230, 250, 1); + const Color lavenderblush(color_table, 255, 240, 245, 1); + const Color lawngreen(color_table, 124, 252, 0, 1); + const Color lemonchiffon(color_table, 255, 250, 205, 1); + const Color lightblue(color_table, 173, 216, 230, 1); + const Color lightcoral(color_table, 240, 128, 128, 1); + const Color lightcyan(color_table, 224, 255, 255, 1); + const Color lightgoldenrodyellow(color_table, 250, 250, 210, 1); + const Color lightgray(color_table, 211, 211, 211, 1); + const Color lightgrey(color_table, 211, 211, 211, 1); + const Color lightgreen(color_table, 144, 238, 144, 1); + const Color lightpink(color_table, 255, 182, 193, 1); + const Color lightsalmon(color_table, 255, 160, 122, 1); + const Color lightseagreen(color_table, 32, 178, 170, 1); + const Color lightskyblue(color_table, 135, 206, 250, 1); + const Color lightslategray(color_table, 119, 136, 153, 1); + const Color lightslategrey(color_table, 119, 136, 153, 1); + const Color lightsteelblue(color_table, 176, 196, 222, 1); + const Color lightyellow(color_table, 255, 255, 224, 1); + const Color lime(color_table, 0, 255, 0, 1); + const Color limegreen(color_table, 50, 205, 50, 1); + const Color linen(color_table, 250, 240, 230, 1); + const Color maroon(color_table, 128, 0, 0, 1); + const Color mediumaquamarine(color_table, 102, 205, 170, 1); + const Color mediumblue(color_table, 0, 0, 205, 1); + const Color mediumorchid(color_table, 186, 85, 211, 1); + const Color mediumpurple(color_table, 147, 112, 219, 1); + const Color mediumseagreen(color_table, 60, 179, 113, 1); + const Color mediumslateblue(color_table, 123, 104, 238, 1); + const Color mediumspringgreen(color_table, 0, 250, 154, 1); + const Color mediumturquoise(color_table, 72, 209, 204, 1); + const Color mediumvioletred(color_table, 199, 21, 133, 1); + const Color midnightblue(color_table, 25, 25, 112, 1); + const Color mintcream(color_table, 245, 255, 250, 1); + const Color mistyrose(color_table, 255, 228, 225, 1); + const Color moccasin(color_table, 255, 228, 181, 1); + const Color navajowhite(color_table, 255, 222, 173, 1); + const Color navy(color_table, 0, 0, 128, 1); + const Color oldlace(color_table, 253, 245, 230, 1); + const Color olive(color_table, 128, 128, 0, 1); + const Color olivedrab(color_table, 107, 142, 35, 1); + const Color orange(color_table, 255, 165, 0, 1); + const Color orangered(color_table, 255, 69, 0, 1); + const Color orchid(color_table, 218, 112, 214, 1); + const Color palegoldenrod(color_table, 238, 232, 170, 1); + const Color palegreen(color_table, 152, 251, 152, 1); + const Color paleturquoise(color_table, 175, 238, 238, 1); + const Color palevioletred(color_table, 219, 112, 147, 1); + const Color papayawhip(color_table, 255, 239, 213, 1); + const Color peachpuff(color_table, 255, 218, 185, 1); + const Color peru(color_table, 205, 133, 63, 1); + const Color pink(color_table, 255, 192, 203, 1); + const Color plum(color_table, 221, 160, 221, 1); + const Color powderblue(color_table, 176, 224, 230, 1); + const Color purple(color_table, 128, 0, 128, 1); + const Color red(color_table, 255, 0, 0, 1); + const Color rosybrown(color_table, 188, 143, 143, 1); + const Color royalblue(color_table, 65, 105, 225, 1); + const Color saddlebrown(color_table, 139, 69, 19, 1); + const Color salmon(color_table, 250, 128, 114, 1); + const Color sandybrown(color_table, 244, 164, 96, 1); + const Color seagreen(color_table, 46, 139, 87, 1); + const Color seashell(color_table, 255, 245, 238, 1); + const Color sienna(color_table, 160, 82, 45, 1); + const Color silver(color_table, 192, 192, 192, 1); + const Color skyblue(color_table, 135, 206, 235, 1); + const Color slateblue(color_table, 106, 90, 205, 1); + const Color slategray(color_table, 112, 128, 144, 1); + const Color slategrey(color_table, 112, 128, 144, 1); + const Color snow(color_table, 255, 250, 250, 1); + const Color springgreen(color_table, 0, 255, 127, 1); + const Color steelblue(color_table, 70, 130, 180, 1); + const Color tan(color_table, 210, 180, 140, 1); + const Color teal(color_table, 0, 128, 128, 1); + const Color thistle(color_table, 216, 191, 216, 1); + const Color tomato(color_table, 255, 99, 71, 1); + const Color turquoise(color_table, 64, 224, 208, 1); + const Color violet(color_table, 238, 130, 238, 1); + const Color wheat(color_table, 245, 222, 179, 1); + const Color white(color_table, 255, 255, 255, 1); + const Color whitesmoke(color_table, 245, 245, 245, 1); + const Color yellow(color_table, 255, 255, 0, 1); + const Color yellowgreen(color_table, 154, 205, 50, 1); + const Color rebeccapurple(color_table, 102, 51, 153, 1); + const Color transparent(color_table, 0, 0, 0, 0); + } + + const std::map colors_to_names { + { 240 * 0x10000 + 248 * 0x100 + 255, ColorNames::aliceblue }, + { 250 * 0x10000 + 235 * 0x100 + 215, ColorNames::antiquewhite }, + { 0 * 0x10000 + 255 * 0x100 + 255, ColorNames::cyan }, + { 127 * 0x10000 + 255 * 0x100 + 212, ColorNames::aquamarine }, + { 240 * 0x10000 + 255 * 0x100 + 255, ColorNames::azure }, + { 245 * 0x10000 + 245 * 0x100 + 220, ColorNames::beige }, + { 255 * 0x10000 + 228 * 0x100 + 196, ColorNames::bisque }, + { 0 * 0x10000 + 0 * 0x100 + 0, ColorNames::black }, + { 255 * 0x10000 + 235 * 0x100 + 205, ColorNames::blanchedalmond }, + { 0 * 0x10000 + 0 * 0x100 + 255, ColorNames::blue }, + { 138 * 0x10000 + 43 * 0x100 + 226, ColorNames::blueviolet }, + { 165 * 0x10000 + 42 * 0x100 + 42, ColorNames::brown }, + { 222 * 0x10000 + 184 * 0x100 + 135, ColorNames::burlywood }, + { 95 * 0x10000 + 158 * 0x100 + 160, ColorNames::cadetblue }, + { 127 * 0x10000 + 255 * 0x100 + 0, ColorNames::chartreuse }, + { 210 * 0x10000 + 105 * 0x100 + 30, ColorNames::chocolate }, + { 255 * 0x10000 + 127 * 0x100 + 80, ColorNames::coral }, + { 100 * 0x10000 + 149 * 0x100 + 237, ColorNames::cornflowerblue }, + { 255 * 0x10000 + 248 * 0x100 + 220, ColorNames::cornsilk }, + { 220 * 0x10000 + 20 * 0x100 + 60, ColorNames::crimson }, + { 0 * 0x10000 + 0 * 0x100 + 139, ColorNames::darkblue }, + { 0 * 0x10000 + 139 * 0x100 + 139, ColorNames::darkcyan }, + { 184 * 0x10000 + 134 * 0x100 + 11, ColorNames::darkgoldenrod }, + { 169 * 0x10000 + 169 * 0x100 + 169, ColorNames::darkgray }, + { 0 * 0x10000 + 100 * 0x100 + 0, ColorNames::darkgreen }, + { 189 * 0x10000 + 183 * 0x100 + 107, ColorNames::darkkhaki }, + { 139 * 0x10000 + 0 * 0x100 + 139, ColorNames::darkmagenta }, + { 85 * 0x10000 + 107 * 0x100 + 47, ColorNames::darkolivegreen }, + { 255 * 0x10000 + 140 * 0x100 + 0, ColorNames::darkorange }, + { 153 * 0x10000 + 50 * 0x100 + 204, ColorNames::darkorchid }, + { 139 * 0x10000 + 0 * 0x100 + 0, ColorNames::darkred }, + { 233 * 0x10000 + 150 * 0x100 + 122, ColorNames::darksalmon }, + { 143 * 0x10000 + 188 * 0x100 + 143, ColorNames::darkseagreen }, + { 72 * 0x10000 + 61 * 0x100 + 139, ColorNames::darkslateblue }, + { 47 * 0x10000 + 79 * 0x100 + 79, ColorNames::darkslategray }, + { 0 * 0x10000 + 206 * 0x100 + 209, ColorNames::darkturquoise }, + { 148 * 0x10000 + 0 * 0x100 + 211, ColorNames::darkviolet }, + { 255 * 0x10000 + 20 * 0x100 + 147, ColorNames::deeppink }, + { 0 * 0x10000 + 191 * 0x100 + 255, ColorNames::deepskyblue }, + { 105 * 0x10000 + 105 * 0x100 + 105, ColorNames::dimgray }, + { 30 * 0x10000 + 144 * 0x100 + 255, ColorNames::dodgerblue }, + { 178 * 0x10000 + 34 * 0x100 + 34, ColorNames::firebrick }, + { 255 * 0x10000 + 250 * 0x100 + 240, ColorNames::floralwhite }, + { 34 * 0x10000 + 139 * 0x100 + 34, ColorNames::forestgreen }, + { 255 * 0x10000 + 0 * 0x100 + 255, ColorNames::magenta }, + { 220 * 0x10000 + 220 * 0x100 + 220, ColorNames::gainsboro }, + { 248 * 0x10000 + 248 * 0x100 + 255, ColorNames::ghostwhite }, + { 255 * 0x10000 + 215 * 0x100 + 0, ColorNames::gold }, + { 218 * 0x10000 + 165 * 0x100 + 32, ColorNames::goldenrod }, + { 128 * 0x10000 + 128 * 0x100 + 128, ColorNames::gray }, + { 0 * 0x10000 + 128 * 0x100 + 0, ColorNames::green }, + { 173 * 0x10000 + 255 * 0x100 + 47, ColorNames::greenyellow }, + { 240 * 0x10000 + 255 * 0x100 + 240, ColorNames::honeydew }, + { 255 * 0x10000 + 105 * 0x100 + 180, ColorNames::hotpink }, + { 205 * 0x10000 + 92 * 0x100 + 92, ColorNames::indianred }, + { 75 * 0x10000 + 0 * 0x100 + 130, ColorNames::indigo }, + { 255 * 0x10000 + 255 * 0x100 + 240, ColorNames::ivory }, + { 240 * 0x10000 + 230 * 0x100 + 140, ColorNames::khaki }, + { 230 * 0x10000 + 230 * 0x100 + 250, ColorNames::lavender }, + { 255 * 0x10000 + 240 * 0x100 + 245, ColorNames::lavenderblush }, + { 124 * 0x10000 + 252 * 0x100 + 0, ColorNames::lawngreen }, + { 255 * 0x10000 + 250 * 0x100 + 205, ColorNames::lemonchiffon }, + { 173 * 0x10000 + 216 * 0x100 + 230, ColorNames::lightblue }, + { 240 * 0x10000 + 128 * 0x100 + 128, ColorNames::lightcoral }, + { 224 * 0x10000 + 255 * 0x100 + 255, ColorNames::lightcyan }, + { 250 * 0x10000 + 250 * 0x100 + 210, ColorNames::lightgoldenrodyellow }, + { 211 * 0x10000 + 211 * 0x100 + 211, ColorNames::lightgray }, + { 144 * 0x10000 + 238 * 0x100 + 144, ColorNames::lightgreen }, + { 255 * 0x10000 + 182 * 0x100 + 193, ColorNames::lightpink }, + { 255 * 0x10000 + 160 * 0x100 + 122, ColorNames::lightsalmon }, + { 32 * 0x10000 + 178 * 0x100 + 170, ColorNames::lightseagreen }, + { 135 * 0x10000 + 206 * 0x100 + 250, ColorNames::lightskyblue }, + { 119 * 0x10000 + 136 * 0x100 + 153, ColorNames::lightslategray }, + { 176 * 0x10000 + 196 * 0x100 + 222, ColorNames::lightsteelblue }, + { 255 * 0x10000 + 255 * 0x100 + 224, ColorNames::lightyellow }, + { 0 * 0x10000 + 255 * 0x100 + 0, ColorNames::lime }, + { 50 * 0x10000 + 205 * 0x100 + 50, ColorNames::limegreen }, + { 250 * 0x10000 + 240 * 0x100 + 230, ColorNames::linen }, + { 128 * 0x10000 + 0 * 0x100 + 0, ColorNames::maroon }, + { 102 * 0x10000 + 205 * 0x100 + 170, ColorNames::mediumaquamarine }, + { 0 * 0x10000 + 0 * 0x100 + 205, ColorNames::mediumblue }, + { 186 * 0x10000 + 85 * 0x100 + 211, ColorNames::mediumorchid }, + { 147 * 0x10000 + 112 * 0x100 + 219, ColorNames::mediumpurple }, + { 60 * 0x10000 + 179 * 0x100 + 113, ColorNames::mediumseagreen }, + { 123 * 0x10000 + 104 * 0x100 + 238, ColorNames::mediumslateblue }, + { 0 * 0x10000 + 250 * 0x100 + 154, ColorNames::mediumspringgreen }, + { 72 * 0x10000 + 209 * 0x100 + 204, ColorNames::mediumturquoise }, + { 199 * 0x10000 + 21 * 0x100 + 133, ColorNames::mediumvioletred }, + { 25 * 0x10000 + 25 * 0x100 + 112, ColorNames::midnightblue }, + { 245 * 0x10000 + 255 * 0x100 + 250, ColorNames::mintcream }, + { 255 * 0x10000 + 228 * 0x100 + 225, ColorNames::mistyrose }, + { 255 * 0x10000 + 228 * 0x100 + 181, ColorNames::moccasin }, + { 255 * 0x10000 + 222 * 0x100 + 173, ColorNames::navajowhite }, + { 0 * 0x10000 + 0 * 0x100 + 128, ColorNames::navy }, + { 253 * 0x10000 + 245 * 0x100 + 230, ColorNames::oldlace }, + { 128 * 0x10000 + 128 * 0x100 + 0, ColorNames::olive }, + { 107 * 0x10000 + 142 * 0x100 + 35, ColorNames::olivedrab }, + { 255 * 0x10000 + 165 * 0x100 + 0, ColorNames::orange }, + { 255 * 0x10000 + 69 * 0x100 + 0, ColorNames::orangered }, + { 218 * 0x10000 + 112 * 0x100 + 214, ColorNames::orchid }, + { 238 * 0x10000 + 232 * 0x100 + 170, ColorNames::palegoldenrod }, + { 152 * 0x10000 + 251 * 0x100 + 152, ColorNames::palegreen }, + { 175 * 0x10000 + 238 * 0x100 + 238, ColorNames::paleturquoise }, + { 219 * 0x10000 + 112 * 0x100 + 147, ColorNames::palevioletred }, + { 255 * 0x10000 + 239 * 0x100 + 213, ColorNames::papayawhip }, + { 255 * 0x10000 + 218 * 0x100 + 185, ColorNames::peachpuff }, + { 205 * 0x10000 + 133 * 0x100 + 63, ColorNames::peru }, + { 255 * 0x10000 + 192 * 0x100 + 203, ColorNames::pink }, + { 221 * 0x10000 + 160 * 0x100 + 221, ColorNames::plum }, + { 176 * 0x10000 + 224 * 0x100 + 230, ColorNames::powderblue }, + { 128 * 0x10000 + 0 * 0x100 + 128, ColorNames::purple }, + { 255 * 0x10000 + 0 * 0x100 + 0, ColorNames::red }, + { 188 * 0x10000 + 143 * 0x100 + 143, ColorNames::rosybrown }, + { 65 * 0x10000 + 105 * 0x100 + 225, ColorNames::royalblue }, + { 139 * 0x10000 + 69 * 0x100 + 19, ColorNames::saddlebrown }, + { 250 * 0x10000 + 128 * 0x100 + 114, ColorNames::salmon }, + { 244 * 0x10000 + 164 * 0x100 + 96, ColorNames::sandybrown }, + { 46 * 0x10000 + 139 * 0x100 + 87, ColorNames::seagreen }, + { 255 * 0x10000 + 245 * 0x100 + 238, ColorNames::seashell }, + { 160 * 0x10000 + 82 * 0x100 + 45, ColorNames::sienna }, + { 192 * 0x10000 + 192 * 0x100 + 192, ColorNames::silver }, + { 135 * 0x10000 + 206 * 0x100 + 235, ColorNames::skyblue }, + { 106 * 0x10000 + 90 * 0x100 + 205, ColorNames::slateblue }, + { 112 * 0x10000 + 128 * 0x100 + 144, ColorNames::slategray }, + { 255 * 0x10000 + 250 * 0x100 + 250, ColorNames::snow }, + { 0 * 0x10000 + 255 * 0x100 + 127, ColorNames::springgreen }, + { 70 * 0x10000 + 130 * 0x100 + 180, ColorNames::steelblue }, + { 210 * 0x10000 + 180 * 0x100 + 140, ColorNames::tan }, + { 0 * 0x10000 + 128 * 0x100 + 128, ColorNames::teal }, + { 216 * 0x10000 + 191 * 0x100 + 216, ColorNames::thistle }, + { 255 * 0x10000 + 99 * 0x100 + 71, ColorNames::tomato }, + { 64 * 0x10000 + 224 * 0x100 + 208, ColorNames::turquoise }, + { 238 * 0x10000 + 130 * 0x100 + 238, ColorNames::violet }, + { 245 * 0x10000 + 222 * 0x100 + 179, ColorNames::wheat }, + { 255 * 0x10000 + 255 * 0x100 + 255, ColorNames::white }, + { 245 * 0x10000 + 245 * 0x100 + 245, ColorNames::whitesmoke }, + { 255 * 0x10000 + 255 * 0x100 + 0, ColorNames::yellow }, + { 154 * 0x10000 + 205 * 0x100 + 50, ColorNames::yellowgreen }, + { 102 * 0x10000 + 51 * 0x100 + 153, ColorNames::rebeccapurple } + }; + + const std::map names_to_colors + { + { ColorNames::aliceblue, &Colors::aliceblue }, + { ColorNames::antiquewhite, &Colors::antiquewhite }, + { ColorNames::cyan, &Colors::cyan }, + { ColorNames::aqua, &Colors::aqua }, + { ColorNames::aquamarine, &Colors::aquamarine }, + { ColorNames::azure, &Colors::azure }, + { ColorNames::beige, &Colors::beige }, + { ColorNames::bisque, &Colors::bisque }, + { ColorNames::black, &Colors::black }, + { ColorNames::blanchedalmond, &Colors::blanchedalmond }, + { ColorNames::blue, &Colors::blue }, + { ColorNames::blueviolet, &Colors::blueviolet }, + { ColorNames::brown, &Colors::brown }, + { ColorNames::burlywood, &Colors::burlywood }, + { ColorNames::cadetblue, &Colors::cadetblue }, + { ColorNames::chartreuse, &Colors::chartreuse }, + { ColorNames::chocolate, &Colors::chocolate }, + { ColorNames::coral, &Colors::coral }, + { ColorNames::cornflowerblue, &Colors::cornflowerblue }, + { ColorNames::cornsilk, &Colors::cornsilk }, + { ColorNames::crimson, &Colors::crimson }, + { ColorNames::darkblue, &Colors::darkblue }, + { ColorNames::darkcyan, &Colors::darkcyan }, + { ColorNames::darkgoldenrod, &Colors::darkgoldenrod }, + { ColorNames::darkgray, &Colors::darkgray }, + { ColorNames::darkgrey, &Colors::darkgrey }, + { ColorNames::darkgreen, &Colors::darkgreen }, + { ColorNames::darkkhaki, &Colors::darkkhaki }, + { ColorNames::darkmagenta, &Colors::darkmagenta }, + { ColorNames::darkolivegreen, &Colors::darkolivegreen }, + { ColorNames::darkorange, &Colors::darkorange }, + { ColorNames::darkorchid, &Colors::darkorchid }, + { ColorNames::darkred, &Colors::darkred }, + { ColorNames::darksalmon, &Colors::darksalmon }, + { ColorNames::darkseagreen, &Colors::darkseagreen }, + { ColorNames::darkslateblue, &Colors::darkslateblue }, + { ColorNames::darkslategray, &Colors::darkslategray }, + { ColorNames::darkslategrey, &Colors::darkslategrey }, + { ColorNames::darkturquoise, &Colors::darkturquoise }, + { ColorNames::darkviolet, &Colors::darkviolet }, + { ColorNames::deeppink, &Colors::deeppink }, + { ColorNames::deepskyblue, &Colors::deepskyblue }, + { ColorNames::dimgray, &Colors::dimgray }, + { ColorNames::dimgrey, &Colors::dimgrey }, + { ColorNames::dodgerblue, &Colors::dodgerblue }, + { ColorNames::firebrick, &Colors::firebrick }, + { ColorNames::floralwhite, &Colors::floralwhite }, + { ColorNames::forestgreen, &Colors::forestgreen }, + { ColorNames::magenta, &Colors::magenta }, + { ColorNames::fuchsia, &Colors::fuchsia }, + { ColorNames::gainsboro, &Colors::gainsboro }, + { ColorNames::ghostwhite, &Colors::ghostwhite }, + { ColorNames::gold, &Colors::gold }, + { ColorNames::goldenrod, &Colors::goldenrod }, + { ColorNames::gray, &Colors::gray }, + { ColorNames::grey, &Colors::grey }, + { ColorNames::green, &Colors::green }, + { ColorNames::greenyellow, &Colors::greenyellow }, + { ColorNames::honeydew, &Colors::honeydew }, + { ColorNames::hotpink, &Colors::hotpink }, + { ColorNames::indianred, &Colors::indianred }, + { ColorNames::indigo, &Colors::indigo }, + { ColorNames::ivory, &Colors::ivory }, + { ColorNames::khaki, &Colors::khaki }, + { ColorNames::lavender, &Colors::lavender }, + { ColorNames::lavenderblush, &Colors::lavenderblush }, + { ColorNames::lawngreen, &Colors::lawngreen }, + { ColorNames::lemonchiffon, &Colors::lemonchiffon }, + { ColorNames::lightblue, &Colors::lightblue }, + { ColorNames::lightcoral, &Colors::lightcoral }, + { ColorNames::lightcyan, &Colors::lightcyan }, + { ColorNames::lightgoldenrodyellow, &Colors::lightgoldenrodyellow }, + { ColorNames::lightgray, &Colors::lightgray }, + { ColorNames::lightgrey, &Colors::lightgrey }, + { ColorNames::lightgreen, &Colors::lightgreen }, + { ColorNames::lightpink, &Colors::lightpink }, + { ColorNames::lightsalmon, &Colors::lightsalmon }, + { ColorNames::lightseagreen, &Colors::lightseagreen }, + { ColorNames::lightskyblue, &Colors::lightskyblue }, + { ColorNames::lightslategray, &Colors::lightslategray }, + { ColorNames::lightslategrey, &Colors::lightslategrey }, + { ColorNames::lightsteelblue, &Colors::lightsteelblue }, + { ColorNames::lightyellow, &Colors::lightyellow }, + { ColorNames::lime, &Colors::lime }, + { ColorNames::limegreen, &Colors::limegreen }, + { ColorNames::linen, &Colors::linen }, + { ColorNames::maroon, &Colors::maroon }, + { ColorNames::mediumaquamarine, &Colors::mediumaquamarine }, + { ColorNames::mediumblue, &Colors::mediumblue }, + { ColorNames::mediumorchid, &Colors::mediumorchid }, + { ColorNames::mediumpurple, &Colors::mediumpurple }, + { ColorNames::mediumseagreen, &Colors::mediumseagreen }, + { ColorNames::mediumslateblue, &Colors::mediumslateblue }, + { ColorNames::mediumspringgreen, &Colors::mediumspringgreen }, + { ColorNames::mediumturquoise, &Colors::mediumturquoise }, + { ColorNames::mediumvioletred, &Colors::mediumvioletred }, + { ColorNames::midnightblue, &Colors::midnightblue }, + { ColorNames::mintcream, &Colors::mintcream }, + { ColorNames::mistyrose, &Colors::mistyrose }, + { ColorNames::moccasin, &Colors::moccasin }, + { ColorNames::navajowhite, &Colors::navajowhite }, + { ColorNames::navy, &Colors::navy }, + { ColorNames::oldlace, &Colors::oldlace }, + { ColorNames::olive, &Colors::olive }, + { ColorNames::olivedrab, &Colors::olivedrab }, + { ColorNames::orange, &Colors::orange }, + { ColorNames::orangered, &Colors::orangered }, + { ColorNames::orchid, &Colors::orchid }, + { ColorNames::palegoldenrod, &Colors::palegoldenrod }, + { ColorNames::palegreen, &Colors::palegreen }, + { ColorNames::paleturquoise, &Colors::paleturquoise }, + { ColorNames::palevioletred, &Colors::palevioletred }, + { ColorNames::papayawhip, &Colors::papayawhip }, + { ColorNames::peachpuff, &Colors::peachpuff }, + { ColorNames::peru, &Colors::peru }, + { ColorNames::pink, &Colors::pink }, + { ColorNames::plum, &Colors::plum }, + { ColorNames::powderblue, &Colors::powderblue }, + { ColorNames::purple, &Colors::purple }, + { ColorNames::red, &Colors::red }, + { ColorNames::rosybrown, &Colors::rosybrown }, + { ColorNames::royalblue, &Colors::royalblue }, + { ColorNames::saddlebrown, &Colors::saddlebrown }, + { ColorNames::salmon, &Colors::salmon }, + { ColorNames::sandybrown, &Colors::sandybrown }, + { ColorNames::seagreen, &Colors::seagreen }, + { ColorNames::seashell, &Colors::seashell }, + { ColorNames::sienna, &Colors::sienna }, + { ColorNames::silver, &Colors::silver }, + { ColorNames::skyblue, &Colors::skyblue }, + { ColorNames::slateblue, &Colors::slateblue }, + { ColorNames::slategray, &Colors::slategray }, + { ColorNames::slategrey, &Colors::slategrey }, + { ColorNames::snow, &Colors::snow }, + { ColorNames::springgreen, &Colors::springgreen }, + { ColorNames::steelblue, &Colors::steelblue }, + { ColorNames::tan, &Colors::tan }, + { ColorNames::teal, &Colors::teal }, + { ColorNames::thistle, &Colors::thistle }, + { ColorNames::tomato, &Colors::tomato }, + { ColorNames::turquoise, &Colors::turquoise }, + { ColorNames::violet, &Colors::violet }, + { ColorNames::wheat, &Colors::wheat }, + { ColorNames::white, &Colors::white }, + { ColorNames::whitesmoke, &Colors::whitesmoke }, + { ColorNames::yellow, &Colors::yellow }, + { ColorNames::yellowgreen, &Colors::yellowgreen }, + { ColorNames::rebeccapurple, &Colors::rebeccapurple }, + { ColorNames::transparent, &Colors::transparent } + }; + + Color_Ptr_Const name_to_color(const char* key) + { + return name_to_color(std::string(key)); + } + + Color_Ptr_Const name_to_color(const std::string& key) + { + // case insensitive lookup. See #2462 + std::string lower{key}; + std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); + + auto p = names_to_colors.find(lower.c_str()); + if (p != names_to_colors.end()) { + return p->second; + } + return 0; + } + + const char* color_to_name(const int key) + { + auto p = colors_to_names.find(key); + if (p != colors_to_names.end()) { + return p->second; + } + return 0; + } + + const char* color_to_name(const double key) + { + return color_to_name((int)key); + } + + const char* color_to_name(const Color& c) + { + double key = c.r() * 0x10000 + + c.g() * 0x100 + + c.b(); + return color_to_name(key); + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/color_maps.hpp b/mybulma/node_modules/node-sass/src/libsass/src/color_maps.hpp new file mode 100644 index 0000000..d4fd416 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/color_maps.hpp @@ -0,0 +1,331 @@ + +#ifndef SASS_COLOR_MAPS_H +#define SASS_COLOR_MAPS_H + +#include +#include "ast.hpp" + +namespace Sass { + + struct map_cmp_str + { + bool operator()(char const *a, char const *b) const + { + return std::strcmp(a, b) < 0; + } + }; + + namespace ColorNames + { + extern const char aliceblue[]; + extern const char antiquewhite[]; + extern const char cyan[]; + extern const char aqua[]; + extern const char aquamarine[]; + extern const char azure[]; + extern const char beige[]; + extern const char bisque[]; + extern const char black[]; + extern const char blanchedalmond[]; + extern const char blue[]; + extern const char blueviolet[]; + extern const char brown[]; + extern const char burlywood[]; + extern const char cadetblue[]; + extern const char chartreuse[]; + extern const char chocolate[]; + extern const char coral[]; + extern const char cornflowerblue[]; + extern const char cornsilk[]; + extern const char crimson[]; + extern const char darkblue[]; + extern const char darkcyan[]; + extern const char darkgoldenrod[]; + extern const char darkgray[]; + extern const char darkgrey[]; + extern const char darkgreen[]; + extern const char darkkhaki[]; + extern const char darkmagenta[]; + extern const char darkolivegreen[]; + extern const char darkorange[]; + extern const char darkorchid[]; + extern const char darkred[]; + extern const char darksalmon[]; + extern const char darkseagreen[]; + extern const char darkslateblue[]; + extern const char darkslategray[]; + extern const char darkslategrey[]; + extern const char darkturquoise[]; + extern const char darkviolet[]; + extern const char deeppink[]; + extern const char deepskyblue[]; + extern const char dimgray[]; + extern const char dimgrey[]; + extern const char dodgerblue[]; + extern const char firebrick[]; + extern const char floralwhite[]; + extern const char forestgreen[]; + extern const char magenta[]; + extern const char fuchsia[]; + extern const char gainsboro[]; + extern const char ghostwhite[]; + extern const char gold[]; + extern const char goldenrod[]; + extern const char gray[]; + extern const char grey[]; + extern const char green[]; + extern const char greenyellow[]; + extern const char honeydew[]; + extern const char hotpink[]; + extern const char indianred[]; + extern const char indigo[]; + extern const char ivory[]; + extern const char khaki[]; + extern const char lavender[]; + extern const char lavenderblush[]; + extern const char lawngreen[]; + extern const char lemonchiffon[]; + extern const char lightblue[]; + extern const char lightcoral[]; + extern const char lightcyan[]; + extern const char lightgoldenrodyellow[]; + extern const char lightgray[]; + extern const char lightgrey[]; + extern const char lightgreen[]; + extern const char lightpink[]; + extern const char lightsalmon[]; + extern const char lightseagreen[]; + extern const char lightskyblue[]; + extern const char lightslategray[]; + extern const char lightslategrey[]; + extern const char lightsteelblue[]; + extern const char lightyellow[]; + extern const char lime[]; + extern const char limegreen[]; + extern const char linen[]; + extern const char maroon[]; + extern const char mediumaquamarine[]; + extern const char mediumblue[]; + extern const char mediumorchid[]; + extern const char mediumpurple[]; + extern const char mediumseagreen[]; + extern const char mediumslateblue[]; + extern const char mediumspringgreen[]; + extern const char mediumturquoise[]; + extern const char mediumvioletred[]; + extern const char midnightblue[]; + extern const char mintcream[]; + extern const char mistyrose[]; + extern const char moccasin[]; + extern const char navajowhite[]; + extern const char navy[]; + extern const char oldlace[]; + extern const char olive[]; + extern const char olivedrab[]; + extern const char orange[]; + extern const char orangered[]; + extern const char orchid[]; + extern const char palegoldenrod[]; + extern const char palegreen[]; + extern const char paleturquoise[]; + extern const char palevioletred[]; + extern const char papayawhip[]; + extern const char peachpuff[]; + extern const char peru[]; + extern const char pink[]; + extern const char plum[]; + extern const char powderblue[]; + extern const char purple[]; + extern const char red[]; + extern const char rosybrown[]; + extern const char royalblue[]; + extern const char saddlebrown[]; + extern const char salmon[]; + extern const char sandybrown[]; + extern const char seagreen[]; + extern const char seashell[]; + extern const char sienna[]; + extern const char silver[]; + extern const char skyblue[]; + extern const char slateblue[]; + extern const char slategray[]; + extern const char slategrey[]; + extern const char snow[]; + extern const char springgreen[]; + extern const char steelblue[]; + extern const char tan[]; + extern const char teal[]; + extern const char thistle[]; + extern const char tomato[]; + extern const char turquoise[]; + extern const char violet[]; + extern const char wheat[]; + extern const char white[]; + extern const char whitesmoke[]; + extern const char yellow[]; + extern const char yellowgreen[]; + extern const char rebeccapurple[]; + extern const char transparent[]; + } + + namespace Colors { + extern const Color aliceblue; + extern const Color antiquewhite; + extern const Color cyan; + extern const Color aqua; + extern const Color aquamarine; + extern const Color azure; + extern const Color beige; + extern const Color bisque; + extern const Color black; + extern const Color blanchedalmond; + extern const Color blue; + extern const Color blueviolet; + extern const Color brown; + extern const Color burlywood; + extern const Color cadetblue; + extern const Color chartreuse; + extern const Color chocolate; + extern const Color coral; + extern const Color cornflowerblue; + extern const Color cornsilk; + extern const Color crimson; + extern const Color darkblue; + extern const Color darkcyan; + extern const Color darkgoldenrod; + extern const Color darkgray; + extern const Color darkgrey; + extern const Color darkgreen; + extern const Color darkkhaki; + extern const Color darkmagenta; + extern const Color darkolivegreen; + extern const Color darkorange; + extern const Color darkorchid; + extern const Color darkred; + extern const Color darksalmon; + extern const Color darkseagreen; + extern const Color darkslateblue; + extern const Color darkslategray; + extern const Color darkslategrey; + extern const Color darkturquoise; + extern const Color darkviolet; + extern const Color deeppink; + extern const Color deepskyblue; + extern const Color dimgray; + extern const Color dimgrey; + extern const Color dodgerblue; + extern const Color firebrick; + extern const Color floralwhite; + extern const Color forestgreen; + extern const Color magenta; + extern const Color fuchsia; + extern const Color gainsboro; + extern const Color ghostwhite; + extern const Color gold; + extern const Color goldenrod; + extern const Color gray; + extern const Color grey; + extern const Color green; + extern const Color greenyellow; + extern const Color honeydew; + extern const Color hotpink; + extern const Color indianred; + extern const Color indigo; + extern const Color ivory; + extern const Color khaki; + extern const Color lavender; + extern const Color lavenderblush; + extern const Color lawngreen; + extern const Color lemonchiffon; + extern const Color lightblue; + extern const Color lightcoral; + extern const Color lightcyan; + extern const Color lightgoldenrodyellow; + extern const Color lightgray; + extern const Color lightgrey; + extern const Color lightgreen; + extern const Color lightpink; + extern const Color lightsalmon; + extern const Color lightseagreen; + extern const Color lightskyblue; + extern const Color lightslategray; + extern const Color lightslategrey; + extern const Color lightsteelblue; + extern const Color lightyellow; + extern const Color lime; + extern const Color limegreen; + extern const Color linen; + extern const Color maroon; + extern const Color mediumaquamarine; + extern const Color mediumblue; + extern const Color mediumorchid; + extern const Color mediumpurple; + extern const Color mediumseagreen; + extern const Color mediumslateblue; + extern const Color mediumspringgreen; + extern const Color mediumturquoise; + extern const Color mediumvioletred; + extern const Color midnightblue; + extern const Color mintcream; + extern const Color mistyrose; + extern const Color moccasin; + extern const Color navajowhite; + extern const Color navy; + extern const Color oldlace; + extern const Color olive; + extern const Color olivedrab; + extern const Color orange; + extern const Color orangered; + extern const Color orchid; + extern const Color palegoldenrod; + extern const Color palegreen; + extern const Color paleturquoise; + extern const Color palevioletred; + extern const Color papayawhip; + extern const Color peachpuff; + extern const Color peru; + extern const Color pink; + extern const Color plum; + extern const Color powderblue; + extern const Color purple; + extern const Color red; + extern const Color rosybrown; + extern const Color royalblue; + extern const Color saddlebrown; + extern const Color salmon; + extern const Color sandybrown; + extern const Color seagreen; + extern const Color seashell; + extern const Color sienna; + extern const Color silver; + extern const Color skyblue; + extern const Color slateblue; + extern const Color slategray; + extern const Color slategrey; + extern const Color snow; + extern const Color springgreen; + extern const Color steelblue; + extern const Color tan; + extern const Color teal; + extern const Color thistle; + extern const Color tomato; + extern const Color turquoise; + extern const Color violet; + extern const Color wheat; + extern const Color white; + extern const Color whitesmoke; + extern const Color yellow; + extern const Color yellowgreen; + extern const Color rebeccapurple; + extern const Color transparent; + } + + Color_Ptr_Const name_to_color(const char*); + Color_Ptr_Const name_to_color(const std::string&); + const char* color_to_name(const int); + const char* color_to_name(const Color&); + const char* color_to_name(const double); + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/constants.cpp b/mybulma/node_modules/node-sass/src/libsass/src/constants.cpp new file mode 100644 index 0000000..0ba28e2 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/constants.cpp @@ -0,0 +1,179 @@ +#include "sass.hpp" +#include "constants.hpp" + +namespace Sass { + namespace Constants { + + extern const unsigned long MaxCallStack = 1024; + + // https://github.com/sass/libsass/issues/592 + // https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity + // https://github.com/sass/sass/issues/1495#issuecomment-61189114 + extern const unsigned long Specificity_Star = 0; + extern const unsigned long Specificity_Universal = 0; + extern const unsigned long Specificity_Element = 1; + extern const unsigned long Specificity_Base = 1000; + extern const unsigned long Specificity_Class = 1000; + extern const unsigned long Specificity_Attr = 1000; + extern const unsigned long Specificity_Pseudo = 1000; + extern const unsigned long Specificity_ID = 1000000; + + // sass keywords + extern const char at_root_kwd[] = "@at-root"; + extern const char import_kwd[] = "@import"; + extern const char mixin_kwd[] = "@mixin"; + extern const char function_kwd[] = "@function"; + extern const char return_kwd[] = "@return"; + extern const char include_kwd[] = "@include"; + extern const char content_kwd[] = "@content"; + extern const char extend_kwd[] = "@extend"; + extern const char if_kwd[] = "@if"; + extern const char else_kwd[] = "@else"; + extern const char if_after_else_kwd[] = "if"; + extern const char for_kwd[] = "@for"; + extern const char from_kwd[] = "from"; + extern const char to_kwd[] = "to"; + extern const char through_kwd[] = "through"; + extern const char each_kwd[] = "@each"; + extern const char in_kwd[] = "in"; + extern const char while_kwd[] = "@while"; + extern const char warn_kwd[] = "@warn"; + extern const char error_kwd[] = "@error"; + extern const char debug_kwd[] = "@debug"; + extern const char default_kwd[] = "default"; + extern const char global_kwd[] = "global"; + extern const char null_kwd[] = "null"; + extern const char optional_kwd[] = "optional"; + extern const char with_kwd[] = "with"; + extern const char without_kwd[] = "without"; + extern const char all_kwd[] = "all"; + extern const char rule_kwd[] = "rule"; + + // css standard units + extern const char em_kwd[] = "em"; + extern const char ex_kwd[] = "ex"; + extern const char px_kwd[] = "px"; + extern const char cm_kwd[] = "cm"; + extern const char mm_kwd[] = "mm"; + extern const char pt_kwd[] = "pt"; + extern const char pc_kwd[] = "pc"; + extern const char deg_kwd[] = "deg"; + extern const char rad_kwd[] = "rad"; + extern const char grad_kwd[] = "grad"; + extern const char turn_kwd[] = "turn"; + extern const char ms_kwd[] = "ms"; + extern const char s_kwd[] = "s"; + extern const char Hz_kwd[] = "Hz"; + extern const char kHz_kwd[] = "kHz"; + + // vendor prefixes + extern const char vendor_opera_kwd[] = "-o-"; + extern const char vendor_webkit_kwd[] = "-webkit-"; + extern const char vendor_mozilla_kwd[] = "-moz-"; + extern const char vendor_ms_kwd[] = "-ms-"; + extern const char vendor_khtml_kwd[] = "-khtml-"; + + // css functions and keywords + extern const char charset_kwd[] = "@charset"; + extern const char media_kwd[] = "@media"; + extern const char supports_kwd[] = "@supports"; + extern const char keyframes_kwd[] = "keyframes"; + extern const char only_kwd[] = "only"; + extern const char rgb_fn_kwd[] = "rgb("; + extern const char url_fn_kwd[] = "url("; + extern const char url_kwd[] = "url"; + // extern const char url_prefix_fn_kwd[] = "url-prefix("; + extern const char important_kwd[] = "important"; + extern const char pseudo_not_fn_kwd[] = ":not("; + extern const char even_kwd[] = "even"; + extern const char odd_kwd[] = "odd"; + extern const char progid_kwd[] = "progid"; + extern const char expression_kwd[] = "expression"; + extern const char calc_fn_kwd[] = "calc"; + + extern const char almost_any_value_class[] = "\"'#!;{}"; + + // css selector keywords + extern const char sel_deep_kwd[] = "/deep/"; + + // css attribute-matching operators + extern const char tilde_equal[] = "~="; + extern const char pipe_equal[] = "|="; + extern const char caret_equal[] = "^="; + extern const char dollar_equal[] = "$="; + extern const char star_equal[] = "*="; + + // relational & logical operators and constants + extern const char and_kwd[] = "and"; + extern const char or_kwd[] = "or"; + extern const char not_kwd[] = "not"; + extern const char gt[] = ">"; + extern const char gte[] = ">="; + extern const char lt[] = "<"; + extern const char lte[] = "<="; + extern const char eq[] = "=="; + extern const char neq[] = "!="; + extern const char true_kwd[] = "true"; + extern const char false_kwd[] = "false"; + + // miscellaneous punctuation and delimiters + extern const char percent_str[] = "%"; + extern const char empty_str[] = ""; + extern const char slash_slash[] = "//"; + extern const char slash_star[] = "/*"; + extern const char star_slash[] = "*/"; + extern const char hash_lbrace[] = "#{"; + extern const char rbrace[] = "}"; + extern const char rparen[] = ")"; + extern const char sign_chars[] = "-+"; + extern const char op_chars[] = "-+"; + extern const char hyphen[] = "-"; + extern const char ellipsis[] = "..."; + // extern const char url_space_chars[] = " \t\r\n\f"; + // type names + extern const char numeric_name[] = "numeric value"; + extern const char number_name[] = "number"; + extern const char percentage_name[] = "percentage"; + extern const char dimension_name[] = "numeric dimension"; + extern const char string_name[] = "string"; + extern const char bool_name[] = "bool"; + extern const char color_name[] = "color"; + extern const char list_name[] = "list"; + extern const char map_name[] = "map"; + extern const char arglist_name[] = "arglist"; + + // constants for uri parsing (RFC 3986 Appendix A.) + extern const char uri_chars[] = ":;/?!%&#@|[]{}'`^\"*+-.,_=~"; + extern const char real_uri_chars[] = "#%&"; + + // some specific constant character classes + // they must be static to be useable by lexer + extern const char static_ops[] = "*/%"; + // some character classes for the parser + extern const char selector_list_delims[] = "){};!"; + extern const char complex_selector_delims[] = ",){};!"; + extern const char selector_combinator_ops[] = "+~>"; + // optional modifiers for alternative compare context + extern const char attribute_compare_modifiers[] = "~|^$*"; + extern const char selector_lookahead_ops[] = "*&%,()[]"; + + // byte order marks + // (taken from http://en.wikipedia.org/wiki/Byte_order_mark) + extern const unsigned char utf_8_bom[] = { 0xEF, 0xBB, 0xBF }; + extern const unsigned char utf_16_bom_be[] = { 0xFE, 0xFF }; + extern const unsigned char utf_16_bom_le[] = { 0xFF, 0xFE }; + extern const unsigned char utf_32_bom_be[] = { 0x00, 0x00, 0xFE, 0xFF }; + extern const unsigned char utf_32_bom_le[] = { 0xFF, 0xFE, 0x00, 0x00 }; + extern const unsigned char utf_7_bom_1[] = { 0x2B, 0x2F, 0x76, 0x38 }; + extern const unsigned char utf_7_bom_2[] = { 0x2B, 0x2F, 0x76, 0x39 }; + extern const unsigned char utf_7_bom_3[] = { 0x2B, 0x2F, 0x76, 0x2B }; + extern const unsigned char utf_7_bom_4[] = { 0x2B, 0x2F, 0x76, 0x2F }; + extern const unsigned char utf_7_bom_5[] = { 0x2B, 0x2F, 0x76, 0x38, 0x2D }; + extern const unsigned char utf_1_bom[] = { 0xF7, 0x64, 0x4C }; + extern const unsigned char utf_ebcdic_bom[] = { 0xDD, 0x73, 0x66, 0x73 }; + extern const unsigned char scsu_bom[] = { 0x0E, 0xFE, 0xFF }; + extern const unsigned char bocu_1_bom[] = { 0xFB, 0xEE, 0x28 }; + extern const unsigned char gb_18030_bom[] = { 0x84, 0x31, 0x95, 0x33 }; + + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/constants.hpp b/mybulma/node_modules/node-sass/src/libsass/src/constants.hpp new file mode 100644 index 0000000..4fe9357 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/constants.hpp @@ -0,0 +1,181 @@ +#ifndef SASS_CONSTANTS_H +#define SASS_CONSTANTS_H + +namespace Sass { + namespace Constants { + + // The maximum call stack that can be created + extern const unsigned long MaxCallStack; + + // https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity + // The following list of selectors is by increasing specificity: + extern const unsigned long Specificity_Star; + extern const unsigned long Specificity_Universal; + extern const unsigned long Specificity_Element; + extern const unsigned long Specificity_Base; + extern const unsigned long Specificity_Class; + extern const unsigned long Specificity_Attr; + extern const unsigned long Specificity_Pseudo; + extern const unsigned long Specificity_ID; + + // sass keywords + extern const char at_root_kwd[]; + extern const char import_kwd[]; + extern const char mixin_kwd[]; + extern const char function_kwd[]; + extern const char return_kwd[]; + extern const char include_kwd[]; + extern const char content_kwd[]; + extern const char extend_kwd[]; + extern const char if_kwd[]; + extern const char else_kwd[]; + extern const char if_after_else_kwd[]; + extern const char for_kwd[]; + extern const char from_kwd[]; + extern const char to_kwd[]; + extern const char through_kwd[]; + extern const char each_kwd[]; + extern const char in_kwd[]; + extern const char while_kwd[]; + extern const char warn_kwd[]; + extern const char error_kwd[]; + extern const char debug_kwd[]; + extern const char default_kwd[]; + extern const char global_kwd[]; + extern const char null_kwd[]; + extern const char optional_kwd[]; + extern const char with_kwd[]; + extern const char without_kwd[]; + extern const char all_kwd[]; + extern const char rule_kwd[]; + + // css standard units + extern const char em_kwd[]; + extern const char ex_kwd[]; + extern const char px_kwd[]; + extern const char cm_kwd[]; + extern const char mm_kwd[]; + extern const char pt_kwd[]; + extern const char pc_kwd[]; + extern const char deg_kwd[]; + extern const char rad_kwd[]; + extern const char grad_kwd[]; + extern const char turn_kwd[]; + extern const char ms_kwd[]; + extern const char s_kwd[]; + extern const char Hz_kwd[]; + extern const char kHz_kwd[]; + + // vendor prefixes + extern const char vendor_opera_kwd[]; + extern const char vendor_webkit_kwd[]; + extern const char vendor_mozilla_kwd[]; + extern const char vendor_ms_kwd[]; + extern const char vendor_khtml_kwd[]; + + // css functions and keywords + extern const char charset_kwd[]; + extern const char media_kwd[]; + extern const char supports_kwd[]; + extern const char keyframes_kwd[]; + extern const char only_kwd[]; + extern const char rgb_fn_kwd[]; + extern const char url_fn_kwd[]; + extern const char url_kwd[]; + // extern const char url_prefix_fn_kwd[]; + extern const char important_kwd[]; + extern const char pseudo_not_fn_kwd[]; + extern const char even_kwd[]; + extern const char odd_kwd[]; + extern const char progid_kwd[]; + extern const char expression_kwd[]; + extern const char calc_fn_kwd[]; + + // char classes for "regular expressions" + extern const char almost_any_value_class[]; + + // css selector keywords + extern const char sel_deep_kwd[]; + + // css attribute-matching operators + extern const char tilde_equal[]; + extern const char pipe_equal[]; + extern const char caret_equal[]; + extern const char dollar_equal[]; + extern const char star_equal[]; + + // relational & logical operators and constants + extern const char and_kwd[]; + extern const char or_kwd[]; + extern const char not_kwd[]; + extern const char gt[]; + extern const char gte[]; + extern const char lt[]; + extern const char lte[]; + extern const char eq[]; + extern const char neq[]; + extern const char true_kwd[]; + extern const char false_kwd[]; + + // miscellaneous punctuation and delimiters + extern const char percent_str[]; + extern const char empty_str[]; + extern const char slash_slash[]; + extern const char slash_star[]; + extern const char star_slash[]; + extern const char hash_lbrace[]; + extern const char rbrace[]; + extern const char rparen[]; + extern const char sign_chars[]; + extern const char op_chars[]; + extern const char hyphen[]; + extern const char ellipsis[]; + // extern const char url_space_chars[]; + + // type names + extern const char numeric_name[]; + extern const char number_name[]; + extern const char percentage_name[]; + extern const char dimension_name[]; + extern const char string_name[]; + extern const char bool_name[]; + extern const char color_name[]; + extern const char list_name[]; + extern const char map_name[]; + extern const char arglist_name[]; + + // constants for uri parsing (RFC 3986 Appendix A.) + extern const char uri_chars[]; + extern const char real_uri_chars[]; + + // some specific constant character classes + // they must be static to be useable by lexer + extern const char static_ops[]; + extern const char selector_list_delims[]; + extern const char complex_selector_delims[]; + extern const char selector_combinator_ops[]; + extern const char attribute_compare_modifiers[]; + extern const char selector_lookahead_ops[]; + + // byte order marks + // (taken from http://en.wikipedia.org/wiki/Byte_order_mark) + extern const unsigned char utf_8_bom[]; + extern const unsigned char utf_16_bom_be[]; + extern const unsigned char utf_16_bom_le[]; + extern const unsigned char utf_32_bom_be[]; + extern const unsigned char utf_32_bom_le[]; + extern const unsigned char utf_7_bom_1[]; + extern const unsigned char utf_7_bom_2[]; + extern const unsigned char utf_7_bom_3[]; + extern const unsigned char utf_7_bom_4[]; + extern const unsigned char utf_7_bom_5[]; + extern const unsigned char utf_1_bom[]; + extern const unsigned char utf_ebcdic_bom[]; + extern const unsigned char scsu_bom[]; + extern const unsigned char bocu_1_bom[]; + extern const unsigned char gb_18030_bom[]; + + } +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/context.cpp b/mybulma/node_modules/node-sass/src/libsass/src/context.cpp new file mode 100644 index 0000000..dae2cbd --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/context.cpp @@ -0,0 +1,880 @@ +#include "sass.hpp" +#include +#include +#include +#include +#include +#include + +#include "ast.hpp" +#include "util.hpp" +#include "sass.h" +#include "context.hpp" +#include "plugins.hpp" +#include "constants.hpp" +#include "parser.hpp" +#include "file.hpp" +#include "inspect.hpp" +#include "output.hpp" +#include "expand.hpp" +#include "eval.hpp" +#include "check_nesting.hpp" +#include "cssize.hpp" +#include "listize.hpp" +#include "extend.hpp" +#include "remove_placeholders.hpp" +#include "functions.hpp" +#include "sass_functions.hpp" +#include "backtrace.hpp" +#include "sass2scss.h" +#include "prelexer.hpp" +#include "emitter.hpp" + +namespace Sass { + using namespace Constants; + using namespace File; + using namespace Sass; + + inline bool sort_importers (const Sass_Importer_Entry& i, const Sass_Importer_Entry& j) + { return sass_importer_get_priority(i) > sass_importer_get_priority(j); } + + static std::string safe_input(const char* in_path) + { + // enforce some safe defaults + // used to create relative file links + std::string safe_path(in_path ? in_path : ""); + return safe_path == "" ? "stdin" : safe_path; + } + + static std::string safe_output(const char* out_path, const std::string& input_path = "") + { + std::string safe_path(out_path ? out_path : ""); + // maybe we can extract an output path from input path + if (safe_path == "" && input_path != "") { + int lastindex = static_cast(input_path.find_last_of(".")); + return (lastindex > -1 ? input_path.substr(0, lastindex) : input_path) + ".css"; + } + // enforce some safe defaults + // used to create relative file links + return safe_path == "" ? "stdout" : safe_path; + } + + Context::Context(struct Sass_Context& c_ctx) + : CWD(File::get_cwd()), + c_options(c_ctx), + entry_path(""), + head_imports(0), + plugins(), + emitter(c_options), + + ast_gc(), + strings(), + resources(), + sheets(), + subset_map(), + import_stack(), + callee_stack(), + traces(), + c_compiler(NULL), + + c_headers (std::vector()), + c_importers (std::vector()), + c_functions (std::vector()), + + indent (safe_str(c_options.indent, " ")), + linefeed (safe_str(c_options.linefeed, "\n")), + + input_path (make_canonical_path(safe_input(c_options.input_path))), + output_path (make_canonical_path(safe_output(c_options.output_path, input_path))), + source_map_file (make_canonical_path(safe_str(c_options.source_map_file, ""))), + source_map_root (make_canonical_path(safe_str(c_options.source_map_root, ""))) + + { + + // Sass 3.4: The current working directory will no longer be placed onto the Sass load path by default. + // If you need the current working directory to be available, set SASS_PATH=. in your shell's environment. + // include_paths.push_back(CWD); + + // collect more paths from different options + collect_include_paths(c_options.include_path); + collect_include_paths(c_options.include_paths); + collect_plugin_paths(c_options.plugin_path); + collect_plugin_paths(c_options.plugin_paths); + + // load plugins and register custom behaviors + for(auto plug : plugin_paths) plugins.load_plugins(plug); + for(auto fn : plugins.get_headers()) c_headers.push_back(fn); + for(auto fn : plugins.get_importers()) c_importers.push_back(fn); + for(auto fn : plugins.get_functions()) c_functions.push_back(fn); + + // sort the items by priority (lowest first) + sort (c_headers.begin(), c_headers.end(), sort_importers); + sort (c_importers.begin(), c_importers.end(), sort_importers); + + emitter.set_filename(abs2rel(output_path, source_map_file, CWD)); + + } + + void Context::add_c_function(Sass_Function_Entry function) + { + c_functions.push_back(function); + } + void Context::add_c_header(Sass_Importer_Entry header) + { + c_headers.push_back(header); + // need to sort the array afterwards (no big deal) + sort (c_headers.begin(), c_headers.end(), sort_importers); + } + void Context::add_c_importer(Sass_Importer_Entry importer) + { + c_importers.push_back(importer); + // need to sort the array afterwards (no big deal) + sort (c_importers.begin(), c_importers.end(), sort_importers); + } + + Context::~Context() + { + // resources were allocated by malloc + for (size_t i = 0; i < resources.size(); ++i) { + free(resources[i].contents); + free(resources[i].srcmap); + } + // free all strings we kept alive during compiler execution + for (size_t n = 0; n < strings.size(); ++n) free(strings[n]); + // everything that gets put into sources will be freed by us + // this shouldn't have anything in it anyway!? + for (size_t m = 0; m < import_stack.size(); ++m) { + sass_import_take_source(import_stack[m]); + sass_import_take_srcmap(import_stack[m]); + sass_delete_import(import_stack[m]); + } + // clear inner structures (vectors) and input source + resources.clear(); import_stack.clear(); + subset_map.clear(), sheets.clear(); + } + + Data_Context::~Data_Context() + { + // --> this will be freed by resources + // make sure we free the source even if not processed! + // if (resources.size() == 0 && source_c_str) free(source_c_str); + // if (resources.size() == 0 && srcmap_c_str) free(srcmap_c_str); + // source_c_str = 0; srcmap_c_str = 0; + } + + File_Context::~File_Context() + { + } + + void Context::collect_include_paths(const char* paths_str) + { + if (paths_str) { + const char* beg = paths_str; + const char* end = Prelexer::find_first(beg); + + while (end) { + std::string path(beg, end - beg); + if (!path.empty()) { + if (*path.rbegin() != '/') path += '/'; + include_paths.push_back(path); + } + beg = end + 1; + end = Prelexer::find_first(beg); + } + + std::string path(beg); + if (!path.empty()) { + if (*path.rbegin() != '/') path += '/'; + include_paths.push_back(path); + } + } + } + + void Context::collect_include_paths(string_list* paths_array) + { + while (paths_array) + { + collect_include_paths(paths_array->string); + paths_array = paths_array->next; + } + } + + void Context::collect_plugin_paths(const char* paths_str) + { + if (paths_str) { + const char* beg = paths_str; + const char* end = Prelexer::find_first(beg); + + while (end) { + std::string path(beg, end - beg); + if (!path.empty()) { + if (*path.rbegin() != '/') path += '/'; + plugin_paths.push_back(path); + } + beg = end + 1; + end = Prelexer::find_first(beg); + } + + std::string path(beg); + if (!path.empty()) { + if (*path.rbegin() != '/') path += '/'; + plugin_paths.push_back(path); + } + } + } + + void Context::collect_plugin_paths(string_list* paths_array) + { + while (paths_array) + { + collect_plugin_paths(paths_array->string); + paths_array = paths_array->next; + } + } + + // resolve the imp_path in base_path or include_paths + // looks for alternatives and returns a list from one directory + std::vector Context::find_includes(const Importer& import) + { + // make sure we resolve against an absolute path + std::string base_path(rel2abs(import.base_path)); + // first try to resolve the load path relative to the base path + std::vector vec(resolve_includes(base_path, import.imp_path)); + // then search in every include path (but only if nothing found yet) + for (size_t i = 0, S = include_paths.size(); vec.size() == 0 && i < S; ++i) + { + // call resolve_includes and individual base path and append all results + std::vector resolved(resolve_includes(include_paths[i], import.imp_path)); + if (resolved.size()) vec.insert(vec.end(), resolved.begin(), resolved.end()); + } + // return vector + return vec; + } + + // register include with resolved path and its content + // memory of the resources will be freed by us on exit + void Context::register_resource(const Include& inc, const Resource& res) + { + + // do not parse same resource twice + // maybe raise an error in this case + // if (sheets.count(inc.abs_path)) { + // free(res.contents); free(res.srcmap); + // throw std::runtime_error("duplicate resource registered"); + // return; + // } + + // get index for this resource + size_t idx = resources.size(); + + // tell emitter about new resource + emitter.add_source_index(idx); + + // put resources under our control + // the memory will be freed later + resources.push_back(res); + + // add a relative link to the working directory + included_files.push_back(inc.abs_path); + // add a relative link to the source map output file + srcmap_links.push_back(abs2rel(inc.abs_path, source_map_file, CWD)); + + // get pointer to the loaded content + Sass_Import_Entry import = sass_make_import( + inc.imp_path.c_str(), + inc.abs_path.c_str(), + res.contents, + res.srcmap + ); + // add the entry to the stack + import_stack.push_back(import); + + // get pointer to the loaded content + const char* contents = resources[idx].contents; + // keep a copy of the path around (for parserstates) + // ToDo: we clean it, but still not very elegant!? + strings.push_back(sass_copy_c_string(inc.abs_path.c_str())); + // create the initial parser state from resource + ParserState pstate(strings.back(), contents, idx); + + // check existing import stack for possible recursion + for (size_t i = 0; i < import_stack.size() - 2; ++i) { + auto parent = import_stack[i]; + if (std::strcmp(parent->abs_path, import->abs_path) == 0) { + std::string cwd(File::get_cwd()); + // make path relative to the current directory + std::string stack("An @import loop has been found:"); + for (size_t n = 1; n < i + 2; ++n) { + stack += "\n " + std::string(File::abs2rel(import_stack[n]->abs_path, cwd, cwd)) + + " imports " + std::string(File::abs2rel(import_stack[n+1]->abs_path, cwd, cwd)); + } + // implement error throw directly until we + // decided how to handle full stack traces + throw Exception::InvalidSyntax(pstate, traces, stack); + // error(stack, prstate ? *prstate : pstate, import_stack); + } + } + + // create a parser instance from the given c_str buffer + Parser p(Parser::from_c_str(contents, *this, traces, pstate)); + // do not yet dispose these buffers + sass_import_take_source(import); + sass_import_take_srcmap(import); + // then parse the root block + Block_Obj root = p.parse(); + // delete memory of current stack frame + sass_delete_import(import_stack.back()); + // remove current stack frame + import_stack.pop_back(); + // create key/value pair for ast node + std::pair + ast_pair(inc.abs_path, { res, root }); + // register resulting resource + sheets.insert(ast_pair); + } + + // register include with resolved path and its content + // memory of the resources will be freed by us on exit + void Context::register_resource(const Include& inc, const Resource& res, ParserState& prstate) + { + traces.push_back(Backtrace(prstate)); + register_resource(inc, res); + traces.pop_back(); + } + + // Add a new import to the context (called from `import_url`) + Include Context::load_import(const Importer& imp, ParserState pstate) + { + + // search for valid imports (ie. partials) on the filesystem + // this may return more than one valid result (ambiguous imp_path) + const std::vector resolved(find_includes(imp)); + + // error nicely on ambiguous imp_path + if (resolved.size() > 1) { + std::stringstream msg_stream; + msg_stream << "It's not clear which file to import for "; + msg_stream << "'@import \"" << imp.imp_path << "\"'." << "\n"; + msg_stream << "Candidates:" << "\n"; + for (size_t i = 0, L = resolved.size(); i < L; ++i) + { msg_stream << " " << resolved[i].imp_path << "\n"; } + msg_stream << "Please delete or rename all but one of these files." << "\n"; + error(msg_stream.str(), pstate, traces); + } + + // process the resolved entry + else if (resolved.size() == 1) { + bool use_cache = c_importers.size() == 0; + // use cache for the resource loading + if (use_cache && sheets.count(resolved[0].abs_path)) return resolved[0]; + // try to read the content of the resolved file entry + // the memory buffer returned must be freed by us! + if (char* contents = read_file(resolved[0].abs_path)) { + // register the newly resolved file resource + register_resource(resolved[0], { contents, 0 }, pstate); + // return resolved entry + return resolved[0]; + } + } + + // nothing found + return { imp, "" }; + + } + + void Context::import_url (Import_Ptr imp, std::string load_path, const std::string& ctx_path) { + + ParserState pstate(imp->pstate()); + std::string imp_path(unquote(load_path)); + std::string protocol("file"); + + using namespace Prelexer; + if (const char* proto = sequence< identifier, exactly<':'>, exactly<'/'>, exactly<'/'> >(imp_path.c_str())) { + + protocol = std::string(imp_path.c_str(), proto - 3); + // if (protocol.compare("file") && true) { } + } + + // add urls (protocol other than file) and urls without procotol to `urls` member + // ToDo: if ctx_path is already a file resource, we should not add it here? + if (imp->import_queries() || protocol != "file" || imp_path.substr(0, 2) == "//") { + imp->urls().push_back(SASS_MEMORY_NEW(String_Quoted, imp->pstate(), load_path)); + } + else if (imp_path.length() > 4 && imp_path.substr(imp_path.length() - 4, 4) == ".css") { + String_Constant_Ptr loc = SASS_MEMORY_NEW(String_Constant, pstate, unquote(load_path)); + Argument_Obj loc_arg = SASS_MEMORY_NEW(Argument, pstate, loc); + Arguments_Obj loc_args = SASS_MEMORY_NEW(Arguments, pstate); + loc_args->append(loc_arg); + Function_Call_Ptr new_url = SASS_MEMORY_NEW(Function_Call, pstate, "url", loc_args); + imp->urls().push_back(new_url); + } + else { + const Importer importer(imp_path, ctx_path); + Include include(load_import(importer, pstate)); + if (include.abs_path.empty()) { + error("File to import not found or unreadable: " + imp_path + ".", pstate, traces); + } + imp->incs().push_back(include); + } + + } + + + // call custom importers on the given (unquoted) load_path and eventually parse the resulting style_sheet + bool Context::call_loader(const std::string& load_path, const char* ctx_path, ParserState& pstate, Import_Ptr imp, std::vector importers, bool only_one) + { + // unique counter + size_t count = 0; + // need one correct import + bool has_import = false; + // process all custom importers (or custom headers) + for (Sass_Importer_Entry& importer_ent : importers) { + // int priority = sass_importer_get_priority(importer); + Sass_Importer_Fn fn = sass_importer_get_function(importer_ent); + // skip importer if it returns NULL + if (Sass_Import_List includes = + fn(load_path.c_str(), importer_ent, c_compiler) + ) { + // get c pointer copy to iterate over + Sass_Import_List it_includes = includes; + while (*it_includes) { ++count; + // create unique path to use as key + std::string uniq_path = load_path; + if (!only_one && count) { + std::stringstream path_strm; + path_strm << uniq_path << ":" << count; + uniq_path = path_strm.str(); + } + // create the importer struct + Importer importer(uniq_path, ctx_path); + // query data from the current include + Sass_Import_Entry include_ent = *it_includes; + char* source = sass_import_take_source(include_ent); + char* srcmap = sass_import_take_srcmap(include_ent); + size_t line = sass_import_get_error_line(include_ent); + size_t column = sass_import_get_error_column(include_ent); + const char *abs_path = sass_import_get_abs_path(include_ent); + // handle error message passed back from custom importer + // it may (or may not) override the line and column info + if (const char* err_message = sass_import_get_error_message(include_ent)) { + if (source || srcmap) register_resource({ importer, uniq_path }, { source, srcmap }, pstate); + if (line == std::string::npos && column == std::string::npos) error(err_message, pstate, traces); + else error(err_message, ParserState(ctx_path, source, Position(line, column)), traces); + } + // content for import was set + else if (source) { + // resolved abs_path should be set by custom importer + // use the created uniq_path as fallback (maybe enforce) + std::string path_key(abs_path ? abs_path : uniq_path); + // create the importer struct + Include include(importer, path_key); + // attach information to AST node + imp->incs().push_back(include); + // register the resource buffers + register_resource(include, { source, srcmap }, pstate); + } + // only a path was retuned + // try to load it like normal + else if(abs_path) { + // checks some urls to preserve + // `http://`, `https://` and `//` + // or dispatchs to `import_file` + // which will check for a `.css` extension + // or resolves the file on the filesystem + // added and resolved via `add_file` + // finally stores everything on `imp` + import_url(imp, abs_path, ctx_path); + } + // move to next + ++it_includes; + } + // deallocate the returned memory + sass_delete_import_list(includes); + // set success flag + has_import = true; + // break out of loop + if (only_one) break; + } + } + // return result + return has_import; + } + + void register_function(Context&, Signature sig, Native_Function f, Env* env); + void register_function(Context&, Signature sig, Native_Function f, size_t arity, Env* env); + void register_overload_stub(Context&, std::string name, Env* env); + void register_built_in_functions(Context&, Env* env); + void register_c_functions(Context&, Env* env, Sass_Function_List); + void register_c_function(Context&, Env* env, Sass_Function_Entry); + + char* Context::render(Block_Obj root) + { + // check for valid block + if (!root) return 0; + // start the render process + root->perform(&emitter); + // finish emitter stream + emitter.finalize(); + // get the resulting buffer from stream + OutputBuffer emitted = emitter.get_buffer(); + // should we append a source map url? + if (!c_options.omit_source_map_url) { + // generate an embeded source map + if (c_options.source_map_embed) { + emitted.buffer += linefeed; + emitted.buffer += format_embedded_source_map(); + } + // or just link the generated one + else if (source_map_file != "") { + emitted.buffer += linefeed; + emitted.buffer += format_source_mapping_url(source_map_file); + } + } + // create a copy of the resulting buffer string + // this must be freed or taken over by implementor + return sass_copy_c_string(emitted.buffer.c_str()); + } + + void Context::apply_custom_headers(Block_Obj root, const char* ctx_path, ParserState pstate) + { + // create a custom import to resolve headers + Import_Obj imp = SASS_MEMORY_NEW(Import, pstate); + // dispatch headers which will add custom functions + // custom headers are added to the import instance + call_headers(entry_path, ctx_path, pstate, imp); + // increase head count to skip later + head_imports += resources.size() - 1; + // add the statement if we have urls + if (!imp->urls().empty()) root->append(imp); + // process all other resources (add Import_Stub nodes) + for (size_t i = 0, S = imp->incs().size(); i < S; ++i) { + root->append(SASS_MEMORY_NEW(Import_Stub, pstate, imp->incs()[i])); + } + } + + Block_Obj File_Context::parse() + { + + // check if entry file is given + if (input_path.empty()) return 0; + + // create absolute path from input filename + // ToDo: this should be resolved via custom importers + std::string abs_path(rel2abs(input_path, CWD)); + + // try to load the entry file + char* contents = read_file(abs_path); + + // alternatively also look inside each include path folder + // I think this differs from ruby sass (IMO too late to remove) + for (size_t i = 0, S = include_paths.size(); contents == 0 && i < S; ++i) { + // build absolute path for this include path entry + abs_path = rel2abs(input_path, include_paths[i]); + // try to load the resulting path + contents = read_file(abs_path); + } + + // abort early if no content could be loaded (various reasons) + if (!contents) throw std::runtime_error("File to read not found or unreadable: " + input_path); + + // store entry path + entry_path = abs_path; + + // create entry only for import stack + Sass_Import_Entry import = sass_make_import( + input_path.c_str(), + entry_path.c_str(), + contents, + 0 + ); + // add the entry to the stack + import_stack.push_back(import); + + // create the source entry for file entry + register_resource({{ input_path, "." }, abs_path }, { contents, 0 }); + + // create root ast tree node + return compile(); + + } + + Block_Obj Data_Context::parse() + { + + // check if source string is given + if (!source_c_str) return 0; + + // convert indented sass syntax + if(c_options.is_indented_syntax_src) { + // call sass2scss to convert the string + char * converted = sass2scss(source_c_str, + // preserve the structure as much as possible + SASS2SCSS_PRETTIFY_1 | SASS2SCSS_KEEP_COMMENT); + // replace old source_c_str with converted + free(source_c_str); source_c_str = converted; + } + + // remember entry path (defaults to stdin for string) + entry_path = input_path.empty() ? "stdin" : input_path; + + // ToDo: this may be resolved via custom importers + std::string abs_path(rel2abs(entry_path)); + char* abs_path_c_str = sass_copy_c_string(abs_path.c_str()); + strings.push_back(abs_path_c_str); + + // create entry only for the import stack + Sass_Import_Entry import = sass_make_import( + entry_path.c_str(), + abs_path_c_str, + source_c_str, + srcmap_c_str + ); + // add the entry to the stack + import_stack.push_back(import); + + // register a synthetic resource (path does not really exist, skip in includes) + register_resource({{ input_path, "." }, input_path }, { source_c_str, srcmap_c_str }); + + // create root ast tree node + return compile(); + } + + + + // parse root block from includes + Block_Obj Context::compile() + { + // abort if there is no data + if (resources.size() == 0) return 0; + // get root block from the first style sheet + Block_Obj root = sheets.at(entry_path).root; + // abort on invalid root + if (root.isNull()) return 0; + Env global; // create root environment + // register built-in functions on env + register_built_in_functions(*this, &global); + // register custom functions (defined via C-API) + for (size_t i = 0, S = c_functions.size(); i < S; ++i) + { register_c_function(*this, &global, c_functions[i]); } + // create initial backtrace entry + // create crtp visitor objects + Expand expand(*this, &global); + Cssize cssize(*this); + CheckNesting check_nesting; + // check nesting in all files + for (auto sheet : sheets) { + auto styles = sheet.second; + check_nesting(styles.root); + } + // expand and eval the tree + root = expand(root); + // check nesting + check_nesting(root); + // merge and bubble certain rules + root = cssize(root); + // should we extend something? + if (!subset_map.empty()) { + // create crtp visitor object + Extend extend(subset_map); + extend.setEval(expand.eval); + // extend tree nodes + extend(root); + } + + // clean up by removing empty placeholders + // ToDo: maybe we can do this somewhere else? + Remove_Placeholders remove_placeholders; + root->perform(&remove_placeholders); + // return processed tree + return root; + } + // EO compile + + std::string Context::format_embedded_source_map() + { + std::string map = emitter.render_srcmap(*this); + std::istringstream is( map ); + std::ostringstream buffer; + base64::encoder E; + E.encode(is, buffer); + std::string url = "data:application/json;base64," + buffer.str(); + url.erase(url.size() - 1); + return "/*# sourceMappingURL=" + url + " */"; + } + + std::string Context::format_source_mapping_url(const std::string& file) + { + std::string url = abs2rel(file, output_path, CWD); + return "/*# sourceMappingURL=" + url + " */"; + } + + char* Context::render_srcmap() + { + if (source_map_file == "") return 0; + std::string map = emitter.render_srcmap(*this); + return sass_copy_c_string(map.c_str()); + } + + + // for data context we want to start after "stdin" + // we probably always want to skip the header includes? + std::vector Context::get_included_files(bool skip, size_t headers) + { + // create a copy of the vector for manipulations + std::vector includes = included_files; + if (includes.size() == 0) return includes; + if (skip) { includes.erase( includes.begin(), includes.begin() + 1 + headers); } + else { includes.erase( includes.begin() + 1, includes.begin() + 1 + headers); } + includes.erase( std::unique( includes.begin(), includes.end() ), includes.end() ); + std::sort( includes.begin() + (skip ? 0 : 1), includes.end() ); + return includes; + } + + void register_function(Context& ctx, Signature sig, Native_Function f, Env* env) + { + Definition_Ptr def = make_native_function(sig, f, ctx); + def->environment(env); + (*env)[def->name() + "[f]"] = def; + } + + void register_function(Context& ctx, Signature sig, Native_Function f, size_t arity, Env* env) + { + Definition_Ptr def = make_native_function(sig, f, ctx); + std::stringstream ss; + ss << def->name() << "[f]" << arity; + def->environment(env); + (*env)[ss.str()] = def; + } + + void register_overload_stub(Context& ctx, std::string name, Env* env) + { + Definition_Ptr stub = SASS_MEMORY_NEW(Definition, + ParserState("[built-in function]"), + 0, + name, + 0, + 0, + true); + (*env)[name + "[f]"] = stub; + } + + + void register_built_in_functions(Context& ctx, Env* env) + { + using namespace Functions; + // RGB Functions + register_function(ctx, rgb_sig, rgb, env); + register_overload_stub(ctx, "rgba", env); + register_function(ctx, rgba_4_sig, rgba_4, 4, env); + register_function(ctx, rgba_2_sig, rgba_2, 2, env); + register_function(ctx, red_sig, red, env); + register_function(ctx, green_sig, green, env); + register_function(ctx, blue_sig, blue, env); + register_function(ctx, mix_sig, mix, env); + // HSL Functions + register_function(ctx, hsl_sig, hsl, env); + register_function(ctx, hsla_sig, hsla, env); + register_function(ctx, hue_sig, hue, env); + register_function(ctx, saturation_sig, saturation, env); + register_function(ctx, lightness_sig, lightness, env); + register_function(ctx, adjust_hue_sig, adjust_hue, env); + register_function(ctx, lighten_sig, lighten, env); + register_function(ctx, darken_sig, darken, env); + register_function(ctx, saturate_sig, saturate, env); + register_function(ctx, desaturate_sig, desaturate, env); + register_function(ctx, grayscale_sig, grayscale, env); + register_function(ctx, complement_sig, complement, env); + register_function(ctx, invert_sig, invert, env); + // Opacity Functions + register_function(ctx, alpha_sig, alpha, env); + register_function(ctx, opacity_sig, alpha, env); + register_function(ctx, opacify_sig, opacify, env); + register_function(ctx, fade_in_sig, opacify, env); + register_function(ctx, transparentize_sig, transparentize, env); + register_function(ctx, fade_out_sig, transparentize, env); + // Other Color Functions + register_function(ctx, adjust_color_sig, adjust_color, env); + register_function(ctx, scale_color_sig, scale_color, env); + register_function(ctx, change_color_sig, change_color, env); + register_function(ctx, ie_hex_str_sig, ie_hex_str, env); + // String Functions + register_function(ctx, unquote_sig, sass_unquote, env); + register_function(ctx, quote_sig, sass_quote, env); + register_function(ctx, str_length_sig, str_length, env); + register_function(ctx, str_insert_sig, str_insert, env); + register_function(ctx, str_index_sig, str_index, env); + register_function(ctx, str_slice_sig, str_slice, env); + register_function(ctx, to_upper_case_sig, to_upper_case, env); + register_function(ctx, to_lower_case_sig, to_lower_case, env); + // Number Functions + register_function(ctx, percentage_sig, percentage, env); + register_function(ctx, round_sig, round, env); + register_function(ctx, ceil_sig, ceil, env); + register_function(ctx, floor_sig, floor, env); + register_function(ctx, abs_sig, abs, env); + register_function(ctx, min_sig, min, env); + register_function(ctx, max_sig, max, env); + register_function(ctx, random_sig, random, env); + // List Functions + register_function(ctx, length_sig, length, env); + register_function(ctx, nth_sig, nth, env); + register_function(ctx, set_nth_sig, set_nth, env); + register_function(ctx, index_sig, index, env); + register_function(ctx, join_sig, join, env); + register_function(ctx, append_sig, append, env); + register_function(ctx, zip_sig, zip, env); + register_function(ctx, list_separator_sig, list_separator, env); + register_function(ctx, is_bracketed_sig, is_bracketed, env); + // Map Functions + register_function(ctx, map_get_sig, map_get, env); + register_function(ctx, map_merge_sig, map_merge, env); + register_function(ctx, map_remove_sig, map_remove, env); + register_function(ctx, map_keys_sig, map_keys, env); + register_function(ctx, map_values_sig, map_values, env); + register_function(ctx, map_has_key_sig, map_has_key, env); + register_function(ctx, keywords_sig, keywords, env); + // Introspection Functions + register_function(ctx, type_of_sig, type_of, env); + register_function(ctx, unit_sig, unit, env); + register_function(ctx, unitless_sig, unitless, env); + register_function(ctx, comparable_sig, comparable, env); + register_function(ctx, variable_exists_sig, variable_exists, env); + register_function(ctx, global_variable_exists_sig, global_variable_exists, env); + register_function(ctx, function_exists_sig, function_exists, env); + register_function(ctx, mixin_exists_sig, mixin_exists, env); + register_function(ctx, feature_exists_sig, feature_exists, env); + register_function(ctx, call_sig, call, env); + register_function(ctx, content_exists_sig, content_exists, env); + register_function(ctx, get_function_sig, get_function, env); + // Boolean Functions + register_function(ctx, not_sig, sass_not, env); + register_function(ctx, if_sig, sass_if, env); + // Misc Functions + register_function(ctx, inspect_sig, inspect, env); + register_function(ctx, unique_id_sig, unique_id, env); + // Selector functions + register_function(ctx, selector_nest_sig, selector_nest, env); + register_function(ctx, selector_append_sig, selector_append, env); + register_function(ctx, selector_extend_sig, selector_extend, env); + register_function(ctx, selector_replace_sig, selector_replace, env); + register_function(ctx, selector_unify_sig, selector_unify, env); + register_function(ctx, is_superselector_sig, is_superselector, env); + register_function(ctx, simple_selectors_sig, simple_selectors, env); + register_function(ctx, selector_parse_sig, selector_parse, env); + } + + void register_c_functions(Context& ctx, Env* env, Sass_Function_List descrs) + { + while (descrs && *descrs) { + register_c_function(ctx, env, *descrs); + ++descrs; + } + } + void register_c_function(Context& ctx, Env* env, Sass_Function_Entry descr) + { + Definition_Ptr def = make_c_function(descr, ctx); + def->environment(env); + (*env)[def->name() + "[f]"] = def; + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/context.hpp b/mybulma/node_modules/node-sass/src/libsass/src/context.hpp new file mode 100644 index 0000000..d3caba1 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/context.hpp @@ -0,0 +1,152 @@ +#ifndef SASS_CONTEXT_H +#define SASS_CONTEXT_H + +#include +#include +#include + +#define BUFFERSIZE 255 +#include "b64/encode.h" + +#include "ast_fwd_decl.hpp" +#include "kwd_arg_macros.hpp" +#include "ast_fwd_decl.hpp" +#include "sass_context.hpp" +#include "environment.hpp" +#include "source_map.hpp" +#include "subset_map.hpp" +#include "backtrace.hpp" +#include "output.hpp" +#include "plugins.hpp" +#include "file.hpp" + + +struct Sass_Function; + +namespace Sass { + + class Context { + public: + void import_url (Import_Ptr imp, std::string load_path, const std::string& ctx_path); + bool call_headers(const std::string& load_path, const char* ctx_path, ParserState& pstate, Import_Ptr imp) + { return call_loader(load_path, ctx_path, pstate, imp, c_headers, false); }; + bool call_importers(const std::string& load_path, const char* ctx_path, ParserState& pstate, Import_Ptr imp) + { return call_loader(load_path, ctx_path, pstate, imp, c_importers, true); }; + + private: + bool call_loader(const std::string& load_path, const char* ctx_path, ParserState& pstate, Import_Ptr imp, std::vector importers, bool only_one = true); + + public: + const std::string CWD; + struct Sass_Options& c_options; + std::string entry_path; + size_t head_imports; + Plugins plugins; + Output emitter; + + // generic ast node garbage container + // used to avoid possible circular refs + std::vector ast_gc; + // resources add under our control + // these are guaranteed to be freed + std::vector strings; + std::vector resources; + std::map sheets; + Subset_Map subset_map; + std::vector import_stack; + std::vector callee_stack; + std::vector traces; + + struct Sass_Compiler* c_compiler; + + // absolute paths to includes + std::vector included_files; + // relative includes for sourcemap + std::vector srcmap_links; + // vectors above have same size + + std::vector plugin_paths; // relative paths to load plugins + std::vector include_paths; // lookup paths for includes + + + + + + void apply_custom_headers(Block_Obj root, const char* path, ParserState pstate); + + std::vector c_headers; + std::vector c_importers; + std::vector c_functions; + + void add_c_header(Sass_Importer_Entry header); + void add_c_importer(Sass_Importer_Entry importer); + void add_c_function(Sass_Function_Entry function); + + const std::string indent; // String to be used for indentation + const std::string linefeed; // String to be used for line feeds + const std::string input_path; // for relative paths in src-map + const std::string output_path; // for relative paths to the output + const std::string source_map_file; // path to source map file (enables feature) + const std::string source_map_root; // path for sourceRoot property (pass-through) + + virtual ~Context(); + Context(struct Sass_Context&); + virtual Block_Obj parse() = 0; + virtual Block_Obj compile(); + virtual char* render(Block_Obj root); + virtual char* render_srcmap(); + + void register_resource(const Include&, const Resource&); + void register_resource(const Include&, const Resource&, ParserState&); + std::vector find_includes(const Importer& import); + Include load_import(const Importer&, ParserState pstate); + + Sass_Output_Style output_style() { return c_options.output_style; }; + std::vector get_included_files(bool skip = false, size_t headers = 0); + + private: + void collect_plugin_paths(const char* paths_str); + void collect_plugin_paths(string_list* paths_array); + void collect_include_paths(const char* paths_str); + void collect_include_paths(string_list* paths_array); + std::string format_embedded_source_map(); + std::string format_source_mapping_url(const std::string& out_path); + + + // void register_built_in_functions(Env* env); + // void register_function(Signature sig, Native_Function f, Env* env); + // void register_function(Signature sig, Native_Function f, size_t arity, Env* env); + // void register_overload_stub(std::string name, Env* env); + + public: + const std::string& cwd() { return CWD; }; + }; + + class File_Context : public Context { + public: + File_Context(struct Sass_File_Context& ctx) + : Context(ctx) + { } + virtual ~File_Context(); + virtual Block_Obj parse(); + }; + + class Data_Context : public Context { + public: + char* source_c_str; + char* srcmap_c_str; + Data_Context(struct Sass_Data_Context& ctx) + : Context(ctx) + { + source_c_str = ctx.source_string; + srcmap_c_str = ctx.srcmap_string; + ctx.source_string = 0; // passed away + ctx.srcmap_string = 0; // passed away + } + virtual ~Data_Context(); + virtual Block_Obj parse(); + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/cssize.cpp b/mybulma/node_modules/node-sass/src/libsass/src/cssize.cpp new file mode 100644 index 0000000..6a12fdf --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/cssize.cpp @@ -0,0 +1,606 @@ +#include "sass.hpp" +#include +#include +#include + +#include "cssize.hpp" +#include "context.hpp" + +namespace Sass { + + Cssize::Cssize(Context& ctx) + : ctx(ctx), + traces(ctx.traces), + block_stack(std::vector()), + p_stack(std::vector()) + { } + + Statement_Ptr Cssize::parent() + { + return p_stack.size() ? p_stack.back() : block_stack.front(); + } + + Block_Ptr Cssize::operator()(Block_Ptr b) + { + Block_Obj bb = SASS_MEMORY_NEW(Block, b->pstate(), b->length(), b->is_root()); + // bb->tabs(b->tabs()); + block_stack.push_back(bb); + append_block(b, bb); + block_stack.pop_back(); + return bb.detach(); + } + + Statement_Ptr Cssize::operator()(Trace_Ptr t) + { + traces.push_back(Backtrace(t->pstate())); + auto result = t->block()->perform(this); + traces.pop_back(); + return result; + } + + Statement_Ptr Cssize::operator()(Declaration_Ptr d) + { + String_Obj property = Cast(d->property()); + + if (Declaration_Ptr dd = Cast(parent())) { + String_Obj parent_property = Cast(dd->property()); + property = SASS_MEMORY_NEW(String_Constant, + d->property()->pstate(), + parent_property->to_string() + "-" + property->to_string()); + if (!dd->value()) { + d->tabs(dd->tabs() + 1); + } + } + + Declaration_Obj dd = SASS_MEMORY_NEW(Declaration, + d->pstate(), + property, + d->value(), + d->is_important(), + d->is_custom_property()); + dd->is_indented(d->is_indented()); + dd->tabs(d->tabs()); + + p_stack.push_back(dd); + Block_Obj bb = d->block() ? operator()(d->block()) : NULL; + p_stack.pop_back(); + + if (bb && bb->length()) { + if (dd->value() && !dd->value()->is_invisible()) { + bb->unshift(dd); + } + return bb.detach(); + } + else if (dd->value() && !dd->value()->is_invisible()) { + return dd.detach(); + } + + return 0; + } + + Statement_Ptr Cssize::operator()(Directive_Ptr r) + { + if (!r->block() || !r->block()->length()) return r; + + if (parent()->statement_type() == Statement::RULESET) + { + return (r->is_keyframes()) ? SASS_MEMORY_NEW(Bubble, r->pstate(), r) : bubble(r); + } + + p_stack.push_back(r); + Directive_Obj rr = SASS_MEMORY_NEW(Directive, + r->pstate(), + r->keyword(), + r->selector(), + r->block() ? operator()(r->block()) : 0); + if (r->value()) rr->value(r->value()); + p_stack.pop_back(); + + bool directive_exists = false; + size_t L = rr->block() ? rr->block()->length() : 0; + for (size_t i = 0; i < L && !directive_exists; ++i) { + Statement_Obj s = r->block()->at(i); + if (s->statement_type() != Statement::BUBBLE) directive_exists = true; + else { + Bubble_Obj s_obj = Cast(s); + s = s_obj->node(); + if (s->statement_type() != Statement::DIRECTIVE) directive_exists = false; + else directive_exists = (Cast(s)->keyword() == rr->keyword()); + } + + } + + Block_Ptr result = SASS_MEMORY_NEW(Block, rr->pstate()); + if (!(directive_exists || rr->is_keyframes())) + { + Directive_Ptr empty_node = Cast(rr); + empty_node->block(SASS_MEMORY_NEW(Block, rr->block() ? rr->block()->pstate() : rr->pstate())); + result->append(empty_node); + } + + Block_Obj db = rr->block(); + if (db.isNull()) db = SASS_MEMORY_NEW(Block, rr->pstate()); + Block_Obj ss = debubble(db, rr); + for (size_t i = 0, L = ss->length(); i < L; ++i) { + result->append(ss->at(i)); + } + + return result; + } + + Statement_Ptr Cssize::operator()(Keyframe_Rule_Ptr r) + { + if (!r->block() || !r->block()->length()) return r; + + Keyframe_Rule_Obj rr = SASS_MEMORY_NEW(Keyframe_Rule, + r->pstate(), + operator()(r->block())); + if (!r->name().isNull()) rr->name(r->name()); + + return debubble(rr->block(), rr); + } + + Statement_Ptr Cssize::operator()(Ruleset_Ptr r) + { + p_stack.push_back(r); + // this can return a string schema + // string schema is not a statement! + // r->block() is already a string schema + // and that is comming from propset expand + Block_Ptr bb = operator()(r->block()); + // this should protect us (at least a bit) from our mess + // fixing this properly is harder that it should be ... + if (Cast(bb) == NULL) { + error("Illegal nesting: Only properties may be nested beneath properties.", r->block()->pstate(), traces); + } + Ruleset_Obj rr = SASS_MEMORY_NEW(Ruleset, + r->pstate(), + r->selector(), + bb); + + rr->is_root(r->is_root()); + // rr->tabs(r->block()->tabs()); + p_stack.pop_back(); + + if (!rr->block()) { + error("Illegal nesting: Only properties may be nested beneath properties.", r->block()->pstate(), traces); + } + + Block_Obj props = SASS_MEMORY_NEW(Block, rr->block()->pstate()); + Block_Ptr rules = SASS_MEMORY_NEW(Block, rr->block()->pstate()); + for (size_t i = 0, L = rr->block()->length(); i < L; i++) + { + Statement_Ptr s = rr->block()->at(i); + if (bubblable(s)) rules->append(s); + if (!bubblable(s)) props->append(s); + } + + if (props->length()) + { + Block_Obj pb = SASS_MEMORY_NEW(Block, rr->block()->pstate()); + pb->concat(props); + rr->block(pb); + + for (size_t i = 0, L = rules->length(); i < L; i++) + { + Statement_Ptr stm = rules->at(i); + stm->tabs(stm->tabs() + 1); + } + + rules->unshift(rr); + } + + Block_Ptr ptr = rules; + rules = debubble(rules); + void* lp = ptr; + void* rp = rules; + if (lp != rp) { + Block_Obj obj = ptr; + } + + if (!(!rules->length() || + !bubblable(rules->last()) || + parent()->statement_type() == Statement::RULESET)) + { + rules->last()->group_end(true); + } + return rules; + } + + Statement_Ptr Cssize::operator()(Null_Ptr m) + { + return 0; + } + + Statement_Ptr Cssize::operator()(Media_Block_Ptr m) + { + if (parent()->statement_type() == Statement::RULESET) + { return bubble(m); } + + if (parent()->statement_type() == Statement::MEDIA) + { return SASS_MEMORY_NEW(Bubble, m->pstate(), m); } + + p_stack.push_back(m); + + Media_Block_Obj mm = SASS_MEMORY_NEW(Media_Block, + m->pstate(), + m->media_queries(), + operator()(m->block())); + mm->tabs(m->tabs()); + + p_stack.pop_back(); + + return debubble(mm->block(), mm); + } + + Statement_Ptr Cssize::operator()(Supports_Block_Ptr m) + { + if (!m->block()->length()) + { return m; } + + if (parent()->statement_type() == Statement::RULESET) + { return bubble(m); } + + p_stack.push_back(m); + + Supports_Block_Obj mm = SASS_MEMORY_NEW(Supports_Block, + m->pstate(), + m->condition(), + operator()(m->block())); + mm->tabs(m->tabs()); + + p_stack.pop_back(); + + return debubble(mm->block(), mm); + } + + Statement_Ptr Cssize::operator()(At_Root_Block_Ptr m) + { + bool tmp = false; + for (size_t i = 0, L = p_stack.size(); i < L; ++i) { + Statement_Ptr s = p_stack[i]; + tmp |= m->exclude_node(s); + } + + if (!tmp && m->block()) + { + Block_Ptr bb = operator()(m->block()); + for (size_t i = 0, L = bb->length(); i < L; ++i) { + // (bb->elements())[i]->tabs(m->tabs()); + Statement_Obj stm = bb->at(i); + if (bubblable(stm)) stm->tabs(stm->tabs() + m->tabs()); + } + if (bb->length() && bubblable(bb->last())) bb->last()->group_end(m->group_end()); + return bb; + } + + if (m->exclude_node(parent())) + { + return SASS_MEMORY_NEW(Bubble, m->pstate(), m); + } + + return bubble(m); + } + + Statement_Ptr Cssize::bubble(Directive_Ptr m) + { + Block_Ptr bb = SASS_MEMORY_NEW(Block, this->parent()->pstate()); + Has_Block_Obj new_rule = Cast(SASS_MEMORY_COPY(this->parent())); + new_rule->block(bb); + new_rule->tabs(this->parent()->tabs()); + new_rule->block()->concat(m->block()); + + Block_Obj wrapper_block = SASS_MEMORY_NEW(Block, m->block() ? m->block()->pstate() : m->pstate()); + wrapper_block->append(new_rule); + Directive_Obj mm = SASS_MEMORY_NEW(Directive, + m->pstate(), + m->keyword(), + m->selector(), + wrapper_block); + if (m->value()) mm->value(m->value()); + + Bubble_Ptr bubble = SASS_MEMORY_NEW(Bubble, mm->pstate(), mm); + return bubble; + } + + Statement_Ptr Cssize::bubble(At_Root_Block_Ptr m) + { + if (!m || !m->block()) return NULL; + Block_Ptr bb = SASS_MEMORY_NEW(Block, this->parent()->pstate()); + Has_Block_Obj new_rule = Cast(SASS_MEMORY_COPY(this->parent())); + Block_Ptr wrapper_block = SASS_MEMORY_NEW(Block, m->block()->pstate()); + if (new_rule) { + new_rule->block(bb); + new_rule->tabs(this->parent()->tabs()); + new_rule->block()->concat(m->block()); + wrapper_block->append(new_rule); + } + + At_Root_Block_Ptr mm = SASS_MEMORY_NEW(At_Root_Block, + m->pstate(), + wrapper_block, + m->expression()); + Bubble_Ptr bubble = SASS_MEMORY_NEW(Bubble, mm->pstate(), mm); + return bubble; + } + + Statement_Ptr Cssize::bubble(Supports_Block_Ptr m) + { + Ruleset_Obj parent = Cast(SASS_MEMORY_COPY(this->parent())); + + Block_Ptr bb = SASS_MEMORY_NEW(Block, parent->block()->pstate()); + Ruleset_Ptr new_rule = SASS_MEMORY_NEW(Ruleset, + parent->pstate(), + parent->selector(), + bb); + new_rule->tabs(parent->tabs()); + new_rule->block()->concat(m->block()); + + Block_Ptr wrapper_block = SASS_MEMORY_NEW(Block, m->block()->pstate()); + wrapper_block->append(new_rule); + Supports_Block_Ptr mm = SASS_MEMORY_NEW(Supports_Block, + m->pstate(), + m->condition(), + wrapper_block); + + mm->tabs(m->tabs()); + + Bubble_Ptr bubble = SASS_MEMORY_NEW(Bubble, mm->pstate(), mm); + return bubble; + } + + Statement_Ptr Cssize::bubble(Media_Block_Ptr m) + { + Ruleset_Obj parent = Cast(SASS_MEMORY_COPY(this->parent())); + + Block_Ptr bb = SASS_MEMORY_NEW(Block, parent->block()->pstate()); + Ruleset_Ptr new_rule = SASS_MEMORY_NEW(Ruleset, + parent->pstate(), + parent->selector(), + bb); + new_rule->tabs(parent->tabs()); + new_rule->block()->concat(m->block()); + + Block_Ptr wrapper_block = SASS_MEMORY_NEW(Block, m->block()->pstate()); + wrapper_block->append(new_rule); + Media_Block_Obj mm = SASS_MEMORY_NEW(Media_Block, + m->pstate(), + m->media_queries(), + wrapper_block); + + mm->tabs(m->tabs()); + + return SASS_MEMORY_NEW(Bubble, mm->pstate(), mm); + } + + bool Cssize::bubblable(Statement_Ptr s) + { + return Cast(s) || s->bubbles(); + } + + Block_Ptr Cssize::flatten(Block_Ptr b) + { + Block_Ptr result = SASS_MEMORY_NEW(Block, b->pstate(), 0, b->is_root()); + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Ptr ss = b->at(i); + if (Block_Ptr bb = Cast(ss)) { + Block_Obj bs = flatten(bb); + for (size_t j = 0, K = bs->length(); j < K; ++j) { + result->append(bs->at(j)); + } + } + else { + result->append(ss); + } + } + return result; + } + + std::vector> Cssize::slice_by_bubble(Block_Ptr b) + { + std::vector> results; + + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj value = b->at(i); + bool key = Cast(value) != NULL; + + if (!results.empty() && results.back().first == key) + { + Block_Obj wrapper_block = results.back().second; + wrapper_block->append(value); + } + else + { + Block_Ptr wrapper_block = SASS_MEMORY_NEW(Block, value->pstate()); + wrapper_block->append(value); + results.push_back(std::make_pair(key, wrapper_block)); + } + } + return results; + } + + Block_Ptr Cssize::debubble(Block_Ptr children, Statement_Ptr parent) + { + Has_Block_Obj previous_parent = 0; + std::vector> baz = slice_by_bubble(children); + Block_Obj result = SASS_MEMORY_NEW(Block, children->pstate()); + + for (size_t i = 0, L = baz.size(); i < L; ++i) { + bool is_bubble = baz[i].first; + Block_Obj slice = baz[i].second; + + if (!is_bubble) { + if (!parent) { + result->append(slice); + } + else if (previous_parent) { + previous_parent->block()->concat(slice); + } + else { + previous_parent = Cast(SASS_MEMORY_COPY(parent)); + previous_parent->block(slice); + previous_parent->tabs(parent->tabs()); + + result->append(previous_parent); + } + continue; + } + + for (size_t j = 0, K = slice->length(); j < K; ++j) + { + Statement_Ptr ss; + Statement_Obj stm = slice->at(j); + // this has to go now here (too bad) + Bubble_Obj node = Cast(stm); + Media_Block_Ptr m1 = NULL; + Media_Block_Ptr m2 = NULL; + if (parent) m1 = Cast(parent); + if (node) m2 = Cast(node->node()); + if (!parent || + parent->statement_type() != Statement::MEDIA || + node->node()->statement_type() != Statement::MEDIA || + (m1 && m2 && *m1->media_queries() == *m2->media_queries()) + ) + { + ss = node->node(); + } + else + { + List_Obj mq = merge_media_queries( + Cast(node->node()), + Cast(parent) + ); + if (!mq->length()) continue; + if (Media_Block* b = Cast(node->node())) { + b->media_queries(mq); + } + ss = node->node(); + } + + if (!ss) continue; + + ss->tabs(ss->tabs() + node->tabs()); + ss->group_end(node->group_end()); + + Block_Obj bb = SASS_MEMORY_NEW(Block, + children->pstate(), + children->length(), + children->is_root()); + bb->append(ss->perform(this)); + + Block_Obj wrapper_block = SASS_MEMORY_NEW(Block, + children->pstate(), + children->length(), + children->is_root()); + + Block_Ptr wrapper = flatten(bb); + wrapper_block->append(wrapper); + + if (wrapper->length()) { + previous_parent = NULL; + } + + if (wrapper_block) { + result->append(wrapper_block); + } + } + } + + return flatten(result); + } + + Statement_Ptr Cssize::fallback_impl(AST_Node_Ptr n) + { + return static_cast(n); + } + + void Cssize::append_block(Block_Ptr b, Block_Ptr cur) + { + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj ith = b->at(i)->perform(this); + if (Block_Ptr bb = Cast(ith)) { + for (size_t j = 0, K = bb->length(); j < K; ++j) { + cur->append(bb->at(j)); + } + } + else if (ith) { + cur->append(ith); + } + } + } + + List_Ptr Cssize::merge_media_queries(Media_Block_Ptr m1, Media_Block_Ptr m2) + { + List_Ptr qq = SASS_MEMORY_NEW(List, + m1->media_queries()->pstate(), + m1->media_queries()->length(), + SASS_COMMA); + + for (size_t i = 0, L = m1->media_queries()->length(); i < L; i++) { + for (size_t j = 0, K = m2->media_queries()->length(); j < K; j++) { + Expression_Obj l1 = m1->media_queries()->at(i); + Expression_Obj l2 = m2->media_queries()->at(j); + Media_Query_Ptr mq1 = Cast(l1); + Media_Query_Ptr mq2 = Cast(l2); + Media_Query_Ptr mq = merge_media_query(mq1, mq2); + if (mq) qq->append(mq); + } + } + + return qq; + } + + + Media_Query_Ptr Cssize::merge_media_query(Media_Query_Ptr mq1, Media_Query_Ptr mq2) + { + + std::string type; + std::string mod; + + std::string m1 = std::string(mq1->is_restricted() ? "only" : mq1->is_negated() ? "not" : ""); + std::string t1 = mq1->media_type() ? mq1->media_type()->to_string(ctx.c_options) : ""; + std::string m2 = std::string(mq2->is_restricted() ? "only" : mq2->is_negated() ? "not" : ""); + std::string t2 = mq2->media_type() ? mq2->media_type()->to_string(ctx.c_options) : ""; + + + if (t1.empty()) t1 = t2; + if (t2.empty()) t2 = t1; + + if ((m1 == "not") ^ (m2 == "not")) { + if (t1 == t2) { + return 0; + } + type = m1 == "not" ? t2 : t1; + mod = m1 == "not" ? m2 : m1; + } + else if (m1 == "not" && m2 == "not") { + if (t1 != t2) { + return 0; + } + type = t1; + mod = "not"; + } + else if (t1 != t2) { + return 0; + } else { + type = t1; + mod = m1.empty() ? m2 : m1; + } + + Media_Query_Ptr mm = SASS_MEMORY_NEW(Media_Query, + mq1->pstate(), + 0, + mq1->length() + mq2->length(), + mod == "not", + mod == "only"); + + if (!type.empty()) { + mm->media_type(SASS_MEMORY_NEW(String_Quoted, mq1->pstate(), type)); + } + + mm->concat(mq2); + mm->concat(mq1); + + return mm; + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/cssize.hpp b/mybulma/node_modules/node-sass/src/libsass/src/cssize.hpp new file mode 100644 index 0000000..5a6c704 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/cssize.hpp @@ -0,0 +1,77 @@ +#ifndef SASS_CSSIZE_H +#define SASS_CSSIZE_H + +#include "ast.hpp" +#include "context.hpp" +#include "operation.hpp" +#include "environment.hpp" + +namespace Sass { + + struct Backtrace; + + class Cssize : public Operation_CRTP { + + Context& ctx; + Backtraces& traces; + std::vector block_stack; + std::vector p_stack; + + Statement_Ptr fallback_impl(AST_Node_Ptr n); + + public: + Cssize(Context&); + ~Cssize() { } + + Selector_List_Ptr selector(); + + Block_Ptr operator()(Block_Ptr); + Statement_Ptr operator()(Ruleset_Ptr); + // Statement_Ptr operator()(Bubble_Ptr); + Statement_Ptr operator()(Media_Block_Ptr); + Statement_Ptr operator()(Supports_Block_Ptr); + Statement_Ptr operator()(At_Root_Block_Ptr); + Statement_Ptr operator()(Directive_Ptr); + Statement_Ptr operator()(Keyframe_Rule_Ptr); + Statement_Ptr operator()(Trace_Ptr); + Statement_Ptr operator()(Declaration_Ptr); + // Statement_Ptr operator()(Assignment_Ptr); + // Statement_Ptr operator()(Import_Ptr); + // Statement_Ptr operator()(Import_Stub_Ptr); + // Statement_Ptr operator()(Warning_Ptr); + // Statement_Ptr operator()(Error_Ptr); + // Statement_Ptr operator()(Comment_Ptr); + // Statement_Ptr operator()(If_Ptr); + // Statement_Ptr operator()(For_Ptr); + // Statement_Ptr operator()(Each_Ptr); + // Statement_Ptr operator()(While_Ptr); + // Statement_Ptr operator()(Return_Ptr); + // Statement_Ptr operator()(Extension_Ptr); + // Statement_Ptr operator()(Definition_Ptr); + // Statement_Ptr operator()(Mixin_Call_Ptr); + // Statement_Ptr operator()(Content_Ptr); + Statement_Ptr operator()(Null_Ptr); + + Statement_Ptr parent(); + std::vector> slice_by_bubble(Block_Ptr); + Statement_Ptr bubble(Directive_Ptr); + Statement_Ptr bubble(At_Root_Block_Ptr); + Statement_Ptr bubble(Media_Block_Ptr); + Statement_Ptr bubble(Supports_Block_Ptr); + + Block_Ptr debubble(Block_Ptr children, Statement_Ptr parent = 0); + Block_Ptr flatten(Block_Ptr); + bool bubblable(Statement_Ptr); + + List_Ptr merge_media_queries(Media_Block_Ptr, Media_Block_Ptr); + Media_Query_Ptr merge_media_query(Media_Query_Ptr, Media_Query_Ptr); + + template + Statement_Ptr fallback(U x) { return fallback_impl(x); } + + void append_block(Block_Ptr, Block_Ptr); + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/debug.hpp b/mybulma/node_modules/node-sass/src/libsass/src/debug.hpp new file mode 100644 index 0000000..43fe05e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/debug.hpp @@ -0,0 +1,43 @@ +#ifndef SASS_DEBUG_H +#define SASS_DEBUG_H + +#include + +#ifndef UINT32_MAX + #define UINT32_MAX 0xffffffffU +#endif + +enum dbg_lvl_t : uint32_t { + NONE = 0, + TRIM = 1, + CHUNKS = 2, + SUBWEAVE = 4, + WEAVE = 8, + EXTEND_COMPOUND = 16, + EXTEND_COMPLEX = 32, + LCS = 64, + EXTEND_OBJECT = 128, + ALL = UINT32_MAX +}; + +#ifdef DEBUG + +#ifndef DEBUG_LVL +const uint32_t debug_lvl = UINT32_MAX; +#else +const uint32_t debug_lvl = (DEBUG_LVL); +#endif // DEBUG_LVL + +#define DEBUG_PRINT(lvl, x) if((lvl) & debug_lvl) { std::cerr << x; } +#define DEBUG_PRINTLN(lvl, x) if((lvl) & debug_lvl) { std::cerr << x << std::endl; } +#define DEBUG_EXEC(lvl, x) if((lvl) & debug_lvl) { x; } + +#else // DEBUG + +#define DEBUG_PRINT(lvl, x) +#define DEBUG_PRINTLN(lvl, x) +#define DEBUG_EXEC(lvl, x) + +#endif // DEBUG + +#endif // SASS_DEBUG diff --git a/mybulma/node_modules/node-sass/src/libsass/src/debugger.hpp b/mybulma/node_modules/node-sass/src/libsass/src/debugger.hpp new file mode 100644 index 0000000..f1ceabd --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/debugger.hpp @@ -0,0 +1,801 @@ +#ifndef SASS_DEBUGGER_H +#define SASS_DEBUGGER_H + +#include +#include +#include "node.hpp" +#include "ast_fwd_decl.hpp" + +using namespace Sass; + +inline void debug_ast(AST_Node_Ptr node, std::string ind = "", Env* env = 0); + +inline void debug_ast(const AST_Node* node, std::string ind = "", Env* env = 0) { + debug_ast(const_cast(node), ind, env); +} + +inline void debug_sources_set(ComplexSelectorSet& set, std::string ind = "") +{ + if (ind == "") std::cerr << "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; + for(auto const &pair : set) { + debug_ast(pair, ind + ""); + // debug_ast(set[pair], ind + "first: "); + } + if (ind == "") std::cerr << "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; +} + +inline std::string str_replace(std::string str, const std::string& oldStr, const std::string& newStr) +{ + size_t pos = 0; + while((pos = str.find(oldStr, pos)) != std::string::npos) + { + str.replace(pos, oldStr.length(), newStr); + pos += newStr.length(); + } + return str; +} + +inline std::string prettyprint(const std::string& str) { + std::string clean = str_replace(str, "\n", "\\n"); + clean = str_replace(clean, " ", "\\t"); + clean = str_replace(clean, "\r", "\\r"); + return clean; +} + +inline std::string longToHex(long long t) { + std::stringstream is; + is << std::hex << t; + return is.str(); +} + +inline std::string pstate_source_position(AST_Node_Ptr node) +{ + std::stringstream str; + Position start(node->pstate()); + Position end(start + node->pstate().offset); + str << (start.file == std::string::npos ? -1 : start.file) + << "@[" << start.line << ":" << start.column << "]" + << "-[" << end.line << ":" << end.column << "]"; +#ifdef DEBUG_SHARED_PTR + str << "x" << node->getRefCount() << "" + << " " << node->getDbgFile() + << "@" << node->getDbgLine(); +#endif + return str.str(); +} + +inline void debug_ast(AST_Node_Ptr node, std::string ind, Env* env) +{ + if (node == 0) return; + if (ind == "") std::cerr << "####################################################################\n"; + if (Cast(node)) { + Bubble_Ptr bubble = Cast(node); + std::cerr << ind << "Bubble " << bubble; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << bubble->tabs(); + std::cerr << std::endl; + debug_ast(bubble->node(), ind + " ", env); + } else if (Cast(node)) { + Trace_Ptr trace = Cast(node); + std::cerr << ind << "Trace " << trace; + std::cerr << " (" << pstate_source_position(node) << ")" + << " [name:" << trace->name() << ", type: " << trace->type() << "]" + << std::endl; + debug_ast(trace->block(), ind + " ", env); + } else if (Cast(node)) { + At_Root_Block_Ptr root_block = Cast(node); + std::cerr << ind << "At_Root_Block " << root_block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << root_block->tabs(); + std::cerr << std::endl; + debug_ast(root_block->expression(), ind + ":", env); + debug_ast(root_block->block(), ind + " ", env); + } else if (Cast(node)) { + Selector_List_Ptr selector = Cast(node); + std::cerr << ind << "Selector_List " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " [@media:" << selector->media_block() << "]"; + std::cerr << (selector->is_invisible() ? " [INVISIBLE]": " -"); + std::cerr << (selector->has_placeholder() ? " [PLACEHOLDER]": " -"); + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << std::endl; + debug_ast(selector->schema(), ind + "#{} "); + + for(const Complex_Selector_Obj& i : selector->elements()) { debug_ast(i, ind + " ", env); } + +// } else if (Cast(node)) { +// Expression_Ptr expression = Cast(node); +// std::cerr << ind << "Expression " << expression << " " << expression->concrete_type() << std::endl; + + } else if (Cast(node)) { + Parent_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Parent_Selector " << selector; +// if (selector->not_selector()) cerr << " [in_declaration]"; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " [" << (selector->is_real_parent_ref() ? "REAL" : "FAKE") << "]"; + std::cerr << " <" << prettyprint(selector->pstate().token.ws_before()) << ">" << std::endl; +// debug_ast(selector->selector(), ind + "->", env); + + } else if (Cast(node)) { + Complex_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Complex_Selector " << selector + << " (" << pstate_source_position(node) << ")" + << " <" << selector->hash() << ">" + << " [length:" << longToHex(selector->length()) << "]" + << " [weight:" << longToHex(selector->specificity()) << "]" + << " [@media:" << selector->media_block() << "]" + << (selector->is_invisible() ? " [INVISIBLE]": " -") + << (selector->has_placeholder() ? " [PLACEHOLDER]": " -") + << (selector->is_optional() ? " [is_optional]": " -") + << (selector->has_parent_ref() ? " [has parent]": " -") + << (selector->has_line_feed() ? " [line-feed]": " -") + << (selector->has_line_break() ? " [line-break]": " -") + << " -- "; + std::string del; + switch (selector->combinator()) { + case Complex_Selector::PARENT_OF: del = ">"; break; + case Complex_Selector::PRECEDES: del = "~"; break; + case Complex_Selector::ADJACENT_TO: del = "+"; break; + case Complex_Selector::ANCESTOR_OF: del = " "; break; + case Complex_Selector::REFERENCE: del = "//"; break; + } + // if (del = "/") del += selector->reference()->perform(&to_string) + "/"; + std::cerr << " <" << prettyprint(selector->pstate().token.ws_before()) << ">" << std::endl; + debug_ast(selector->head(), ind + " " /* + "[" + del + "]" */, env); + if (selector->tail()) { + debug_ast(selector->tail(), ind + "{" + del + "}", env); + } else if(del != " ") { + std::cerr << ind << " |" << del << "| {trailing op}" << std::endl; + } + ComplexSelectorSet set = selector->sources(); + // debug_sources_set(set, ind + " @--> "); + } else if (Cast(node)) { + Compound_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Compound_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " [weight:" << longToHex(selector->specificity()) << "]"; + std::cerr << " [@media:" << selector->media_block() << "]"; + std::cerr << (selector->extended() ? " [extended]": " -"); + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << " <" << prettyprint(selector->pstate().token.ws_before()) << ">" << std::endl; + for(const Simple_Selector_Obj& i : selector->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Wrapped_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Wrapped_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " <<" << selector->ns_name() << ">>"; + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << std::endl; + debug_ast(selector->selector(), ind + " () ", env); + } else if (Cast(node)) { + Pseudo_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Pseudo_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " <<" << selector->ns_name() << ">>"; + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << std::endl; + debug_ast(selector->expression(), ind + " <= ", env); + } else if (Cast(node)) { + Attribute_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Attribute_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " <<" << selector->ns_name() << ">>"; + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << std::endl; + debug_ast(selector->value(), ind + "[" + selector->matcher() + "] ", env); + } else if (Cast(node)) { + Class_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Class_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " <<" << selector->ns_name() << ">>"; + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << std::endl; + } else if (Cast(node)) { + Id_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Id_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " <<" << selector->ns_name() << ">>"; + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << std::endl; + } else if (Cast(node)) { + Element_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Element_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <" << selector->hash() << ">"; + std::cerr << " <<" << selector->ns_name() << ">>"; + std::cerr << (selector->is_optional() ? " [is_optional]": " -"); + std::cerr << (selector->has_parent_ref() ? " [has-parent]": " -"); + std::cerr << (selector->has_line_break() ? " [line-break]": " -"); + std::cerr << (selector->has_line_feed() ? " [line-feed]": " -"); + std::cerr << " <" << prettyprint(selector->pstate().token.ws_before()) << ">"; + std::cerr << std::endl; + } else if (Cast(node)) { + + Placeholder_Selector_Ptr selector = Cast(node); + std::cerr << ind << "Placeholder_Selector [" << selector->ns_name() << "] " << selector; + std::cerr << " (" << pstate_source_position(selector) << ")" + << " <" << selector->hash() << ">" + << " [@media:" << selector->media_block() << "]" + << (selector->is_optional() ? " [is_optional]": " -") + << (selector->has_line_break() ? " [line-break]": " -") + << (selector->has_line_feed() ? " [line-feed]": " -") + << std::endl; + + } else if (Cast(node)) { + Simple_Selector* selector = Cast(node); + std::cerr << ind << "Simple_Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << (selector->has_line_break() ? " [line-break]": " -") << (selector->has_line_feed() ? " [line-feed]": " -") << std::endl; + + } else if (Cast(node)) { + Selector_Schema_Ptr selector = Cast(node); + std::cerr << ind << "Selector_Schema " << selector; + std::cerr << " (" << pstate_source_position(node) << ")" + << " [@media:" << selector->media_block() << "]" + << (selector->connect_parent() ? " [connect-parent]": " -") + << std::endl; + + debug_ast(selector->contents(), ind + " "); + // for(auto i : selector->elements()) { debug_ast(i, ind + " ", env); } + + } else if (Cast(node)) { + Selector_Ptr selector = Cast(node); + std::cerr << ind << "Selector " << selector; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << (selector->has_line_break() ? " [line-break]": " -") + << (selector->has_line_feed() ? " [line-feed]": " -") + << std::endl; + + } else if (Cast(node)) { + Media_Query_Expression_Ptr block = Cast(node); + std::cerr << ind << "Media_Query_Expression " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << (block->is_interpolated() ? " [is_interpolated]": " -") + << std::endl; + debug_ast(block->feature(), ind + " feature) "); + debug_ast(block->value(), ind + " value) "); + + } else if (Cast(node)) { + Media_Query_Ptr block = Cast(node); + std::cerr << ind << "Media_Query " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << (block->is_negated() ? " [is_negated]": " -") + << (block->is_restricted() ? " [is_restricted]": " -") + << std::endl; + debug_ast(block->media_type(), ind + " "); + for(const auto& i : block->elements()) { debug_ast(i, ind + " ", env); } + + } else if (Cast(node)) { + Media_Block_Ptr block = Cast(node); + std::cerr << ind << "Media_Block " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->media_queries(), ind + " =@ "); + if (block->block()) for(const Statement_Obj& i : block->block()->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Supports_Block_Ptr block = Cast(node); + std::cerr << ind << "Supports_Block " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->condition(), ind + " =@ "); + debug_ast(block->block(), ind + " <>"); + } else if (Cast(node)) { + Supports_Operator_Ptr block = Cast(node); + std::cerr << ind << "Supports_Operator " << block; + std::cerr << " (" << pstate_source_position(node) << ")" + << std::endl; + debug_ast(block->left(), ind + " left) "); + debug_ast(block->right(), ind + " right) "); + } else if (Cast(node)) { + Supports_Negation_Ptr block = Cast(node); + std::cerr << ind << "Supports_Negation " << block; + std::cerr << " (" << pstate_source_position(node) << ")" + << std::endl; + debug_ast(block->condition(), ind + " condition) "); + } else if (Cast(node)) { + At_Root_Query_Ptr block = Cast(node); + std::cerr << ind << "At_Root_Query " << block; + std::cerr << " (" << pstate_source_position(node) << ")" + << std::endl; + debug_ast(block->feature(), ind + " feature) "); + debug_ast(block->value(), ind + " value) "); + } else if (Cast(node)) { + Supports_Declaration_Ptr block = Cast(node); + std::cerr << ind << "Supports_Declaration " << block; + std::cerr << " (" << pstate_source_position(node) << ")" + << std::endl; + debug_ast(block->feature(), ind + " feature) "); + debug_ast(block->value(), ind + " value) "); + } else if (Cast(node)) { + Block_Ptr root_block = Cast(node); + std::cerr << ind << "Block " << root_block; + std::cerr << " (" << pstate_source_position(node) << ")"; + if (root_block->is_root()) std::cerr << " [root]"; + std::cerr << " " << root_block->tabs() << std::endl; + for(const Statement_Obj& i : root_block->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Warning_Ptr block = Cast(node); + std::cerr << ind << "Warning " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->message(), ind + " : "); + } else if (Cast(node)) { + Error_Ptr block = Cast(node); + std::cerr << ind << "Error " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + } else if (Cast(node)) { + Debug_Ptr block = Cast(node); + std::cerr << ind << "Debug " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->value(), ind + " "); + } else if (Cast(node)) { + Comment_Ptr block = Cast(node); + std::cerr << ind << "Comment " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << + " <" << prettyprint(block->pstate().token.ws_before()) << ">" << std::endl; + debug_ast(block->text(), ind + "// ", env); + } else if (Cast(node)) { + If_Ptr block = Cast(node); + std::cerr << ind << "If " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->predicate(), ind + " = "); + debug_ast(block->block(), ind + " <>"); + debug_ast(block->alternative(), ind + " ><"); + } else if (Cast(node)) { + Return_Ptr block = Cast(node); + std::cerr << ind << "Return " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + } else if (Cast(node)) { + Extension_Ptr block = Cast(node); + std::cerr << ind << "Extension " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->selector(), ind + "-> ", env); + } else if (Cast(node)) { + Content_Ptr block = Cast(node); + std::cerr << ind << "Content " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [@media:" << block->media_block() << "]"; + std::cerr << " " << block->tabs() << std::endl; + } else if (Cast(node)) { + Import_Stub_Ptr block = Cast(node); + std::cerr << ind << "Import_Stub " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << block->imp_path() << "] "; + std::cerr << " " << block->tabs() << std::endl; + } else if (Cast(node)) { + Import_Ptr block = Cast(node); + std::cerr << ind << "Import " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + // std::vector files_; + for (auto imp : block->urls()) debug_ast(imp, ind + "@: ", env); + debug_ast(block->import_queries(), ind + "@@ "); + } else if (Cast(node)) { + Assignment_Ptr block = Cast(node); + std::cerr << ind << "Assignment " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " <<" << block->variable() << ">> " << block->tabs() << std::endl; + debug_ast(block->value(), ind + "=", env); + } else if (Cast(node)) { + Declaration_Ptr block = Cast(node); + std::cerr << ind << "Declaration " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [is_custom_property: " << block->is_custom_property() << "] "; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->property(), ind + " prop: ", env); + debug_ast(block->value(), ind + " value: ", env); + debug_ast(block->block(), ind + " ", env); + } else if (Cast(node)) { + Keyframe_Rule_Ptr has_block = Cast(node); + std::cerr << ind << "Keyframe_Rule " << has_block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << has_block->tabs() << std::endl; + if (has_block->name()) debug_ast(has_block->name(), ind + "@"); + if (has_block->block()) for(const Statement_Obj& i : has_block->block()->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Directive_Ptr block = Cast(node); + std::cerr << ind << "Directive " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << block->keyword() << "] " << block->tabs() << std::endl; + debug_ast(block->selector(), ind + "~", env); + debug_ast(block->value(), ind + "+", env); + if (block->block()) for(const Statement_Obj& i : block->block()->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Each_Ptr block = Cast(node); + std::cerr << ind << "Each " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + if (block->block()) for(const Statement_Obj& i : block->block()->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + For_Ptr block = Cast(node); + std::cerr << ind << "For " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + if (block->block()) for(const Statement_Obj& i : block->block()->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + While_Ptr block = Cast(node); + std::cerr << ind << "While " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << block->tabs() << std::endl; + if (block->block()) for(const Statement_Obj& i : block->block()->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Definition_Ptr block = Cast(node); + std::cerr << ind << "Definition " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [name: " << block->name() << "] "; + std::cerr << " [type: " << (block->type() == Sass::Definition::Type::MIXIN ? "Mixin " : "Function ") << "] "; + // this seems to lead to segfaults some times? + // std::cerr << " [signature: " << block->signature() << "] "; + std::cerr << " [native: " << block->native_function() << "] "; + std::cerr << " " << block->tabs() << std::endl; + debug_ast(block->parameters(), ind + " params: ", env); + if (block->block()) debug_ast(block->block(), ind + " ", env); + } else if (Cast(node)) { + Mixin_Call_Ptr block = Cast(node); + std::cerr << ind << "Mixin_Call " << block << " " << block->tabs(); + std::cerr << " (" << pstate_source_position(block) << ")"; + std::cerr << " [" << block->name() << "]"; + std::cerr << " [has_content: " << block->has_content() << "] " << std::endl; + debug_ast(block->arguments(), ind + " args: "); + if (block->block()) debug_ast(block->block(), ind + " ", env); + } else if (Ruleset_Ptr ruleset = Cast(node)) { + std::cerr << ind << "Ruleset " << ruleset; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [indent: " << ruleset->tabs() << "]"; + std::cerr << (ruleset->is_invisible() ? " [INVISIBLE]" : ""); + std::cerr << (ruleset->is_root() ? " [root]" : ""); + std::cerr << std::endl; + debug_ast(ruleset->selector(), ind + ">"); + debug_ast(ruleset->block(), ind + " "); + } else if (Cast(node)) { + Block_Ptr block = Cast(node); + std::cerr << ind << "Block " << block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << (block->is_invisible() ? " [INVISIBLE]" : ""); + std::cerr << " [indent: " << block->tabs() << "]" << std::endl; + for(const Statement_Obj& i : block->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Variable_Ptr expression = Cast(node); + std::cerr << ind << "Variable " << expression; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << expression->name() << "]" << std::endl; + std::string name(expression->name()); + if (env && env->has(name)) debug_ast(Cast((*env)[name]), ind + " -> ", env); + } else if (Cast(node)) { + Function_Call_Schema_Ptr expression = Cast(node); + std::cerr << ind << "Function_Call_Schema " << expression; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << "" << std::endl; + debug_ast(expression->name(), ind + "name: ", env); + debug_ast(expression->arguments(), ind + " args: ", env); + } else if (Cast(node)) { + Function_Call_Ptr expression = Cast(node); + std::cerr << ind << "Function_Call " << expression; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << expression->name() << "]"; + if (expression->is_delayed()) std::cerr << " [delayed]"; + if (expression->is_interpolant()) std::cerr << " [interpolant]"; + if (expression->is_css()) std::cerr << " [css]"; + std::cerr << std::endl; + debug_ast(expression->arguments(), ind + " args: ", env); + debug_ast(expression->func(), ind + " func: ", env); + } else if (Cast(node)) { + Function_Ptr expression = Cast(node); + std::cerr << ind << "Function " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + if (expression->is_css()) std::cerr << " [css]"; + std::cerr << std::endl; + debug_ast(expression->definition(), ind + " definition: ", env); + } else if (Cast(node)) { + Arguments_Ptr expression = Cast(node); + std::cerr << ind << "Arguments " << expression; + if (expression->is_delayed()) std::cerr << " [delayed]"; + std::cerr << " (" << pstate_source_position(node) << ")"; + if (expression->has_named_arguments()) std::cerr << " [has_named_arguments]"; + if (expression->has_rest_argument()) std::cerr << " [has_rest_argument]"; + if (expression->has_keyword_argument()) std::cerr << " [has_keyword_argument]"; + std::cerr << std::endl; + for(const Argument_Obj& i : expression->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Argument_Ptr expression = Cast(node); + std::cerr << ind << "Argument " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << expression->value().ptr() << "]"; + std::cerr << " [name: " << expression->name() << "] "; + std::cerr << " [rest: " << expression->is_rest_argument() << "] "; + std::cerr << " [keyword: " << expression->is_keyword_argument() << "] " << std::endl; + debug_ast(expression->value(), ind + " value: ", env); + } else if (Cast(node)) { + Parameters_Ptr expression = Cast(node); + std::cerr << ind << "Parameters " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [has_optional: " << expression->has_optional_parameters() << "] "; + std::cerr << " [has_rest: " << expression->has_rest_parameter() << "] "; + std::cerr << std::endl; + for(const Parameter_Obj& i : expression->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Parameter_Ptr expression = Cast(node); + std::cerr << ind << "Parameter " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [name: " << expression->name() << "] "; + std::cerr << " [default: " << expression->default_value().ptr() << "] "; + std::cerr << " [rest: " << expression->is_rest_parameter() << "] " << std::endl; + } else if (Cast(node)) { + Unary_Expression_Ptr expression = Cast(node); + std::cerr << ind << "Unary_Expression " << expression; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " [delayed: " << expression->is_delayed() << "] "; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << expression->type() << "]" << std::endl; + debug_ast(expression->operand(), ind + " operand: ", env); + } else if (Cast(node)) { + Binary_Expression_Ptr expression = Cast(node); + std::cerr << ind << "Binary_Expression " << expression; + if (expression->is_interpolant()) std::cerr << " [is interpolant] "; + if (expression->is_left_interpolant()) std::cerr << " [left interpolant] "; + if (expression->is_right_interpolant()) std::cerr << " [right interpolant] "; + std::cerr << " [delayed: " << expression->is_delayed() << "] "; + std::cerr << " [ws_before: " << expression->op().ws_before << "] "; + std::cerr << " [ws_after: " << expression->op().ws_after << "] "; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << expression->type_name() << "]" << std::endl; + debug_ast(expression->left(), ind + " left: ", env); + debug_ast(expression->right(), ind + " right: ", env); + } else if (Cast(node)) { + Map_Ptr expression = Cast(node); + std::cerr << ind << "Map " << expression; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [Hashed]" << std::endl; + for (const auto& i : expression->elements()) { + debug_ast(i.first, ind + " key: "); + debug_ast(i.second, ind + " val: "); + } + } else if (Cast(node)) { + List_Ptr expression = Cast(node); + std::cerr << ind << "List " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " (" << expression->length() << ") " << + (expression->separator() == SASS_COMMA ? "Comma " : expression->separator() == SASS_HASH ? "Map " : "Space ") << + " [delayed: " << expression->is_delayed() << "] " << + " [interpolant: " << expression->is_interpolant() << "] " << + " [listized: " << expression->from_selector() << "] " << + " [arglist: " << expression->is_arglist() << "] " << + " [bracketed: " << expression->is_bracketed() << "] " << + " [expanded: " << expression->is_expanded() << "] " << + " [hash: " << expression->hash() << "] " << + std::endl; + for(const auto& i : expression->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Content_Ptr expression = Cast(node); + std::cerr << ind << "Content " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [@media:" << expression->media_block() << "]"; + std::cerr << " [Statement]" << std::endl; + } else if (Cast(node)) { + Boolean_Ptr expression = Cast(node); + std::cerr << ind << "Boolean " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " [" << expression->value() << "]" << std::endl; + } else if (Cast(node)) { + Color_Ptr expression = Cast(node); + std::cerr << ind << "Color " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [delayed: " << expression->is_delayed() << "] "; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " [" << expression->r() << ":" << expression->g() << ":" << expression->b() << "@" << expression->a() << "]" << std::endl; + } else if (Cast(node)) { + Number_Ptr expression = Cast(node); + std::cerr << ind << "Number " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [delayed: " << expression->is_delayed() << "] "; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] "; + std::cerr << " [" << expression->value() << expression->unit() << "]" << + " [hash: " << expression->hash() << "] " << + std::endl; + } else if (Cast(node)) { + Null_Ptr expression = Cast(node); + std::cerr << ind << "Null " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [interpolant: " << expression->is_interpolant() << "] " + // " [hash: " << expression->hash() << "] " + << std::endl; + } else if (Cast(node)) { + String_Quoted_Ptr expression = Cast(node); + std::cerr << ind << "String_Quoted " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << prettyprint(expression->value()) << "]"; + if (expression->is_delayed()) std::cerr << " [delayed]"; + if (expression->is_interpolant()) std::cerr << " [interpolant]"; + if (expression->quote_mark()) std::cerr << " [quote_mark: " << expression->quote_mark() << "]"; + std::cerr << " <" << prettyprint(expression->pstate().token.ws_before()) << ">" << std::endl; + } else if (Cast(node)) { + String_Constant_Ptr expression = Cast(node); + std::cerr << ind << "String_Constant " << expression; + if (expression->concrete_type()) { + std::cerr << " " << expression->concrete_type(); + } + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " [" << prettyprint(expression->value()) << "]"; + if (expression->is_delayed()) std::cerr << " [delayed]"; + if (expression->is_interpolant()) std::cerr << " [interpolant]"; + std::cerr << " <" << prettyprint(expression->pstate().token.ws_before()) << ">" << std::endl; + } else if (Cast(node)) { + String_Schema_Ptr expression = Cast(node); + std::cerr << ind << "String_Schema " << expression; + std::cerr << " (" << pstate_source_position(expression) << ")"; + std::cerr << " " << expression->concrete_type(); + std::cerr << " (" << pstate_source_position(node) << ")"; + if (expression->css()) std::cerr << " [css]"; + if (expression->is_delayed()) std::cerr << " [delayed]"; + if (expression->is_interpolant()) std::cerr << " [is interpolant]"; + if (expression->has_interpolant()) std::cerr << " [has interpolant]"; + if (expression->is_left_interpolant()) std::cerr << " [left interpolant] "; + if (expression->is_right_interpolant()) std::cerr << " [right interpolant] "; + std::cerr << " <" << prettyprint(expression->pstate().token.ws_before()) << ">" << std::endl; + for(const auto& i : expression->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + String_Ptr expression = Cast(node); + std::cerr << ind << "String " << expression; + std::cerr << " " << expression->concrete_type(); + std::cerr << " (" << pstate_source_position(node) << ")"; + if (expression->is_interpolant()) std::cerr << " [interpolant]"; + std::cerr << " <" << prettyprint(expression->pstate().token.ws_before()) << ">" << std::endl; + } else if (Cast(node)) { + Expression_Ptr expression = Cast(node); + std::cerr << ind << "Expression " << expression; + std::cerr << " (" << pstate_source_position(node) << ")"; + switch (expression->concrete_type()) { + case Expression::Concrete_Type::NONE: std::cerr << " [NONE]"; break; + case Expression::Concrete_Type::BOOLEAN: std::cerr << " [BOOLEAN]"; break; + case Expression::Concrete_Type::NUMBER: std::cerr << " [NUMBER]"; break; + case Expression::Concrete_Type::COLOR: std::cerr << " [COLOR]"; break; + case Expression::Concrete_Type::STRING: std::cerr << " [STRING]"; break; + case Expression::Concrete_Type::LIST: std::cerr << " [LIST]"; break; + case Expression::Concrete_Type::MAP: std::cerr << " [MAP]"; break; + case Expression::Concrete_Type::SELECTOR: std::cerr << " [SELECTOR]"; break; + case Expression::Concrete_Type::NULL_VAL: std::cerr << " [NULL_VAL]"; break; + case Expression::Concrete_Type::C_WARNING: std::cerr << " [C_WARNING]"; break; + case Expression::Concrete_Type::C_ERROR: std::cerr << " [C_ERROR]"; break; + case Expression::Concrete_Type::FUNCTION: std::cerr << " [FUNCTION]"; break; + case Expression::Concrete_Type::NUM_TYPES: std::cerr << " [NUM_TYPES]"; break; + case Expression::Concrete_Type::VARIABLE: std::cerr << " [VARIABLE]"; break; + case Expression::Concrete_Type::FUNCTION_VAL: std::cerr << " [FUNCTION_VAL]"; break; + } + std::cerr << std::endl; + } else if (Cast(node)) { + Has_Block_Ptr has_block = Cast(node); + std::cerr << ind << "Has_Block " << has_block; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << has_block->tabs() << std::endl; + if (has_block->block()) for(const Statement_Obj& i : has_block->block()->elements()) { debug_ast(i, ind + " ", env); } + } else if (Cast(node)) { + Statement_Ptr statement = Cast(node); + std::cerr << ind << "Statement " << statement; + std::cerr << " (" << pstate_source_position(node) << ")"; + std::cerr << " " << statement->tabs() << std::endl; + } + + if (ind == "") std::cerr << "####################################################################\n"; +} + +inline void debug_node(Node* node, std::string ind = "") +{ + if (ind == "") std::cerr << "#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"; + if (node->isCombinator()) { + std::cerr << ind; + std::cerr << "Combinator "; + std::cerr << node << " "; + if (node->got_line_feed) std::cerr << "[LF] "; + switch (node->combinator()) { + case Complex_Selector::ADJACENT_TO: std::cerr << "{+} "; break; + case Complex_Selector::PARENT_OF: std::cerr << "{>} "; break; + case Complex_Selector::PRECEDES: std::cerr << "{~} "; break; + case Complex_Selector::REFERENCE: std::cerr << "{@} "; break; + case Complex_Selector::ANCESTOR_OF: std::cerr << "{ } "; break; + } + std::cerr << std::endl; + // debug_ast(node->combinator(), ind + " "); + } else if (node->isSelector()) { + std::cerr << ind; + std::cerr << "Selector "; + std::cerr << node << " "; + if (node->got_line_feed) std::cerr << "[LF] "; + std::cerr << std::endl; + debug_ast(node->selector(), ind + " "); + } else if (node->isCollection()) { + std::cerr << ind; + std::cerr << "Collection "; + std::cerr << node << " "; + if (node->got_line_feed) std::cerr << "[LF] "; + std::cerr << std::endl; + for(auto n : (*node->collection())) { + debug_node(&n, ind + " "); + } + } else if (node->isNil()) { + std::cerr << ind; + std::cerr << "Nil "; + std::cerr << node << " "; + if (node->got_line_feed) std::cerr << "[LF] "; + std::cerr << std::endl; + } else { + std::cerr << ind; + std::cerr << "OTHER "; + std::cerr << node << " "; + if (node->got_line_feed) std::cerr << "[LF] "; + std::cerr << std::endl; + } + if (ind == "") std::cerr << "#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"; +} + +/* +inline void debug_ast(const AST_Node_Ptr node, std::string ind = "", Env* env = 0) +{ + debug_ast(const_cast(node), ind, env); +} +*/ +inline void debug_node(const Node* node, std::string ind = "") +{ + debug_node(const_cast(node), ind); +} + +inline void debug_subset_map(Sass::Subset_Map& map, std::string ind = "") +{ + if (ind == "") std::cerr << "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; + for(auto const &it : map.values()) { + debug_ast(it.first, ind + "first: "); + debug_ast(it.second, ind + "second: "); + } + if (ind == "") std::cerr << "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; +} + +inline void debug_subset_entries(SubSetMapPairs* entries, std::string ind = "") +{ + if (ind == "") std::cerr << "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; + for(auto const &pair : *entries) { + debug_ast(pair.first, ind + "first: "); + debug_ast(pair.second, ind + "second: "); + } + if (ind == "") std::cerr << "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; +} + +#endif // SASS_DEBUGGER diff --git a/mybulma/node_modules/node-sass/src/libsass/src/emitter.cpp b/mybulma/node_modules/node-sass/src/libsass/src/emitter.cpp new file mode 100644 index 0000000..161e689 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/emitter.cpp @@ -0,0 +1,297 @@ +#include "sass.hpp" +#include "util.hpp" +#include "context.hpp" +#include "output.hpp" +#include "emitter.hpp" +#include "utf8_string.hpp" + +namespace Sass { + + Emitter::Emitter(struct Sass_Output_Options& opt) + : wbuf(), + opt(opt), + indentation(0), + scheduled_space(0), + scheduled_linefeed(0), + scheduled_delimiter(false), + scheduled_crutch(0), + scheduled_mapping(0), + in_custom_property(false), + in_comment(false), + in_wrapped(false), + in_media_block(false), + in_declaration(false), + in_space_array(false), + in_comma_array(false) + { } + + // return buffer as string + std::string Emitter::get_buffer(void) + { + return wbuf.buffer; + } + + Sass_Output_Style Emitter::output_style(void) const + { + return opt.output_style; + } + + // PROXY METHODS FOR SOURCE MAPS + + void Emitter::add_source_index(size_t idx) + { wbuf.smap.source_index.push_back(idx); } + + std::string Emitter::render_srcmap(Context &ctx) + { return wbuf.smap.render_srcmap(ctx); } + + void Emitter::set_filename(const std::string& str) + { wbuf.smap.file = str; } + + void Emitter::schedule_mapping(const AST_Node_Ptr node) + { scheduled_mapping = node; } + void Emitter::add_open_mapping(const AST_Node_Ptr node) + { wbuf.smap.add_open_mapping(node); } + void Emitter::add_close_mapping(const AST_Node_Ptr node) + { wbuf.smap.add_close_mapping(node); } + ParserState Emitter::remap(const ParserState& pstate) + { return wbuf.smap.remap(pstate); } + + // MAIN BUFFER MANIPULATION + + // add outstanding delimiter + void Emitter::finalize(bool final) + { + scheduled_space = 0; + if (output_style() == SASS_STYLE_COMPRESSED) + if (final) scheduled_delimiter = false; + if (scheduled_linefeed) + scheduled_linefeed = 1; + flush_schedules(); + } + + // flush scheduled space/linefeed + void Emitter::flush_schedules(void) + { + // check the schedule + if (scheduled_linefeed) { + std::string linefeeds = ""; + + for (size_t i = 0; i < scheduled_linefeed; i++) + linefeeds += opt.linefeed; + scheduled_space = 0; + scheduled_linefeed = 0; + append_string(linefeeds); + + } else if (scheduled_space) { + std::string spaces(scheduled_space, ' '); + scheduled_space = 0; + append_string(spaces); + } + if (scheduled_delimiter) { + scheduled_delimiter = false; + append_string(";"); + } + } + + // prepend some text or token to the buffer + void Emitter::prepend_output(const OutputBuffer& output) + { + wbuf.smap.prepend(output); + wbuf.buffer = output.buffer + wbuf.buffer; + } + + // prepend some text or token to the buffer + void Emitter::prepend_string(const std::string& text) + { + // do not adjust mappings for utf8 bom + // seems they are not counted in any UA + if (text.compare("\xEF\xBB\xBF") != 0) { + wbuf.smap.prepend(Offset(text)); + } + wbuf.buffer = text + wbuf.buffer; + } + + char Emitter::last_char() + { + return wbuf.buffer.back(); + } + + // append a single char to the buffer + void Emitter::append_char(const char chr) + { + // write space/lf + flush_schedules(); + // add to buffer + wbuf.buffer += chr; + // account for data in source-maps + wbuf.smap.append(Offset(chr)); + } + + // append some text or token to the buffer + void Emitter::append_string(const std::string& text) + { + + // write space/lf + flush_schedules(); + + if (in_comment && output_style() == COMPACT) { + // unescape comment nodes + std::string out = comment_to_string(text); + // add to buffer + wbuf.buffer += out; + // account for data in source-maps + wbuf.smap.append(Offset(out)); + } else { + // add to buffer + wbuf.buffer += text; + // account for data in source-maps + wbuf.smap.append(Offset(text)); + } + } + + // append some white-space only text + void Emitter::append_wspace(const std::string& text) + { + if (text.empty()) return; + if (peek_linefeed(text.c_str())) { + scheduled_space = 0; + append_mandatory_linefeed(); + } + } + + // append some text or token to the buffer + // this adds source-mappings for node start and end + void Emitter::append_token(const std::string& text, const AST_Node_Ptr node) + { + flush_schedules(); + add_open_mapping(node); + // hotfix for browser issues + // this is pretty ugly indeed + if (scheduled_crutch) { + add_open_mapping(scheduled_crutch); + scheduled_crutch = 0; + } + append_string(text); + add_close_mapping(node); + } + + // HELPER METHODS + + void Emitter::append_indentation() + { + if (output_style() == COMPRESSED) return; + if (output_style() == COMPACT) return; + if (in_declaration && in_comma_array) return; + if (scheduled_linefeed && indentation) + scheduled_linefeed = 1; + std::string indent = ""; + for (size_t i = 0; i < indentation; i++) + indent += opt.indent; + append_string(indent); + } + + void Emitter::append_delimiter() + { + scheduled_delimiter = true; + if (output_style() == COMPACT) { + if (indentation == 0) { + append_mandatory_linefeed(); + } else { + append_mandatory_space(); + } + } else if (output_style() != COMPRESSED) { + append_optional_linefeed(); + } + } + + void Emitter::append_comma_separator() + { + // scheduled_space = 0; + append_string(","); + append_optional_space(); + } + + void Emitter::append_colon_separator() + { + scheduled_space = 0; + append_string(":"); + if (!in_custom_property) append_optional_space(); + } + + void Emitter::append_mandatory_space() + { + scheduled_space = 1; + } + + void Emitter::append_optional_space() + { + if ((output_style() != COMPRESSED) && buffer().size()) { + unsigned char lst = buffer().at(buffer().length() - 1); + if (!isspace(lst) || scheduled_delimiter) { + if (last_char() != '(') { + append_mandatory_space(); + } + } + } + } + + void Emitter::append_special_linefeed() + { + if (output_style() == COMPACT) { + append_mandatory_linefeed(); + for (size_t p = 0; p < indentation; p++) + append_string(opt.indent); + } + } + + void Emitter::append_optional_linefeed() + { + if (in_declaration && in_comma_array) return; + if (output_style() == COMPACT) { + append_mandatory_space(); + } else { + append_mandatory_linefeed(); + } + } + + void Emitter::append_mandatory_linefeed() + { + if (output_style() != COMPRESSED) { + scheduled_linefeed = 1; + scheduled_space = 0; + // flush_schedules(); + } + } + + void Emitter::append_scope_opener(AST_Node_Ptr node) + { + scheduled_linefeed = 0; + append_optional_space(); + flush_schedules(); + if (node) add_open_mapping(node); + append_string("{"); + append_optional_linefeed(); + // append_optional_space(); + ++ indentation; + } + void Emitter::append_scope_closer(AST_Node_Ptr node) + { + -- indentation; + scheduled_linefeed = 0; + if (output_style() == COMPRESSED) + scheduled_delimiter = false; + if (output_style() == EXPANDED) { + append_optional_linefeed(); + append_indentation(); + } else { + append_optional_space(); + } + append_string("}"); + if (node) add_close_mapping(node); + append_optional_linefeed(); + if (indentation != 0) return; + if (output_style() != COMPRESSED) + scheduled_linefeed = 2; + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/emitter.hpp b/mybulma/node_modules/node-sass/src/libsass/src/emitter.hpp new file mode 100644 index 0000000..3bf8f60 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/emitter.hpp @@ -0,0 +1,99 @@ +#ifndef SASS_EMITTER_H +#define SASS_EMITTER_H + +#include +#include "sass.hpp" +#include "sass/base.h" +#include "source_map.hpp" +#include "ast_fwd_decl.hpp" + +namespace Sass { + class Context; + + class Emitter { + + public: + Emitter(struct Sass_Output_Options& opt); + virtual ~Emitter() { } + + protected: + OutputBuffer wbuf; + public: + const std::string& buffer(void) { return wbuf.buffer; } + const SourceMap smap(void) { return wbuf.smap; } + const OutputBuffer output(void) { return wbuf; } + // proxy methods for source maps + void add_source_index(size_t idx); + void set_filename(const std::string& str); + void add_open_mapping(const AST_Node_Ptr node); + void add_close_mapping(const AST_Node_Ptr node); + void schedule_mapping(const AST_Node_Ptr node); + std::string render_srcmap(Context &ctx); + ParserState remap(const ParserState& pstate); + + public: + struct Sass_Output_Options& opt; + size_t indentation; + size_t scheduled_space; + size_t scheduled_linefeed; + bool scheduled_delimiter; + AST_Node_Ptr scheduled_crutch; + AST_Node_Ptr scheduled_mapping; + + public: + // output strings different in custom css properties + bool in_custom_property; + // output strings different in comments + bool in_comment; + // selector list does not get linefeeds + bool in_wrapped; + // lists always get a space after delimiter + bool in_media_block; + // nested list must not have parentheses + bool in_declaration; + // nested lists need parentheses + bool in_space_array; + bool in_comma_array; + + public: + // return buffer as std::string + std::string get_buffer(void); + // flush scheduled space/linefeed + Sass_Output_Style output_style(void) const; + // add outstanding linefeed + void finalize(bool final = true); + // flush scheduled space/linefeed + void flush_schedules(void); + // prepend some text or token to the buffer + void prepend_string(const std::string& text); + void prepend_output(const OutputBuffer& out); + // append some text or token to the buffer + void append_string(const std::string& text); + // append a single character to buffer + void append_char(const char chr); + // append some white-space only text + void append_wspace(const std::string& text); + // append some text or token to the buffer + // this adds source-mappings for node start and end + void append_token(const std::string& text, const AST_Node_Ptr node); + // query last appended character + char last_char(); + + public: // syntax sugar + void append_indentation(); + void append_optional_space(void); + void append_mandatory_space(void); + void append_special_linefeed(void); + void append_optional_linefeed(void); + void append_mandatory_linefeed(void); + void append_scope_opener(AST_Node_Ptr node = 0); + void append_scope_closer(AST_Node_Ptr node = 0); + void append_comma_separator(void); + void append_colon_separator(void); + void append_delimiter(void); + + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/environment.cpp b/mybulma/node_modules/node-sass/src/libsass/src/environment.cpp new file mode 100644 index 0000000..e382e7e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/environment.cpp @@ -0,0 +1,246 @@ +#include "sass.hpp" +#include "ast.hpp" +#include "environment.hpp" + +namespace Sass { + + template + Environment::Environment(bool is_shadow) + : local_frame_(environment_map()), + parent_(0), is_shadow_(false) + { } + template + Environment::Environment(Environment* env, bool is_shadow) + : local_frame_(environment_map()), + parent_(env), is_shadow_(is_shadow) + { } + template + Environment::Environment(Environment& env, bool is_shadow) + : local_frame_(environment_map()), + parent_(&env), is_shadow_(is_shadow) + { } + + // link parent to create a stack + template + void Environment::link(Environment& env) { parent_ = &env; } + template + void Environment::link(Environment* env) { parent_ = env; } + + // this is used to find the global frame + // which is the second last on the stack + template + bool Environment::is_lexical() const + { + return !! parent_ && parent_->parent_; + } + + // only match the real root scope + // there is still a parent around + // not sure what it is actually use for + // I guess we store functions etc. there + template + bool Environment::is_global() const + { + return parent_ && ! parent_->parent_; + } + + template + environment_map& Environment::local_frame() { + return local_frame_; + } + + template + bool Environment::has_local(const std::string& key) const + { return local_frame_.find(key) != local_frame_.end(); } + + template EnvResult + Environment::find_local(const std::string& key) + { + auto end = local_frame_.end(); + auto it = local_frame_.find(key); + return EnvResult(it, it != end); + } + + template + T& Environment::get_local(const std::string& key) + { return local_frame_[key]; } + + template + void Environment::set_local(const std::string& key, const T& val) + { + local_frame_[key] = val; + } + template + void Environment::set_local(const std::string& key, T&& val) + { + local_frame_[key] = val; + } + + template + void Environment::del_local(const std::string& key) + { local_frame_.erase(key); } + + template + Environment* Environment::global_env() + { + Environment* cur = this; + while (cur->is_lexical()) { + cur = cur->parent_; + } + return cur; + } + + template + bool Environment::has_global(const std::string& key) + { return global_env()->has(key); } + + template + T& Environment::get_global(const std::string& key) + { return (*global_env())[key]; } + + template + void Environment::set_global(const std::string& key, const T& val) + { + global_env()->local_frame_[key] = val; + } + template + void Environment::set_global(const std::string& key, T&& val) + { + global_env()->local_frame_[key] = val; + } + + template + void Environment::del_global(const std::string& key) + { global_env()->local_frame_.erase(key); } + + template + Environment* Environment::lexical_env(const std::string& key) + { + Environment* cur = this; + while (cur) { + if (cur->has_local(key)) { + return cur; + } + cur = cur->parent_; + } + return this; + } + + // see if we have a lexical variable + // move down the stack but stop before we + // reach the global frame (is not included) + template + bool Environment::has_lexical(const std::string& key) const + { + auto cur = this; + while (cur->is_lexical()) { + if (cur->has_local(key)) return true; + cur = cur->parent_; + } + return false; + } + + // see if we have a lexical we could update + // either update already existing lexical value + // or if flag is set, we create one if no lexical found + template + void Environment::set_lexical(const std::string& key, const T& val) + { + Environment* cur = this; + bool shadow = false; + while ((cur && cur->is_lexical()) || shadow) { + EnvResult rv(cur->find_local(key)); + if (rv.found) { + rv.it->second = val; + return; + } + shadow = cur->is_shadow(); + cur = cur->parent_; + } + set_local(key, val); + } + // this one moves the value + template + void Environment::set_lexical(const std::string& key, T&& val) + { + Environment* cur = this; + bool shadow = false; + while ((cur && cur->is_lexical()) || shadow) { + EnvResult rv(cur->find_local(key)); + if (rv.found) { + rv.it->second = val; + return; + } + shadow = cur->is_shadow(); + cur = cur->parent_; + } + set_local(key, val); + } + + // look on the full stack for key + // include all scopes available + template + bool Environment::has(const std::string& key) const + { + auto cur = this; + while (cur) { + if (cur->has_local(key)) { + return true; + } + cur = cur->parent_; + } + return false; + } + + // look on the full stack for key + // include all scopes available + template EnvResult + Environment::find(const std::string& key) + { + auto cur = this; + while (true) { + EnvResult rv(cur->find_local(key)); + if (rv.found) return rv; + cur = cur->parent_; + if (!cur) return rv; + } + }; + + // use array access for getter and setter functions + template + T& Environment::operator[](const std::string& key) + { + auto cur = this; + while (cur) { + if (cur->has_local(key)) { + return cur->get_local(key); + } + cur = cur->parent_; + } + return get_local(key); + } +/* + #ifdef DEBUG + template + size_t Environment::print(std::string prefix) + { + size_t indent = 0; + if (parent_) indent = parent_->print(prefix) + 1; + std::cerr << prefix << std::string(indent, ' ') << "== " << this << std::endl; + for (typename environment_map::iterator i = local_frame_.begin(); i != local_frame_.end(); ++i) { + if (!ends_with(i->first, "[f]") && !ends_with(i->first, "[f]4") && !ends_with(i->first, "[f]2")) { + std::cerr << prefix << std::string(indent, ' ') << i->first << " " << i->second; + if (Value_Ptr val = Cast(i->second)) + { std::cerr << " : " << val->to_string(); } + std::cerr << std::endl; + } + } + return indent ; + } + #endif +*/ + // compile implementation for AST_Node + template class Environment; + +} + diff --git a/mybulma/node_modules/node-sass/src/libsass/src/environment.hpp b/mybulma/node_modules/node-sass/src/libsass/src/environment.hpp new file mode 100644 index 0000000..a6939be --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/environment.hpp @@ -0,0 +1,113 @@ +#ifndef SASS_ENVIRONMENT_H +#define SASS_ENVIRONMENT_H + +#include +#include "ast_fwd_decl.hpp" +#include "ast_def_macros.hpp" + +namespace Sass { + + typedef environment_map::iterator EnvIter; + + class EnvResult { + public: + EnvIter it; + bool found; + public: + EnvResult(EnvIter it, bool found) + : it(it), found(found) {} + }; + + template + class Environment { + // TODO: test with map + environment_map local_frame_; + ADD_PROPERTY(Environment*, parent) + ADD_PROPERTY(bool, is_shadow) + + public: + Environment(bool is_shadow = false); + Environment(Environment* env, bool is_shadow = false); + Environment(Environment& env, bool is_shadow = false); + + // link parent to create a stack + void link(Environment& env); + void link(Environment* env); + + // this is used to find the global frame + // which is the second last on the stack + bool is_lexical() const; + + // only match the real root scope + // there is still a parent around + // not sure what it is actually use for + // I guess we store functions etc. there + bool is_global() const; + + // scope operates on the current frame + + environment_map& local_frame(); + + bool has_local(const std::string& key) const; + + EnvResult find_local(const std::string& key); + + T& get_local(const std::string& key); + + // set variable on the current frame + void set_local(const std::string& key, const T& val); + void set_local(const std::string& key, T&& val); + + void del_local(const std::string& key); + + // global operates on the global frame + // which is the second last on the stack + Environment* global_env(); + // get the env where the variable already exists + // if it does not yet exist, we return current env + Environment* lexical_env(const std::string& key); + + bool has_global(const std::string& key); + + T& get_global(const std::string& key); + + // set a variable on the global frame + void set_global(const std::string& key, const T& val); + void set_global(const std::string& key, T&& val); + + void del_global(const std::string& key); + + // see if we have a lexical variable + // move down the stack but stop before we + // reach the global frame (is not included) + bool has_lexical(const std::string& key) const; + + // see if we have a lexical we could update + // either update already existing lexical value + // or we create a new one on the current frame + void set_lexical(const std::string& key, T&& val); + void set_lexical(const std::string& key, const T& val); + + // look on the full stack for key + // include all scopes available + bool has(const std::string& key) const; + + // look on the full stack for key + // include all scopes available + EnvResult find(const std::string& key); + + // use array access for getter and setter functions + T& operator[](const std::string& key); + + #ifdef DEBUG + size_t print(std::string prefix = ""); + #endif + + }; + + // define typedef for our use case + typedef Environment Env; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/error_handling.cpp b/mybulma/node_modules/node-sass/src/libsass/src/error_handling.cpp new file mode 100644 index 0000000..745f655 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/error_handling.cpp @@ -0,0 +1,235 @@ +#include "sass.hpp" +#include "ast.hpp" +#include "prelexer.hpp" +#include "backtrace.hpp" +#include "error_handling.hpp" + +#include + +namespace Sass { + + namespace Exception { + + Base::Base(ParserState pstate, std::string msg, Backtraces traces) + : std::runtime_error(msg), msg(msg), + prefix("Error"), pstate(pstate), traces(traces) + { } + + InvalidSass::InvalidSass(ParserState pstate, Backtraces traces, std::string msg) + : Base(pstate, msg, traces) + { } + + + InvalidParent::InvalidParent(Selector_Ptr parent, Backtraces traces, Selector_Ptr selector) + : Base(selector->pstate(), def_msg, traces), parent(parent), selector(selector) + { + msg = "Invalid parent selector for \""; + msg += selector->to_string(Sass_Inspect_Options()); + msg += "\": \""; + msg += parent->to_string(Sass_Inspect_Options()); + msg += "\""; + } + + InvalidVarKwdType::InvalidVarKwdType(ParserState pstate, Backtraces traces, std::string name, const Argument_Ptr arg) + : Base(pstate, def_msg, traces), name(name), arg(arg) + { + msg = "Variable keyword argument map must have string keys.\n"; + msg += name + " is not a string in " + arg->to_string() + "."; + } + + InvalidArgumentType::InvalidArgumentType(ParserState pstate, Backtraces traces, std::string fn, std::string arg, std::string type, const Value_Ptr value) + : Base(pstate, def_msg, traces), fn(fn), arg(arg), type(type), value(value) + { + msg = arg + ": \""; + if (value) msg += value->to_string(Sass_Inspect_Options()); + msg += "\" is not a " + type; + msg += " for `" + fn + "'"; + } + + MissingArgument::MissingArgument(ParserState pstate, Backtraces traces, std::string fn, std::string arg, std::string fntype) + : Base(pstate, def_msg, traces), fn(fn), arg(arg), fntype(fntype) + { + msg = fntype + " " + fn; + msg += " is missing argument "; + msg += arg + "."; + } + + InvalidSyntax::InvalidSyntax(ParserState pstate, Backtraces traces, std::string msg) + : Base(pstate, msg, traces) + { } + + NestingLimitError::NestingLimitError(ParserState pstate, Backtraces traces, std::string msg) + : Base(pstate, msg, traces) + { } + + DuplicateKeyError::DuplicateKeyError(Backtraces traces, const Map& dup, const Expression& org) + : Base(org.pstate(), def_msg, traces), dup(dup), org(org) + { + msg = "Duplicate key "; + msg += dup.get_duplicate_key()->inspect(); + msg += " in map ("; + msg += org.inspect(); + msg += ")."; + } + + TypeMismatch::TypeMismatch(Backtraces traces, const Expression& var, const std::string type) + : Base(var.pstate(), def_msg, traces), var(var), type(type) + { + msg = var.to_string(); + msg += " is not an "; + msg += type; + msg += "."; + } + + InvalidValue::InvalidValue(Backtraces traces, const Expression& val) + : Base(val.pstate(), def_msg, traces), val(val) + { + msg = val.to_string(); + msg += " isn't a valid CSS value."; + } + + StackError::StackError(Backtraces traces, const AST_Node& node) + : Base(node.pstate(), def_msg, traces), node(node) + { + msg = "stack level too deep"; + } + + IncompatibleUnits::IncompatibleUnits(const Units& lhs, const Units& rhs) + { + msg = "Incompatible units: '"; + msg += rhs.unit(); + msg += "' and '"; + msg += lhs.unit(); + msg += "'."; + } + + IncompatibleUnits::IncompatibleUnits(const UnitType lhs, const UnitType rhs) + { + msg = "Incompatible units: '"; + msg += unit_to_string(rhs); + msg += "' and '"; + msg += unit_to_string(lhs); + msg += "'."; + } + + AlphaChannelsNotEqual::AlphaChannelsNotEqual(Expression_Ptr_Const lhs, Expression_Ptr_Const rhs, enum Sass_OP op) + : OperationError(), lhs(lhs), rhs(rhs), op(op) + { + msg = "Alpha channels must be equal: "; + msg += lhs->to_string({ NESTED, 5 }); + msg += " " + sass_op_to_name(op) + " "; + msg += rhs->to_string({ NESTED, 5 }); + msg += "."; + } + + ZeroDivisionError::ZeroDivisionError(const Expression& lhs, const Expression& rhs) + : OperationError(), lhs(lhs), rhs(rhs) + { + msg = "divided by 0"; + } + + UndefinedOperation::UndefinedOperation(Expression_Ptr_Const lhs, Expression_Ptr_Const rhs, enum Sass_OP op) + : OperationError(), lhs(lhs), rhs(rhs), op(op) + { + msg = def_op_msg + ": \""; + msg += lhs->to_string({ NESTED, 5 }); + msg += " " + sass_op_to_name(op) + " "; + msg += rhs->to_string({ TO_SASS, 5 }); + msg += "\"."; + } + + InvalidNullOperation::InvalidNullOperation(Expression_Ptr_Const lhs, Expression_Ptr_Const rhs, enum Sass_OP op) + : UndefinedOperation(lhs, rhs, op) + { + msg = def_op_null_msg + ": \""; + msg += lhs->inspect(); + msg += " " + sass_op_to_name(op) + " "; + msg += rhs->inspect(); + msg += "\"."; + } + + SassValueError::SassValueError(Backtraces traces, ParserState pstate, OperationError& err) + : Base(pstate, err.what(), traces) + { + msg = err.what(); + prefix = err.errtype(); + } + + } + + + void warn(std::string msg, ParserState pstate) + { + std::cerr << "Warning: " << msg << std::endl; + } + + void warning(std::string msg, ParserState pstate) + { + std::string cwd(Sass::File::get_cwd()); + std::string abs_path(Sass::File::rel2abs(pstate.path, cwd, cwd)); + std::string rel_path(Sass::File::abs2rel(pstate.path, cwd, cwd)); + std::string output_path(Sass::File::path_for_console(rel_path, abs_path, pstate.path)); + + std::cerr << "WARNING on line " << pstate.line+1 << ", column " << pstate.column+1 << " of " << output_path << ":" << std::endl; + std::cerr << msg << std::endl << std::endl; + } + + void warn(std::string msg, ParserState pstate, Backtrace* bt) + { + warn(msg, pstate); + } + + void deprecated_function(std::string msg, ParserState pstate) + { + std::string cwd(Sass::File::get_cwd()); + std::string abs_path(Sass::File::rel2abs(pstate.path, cwd, cwd)); + std::string rel_path(Sass::File::abs2rel(pstate.path, cwd, cwd)); + std::string output_path(Sass::File::path_for_console(rel_path, abs_path, pstate.path)); + + std::cerr << "DEPRECATION WARNING: " << msg << std::endl; + std::cerr << "will be an error in future versions of Sass." << std::endl; + std::cerr << " on line " << pstate.line+1 << " of " << output_path << std::endl; + } + + void deprecated(std::string msg, std::string msg2, bool with_column, ParserState pstate) + { + std::string cwd(Sass::File::get_cwd()); + std::string abs_path(Sass::File::rel2abs(pstate.path, cwd, cwd)); + std::string rel_path(Sass::File::abs2rel(pstate.path, cwd, cwd)); + std::string output_path(Sass::File::path_for_console(rel_path, pstate.path, pstate.path)); + + std::cerr << "DEPRECATION WARNING on line " << pstate.line + 1; + if (with_column) std::cerr << ", column " << pstate.column + pstate.offset.column + 1; + if (output_path.length()) std::cerr << " of " << output_path; + std::cerr << ":" << std::endl; + std::cerr << msg << std::endl; + if (msg2.length()) std::cerr << msg2 << std::endl; + std::cerr << std::endl; + } + + void deprecated_bind(std::string msg, ParserState pstate) + { + std::string cwd(Sass::File::get_cwd()); + std::string abs_path(Sass::File::rel2abs(pstate.path, cwd, cwd)); + std::string rel_path(Sass::File::abs2rel(pstate.path, cwd, cwd)); + std::string output_path(Sass::File::path_for_console(rel_path, abs_path, pstate.path)); + + std::cerr << "WARNING: " << msg << std::endl; + std::cerr << " on line " << pstate.line+1 << " of " << output_path << std::endl; + std::cerr << "This will be an error in future versions of Sass." << std::endl; + } + + // should be replaced with error with backtraces + void coreError(std::string msg, ParserState pstate) + { + Backtraces traces; + throw Exception::InvalidSyntax(pstate, traces, msg); + } + + void error(std::string msg, ParserState pstate, Backtraces& traces) + { + traces.push_back(Backtrace(pstate)); + throw Exception::InvalidSyntax(pstate, traces, msg); + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/error_handling.hpp b/mybulma/node_modules/node-sass/src/libsass/src/error_handling.hpp new file mode 100644 index 0000000..f863792 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/error_handling.hpp @@ -0,0 +1,216 @@ +#ifndef SASS_ERROR_HANDLING_H +#define SASS_ERROR_HANDLING_H + +#include +#include +#include +#include "position.hpp" +#include "backtrace.hpp" +#include "ast_fwd_decl.hpp" +#include "sass/functions.h" + +namespace Sass { + + struct Backtrace; + + namespace Exception { + + const std::string def_msg = "Invalid sass detected"; + const std::string def_op_msg = "Undefined operation"; + const std::string def_op_null_msg = "Invalid null operation"; + const std::string def_nesting_limit = "Code too deeply neested"; + + class Base : public std::runtime_error { + protected: + std::string msg; + std::string prefix; + public: + ParserState pstate; + Backtraces traces; + public: + Base(ParserState pstate, std::string msg, Backtraces traces); + virtual const char* errtype() const { return prefix.c_str(); } + virtual const char* what() const throw() { return msg.c_str(); } + virtual ~Base() throw() {}; + }; + + class InvalidSass : public Base { + public: + InvalidSass(ParserState pstate, Backtraces traces, std::string msg); + virtual ~InvalidSass() throw() {}; + }; + + class InvalidParent : public Base { + protected: + Selector_Ptr parent; + Selector_Ptr selector; + public: + InvalidParent(Selector_Ptr parent, Backtraces traces, Selector_Ptr selector); + virtual ~InvalidParent() throw() {}; + }; + + class MissingArgument : public Base { + protected: + std::string fn; + std::string arg; + std::string fntype; + public: + MissingArgument(ParserState pstate, Backtraces traces, std::string fn, std::string arg, std::string fntype); + virtual ~MissingArgument() throw() {}; + }; + + class InvalidArgumentType : public Base { + protected: + std::string fn; + std::string arg; + std::string type; + const Value_Ptr value; + public: + InvalidArgumentType(ParserState pstate, Backtraces traces, std::string fn, std::string arg, std::string type, const Value_Ptr value = 0); + virtual ~InvalidArgumentType() throw() {}; + }; + + class InvalidVarKwdType : public Base { + protected: + std::string name; + const Argument_Ptr arg; + public: + InvalidVarKwdType(ParserState pstate, Backtraces traces, std::string name, const Argument_Ptr arg = 0); + virtual ~InvalidVarKwdType() throw() {}; + }; + + class InvalidSyntax : public Base { + public: + InvalidSyntax(ParserState pstate, Backtraces traces, std::string msg); + virtual ~InvalidSyntax() throw() {}; + }; + + class NestingLimitError : public Base { + public: + NestingLimitError(ParserState pstate, Backtraces traces, std::string msg = def_nesting_limit); + virtual ~NestingLimitError() throw() {}; + }; + + class DuplicateKeyError : public Base { + protected: + const Map& dup; + const Expression& org; + public: + DuplicateKeyError(Backtraces traces, const Map& dup, const Expression& org); + virtual const char* errtype() const { return "Error"; } + virtual ~DuplicateKeyError() throw() {}; + }; + + class TypeMismatch : public Base { + protected: + const Expression& var; + const std::string type; + public: + TypeMismatch(Backtraces traces, const Expression& var, const std::string type); + virtual const char* errtype() const { return "Error"; } + virtual ~TypeMismatch() throw() {}; + }; + + class InvalidValue : public Base { + protected: + const Expression& val; + public: + InvalidValue(Backtraces traces, const Expression& val); + virtual const char* errtype() const { return "Error"; } + virtual ~InvalidValue() throw() {}; + }; + + class StackError : public Base { + protected: + const AST_Node& node; + public: + StackError(Backtraces traces, const AST_Node& node); + virtual const char* errtype() const { return "SystemStackError"; } + virtual ~StackError() throw() {}; + }; + + /* common virtual base class (has no pstate or trace) */ + class OperationError : public std::runtime_error { + protected: + std::string msg; + public: + OperationError(std::string msg = def_op_msg) + : std::runtime_error(msg), msg(msg) + {}; + public: + virtual const char* errtype() const { return "Error"; } + virtual const char* what() const throw() { return msg.c_str(); } + virtual ~OperationError() throw() {}; + }; + + class ZeroDivisionError : public OperationError { + protected: + const Expression& lhs; + const Expression& rhs; + public: + ZeroDivisionError(const Expression& lhs, const Expression& rhs); + virtual const char* errtype() const { return "ZeroDivisionError"; } + virtual ~ZeroDivisionError() throw() {}; + }; + + class IncompatibleUnits : public OperationError { + protected: + // const Sass::UnitType lhs; + // const Sass::UnitType rhs; + public: + IncompatibleUnits(const Units& lhs, const Units& rhs); + IncompatibleUnits(const UnitType lhs, const UnitType rhs); + virtual ~IncompatibleUnits() throw() {}; + }; + + class UndefinedOperation : public OperationError { + protected: + Expression_Ptr_Const lhs; + Expression_Ptr_Const rhs; + const Sass_OP op; + public: + UndefinedOperation(Expression_Ptr_Const lhs, Expression_Ptr_Const rhs, enum Sass_OP op); + // virtual const char* errtype() const { return "Error"; } + virtual ~UndefinedOperation() throw() {}; + }; + + class InvalidNullOperation : public UndefinedOperation { + public: + InvalidNullOperation(Expression_Ptr_Const lhs, Expression_Ptr_Const rhs, enum Sass_OP op); + virtual ~InvalidNullOperation() throw() {}; + }; + + class AlphaChannelsNotEqual : public OperationError { + protected: + Expression_Ptr_Const lhs; + Expression_Ptr_Const rhs; + const Sass_OP op; + public: + AlphaChannelsNotEqual(Expression_Ptr_Const lhs, Expression_Ptr_Const rhs, enum Sass_OP op); + // virtual const char* errtype() const { return "Error"; } + virtual ~AlphaChannelsNotEqual() throw() {}; + }; + + class SassValueError : public Base { + public: + SassValueError(Backtraces traces, ParserState pstate, OperationError& err); + virtual ~SassValueError() throw() {}; + }; + + } + + void warn(std::string msg, ParserState pstate); + void warn(std::string msg, ParserState pstate, Backtrace* bt); + void warning(std::string msg, ParserState pstate); + + void deprecated_function(std::string msg, ParserState pstate); + void deprecated(std::string msg, std::string msg2, bool with_column, ParserState pstate); + void deprecated_bind(std::string msg, ParserState pstate); + // void deprecated(std::string msg, ParserState pstate, Backtrace* bt); + + void coreError(std::string msg, ParserState pstate); + void error(std::string msg, ParserState pstate, Backtraces& traces); + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/eval.cpp b/mybulma/node_modules/node-sass/src/libsass/src/eval.cpp new file mode 100644 index 0000000..841f727 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/eval.cpp @@ -0,0 +1,1663 @@ +#include "sass.hpp" +#include +#include +#include +#include +#include +#include + +#include "file.hpp" +#include "eval.hpp" +#include "ast.hpp" +#include "bind.hpp" +#include "util.hpp" +#include "inspect.hpp" +#include "operators.hpp" +#include "environment.hpp" +#include "position.hpp" +#include "sass/values.h" +#include "to_value.hpp" +#include "to_c.hpp" +#include "context.hpp" +#include "backtrace.hpp" +#include "lexer.hpp" +#include "prelexer.hpp" +#include "parser.hpp" +#include "expand.hpp" +#include "color_maps.hpp" +#include "sass_functions.hpp" + +namespace Sass { + + Eval::Eval(Expand& exp) + : exp(exp), + ctx(exp.ctx), + traces(exp.traces), + force(false), + is_in_comment(false), + is_in_selector_schema(false) + { + bool_true = SASS_MEMORY_NEW(Boolean, "[NA]", true); + bool_false = SASS_MEMORY_NEW(Boolean, "[NA]", false); + } + Eval::~Eval() { } + + Env* Eval::environment() + { + return exp.environment(); + } + + Selector_List_Obj Eval::selector() + { + return exp.selector(); + } + + Expression_Ptr Eval::operator()(Block_Ptr b) + { + Expression_Ptr val = 0; + for (size_t i = 0, L = b->length(); i < L; ++i) { + val = b->at(i)->perform(this); + if (val) return val; + } + return val; + } + + Expression_Ptr Eval::operator()(Assignment_Ptr a) + { + Env* env = exp.environment(); + std::string var(a->variable()); + if (a->is_global()) { + if (a->is_default()) { + if (env->has_global(var)) { + Expression_Ptr e = Cast(env->get_global(var)); + if (!e || e->concrete_type() == Expression::NULL_VAL) { + env->set_global(var, a->value()->perform(this)); + } + } + else { + env->set_global(var, a->value()->perform(this)); + } + } + else { + env->set_global(var, a->value()->perform(this)); + } + } + else if (a->is_default()) { + if (env->has_lexical(var)) { + auto cur = env; + while (cur && cur->is_lexical()) { + if (cur->has_local(var)) { + if (AST_Node_Obj node = cur->get_local(var)) { + Expression_Ptr e = Cast(node); + if (!e || e->concrete_type() == Expression::NULL_VAL) { + cur->set_local(var, a->value()->perform(this)); + } + } + else { + throw std::runtime_error("Env not in sync"); + } + return 0; + } + cur = cur->parent(); + } + throw std::runtime_error("Env not in sync"); + } + else if (env->has_global(var)) { + if (AST_Node_Obj node = env->get_global(var)) { + Expression_Ptr e = Cast(node); + if (!e || e->concrete_type() == Expression::NULL_VAL) { + env->set_global(var, a->value()->perform(this)); + } + } + } + else if (env->is_lexical()) { + env->set_local(var, a->value()->perform(this)); + } + else { + env->set_local(var, a->value()->perform(this)); + } + } + else { + env->set_lexical(var, a->value()->perform(this)); + } + return 0; + } + + Expression_Ptr Eval::operator()(If_Ptr i) + { + Expression_Obj rv = 0; + Env env(exp.environment()); + exp.env_stack.push_back(&env); + Expression_Obj cond = i->predicate()->perform(this); + if (!cond->is_false()) { + rv = i->block()->perform(this); + } + else { + Block_Obj alt = i->alternative(); + if (alt) rv = alt->perform(this); + } + exp.env_stack.pop_back(); + return rv.detach(); + } + + // For does not create a new env scope + // But iteration vars are reset afterwards + Expression_Ptr Eval::operator()(For_Ptr f) + { + std::string variable(f->variable()); + Expression_Obj low = f->lower_bound()->perform(this); + if (low->concrete_type() != Expression::NUMBER) { + traces.push_back(Backtrace(low->pstate())); + throw Exception::TypeMismatch(traces, *low, "integer"); + } + Expression_Obj high = f->upper_bound()->perform(this); + if (high->concrete_type() != Expression::NUMBER) { + traces.push_back(Backtrace(high->pstate())); + throw Exception::TypeMismatch(traces, *high, "integer"); + } + Number_Obj sass_start = Cast(low); + Number_Obj sass_end = Cast(high); + // check if units are valid for sequence + if (sass_start->unit() != sass_end->unit()) { + std::stringstream msg; msg << "Incompatible units: '" + << sass_end->unit() << "' and '" + << sass_start->unit() << "'."; + error(msg.str(), low->pstate(), traces); + } + double start = sass_start->value(); + double end = sass_end->value(); + // only create iterator once in this environment + Env env(environment(), true); + exp.env_stack.push_back(&env); + Block_Obj body = f->block(); + Expression_Ptr val = 0; + if (start < end) { + if (f->is_inclusive()) ++end; + for (double i = start; + i < end; + ++i) { + Number_Obj it = SASS_MEMORY_NEW(Number, low->pstate(), i, sass_end->unit()); + env.set_local(variable, it); + val = body->perform(this); + if (val) break; + } + } else { + if (f->is_inclusive()) --end; + for (double i = start; + i > end; + --i) { + Number_Obj it = SASS_MEMORY_NEW(Number, low->pstate(), i, sass_end->unit()); + env.set_local(variable, it); + val = body->perform(this); + if (val) break; + } + } + exp.env_stack.pop_back(); + return val; + } + + // Eval does not create a new env scope + // But iteration vars are reset afterwards + Expression_Ptr Eval::operator()(Each_Ptr e) + { + std::vector variables(e->variables()); + Expression_Obj expr = e->list()->perform(this); + Env env(environment(), true); + exp.env_stack.push_back(&env); + List_Obj list = 0; + Map_Ptr map = 0; + if (expr->concrete_type() == Expression::MAP) { + map = Cast(expr); + } + else if (Selector_List_Ptr ls = Cast(expr)) { + Listize listize; + Expression_Obj rv = ls->perform(&listize); + list = Cast(rv); + } + else if (expr->concrete_type() != Expression::LIST) { + list = SASS_MEMORY_NEW(List, expr->pstate(), 1, SASS_COMMA); + list->append(expr); + } + else { + list = Cast(expr); + } + + Block_Obj body = e->block(); + Expression_Obj val = 0; + + if (map) { + for (Expression_Obj key : map->keys()) { + Expression_Obj value = map->at(key); + + if (variables.size() == 1) { + List_Ptr variable = SASS_MEMORY_NEW(List, map->pstate(), 2, SASS_SPACE); + variable->append(key); + variable->append(value); + env.set_local(variables[0], variable); + } else { + env.set_local(variables[0], key); + env.set_local(variables[1], value); + } + + val = body->perform(this); + if (val) break; + } + } + else { + if (list->length() == 1 && Cast(list)) { + list = Cast(list); + } + for (size_t i = 0, L = list->length(); i < L; ++i) { + Expression_Ptr item = list->at(i); + // unwrap value if the expression is an argument + if (Argument_Ptr arg = Cast(item)) item = arg->value(); + // check if we got passed a list of args (investigate) + if (List_Ptr scalars = Cast(item)) { + if (variables.size() == 1) { + Expression_Ptr var = scalars; + env.set_local(variables[0], var); + } else { + // XXX: this is never hit via spec tests + for (size_t j = 0, K = variables.size(); j < K; ++j) { + Expression_Ptr res = j >= scalars->length() + ? SASS_MEMORY_NEW(Null, expr->pstate()) + : scalars->at(j); + env.set_local(variables[j], res); + } + } + } else { + if (variables.size() > 0) { + env.set_local(variables.at(0), item); + for (size_t j = 1, K = variables.size(); j < K; ++j) { + // XXX: this is never hit via spec tests + Expression_Ptr res = SASS_MEMORY_NEW(Null, expr->pstate()); + env.set_local(variables[j], res); + } + } + } + val = body->perform(this); + if (val) break; + } + } + exp.env_stack.pop_back(); + return val.detach(); + } + + Expression_Ptr Eval::operator()(While_Ptr w) + { + Expression_Obj pred = w->predicate(); + Block_Obj body = w->block(); + Env env(environment(), true); + exp.env_stack.push_back(&env); + Expression_Obj cond = pred->perform(this); + while (!cond->is_false()) { + Expression_Obj val = body->perform(this); + if (val) { + exp.env_stack.pop_back(); + return val.detach(); + } + cond = pred->perform(this); + } + exp.env_stack.pop_back(); + return 0; + } + + Expression_Ptr Eval::operator()(Return_Ptr r) + { + return r->value()->perform(this); + } + + Expression_Ptr Eval::operator()(Warning_Ptr w) + { + Sass_Output_Style outstyle = ctx.c_options.output_style; + ctx.c_options.output_style = NESTED; + Expression_Obj message = w->message()->perform(this); + Env* env = exp.environment(); + + // try to use generic function + if (env->has("@warn[f]")) { + + // add call stack entry + ctx.callee_stack.push_back({ + "@warn", + w->pstate().path, + w->pstate().line + 1, + w->pstate().column + 1, + SASS_CALLEE_FUNCTION, + { env } + }); + + Definition_Ptr def = Cast((*env)["@warn[f]"]); + // Block_Obj body = def->block(); + // Native_Function func = def->native_function(); + Sass_Function_Entry c_function = def->c_function(); + Sass_Function_Fn c_func = sass_function_get_function(c_function); + + To_C to_c; + union Sass_Value* c_args = sass_make_list(1, SASS_COMMA, false); + sass_list_set_value(c_args, 0, message->perform(&to_c)); + union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler); + ctx.c_options.output_style = outstyle; + ctx.callee_stack.pop_back(); + sass_delete_value(c_args); + sass_delete_value(c_val); + return 0; + + } + + std::string result(unquote(message->to_sass())); + std::cerr << "WARNING: " << result << std::endl; + traces.push_back(Backtrace(w->pstate())); + std::cerr << traces_to_string(traces, " "); + std::cerr << std::endl; + ctx.c_options.output_style = outstyle; + traces.pop_back(); + return 0; + } + + Expression_Ptr Eval::operator()(Error_Ptr e) + { + Sass_Output_Style outstyle = ctx.c_options.output_style; + ctx.c_options.output_style = NESTED; + Expression_Obj message = e->message()->perform(this); + Env* env = exp.environment(); + + // try to use generic function + if (env->has("@error[f]")) { + + // add call stack entry + ctx.callee_stack.push_back({ + "@error", + e->pstate().path, + e->pstate().line + 1, + e->pstate().column + 1, + SASS_CALLEE_FUNCTION, + { env } + }); + + Definition_Ptr def = Cast((*env)["@error[f]"]); + // Block_Obj body = def->block(); + // Native_Function func = def->native_function(); + Sass_Function_Entry c_function = def->c_function(); + Sass_Function_Fn c_func = sass_function_get_function(c_function); + + To_C to_c; + union Sass_Value* c_args = sass_make_list(1, SASS_COMMA, false); + sass_list_set_value(c_args, 0, message->perform(&to_c)); + union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler); + ctx.c_options.output_style = outstyle; + ctx.callee_stack.pop_back(); + sass_delete_value(c_args); + sass_delete_value(c_val); + return 0; + + } + + std::string result(unquote(message->to_sass())); + ctx.c_options.output_style = outstyle; + error(result, e->pstate(), traces); + return 0; + } + + Expression_Ptr Eval::operator()(Debug_Ptr d) + { + Sass_Output_Style outstyle = ctx.c_options.output_style; + ctx.c_options.output_style = NESTED; + Expression_Obj message = d->value()->perform(this); + Env* env = exp.environment(); + + // try to use generic function + if (env->has("@debug[f]")) { + + // add call stack entry + ctx.callee_stack.push_back({ + "@debug", + d->pstate().path, + d->pstate().line + 1, + d->pstate().column + 1, + SASS_CALLEE_FUNCTION, + { env } + }); + + Definition_Ptr def = Cast((*env)["@debug[f]"]); + // Block_Obj body = def->block(); + // Native_Function func = def->native_function(); + Sass_Function_Entry c_function = def->c_function(); + Sass_Function_Fn c_func = sass_function_get_function(c_function); + + To_C to_c; + union Sass_Value* c_args = sass_make_list(1, SASS_COMMA, false); + sass_list_set_value(c_args, 0, message->perform(&to_c)); + union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler); + ctx.c_options.output_style = outstyle; + ctx.callee_stack.pop_back(); + sass_delete_value(c_args); + sass_delete_value(c_val); + return 0; + + } + + std::string cwd(ctx.cwd()); + std::string result(unquote(message->to_sass())); + std::string abs_path(Sass::File::rel2abs(d->pstate().path, cwd, cwd)); + std::string rel_path(Sass::File::abs2rel(d->pstate().path, cwd, cwd)); + std::string output_path(Sass::File::path_for_console(rel_path, abs_path, d->pstate().path)); + ctx.c_options.output_style = outstyle; + + std::cerr << output_path << ":" << d->pstate().line+1 << " DEBUG: " << result; + std::cerr << std::endl; + return 0; + } + + Expression_Ptr Eval::operator()(List_Ptr l) + { + // special case for unevaluated map + if (l->separator() == SASS_HASH) { + Map_Obj lm = SASS_MEMORY_NEW(Map, + l->pstate(), + l->length() / 2); + for (size_t i = 0, L = l->length(); i < L; i += 2) + { + Expression_Obj key = (*l)[i+0]->perform(this); + Expression_Obj val = (*l)[i+1]->perform(this); + // make sure the color key never displays its real name + key->is_delayed(true); // verified + *lm << std::make_pair(key, val); + } + if (lm->has_duplicate_key()) { + traces.push_back(Backtrace(l->pstate())); + throw Exception::DuplicateKeyError(traces, *lm, *l); + } + + lm->is_interpolant(l->is_interpolant()); + return lm->perform(this); + } + // check if we should expand it + if (l->is_expanded()) return l; + // regular case for unevaluated lists + List_Obj ll = SASS_MEMORY_NEW(List, + l->pstate(), + l->length(), + l->separator(), + l->is_arglist(), + l->is_bracketed()); + for (size_t i = 0, L = l->length(); i < L; ++i) { + ll->append((*l)[i]->perform(this)); + } + ll->is_interpolant(l->is_interpolant()); + ll->from_selector(l->from_selector()); + ll->is_expanded(true); + return ll.detach(); + } + + Expression_Ptr Eval::operator()(Map_Ptr m) + { + if (m->is_expanded()) return m; + + // make sure we're not starting with duplicate keys. + // the duplicate key state will have been set in the parser phase. + if (m->has_duplicate_key()) { + traces.push_back(Backtrace(m->pstate())); + throw Exception::DuplicateKeyError(traces, *m, *m); + } + + Map_Obj mm = SASS_MEMORY_NEW(Map, + m->pstate(), + m->length()); + for (auto key : m->keys()) { + Expression_Ptr ex_key = key->perform(this); + Expression_Ptr ex_val = m->at(key); + if (ex_val == NULL) continue; + ex_val = ex_val->perform(this); + *mm << std::make_pair(ex_key, ex_val); + } + + // check the evaluated keys aren't duplicates. + if (mm->has_duplicate_key()) { + traces.push_back(Backtrace(m->pstate())); + throw Exception::DuplicateKeyError(traces, *mm, *m); + } + + mm->is_expanded(true); + return mm.detach(); + } + + Expression_Ptr Eval::operator()(Binary_Expression_Ptr b_in) + { + + Expression_Obj lhs = b_in->left(); + Expression_Obj rhs = b_in->right(); + enum Sass_OP op_type = b_in->optype(); + + if (op_type == Sass_OP::AND) { + // LOCAL_FLAG(force, true); + lhs = lhs->perform(this); + if (!*lhs) return lhs.detach(); + return rhs->perform(this); + } + else if (op_type == Sass_OP::OR) { + // LOCAL_FLAG(force, true); + lhs = lhs->perform(this); + if (*lhs) return lhs.detach(); + return rhs->perform(this); + } + + // Evaluate variables as early o + while (Variable_Ptr l_v = Cast(lhs)) { + lhs = operator()(l_v); + } + while (Variable_Ptr r_v = Cast(rhs)) { + rhs = operator()(r_v); + } + + Binary_Expression_Obj b = b_in; + + // Evaluate sub-expressions early on + while (Binary_Expression_Ptr l_b = Cast(lhs)) { + if (!force && l_b->is_delayed()) break; + lhs = operator()(l_b); + } + while (Binary_Expression_Ptr r_b = Cast(rhs)) { + if (!force && r_b->is_delayed()) break; + rhs = operator()(r_b); + } + + // don't eval delayed expressions (the '/' when used as a separator) + if (!force && op_type == Sass_OP::DIV && b->is_delayed()) { + b->right(b->right()->perform(this)); + b->left(b->left()->perform(this)); + return b.detach(); + } + + // specific types we know are final + // handle them early to avoid overhead + if (Number_Ptr l_n = Cast(lhs)) { + // lhs is number and rhs is number + if (Number_Ptr r_n = Cast(rhs)) { + try { + switch (op_type) { + case Sass_OP::EQ: return *l_n == *r_n ? bool_true : bool_false; + case Sass_OP::NEQ: return *l_n == *r_n ? bool_false : bool_true; + case Sass_OP::LT: return *l_n < *r_n ? bool_true : bool_false; + case Sass_OP::GTE: return *l_n < *r_n ? bool_false : bool_true; + case Sass_OP::LTE: return *l_n < *r_n || *l_n == *r_n ? bool_true : bool_false; + case Sass_OP::GT: return *l_n < *r_n || *l_n == *r_n ? bool_false : bool_true; + case Sass_OP::ADD: case Sass_OP::SUB: case Sass_OP::MUL: case Sass_OP::DIV: case Sass_OP::MOD: + return Operators::op_numbers(op_type, *l_n, *r_n, ctx.c_options, b_in->pstate()); + default: break; + } + } + catch (Exception::OperationError& err) + { + traces.push_back(Backtrace(b_in->pstate())); + throw Exception::SassValueError(traces, b_in->pstate(), err); + } + } + // lhs is number and rhs is color + else if (Color_Ptr r_c = Cast(rhs)) { + try { + switch (op_type) { + case Sass_OP::EQ: return *l_n == *r_c ? bool_true : bool_false; + case Sass_OP::NEQ: return *l_n == *r_c ? bool_false : bool_true; + case Sass_OP::ADD: case Sass_OP::SUB: case Sass_OP::MUL: case Sass_OP::DIV: case Sass_OP::MOD: + return Operators::op_number_color(op_type, *l_n, *r_c, ctx.c_options, b_in->pstate()); + default: break; + } + } + catch (Exception::OperationError& err) + { + traces.push_back(Backtrace(b_in->pstate())); + throw Exception::SassValueError(traces, b_in->pstate(), err); + } + } + } + else if (Color_Ptr l_c = Cast(lhs)) { + // lhs is color and rhs is color + if (Color_Ptr r_c = Cast(rhs)) { + try { + switch (op_type) { + case Sass_OP::EQ: return *l_c == *r_c ? bool_true : bool_false; + case Sass_OP::NEQ: return *l_c == *r_c ? bool_false : bool_true; + case Sass_OP::LT: return *l_c < *r_c ? bool_true : bool_false; + case Sass_OP::GTE: return *l_c < *r_c ? bool_false : bool_true; + case Sass_OP::LTE: return *l_c < *r_c || *l_c == *r_c ? bool_true : bool_false; + case Sass_OP::GT: return *l_c < *r_c || *l_c == *r_c ? bool_false : bool_true; + case Sass_OP::ADD: case Sass_OP::SUB: case Sass_OP::MUL: case Sass_OP::DIV: case Sass_OP::MOD: + return Operators::op_colors(op_type, *l_c, *r_c, ctx.c_options, b_in->pstate()); + default: break; + } + } + catch (Exception::OperationError& err) + { + traces.push_back(Backtrace(b_in->pstate())); + throw Exception::SassValueError(traces, b_in->pstate(), err); + } + } + // lhs is color and rhs is number + else if (Number_Ptr r_n = Cast(rhs)) { + try { + switch (op_type) { + case Sass_OP::EQ: return *l_c == *r_n ? bool_true : bool_false; + case Sass_OP::NEQ: return *l_c == *r_n ? bool_false : bool_true; + case Sass_OP::ADD: case Sass_OP::SUB: case Sass_OP::MUL: case Sass_OP::DIV: case Sass_OP::MOD: + return Operators::op_color_number(op_type, *l_c, *r_n, ctx.c_options, b_in->pstate()); + default: break; + } + } + catch (Exception::OperationError& err) + { + traces.push_back(Backtrace(b_in->pstate())); + throw Exception::SassValueError(traces, b_in->pstate(), err); + } + } + } + + String_Schema_Obj ret_schema; + + // only the last item will be used to eval the binary expression + if (String_Schema_Ptr s_l = Cast(b->left())) { + if (!s_l->has_interpolant() && (!s_l->is_right_interpolant())) { + ret_schema = SASS_MEMORY_NEW(String_Schema, b->pstate()); + Binary_Expression_Obj bin_ex = SASS_MEMORY_NEW(Binary_Expression, b->pstate(), + b->op(), s_l->last(), b->right()); + bin_ex->is_delayed(b->left()->is_delayed() || b->right()->is_delayed()); // unverified + for (size_t i = 0; i < s_l->length() - 1; ++i) { + ret_schema->append(s_l->at(i)->perform(this)); + } + ret_schema->append(bin_ex->perform(this)); + return ret_schema->perform(this); + } + } + if (String_Schema_Ptr s_r = Cast(b->right())) { + + if (!s_r->has_interpolant() && (!s_r->is_left_interpolant() || op_type == Sass_OP::DIV)) { + ret_schema = SASS_MEMORY_NEW(String_Schema, b->pstate()); + Binary_Expression_Obj bin_ex = SASS_MEMORY_NEW(Binary_Expression, b->pstate(), + b->op(), b->left(), s_r->first()); + bin_ex->is_delayed(b->left()->is_delayed() || b->right()->is_delayed()); // verified + ret_schema->append(bin_ex->perform(this)); + for (size_t i = 1; i < s_r->length(); ++i) { + ret_schema->append(s_r->at(i)->perform(this)); + } + return ret_schema->perform(this); + } + } + + // fully evaluate their values + if (op_type == Sass_OP::EQ || + op_type == Sass_OP::NEQ || + op_type == Sass_OP::GT || + op_type == Sass_OP::GTE || + op_type == Sass_OP::LT || + op_type == Sass_OP::LTE) + { + LOCAL_FLAG(force, true); + lhs->is_expanded(false); + lhs->set_delayed(false); + lhs = lhs->perform(this); + rhs->is_expanded(false); + rhs->set_delayed(false); + rhs = rhs->perform(this); + } + else { + lhs = lhs->perform(this); + } + + // not a logical connective, so go ahead and eval the rhs + rhs = rhs->perform(this); + AST_Node_Obj lu = lhs; + AST_Node_Obj ru = rhs; + + Expression::Concrete_Type l_type; + Expression::Concrete_Type r_type; + + // Is one of the operands an interpolant? + String_Schema_Obj s1 = Cast(b->left()); + String_Schema_Obj s2 = Cast(b->right()); + Binary_Expression_Obj b1 = Cast(b->left()); + Binary_Expression_Obj b2 = Cast(b->right()); + + bool schema_op = false; + + bool force_delay = (s2 && s2->is_left_interpolant()) || + (s1 && s1->is_right_interpolant()) || + (b1 && b1->is_right_interpolant()) || + (b2 && b2->is_left_interpolant()); + + if ((s1 && s1->has_interpolants()) || (s2 && s2->has_interpolants()) || force_delay) + { + if (op_type == Sass_OP::DIV || op_type == Sass_OP::MUL || op_type == Sass_OP::MOD || op_type == Sass_OP::ADD || op_type == Sass_OP::SUB || + op_type == Sass_OP::EQ) { + // If possible upgrade LHS to a number (for number to string compare) + if (String_Constant_Ptr str = Cast(lhs)) { + std::string value(str->value()); + const char* start = value.c_str(); + if (Prelexer::sequence < Prelexer::dimension, Prelexer::end_of_file >(start) != 0) { + lhs = Parser::lexed_dimension(b->pstate(), str->value()); + } + } + // If possible upgrade RHS to a number (for string to number compare) + if (String_Constant_Ptr str = Cast(rhs)) { + std::string value(str->value()); + const char* start = value.c_str(); + if (Prelexer::sequence < Prelexer::dimension, Prelexer::number >(start) != 0) { + rhs = Parser::lexed_dimension(b->pstate(), str->value()); + } + } + } + + To_Value to_value(ctx); + Value_Obj v_l = Cast(lhs->perform(&to_value)); + Value_Obj v_r = Cast(rhs->perform(&to_value)); + + if (force_delay) { + std::string str(""); + str += v_l->to_string(ctx.c_options); + if (b->op().ws_before) str += " "; + str += b->separator(); + if (b->op().ws_after) str += " "; + str += v_r->to_string(ctx.c_options); + String_Constant_Ptr val = SASS_MEMORY_NEW(String_Constant, b->pstate(), str); + val->is_interpolant(b->left()->has_interpolant()); + return val; + } + } + + // see if it's a relational expression + try { + switch(op_type) { + case Sass_OP::EQ: return SASS_MEMORY_NEW(Boolean, b->pstate(), Operators::eq(lhs, rhs)); + case Sass_OP::NEQ: return SASS_MEMORY_NEW(Boolean, b->pstate(), Operators::neq(lhs, rhs)); + case Sass_OP::GT: return SASS_MEMORY_NEW(Boolean, b->pstate(), Operators::gt(lhs, rhs)); + case Sass_OP::GTE: return SASS_MEMORY_NEW(Boolean, b->pstate(), Operators::gte(lhs, rhs)); + case Sass_OP::LT: return SASS_MEMORY_NEW(Boolean, b->pstate(), Operators::lt(lhs, rhs)); + case Sass_OP::LTE: return SASS_MEMORY_NEW(Boolean, b->pstate(), Operators::lte(lhs, rhs)); + default: break; + } + } + catch (Exception::OperationError& err) + { + // throw Exception::Base(b->pstate(), err.what()); + traces.push_back(Backtrace(b->pstate())); + throw Exception::SassValueError(traces, b->pstate(), err); + } + + l_type = lhs->concrete_type(); + r_type = rhs->concrete_type(); + + // ToDo: throw error in op functions + // ToDo: then catch and re-throw them + Expression_Obj rv; + try { + ParserState pstate(b->pstate()); + if (l_type == Expression::NUMBER && r_type == Expression::NUMBER) { + Number_Ptr l_n = Cast(lhs); + Number_Ptr r_n = Cast(rhs); + l_n->reduce(); r_n->reduce(); + rv = Operators::op_numbers(op_type, *l_n, *r_n, ctx.c_options, pstate); + } + else if (l_type == Expression::NUMBER && r_type == Expression::COLOR) { + Number_Ptr l_n = Cast(lhs); + Color_Ptr r_c = Cast(rhs); + rv = Operators::op_number_color(op_type, *l_n, *r_c, ctx.c_options, pstate); + } + else if (l_type == Expression::COLOR && r_type == Expression::NUMBER) { + Color_Ptr l_c = Cast(lhs); + Number_Ptr r_n = Cast(rhs); + rv = Operators::op_color_number(op_type, *l_c, *r_n, ctx.c_options, pstate); + } + else if (l_type == Expression::COLOR && r_type == Expression::COLOR) { + Color_Ptr l_c = Cast(lhs); + Color_Ptr r_c = Cast(rhs); + rv = Operators::op_colors(op_type, *l_c, *r_c, ctx.c_options, pstate); + } + else { + To_Value to_value(ctx); + // this will leak if perform does not return a value! + Value_Obj v_l = Cast(lhs->perform(&to_value)); + Value_Obj v_r = Cast(rhs->perform(&to_value)); + bool interpolant = b->is_right_interpolant() || + b->is_left_interpolant() || + b->is_interpolant(); + if (op_type == Sass_OP::SUB) interpolant = false; + // if (op_type == Sass_OP::DIV) interpolant = true; + // check for type violations + if (l_type == Expression::MAP || l_type == Expression::FUNCTION_VAL) { + traces.push_back(Backtrace(v_l->pstate())); + throw Exception::InvalidValue(traces, *v_l); + } + if (r_type == Expression::MAP || l_type == Expression::FUNCTION_VAL) { + traces.push_back(Backtrace(v_r->pstate())); + throw Exception::InvalidValue(traces, *v_r); + } + Value_Ptr ex = Operators::op_strings(b->op(), *v_l, *v_r, ctx.c_options, pstate, !interpolant); // pass true to compress + if (String_Constant_Ptr str = Cast(ex)) + { + if (str->concrete_type() == Expression::STRING) + { + String_Constant_Ptr lstr = Cast(lhs); + String_Constant_Ptr rstr = Cast(rhs); + if (op_type != Sass_OP::SUB) { + if (String_Constant_Ptr org = lstr ? lstr : rstr) + { str->quote_mark(org->quote_mark()); } + } + } + } + ex->is_interpolant(b->is_interpolant()); + rv = ex; + } + } + catch (Exception::OperationError& err) + { + traces.push_back(Backtrace(b->pstate())); + // throw Exception::Base(b->pstate(), err.what()); + throw Exception::SassValueError(traces, b->pstate(), err); + } + + if (rv) { + if (schema_op) { + // XXX: this is never hit via spec tests + (*s2)[0] = rv; + rv = s2->perform(this); + } + } + + return rv.detach(); + + } + + Expression_Ptr Eval::operator()(Unary_Expression_Ptr u) + { + Expression_Obj operand = u->operand()->perform(this); + if (u->optype() == Unary_Expression::NOT) { + Boolean_Ptr result = SASS_MEMORY_NEW(Boolean, u->pstate(), (bool)*operand); + result->value(!result->value()); + return result; + } + else if (Number_Obj nr = Cast(operand)) { + // negate value for minus unary expression + if (u->optype() == Unary_Expression::MINUS) { + Number_Obj cpy = SASS_MEMORY_COPY(nr); + cpy->value( - cpy->value() ); // negate value + return cpy.detach(); // return the copy + } + else if (u->optype() == Unary_Expression::SLASH) { + std::string str = '/' + nr->to_string(ctx.c_options); + return SASS_MEMORY_NEW(String_Constant, u->pstate(), str); + } + // nothing for positive + return nr.detach(); + } + else { + // Special cases: +/- variables which evaluate to null ouput just +/-, + // but +/- null itself outputs the string + if (operand->concrete_type() == Expression::NULL_VAL && Cast(u->operand())) { + u->operand(SASS_MEMORY_NEW(String_Quoted, u->pstate(), "")); + } + // Never apply unary opertions on colors @see #2140 + else if (Color_Ptr color = Cast(operand)) { + // Use the color name if this was eval with one + if (color->disp().length() > 0) { + operand = SASS_MEMORY_NEW(String_Constant, operand->pstate(), color->disp()); + u->operand(operand); + } + } + else { + u->operand(operand); + } + + return SASS_MEMORY_NEW(String_Quoted, + u->pstate(), + u->inspect()); + } + // unreachable + return u; + } + + Expression_Ptr Eval::operator()(Function_Call_Ptr c) + { + if (traces.size() > Constants::MaxCallStack) { + // XXX: this is never hit via spec tests + std::ostringstream stm; + stm << "Stack depth exceeded max of " << Constants::MaxCallStack; + error(stm.str(), c->pstate(), traces); + } + std::string name(Util::normalize_underscores(c->name())); + std::string full_name(name + "[f]"); + // we make a clone here, need to implement that further + Arguments_Obj args = c->arguments(); + + Env* env = environment(); + if (!env->has(full_name) || (!c->via_call() && Prelexer::re_special_fun(name.c_str()))) { + if (!env->has("*[f]")) { + for (Argument_Obj arg : args->elements()) { + if (List_Obj ls = Cast(arg->value())) { + if (ls->size() == 0) error("() isn't a valid CSS value.", c->pstate(), traces); + } + } + args = Cast(args->perform(this)); + Function_Call_Obj lit = SASS_MEMORY_NEW(Function_Call, + c->pstate(), + c->name(), + args); + if (args->has_named_arguments()) { + error("Function " + c->name() + " doesn't support keyword arguments", c->pstate(), traces); + } + String_Quoted_Ptr str = SASS_MEMORY_NEW(String_Quoted, + c->pstate(), + lit->to_string(ctx.c_options)); + str->is_interpolant(c->is_interpolant()); + return str; + } else { + // call generic function + full_name = "*[f]"; + } + } + + // further delay for calls + if (full_name != "call[f]") { + args->set_delayed(false); // verified + } + if (full_name != "if[f]") { + args = Cast(args->perform(this)); + } + Definition_Ptr def = Cast((*env)[full_name]); + + if (c->func()) def = c->func()->definition(); + + if (def->is_overload_stub()) { + std::stringstream ss; + size_t L = args->length(); + // account for rest arguments + if (args->has_rest_argument() && args->length() > 0) { + // get the rest arguments list + List_Ptr rest = Cast(args->last()->value()); + // arguments before rest argument plus rest + if (rest) L += rest->length() - 1; + } + ss << full_name << L; + full_name = ss.str(); + std::string resolved_name(full_name); + if (!env->has(resolved_name)) error("overloaded function `" + std::string(c->name()) + "` given wrong number of arguments", c->pstate(), traces); + def = Cast((*env)[resolved_name]); + } + + Expression_Obj result = c; + Block_Obj body = def->block(); + Native_Function func = def->native_function(); + Sass_Function_Entry c_function = def->c_function(); + + if (c->is_css()) return result.detach(); + + Parameters_Obj params = def->parameters(); + Env fn_env(def->environment()); + exp.env_stack.push_back(&fn_env); + + if (func || body) { + bind(std::string("Function"), c->name(), params, args, &ctx, &fn_env, this); + std::string msg(", in function `" + c->name() + "`"); + traces.push_back(Backtrace(c->pstate(), msg)); + ctx.callee_stack.push_back({ + c->name().c_str(), + c->pstate().path, + c->pstate().line + 1, + c->pstate().column + 1, + SASS_CALLEE_FUNCTION, + { env } + }); + + // eval the body if user-defined or special, invoke underlying CPP function if native + if (body /* && !Prelexer::re_special_fun(name.c_str()) */) { + result = body->perform(this); + } + else if (func) { + result = func(fn_env, *env, ctx, def->signature(), c->pstate(), traces, exp.selector_stack); + } + if (!result) { + error(std::string("Function ") + c->name() + " finished without @return", c->pstate(), traces); + } + ctx.callee_stack.pop_back(); + traces.pop_back(); + } + + // else if it's a user-defined c function + // convert call into C-API compatible form + else if (c_function) { + Sass_Function_Fn c_func = sass_function_get_function(c_function); + if (full_name == "*[f]") { + String_Quoted_Obj str = SASS_MEMORY_NEW(String_Quoted, c->pstate(), c->name()); + Arguments_Obj new_args = SASS_MEMORY_NEW(Arguments, c->pstate()); + new_args->append(SASS_MEMORY_NEW(Argument, c->pstate(), str)); + new_args->concat(args); + args = new_args; + } + + // populates env with default values for params + std::string ff(c->name()); + bind(std::string("Function"), c->name(), params, args, &ctx, &fn_env, this); + std::string msg(", in function `" + c->name() + "`"); + traces.push_back(Backtrace(c->pstate(), msg)); + ctx.callee_stack.push_back({ + c->name().c_str(), + c->pstate().path, + c->pstate().line + 1, + c->pstate().column + 1, + SASS_CALLEE_C_FUNCTION, + { env } + }); + + To_C to_c; + union Sass_Value* c_args = sass_make_list(params->length(), SASS_COMMA, false); + for(size_t i = 0; i < params->length(); i++) { + Parameter_Obj param = params->at(i); + std::string key = param->name(); + AST_Node_Obj node = fn_env.get_local(key); + Expression_Obj arg = Cast(node); + sass_list_set_value(c_args, i, arg->perform(&to_c)); + } + union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler); + if (sass_value_get_tag(c_val) == SASS_ERROR) { + error("error in C function " + c->name() + ": " + sass_error_get_message(c_val), c->pstate(), traces); + } else if (sass_value_get_tag(c_val) == SASS_WARNING) { + error("warning in C function " + c->name() + ": " + sass_warning_get_message(c_val), c->pstate(), traces); + } + result = cval_to_astnode(c_val, traces, c->pstate()); + + ctx.callee_stack.pop_back(); + traces.pop_back(); + sass_delete_value(c_args); + if (c_val != c_args) + sass_delete_value(c_val); + } + + // link back to function definition + // only do this for custom functions + if (result->pstate().file == std::string::npos) + result->pstate(c->pstate()); + + result = result->perform(this); + result->is_interpolant(c->is_interpolant()); + exp.env_stack.pop_back(); + return result.detach(); + } + + Expression_Ptr Eval::operator()(Function_Call_Schema_Ptr s) + { + Expression_Ptr evaluated_name = s->name()->perform(this); + Expression_Ptr evaluated_args = s->arguments()->perform(this); + String_Schema_Obj ss = SASS_MEMORY_NEW(String_Schema, s->pstate(), 2); + ss->append(evaluated_name); + ss->append(evaluated_args); + return ss->perform(this); + } + + Expression_Ptr Eval::operator()(Variable_Ptr v) + { + Expression_Obj value = 0; + Env* env = environment(); + const std::string& name(v->name()); + EnvResult rv(env->find(name)); + if (rv.found) value = static_cast(rv.it->second.ptr()); + else error("Undefined variable: \"" + v->name() + "\".", v->pstate(), traces); + if (Argument_Ptr arg = Cast(value)) value = arg->value(); + if (Number_Ptr nr = Cast(value)) nr->zero(true); // force flag + value->is_interpolant(v->is_interpolant()); + if (force) value->is_expanded(false); + value->set_delayed(false); // verified + value = value->perform(this); + if(!force) rv.it->second = value; + return value.detach(); + } + + Expression_Ptr Eval::operator()(Color_Ptr c) + { + return c; + } + + Expression_Ptr Eval::operator()(Number_Ptr n) + { + return n; + } + + Expression_Ptr Eval::operator()(Boolean_Ptr b) + { + return b; + } + + void Eval::interpolation(Context& ctx, std::string& res, Expression_Obj ex, bool into_quotes, bool was_itpl) { + + bool needs_closing_brace = false; + + if (Arguments_Ptr args = Cast(ex)) { + List_Ptr ll = SASS_MEMORY_NEW(List, args->pstate(), 0, SASS_COMMA); + for(auto arg : args->elements()) { + ll->append(arg->value()); + } + ll->is_interpolant(args->is_interpolant()); + needs_closing_brace = true; + res += "("; + ex = ll; + } + if (Number_Ptr nr = Cast(ex)) { + Number reduced(nr); + reduced.reduce(); + if (!reduced.is_valid_css_unit()) { + traces.push_back(Backtrace(nr->pstate())); + throw Exception::InvalidValue(traces, *nr); + } + } + if (Argument_Ptr arg = Cast(ex)) { + ex = arg->value(); + } + if (String_Quoted_Ptr sq = Cast(ex)) { + if (was_itpl) { + bool was_interpolant = ex->is_interpolant(); + ex = SASS_MEMORY_NEW(String_Constant, sq->pstate(), sq->value()); + ex->is_interpolant(was_interpolant); + } + } + + if (Cast(ex)) { return; } + + // parent selector needs another go + if (Cast(ex)) { + // XXX: this is never hit via spec tests + ex = ex->perform(this); + } + + if (List_Ptr l = Cast(ex)) { + List_Obj ll = SASS_MEMORY_NEW(List, l->pstate(), 0, l->separator()); + // this fixes an issue with bourbon sample, not really sure why + // if (l->size() && Cast((*l)[0])) { res += ""; } + for(Expression_Obj item : *l) { + item->is_interpolant(l->is_interpolant()); + std::string rl(""); interpolation(ctx, rl, item, into_quotes, l->is_interpolant()); + bool is_null = Cast(item) != 0; // rl != "" + if (!is_null) ll->append(SASS_MEMORY_NEW(String_Quoted, item->pstate(), rl)); + } + // Check indicates that we probably should not get a list + // here. Normally single list items are already unwrapped. + if (l->size() > 1) { + // string_to_output would fail "#{'_\a' '_\a'}"; + std::string str(ll->to_string(ctx.c_options)); + str = read_hex_escapes(str); // read escapes + newline_to_space(str); // replace directly + res += str; // append to result string + } else { + res += (ll->to_string(ctx.c_options)); + } + ll->is_interpolant(l->is_interpolant()); + } + + // Value + // Function_Call + // Selector_List + // String_Quoted + // String_Constant + // Parent_Selector + // Binary_Expression + else { + // ex = ex->perform(this); + if (into_quotes && ex->is_interpolant()) { + res += evacuate_escapes(ex ? ex->to_string(ctx.c_options) : ""); + } else { + std::string str(ex ? ex->to_string(ctx.c_options) : ""); + if (into_quotes) str = read_hex_escapes(str); + res += str; // append to result string + } + } + + if (needs_closing_brace) res += ")"; + + } + + Expression_Ptr Eval::operator()(String_Schema_Ptr s) + { + size_t L = s->length(); + bool into_quotes = false; + if (L > 1) { + if (!Cast((*s)[0]) && !Cast((*s)[L - 1])) { + if (String_Constant_Ptr l = Cast((*s)[0])) { + if (String_Constant_Ptr r = Cast((*s)[L - 1])) { + if (r->value().size() > 0) { + if (l->value()[0] == '"' && r->value()[r->value().size() - 1] == '"') into_quotes = true; + if (l->value()[0] == '\'' && r->value()[r->value().size() - 1] == '\'') into_quotes = true; + } + } + } + } + } + bool was_quoted = false; + bool was_interpolant = false; + std::string res(""); + for (size_t i = 0; i < L; ++i) { + bool is_quoted = Cast((*s)[i]) != NULL; + if (was_quoted && !(*s)[i]->is_interpolant() && !was_interpolant) { res += " "; } + else if (i > 0 && is_quoted && !(*s)[i]->is_interpolant() && !was_interpolant) { res += " "; } + Expression_Obj ex = (*s)[i]->perform(this); + interpolation(ctx, res, ex, into_quotes, ex->is_interpolant()); + was_quoted = Cast((*s)[i]) != NULL; + was_interpolant = (*s)[i]->is_interpolant(); + + } + if (!s->is_interpolant()) { + if (s->length() > 1 && res == "") return SASS_MEMORY_NEW(Null, s->pstate()); + return SASS_MEMORY_NEW(String_Constant, s->pstate(), res, s->css()); + } + // string schema seems to have a special unquoting behavior (also handles "nested" quotes) + String_Quoted_Obj str = SASS_MEMORY_NEW(String_Quoted, s->pstate(), res, 0, false, false, false, s->css()); + // if (s->is_interpolant()) str->quote_mark(0); + // String_Constant_Ptr str = SASS_MEMORY_NEW(String_Constant, s->pstate(), res); + if (str->quote_mark()) str->quote_mark('*'); + else if (!is_in_comment) str->value(string_to_output(str->value())); + str->is_interpolant(s->is_interpolant()); + return str.detach(); + } + + + Expression_Ptr Eval::operator()(String_Constant_Ptr s) + { + return s; + } + + Expression_Ptr Eval::operator()(String_Quoted_Ptr s) + { + String_Quoted_Ptr str = SASS_MEMORY_NEW(String_Quoted, s->pstate(), ""); + str->value(s->value()); + str->quote_mark(s->quote_mark()); + str->is_interpolant(s->is_interpolant()); + return str; + } + + Expression_Ptr Eval::operator()(Supports_Operator_Ptr c) + { + Expression_Ptr left = c->left()->perform(this); + Expression_Ptr right = c->right()->perform(this); + Supports_Operator_Ptr cc = SASS_MEMORY_NEW(Supports_Operator, + c->pstate(), + Cast(left), + Cast(right), + c->operand()); + return cc; + } + + Expression_Ptr Eval::operator()(Supports_Negation_Ptr c) + { + Expression_Ptr condition = c->condition()->perform(this); + Supports_Negation_Ptr cc = SASS_MEMORY_NEW(Supports_Negation, + c->pstate(), + Cast(condition)); + return cc; + } + + Expression_Ptr Eval::operator()(Supports_Declaration_Ptr c) + { + Expression_Ptr feature = c->feature()->perform(this); + Expression_Ptr value = c->value()->perform(this); + Supports_Declaration_Ptr cc = SASS_MEMORY_NEW(Supports_Declaration, + c->pstate(), + feature, + value); + return cc; + } + + Expression_Ptr Eval::operator()(Supports_Interpolation_Ptr c) + { + Expression_Ptr value = c->value()->perform(this); + Supports_Interpolation_Ptr cc = SASS_MEMORY_NEW(Supports_Interpolation, + c->pstate(), + value); + return cc; + } + + Expression_Ptr Eval::operator()(At_Root_Query_Ptr e) + { + Expression_Obj feature = e->feature(); + feature = (feature ? feature->perform(this) : 0); + Expression_Obj value = e->value(); + value = (value ? value->perform(this) : 0); + Expression_Ptr ee = SASS_MEMORY_NEW(At_Root_Query, + e->pstate(), + Cast(feature), + value); + return ee; + } + + Media_Query_Ptr Eval::operator()(Media_Query_Ptr q) + { + String_Obj t = q->media_type(); + t = static_cast(t.isNull() ? 0 : t->perform(this)); + Media_Query_Obj qq = SASS_MEMORY_NEW(Media_Query, + q->pstate(), + t, + q->length(), + q->is_negated(), + q->is_restricted()); + for (size_t i = 0, L = q->length(); i < L; ++i) { + qq->append(static_cast((*q)[i]->perform(this))); + } + return qq.detach(); + } + + Expression_Ptr Eval::operator()(Media_Query_Expression_Ptr e) + { + Expression_Obj feature = e->feature(); + feature = (feature ? feature->perform(this) : 0); + if (feature && Cast(feature)) { + feature = SASS_MEMORY_NEW(String_Quoted, + feature->pstate(), + Cast(feature)->value()); + } + Expression_Obj value = e->value(); + value = (value ? value->perform(this) : 0); + if (value && Cast(value)) { + // XXX: this is never hit via spec tests + value = SASS_MEMORY_NEW(String_Quoted, + value->pstate(), + Cast(value)->value()); + } + return SASS_MEMORY_NEW(Media_Query_Expression, + e->pstate(), + feature, + value, + e->is_interpolated()); + } + + Expression_Ptr Eval::operator()(Null_Ptr n) + { + return n; + } + + Expression_Ptr Eval::operator()(Argument_Ptr a) + { + Expression_Obj val = a->value()->perform(this); + bool is_rest_argument = a->is_rest_argument(); + bool is_keyword_argument = a->is_keyword_argument(); + + if (a->is_rest_argument()) { + if (val->concrete_type() == Expression::MAP) { + is_rest_argument = false; + is_keyword_argument = true; + } + else if(val->concrete_type() != Expression::LIST) { + List_Obj wrapper = SASS_MEMORY_NEW(List, + val->pstate(), + 0, + SASS_COMMA, + true); + wrapper->append(val); + val = wrapper; + } + } + return SASS_MEMORY_NEW(Argument, + a->pstate(), + val, + a->name(), + is_rest_argument, + is_keyword_argument); + } + + Expression_Ptr Eval::operator()(Arguments_Ptr a) + { + Arguments_Obj aa = SASS_MEMORY_NEW(Arguments, a->pstate()); + if (a->length() == 0) return aa.detach(); + for (size_t i = 0, L = a->length(); i < L; ++i) { + Expression_Obj rv = (*a)[i]->perform(this); + Argument_Ptr arg = Cast(rv); + if (!(arg->is_rest_argument() || arg->is_keyword_argument())) { + aa->append(arg); + } + } + + if (a->has_rest_argument()) { + Expression_Obj rest = a->get_rest_argument()->perform(this); + Expression_Obj splat = Cast(rest)->value()->perform(this); + + Sass_Separator separator = SASS_COMMA; + List_Ptr ls = Cast(splat); + Map_Ptr ms = Cast(splat); + + List_Obj arglist = SASS_MEMORY_NEW(List, + splat->pstate(), + 0, + ls ? ls->separator() : separator, + true); + + if (ls && ls->is_arglist()) { + arglist->concat(ls); + } else if (ms) { + aa->append(SASS_MEMORY_NEW(Argument, splat->pstate(), ms, "", false, true)); + } else if (ls) { + arglist->concat(ls); + } else { + arglist->append(splat); + } + if (arglist->length()) { + aa->append(SASS_MEMORY_NEW(Argument, splat->pstate(), arglist, "", true)); + } + } + + if (a->has_keyword_argument()) { + Expression_Obj rv = a->get_keyword_argument()->perform(this); + Argument_Ptr rvarg = Cast(rv); + Expression_Obj kwarg = rvarg->value()->perform(this); + + aa->append(SASS_MEMORY_NEW(Argument, kwarg->pstate(), kwarg, "", false, true)); + } + return aa.detach(); + } + + Expression_Ptr Eval::operator()(Comment_Ptr c) + { + return 0; + } + + inline Expression_Ptr Eval::fallback_impl(AST_Node_Ptr n) + { + return static_cast(n); + } + + // All the binary helpers. + + Expression_Ptr cval_to_astnode(union Sass_Value* v, Backtraces traces, ParserState pstate) + { + using std::strlen; + using std::strcpy; + Expression_Ptr e = NULL; + switch (sass_value_get_tag(v)) { + case SASS_BOOLEAN: { + e = SASS_MEMORY_NEW(Boolean, pstate, !!sass_boolean_get_value(v)); + } break; + case SASS_NUMBER: { + e = SASS_MEMORY_NEW(Number, pstate, sass_number_get_value(v), sass_number_get_unit(v)); + } break; + case SASS_COLOR: { + e = SASS_MEMORY_NEW(Color, pstate, sass_color_get_r(v), sass_color_get_g(v), sass_color_get_b(v), sass_color_get_a(v)); + } break; + case SASS_STRING: { + if (sass_string_is_quoted(v)) + e = SASS_MEMORY_NEW(String_Quoted, pstate, sass_string_get_value(v)); + else { + e = SASS_MEMORY_NEW(String_Constant, pstate, sass_string_get_value(v)); + } + } break; + case SASS_LIST: { + List_Ptr l = SASS_MEMORY_NEW(List, pstate, sass_list_get_length(v), sass_list_get_separator(v)); + for (size_t i = 0, L = sass_list_get_length(v); i < L; ++i) { + l->append(cval_to_astnode(sass_list_get_value(v, i), traces, pstate)); + } + l->is_bracketed(sass_list_get_is_bracketed(v)); + e = l; + } break; + case SASS_MAP: { + Map_Ptr m = SASS_MEMORY_NEW(Map, pstate); + for (size_t i = 0, L = sass_map_get_length(v); i < L; ++i) { + *m << std::make_pair( + cval_to_astnode(sass_map_get_key(v, i), traces, pstate), + cval_to_astnode(sass_map_get_value(v, i), traces, pstate)); + } + e = m; + } break; + case SASS_NULL: { + e = SASS_MEMORY_NEW(Null, pstate); + } break; + case SASS_ERROR: { + error("Error in C function: " + std::string(sass_error_get_message(v)), pstate, traces); + } break; + case SASS_WARNING: { + error("Warning in C function: " + std::string(sass_warning_get_message(v)), pstate, traces); + } break; + default: break; + } + return e; + } + + Selector_List_Ptr Eval::operator()(Selector_List_Ptr s) + { + std::vector rv; + Selector_List_Obj sl = SASS_MEMORY_NEW(Selector_List, s->pstate()); + sl->is_optional(s->is_optional()); + sl->media_block(s->media_block()); + sl->is_optional(s->is_optional()); + for (size_t i = 0, iL = s->length(); i < iL; ++i) { + rv.push_back(operator()((*s)[i])); + } + + // we should actually permutate parent first + // but here we have permutated the selector first + size_t round = 0; + while (round != std::string::npos) { + bool abort = true; + for (size_t i = 0, iL = rv.size(); i < iL; ++i) { + if (rv[i]->length() > round) { + sl->append((*rv[i])[round]); + abort = false; + } + } + if (abort) { + round = std::string::npos; + } else { + ++ round; + } + + } + return sl.detach(); + } + + + Selector_List_Ptr Eval::operator()(Complex_Selector_Ptr s) + { + bool implicit_parent = !exp.old_at_root_without_rule; + if (is_in_selector_schema) exp.selector_stack.push_back(0); + Selector_List_Obj resolved = s->resolve_parent_refs(exp.selector_stack, traces, implicit_parent); + if (is_in_selector_schema) exp.selector_stack.pop_back(); + for (size_t i = 0; i < resolved->length(); i++) { + Complex_Selector_Ptr is = resolved->at(i)->first(); + while (is) { + if (is->head()) { + is->head(operator()(is->head())); + } + is = is->tail(); + } + } + return resolved.detach(); + } + + Compound_Selector_Ptr Eval::operator()(Compound_Selector_Ptr s) + { + for (size_t i = 0; i < s->length(); i++) { + Simple_Selector_Ptr ss = s->at(i); + // skip parents here (called via resolve_parent_refs) + if (ss == NULL || Cast(ss)) continue; + s->at(i) = Cast(ss->perform(this)); + } + return s; + } + + Selector_List_Ptr Eval::operator()(Selector_Schema_Ptr s) + { + LOCAL_FLAG(is_in_selector_schema, true); + // the parser will look for a brace to end the selector + ctx.c_options.in_selector = true; // do not compress colors + Expression_Obj sel = s->contents()->perform(this); + std::string result_str(sel->to_string(ctx.c_options)); + ctx.c_options.in_selector = false; // flag temporary only + result_str = unquote(Util::rtrim(result_str)); + char* temp_cstr = sass_copy_c_string(result_str.c_str()); + ctx.strings.push_back(temp_cstr); // attach to context + Parser p = Parser::from_c_str(temp_cstr, ctx, traces, s->pstate()); + p.last_media_block = s->media_block(); + // a selector schema may or may not connect to parent? + bool chroot = s->connect_parent() == false; + Selector_List_Obj sl = p.parse_selector_list(chroot); + auto vec_str_rend = ctx.strings.rend(); + auto vec_str_rbegin = ctx.strings.rbegin(); + // remove the first item searching from the back + // we cannot assume our item is still the last one + // order is not important, so we can optimize this + auto it = std::find(vec_str_rbegin, vec_str_rend, temp_cstr); + // undefined behavior if not found! + if (it != vec_str_rend) { + // overwrite with last item + *it = ctx.strings.back(); + // remove last one from vector + ctx.strings.pop_back(); + // free temporary copy + free(temp_cstr); + } + flag_is_in_selector_schema.reset(); + return operator()(sl); + } + + Expression_Ptr Eval::operator()(Parent_Selector_Ptr p) + { + if (Selector_List_Obj pr = selector()) { + exp.selector_stack.pop_back(); + Selector_List_Obj rv = operator()(pr); + exp.selector_stack.push_back(rv); + return rv.detach(); + } else { + return SASS_MEMORY_NEW(Null, p->pstate()); + } + } + + Simple_Selector_Ptr Eval::operator()(Simple_Selector_Ptr s) + { + return s; + } + + // hotfix to avoid invalid nested `:not` selectors + // probably the wrong place, but this should ultimately + // be fixed by implement superselector correctly for `:not` + // first use of "find" (ATM only implemented for selectors) + bool hasNotSelector(AST_Node_Obj obj) { + if (Wrapped_Selector_Ptr w = Cast(obj)) { + return w->name() == ":not"; + } + return false; + } + + Wrapped_Selector_Ptr Eval::operator()(Wrapped_Selector_Ptr s) + { + + if (s->name() == ":not") { + if (exp.selector_stack.back()) { + if (s->selector()->find(hasNotSelector)) { + s->selector()->clear(); + s->name(" "); + } else if (s->selector()->length() == 1) { + Complex_Selector_Ptr cs = s->selector()->at(0); + if (cs->tail()) { + s->selector()->clear(); + s->name(" "); + } + } else if (s->selector()->length() > 1) { + s->selector()->clear(); + s->name(" "); + } + } + } + return s; + }; + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/eval.hpp b/mybulma/node_modules/node-sass/src/libsass/src/eval.hpp new file mode 100644 index 0000000..aeaada8 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/eval.hpp @@ -0,0 +1,103 @@ +#ifndef SASS_EVAL_H +#define SASS_EVAL_H + +#include "ast.hpp" +#include "context.hpp" +#include "listize.hpp" +#include "operation.hpp" +#include "environment.hpp" + +namespace Sass { + + class Expand; + class Context; + + class Eval : public Operation_CRTP { + + private: + Expression_Ptr fallback_impl(AST_Node_Ptr n); + + public: + Expand& exp; + Context& ctx; + Backtraces& traces; + Eval(Expand& exp); + ~Eval(); + + bool force; + bool is_in_comment; + bool is_in_selector_schema; + + Boolean_Obj bool_true; + Boolean_Obj bool_false; + + Env* environment(); + Selector_List_Obj selector(); + + // for evaluating function bodies + Expression_Ptr operator()(Block_Ptr); + Expression_Ptr operator()(Assignment_Ptr); + Expression_Ptr operator()(If_Ptr); + Expression_Ptr operator()(For_Ptr); + Expression_Ptr operator()(Each_Ptr); + Expression_Ptr operator()(While_Ptr); + Expression_Ptr operator()(Return_Ptr); + Expression_Ptr operator()(Warning_Ptr); + Expression_Ptr operator()(Error_Ptr); + Expression_Ptr operator()(Debug_Ptr); + + Expression_Ptr operator()(List_Ptr); + Expression_Ptr operator()(Map_Ptr); + Expression_Ptr operator()(Binary_Expression_Ptr); + Expression_Ptr operator()(Unary_Expression_Ptr); + Expression_Ptr operator()(Function_Call_Ptr); + Expression_Ptr operator()(Function_Call_Schema_Ptr); + Expression_Ptr operator()(Variable_Ptr); + Expression_Ptr operator()(Number_Ptr); + Expression_Ptr operator()(Color_Ptr); + Expression_Ptr operator()(Boolean_Ptr); + Expression_Ptr operator()(String_Schema_Ptr); + Expression_Ptr operator()(String_Quoted_Ptr); + Expression_Ptr operator()(String_Constant_Ptr); + // Expression_Ptr operator()(Selector_List_Ptr); + Media_Query_Ptr operator()(Media_Query_Ptr); + Expression_Ptr operator()(Media_Query_Expression_Ptr); + Expression_Ptr operator()(At_Root_Query_Ptr); + Expression_Ptr operator()(Supports_Operator_Ptr); + Expression_Ptr operator()(Supports_Negation_Ptr); + Expression_Ptr operator()(Supports_Declaration_Ptr); + Expression_Ptr operator()(Supports_Interpolation_Ptr); + Expression_Ptr operator()(Null_Ptr); + Expression_Ptr operator()(Argument_Ptr); + Expression_Ptr operator()(Arguments_Ptr); + Expression_Ptr operator()(Comment_Ptr); + + // these will return selectors + Selector_List_Ptr operator()(Selector_List_Ptr); + Selector_List_Ptr operator()(Complex_Selector_Ptr); + Compound_Selector_Ptr operator()(Compound_Selector_Ptr); + Simple_Selector_Ptr operator()(Simple_Selector_Ptr s); + Wrapped_Selector_Ptr operator()(Wrapped_Selector_Ptr s); + // they don't have any specific implementation (yet) + // Element_Selector_Ptr operator()(Element_Selector_Ptr s) { return s; }; + // Pseudo_Selector_Ptr operator()(Pseudo_Selector_Ptr s) { return s; }; + // Class_Selector_Ptr operator()(Class_Selector_Ptr s) { return s; }; + // Id_Selector_Ptr operator()(Id_Selector_Ptr s) { return s; }; + // Placeholder_Selector_Ptr operator()(Placeholder_Selector_Ptr s) { return s; }; + // actual evaluated selectors + Selector_List_Ptr operator()(Selector_Schema_Ptr); + Expression_Ptr operator()(Parent_Selector_Ptr); + + template + Expression_Ptr fallback(U x) { return fallback_impl(x); } + + private: + void interpolation(Context& ctx, std::string& res, Expression_Obj ex, bool into_quotes, bool was_itpl = false); + + }; + + Expression_Ptr cval_to_astnode(union Sass_Value* v, Backtraces traces, ParserState pstate = ParserState("[AST]")); + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/expand.cpp b/mybulma/node_modules/node-sass/src/libsass/src/expand.cpp new file mode 100644 index 0000000..d8dc03f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/expand.cpp @@ -0,0 +1,817 @@ +#include "sass.hpp" +#include +#include + +#include "ast.hpp" +#include "expand.hpp" +#include "bind.hpp" +#include "eval.hpp" +#include "backtrace.hpp" +#include "context.hpp" +#include "parser.hpp" +#include "sass_functions.hpp" + +namespace Sass { + + // simple endless recursion protection + const size_t maxRecursion = 500; + + Expand::Expand(Context& ctx, Env* env, std::vector* stack) + : ctx(ctx), + traces(ctx.traces), + eval(Eval(*this)), + recursions(0), + in_keyframes(false), + at_root_without_rule(false), + old_at_root_without_rule(false), + env_stack(std::vector()), + block_stack(std::vector()), + call_stack(std::vector()), + selector_stack(std::vector()), + media_block_stack(std::vector()) + { + env_stack.push_back(0); + env_stack.push_back(env); + block_stack.push_back(0); + call_stack.push_back(0); + if (stack == NULL) { selector_stack.push_back(0); } + else { selector_stack.insert(selector_stack.end(), stack->begin(), stack->end()); } + media_block_stack.push_back(0); + } + + Env* Expand::environment() + { + if (env_stack.size() > 0) + return env_stack.back(); + return 0; + } + + Selector_List_Obj Expand::selector() + { + if (selector_stack.size() > 0) + return selector_stack.back(); + return 0; + } + + // blocks create new variable scopes + Block_Ptr Expand::operator()(Block_Ptr b) + { + // create new local environment + // set the current env as parent + Env env(environment()); + // copy the block object (add items later) + Block_Obj bb = SASS_MEMORY_NEW(Block, + b->pstate(), + b->length(), + b->is_root()); + // setup block and env stack + this->block_stack.push_back(bb); + this->env_stack.push_back(&env); + // operate on block + // this may throw up! + this->append_block(b); + // revert block and env stack + this->block_stack.pop_back(); + this->env_stack.pop_back(); + // return copy + return bb.detach(); + } + + Statement_Ptr Expand::operator()(Ruleset_Ptr r) + { + LOCAL_FLAG(old_at_root_without_rule, at_root_without_rule); + + if (in_keyframes) { + Block_Ptr bb = operator()(r->block()); + Keyframe_Rule_Obj k = SASS_MEMORY_NEW(Keyframe_Rule, r->pstate(), bb); + if (r->selector()) { + if (Selector_List_Ptr s = r->selector()) { + selector_stack.push_back(0); + k->name(s->eval(eval)); + selector_stack.pop_back(); + } + } + return k.detach(); + } + + // reset when leaving scope + LOCAL_FLAG(at_root_without_rule, false); + + // `&` is allowed in `@at-root`! + bool has_parent_selector = false; + for (size_t i = 0, L = selector_stack.size(); i < L && !has_parent_selector; i++) { + Selector_List_Obj ll = selector_stack.at(i); + has_parent_selector = ll != 0 && ll->length() > 0; + } + + Selector_List_Obj sel = r->selector(); + if (sel) sel = sel->eval(eval); + + // check for parent selectors in base level rules + if (r->is_root() || (block_stack.back() && block_stack.back()->is_root())) { + if (Selector_List_Ptr selector_list = Cast(r->selector())) { + for (Complex_Selector_Obj complex_selector : selector_list->elements()) { + Complex_Selector_Ptr tail = complex_selector; + while (tail) { + if (tail->head()) for (Simple_Selector_Obj header : tail->head()->elements()) { + Parent_Selector_Ptr ptr = Cast(header); + if (ptr == NULL || (!ptr->real() || has_parent_selector)) continue; + std::string sel_str(complex_selector->to_string(ctx.c_options)); + error("Base-level rules cannot contain the parent-selector-referencing character '&'.", header->pstate(), traces); + } + tail = tail->tail(); + } + } + } + } + else { + if (sel->length() == 0 || sel->has_parent_ref()) { + if (sel->has_real_parent_ref() && !has_parent_selector) { + error("Base-level rules cannot contain the parent-selector-referencing character '&'.", sel->pstate(), traces); + } + } + } + + // do not connect parent again + sel->remove_parent_selectors(); + selector_stack.push_back(sel); + Env env(environment()); + if (block_stack.back()->is_root()) { + env_stack.push_back(&env); + } + sel->set_media_block(media_block_stack.back()); + Block_Obj blk = 0; + if (r->block()) blk = operator()(r->block()); + Ruleset_Ptr rr = SASS_MEMORY_NEW(Ruleset, + r->pstate(), + sel, + blk); + selector_stack.pop_back(); + if (block_stack.back()->is_root()) { + env_stack.pop_back(); + } + + rr->is_root(r->is_root()); + rr->tabs(r->tabs()); + + return rr; + } + + Statement_Ptr Expand::operator()(Supports_Block_Ptr f) + { + Expression_Obj condition = f->condition()->perform(&eval); + Supports_Block_Obj ff = SASS_MEMORY_NEW(Supports_Block, + f->pstate(), + Cast(condition), + operator()(f->block())); + return ff.detach(); + } + + Statement_Ptr Expand::operator()(Media_Block_Ptr m) + { + Media_Block_Obj cpy = SASS_MEMORY_COPY(m); + // Media_Blocks are prone to have circular references + // Copy could leak memory if it does not get picked up + // Looks like we are able to reset block reference for copy + // Good as it will ensure a low memory overhead for this fix + // So this is a cheap solution with a minimal price + ctx.ast_gc.push_back(cpy); cpy->block(0); + Expression_Obj mq = eval(m->media_queries()); + std::string str_mq(mq->to_string(ctx.c_options)); + char* str = sass_copy_c_string(str_mq.c_str()); + ctx.strings.push_back(str); + Parser p(Parser::from_c_str(str, ctx, traces, mq->pstate())); + mq = p.parse_media_queries(); // re-assign now + cpy->media_queries(mq); + media_block_stack.push_back(cpy); + Block_Obj blk = operator()(m->block()); + Media_Block_Ptr mm = SASS_MEMORY_NEW(Media_Block, + m->pstate(), + mq, + blk); + media_block_stack.pop_back(); + mm->tabs(m->tabs()); + return mm; + } + + Statement_Ptr Expand::operator()(At_Root_Block_Ptr a) + { + Block_Obj ab = a->block(); + Expression_Obj ae = a->expression(); + + if (ae) ae = ae->perform(&eval); + else ae = SASS_MEMORY_NEW(At_Root_Query, a->pstate()); + + LOCAL_FLAG(at_root_without_rule, true); + LOCAL_FLAG(in_keyframes, false); + + ; + + Block_Obj bb = ab ? operator()(ab) : NULL; + At_Root_Block_Obj aa = SASS_MEMORY_NEW(At_Root_Block, + a->pstate(), + bb, + Cast(ae)); + return aa.detach(); + } + + Statement_Ptr Expand::operator()(Directive_Ptr a) + { + LOCAL_FLAG(in_keyframes, a->is_keyframes()); + Block_Ptr ab = a->block(); + Selector_List_Ptr as = a->selector(); + Expression_Ptr av = a->value(); + selector_stack.push_back(0); + if (av) av = av->perform(&eval); + if (as) as = eval(as); + selector_stack.pop_back(); + Block_Ptr bb = ab ? operator()(ab) : NULL; + Directive_Ptr aa = SASS_MEMORY_NEW(Directive, + a->pstate(), + a->keyword(), + as, + bb, + av); + return aa; + } + + Statement_Ptr Expand::operator()(Declaration_Ptr d) + { + Block_Obj ab = d->block(); + String_Obj old_p = d->property(); + Expression_Obj prop = old_p->perform(&eval); + String_Obj new_p = Cast(prop); + // we might get a color back + if (!new_p) { + std::string str(prop->to_string(ctx.c_options)); + new_p = SASS_MEMORY_NEW(String_Constant, old_p->pstate(), str); + } + Expression_Obj value = d->value(); + if (value) value = value->perform(&eval); + Block_Obj bb = ab ? operator()(ab) : NULL; + if (!bb) { + if (!value || (value->is_invisible() && !d->is_important())) return 0; + } + Declaration_Ptr decl = SASS_MEMORY_NEW(Declaration, + d->pstate(), + new_p, + value, + d->is_important(), + d->is_custom_property(), + bb); + decl->tabs(d->tabs()); + return decl; + } + + Statement_Ptr Expand::operator()(Assignment_Ptr a) + { + Env* env = environment(); + const std::string& var(a->variable()); + if (a->is_global()) { + if (a->is_default()) { + if (env->has_global(var)) { + Expression_Obj e = Cast(env->get_global(var)); + if (!e || e->concrete_type() == Expression::NULL_VAL) { + env->set_global(var, a->value()->perform(&eval)); + } + } + else { + env->set_global(var, a->value()->perform(&eval)); + } + } + else { + env->set_global(var, a->value()->perform(&eval)); + } + } + else if (a->is_default()) { + if (env->has_lexical(var)) { + auto cur = env; + while (cur && cur->is_lexical()) { + if (cur->has_local(var)) { + if (AST_Node_Obj node = cur->get_local(var)) { + Expression_Obj e = Cast(node); + if (!e || e->concrete_type() == Expression::NULL_VAL) { + cur->set_local(var, a->value()->perform(&eval)); + } + } + else { + throw std::runtime_error("Env not in sync"); + } + return 0; + } + cur = cur->parent(); + } + throw std::runtime_error("Env not in sync"); + } + else if (env->has_global(var)) { + if (AST_Node_Obj node = env->get_global(var)) { + Expression_Obj e = Cast(node); + if (!e || e->concrete_type() == Expression::NULL_VAL) { + env->set_global(var, a->value()->perform(&eval)); + } + } + } + else if (env->is_lexical()) { + env->set_local(var, a->value()->perform(&eval)); + } + else { + env->set_local(var, a->value()->perform(&eval)); + } + } + else { + env->set_lexical(var, a->value()->perform(&eval)); + } + return 0; + } + + Statement_Ptr Expand::operator()(Import_Ptr imp) + { + Import_Obj result = SASS_MEMORY_NEW(Import, imp->pstate()); + if (imp->import_queries() && imp->import_queries()->size()) { + Expression_Obj ex = imp->import_queries()->perform(&eval); + result->import_queries(Cast(ex)); + } + for ( size_t i = 0, S = imp->urls().size(); i < S; ++i) { + result->urls().push_back(imp->urls()[i]->perform(&eval)); + } + // all resources have been dropped for Input_Stubs + // for ( size_t i = 0, S = imp->incs().size(); i < S; ++i) {} + return result.detach(); + } + + Statement_Ptr Expand::operator()(Import_Stub_Ptr i) + { + traces.push_back(Backtrace(i->pstate())); + // get parent node from call stack + AST_Node_Obj parent = call_stack.back(); + if (Cast(parent) == NULL) { + error("Import directives may not be used within control directives or mixins.", i->pstate(), traces); + } + // we don't seem to need that actually afterall + Sass_Import_Entry import = sass_make_import( + i->imp_path().c_str(), + i->abs_path().c_str(), + 0, 0 + ); + ctx.import_stack.push_back(import); + + Block_Obj trace_block = SASS_MEMORY_NEW(Block, i->pstate()); + Trace_Obj trace = SASS_MEMORY_NEW(Trace, i->pstate(), i->imp_path(), trace_block, 'i'); + block_stack.back()->append(trace); + block_stack.push_back(trace_block); + + const std::string& abs_path(i->resource().abs_path); + append_block(ctx.sheets.at(abs_path).root); + sass_delete_import(ctx.import_stack.back()); + ctx.import_stack.pop_back(); + block_stack.pop_back(); + traces.pop_back(); + return 0; + } + + Statement_Ptr Expand::operator()(Warning_Ptr w) + { + // eval handles this too, because warnings may occur in functions + w->perform(&eval); + return 0; + } + + Statement_Ptr Expand::operator()(Error_Ptr e) + { + // eval handles this too, because errors may occur in functions + e->perform(&eval); + return 0; + } + + Statement_Ptr Expand::operator()(Debug_Ptr d) + { + // eval handles this too, because warnings may occur in functions + d->perform(&eval); + return 0; + } + + Statement_Ptr Expand::operator()(Comment_Ptr c) + { + if (ctx.output_style() == COMPRESSED) { + // comments should not be evaluated in compact + // https://github.com/sass/libsass/issues/2359 + if (!c->is_important()) return NULL; + } + eval.is_in_comment = true; + Comment_Ptr rv = SASS_MEMORY_NEW(Comment, c->pstate(), Cast(c->text()->perform(&eval)), c->is_important()); + eval.is_in_comment = false; + // TODO: eval the text, once we're parsing/storing it as a String_Schema + return rv; + } + + Statement_Ptr Expand::operator()(If_Ptr i) + { + Env env(environment(), true); + env_stack.push_back(&env); + call_stack.push_back(i); + Expression_Obj rv = i->predicate()->perform(&eval); + if (*rv) { + append_block(i->block()); + } + else { + Block_Ptr alt = i->alternative(); + if (alt) append_block(alt); + } + call_stack.pop_back(); + env_stack.pop_back(); + return 0; + } + + // For does not create a new env scope + // But iteration vars are reset afterwards + Statement_Ptr Expand::operator()(For_Ptr f) + { + std::string variable(f->variable()); + Expression_Obj low = f->lower_bound()->perform(&eval); + if (low->concrete_type() != Expression::NUMBER) { + traces.push_back(Backtrace(low->pstate())); + throw Exception::TypeMismatch(traces, *low, "integer"); + } + Expression_Obj high = f->upper_bound()->perform(&eval); + if (high->concrete_type() != Expression::NUMBER) { + traces.push_back(Backtrace(high->pstate())); + throw Exception::TypeMismatch(traces, *high, "integer"); + } + Number_Obj sass_start = Cast(low); + Number_Obj sass_end = Cast(high); + // check if units are valid for sequence + if (sass_start->unit() != sass_end->unit()) { + std::stringstream msg; msg << "Incompatible units: '" + << sass_start->unit() << "' and '" + << sass_end->unit() << "'."; + error(msg.str(), low->pstate(), traces); + } + double start = sass_start->value(); + double end = sass_end->value(); + // only create iterator once in this environment + Env env(environment(), true); + env_stack.push_back(&env); + call_stack.push_back(f); + Block_Ptr body = f->block(); + if (start < end) { + if (f->is_inclusive()) ++end; + for (double i = start; + i < end; + ++i) { + Number_Obj it = SASS_MEMORY_NEW(Number, low->pstate(), i, sass_end->unit()); + env.set_local(variable, it); + append_block(body); + } + } else { + if (f->is_inclusive()) --end; + for (double i = start; + i > end; + --i) { + Number_Obj it = SASS_MEMORY_NEW(Number, low->pstate(), i, sass_end->unit()); + env.set_local(variable, it); + append_block(body); + } + } + call_stack.pop_back(); + env_stack.pop_back(); + return 0; + } + + // Eval does not create a new env scope + // But iteration vars are reset afterwards + Statement_Ptr Expand::operator()(Each_Ptr e) + { + std::vector variables(e->variables()); + Expression_Obj expr = e->list()->perform(&eval); + List_Obj list = 0; + Map_Obj map; + if (expr->concrete_type() == Expression::MAP) { + map = Cast(expr); + } + else if (Selector_List_Ptr ls = Cast(expr)) { + Listize listize; + Expression_Obj rv = ls->perform(&listize); + list = Cast(rv); + } + else if (expr->concrete_type() != Expression::LIST) { + list = SASS_MEMORY_NEW(List, expr->pstate(), 1, SASS_COMMA); + list->append(expr); + } + else { + list = Cast(expr); + } + // remember variables and then reset them + Env env(environment(), true); + env_stack.push_back(&env); + call_stack.push_back(e); + Block_Ptr body = e->block(); + + if (map) { + for (auto key : map->keys()) { + Expression_Obj k = key->perform(&eval); + Expression_Obj v = map->at(key)->perform(&eval); + + if (variables.size() == 1) { + List_Obj variable = SASS_MEMORY_NEW(List, map->pstate(), 2, SASS_SPACE); + variable->append(k); + variable->append(v); + env.set_local(variables[0], variable); + } else { + env.set_local(variables[0], k); + env.set_local(variables[1], v); + } + append_block(body); + } + } + else { + // bool arglist = list->is_arglist(); + if (list->length() == 1 && Cast(list)) { + list = Cast(list); + } + for (size_t i = 0, L = list->length(); i < L; ++i) { + Expression_Obj item = list->at(i); + // unwrap value if the expression is an argument + if (Argument_Obj arg = Cast(item)) item = arg->value(); + // check if we got passed a list of args (investigate) + if (List_Obj scalars = Cast(item)) { + if (variables.size() == 1) { + List_Obj var = scalars; + // if (arglist) var = (*scalars)[0]; + env.set_local(variables[0], var); + } else { + for (size_t j = 0, K = variables.size(); j < K; ++j) { + Expression_Obj res = j >= scalars->length() + ? SASS_MEMORY_NEW(Null, expr->pstate()) + : (*scalars)[j]->perform(&eval); + env.set_local(variables[j], res); + } + } + } else { + if (variables.size() > 0) { + env.set_local(variables.at(0), item); + for (size_t j = 1, K = variables.size(); j < K; ++j) { + Expression_Obj res = SASS_MEMORY_NEW(Null, expr->pstate()); + env.set_local(variables[j], res); + } + } + } + append_block(body); + } + } + call_stack.pop_back(); + env_stack.pop_back(); + return 0; + } + + Statement_Ptr Expand::operator()(While_Ptr w) + { + Expression_Obj pred = w->predicate(); + Block_Ptr body = w->block(); + Env env(environment(), true); + env_stack.push_back(&env); + call_stack.push_back(w); + Expression_Obj cond = pred->perform(&eval); + while (!cond->is_false()) { + append_block(body); + cond = pred->perform(&eval); + } + call_stack.pop_back(); + env_stack.pop_back(); + return 0; + } + + Statement_Ptr Expand::operator()(Return_Ptr r) + { + error("@return may only be used within a function", r->pstate(), traces); + return 0; + } + + + void Expand::expand_selector_list(Selector_Obj s, Selector_List_Obj extender) { + + if (Selector_List_Obj sl = Cast(s)) { + for (Complex_Selector_Obj complex_selector : sl->elements()) { + Complex_Selector_Obj tail = complex_selector; + while (tail) { + if (tail->head()) for (Simple_Selector_Obj header : tail->head()->elements()) { + if (Cast(header) == NULL) continue; // skip all others + std::string sel_str(complex_selector->to_string(ctx.c_options)); + error("Can't extend " + sel_str + ": can't extend parent selectors", header->pstate(), traces); + } + tail = tail->tail(); + } + } + } + + + Selector_List_Obj contextualized = Cast(s->perform(&eval)); + if (contextualized == false) return; + for (auto complex_sel : contextualized->elements()) { + Complex_Selector_Obj c = complex_sel; + if (!c->head() || c->tail()) { + std::string sel_str(contextualized->to_string(ctx.c_options)); + error("Can't extend " + sel_str + ": can't extend nested selectors", c->pstate(), traces); + } + Compound_Selector_Obj target = c->head(); + if (contextualized->is_optional()) target->is_optional(true); + for (size_t i = 0, L = extender->length(); i < L; ++i) { + Complex_Selector_Obj sel = (*extender)[i]; + if (!(sel->head() && sel->head()->length() > 0 && + Cast((*sel->head())[0]))) + { + Compound_Selector_Obj hh = SASS_MEMORY_NEW(Compound_Selector, (*extender)[i]->pstate()); + hh->media_block((*extender)[i]->media_block()); + Complex_Selector_Obj ssel = SASS_MEMORY_NEW(Complex_Selector, (*extender)[i]->pstate()); + ssel->media_block((*extender)[i]->media_block()); + if (sel->has_line_feed()) ssel->has_line_feed(true); + Parent_Selector_Obj ps = SASS_MEMORY_NEW(Parent_Selector, (*extender)[i]->pstate()); + ps->media_block((*extender)[i]->media_block()); + hh->append(ps); + ssel->tail(sel); + ssel->head(hh); + sel = ssel; + } + // if (c->has_line_feed()) sel->has_line_feed(true); + ctx.subset_map.put(target, std::make_pair(sel, target)); + } + } + + } + + Statement* Expand::operator()(Extension_Ptr e) + { + if (Selector_List_Ptr extender = selector()) { + Selector_List_Ptr sl = e->selector(); + // abort on invalid selector + if (sl == NULL) return NULL; + if (Selector_Schema_Ptr schema = sl->schema()) { + if (schema->has_real_parent_ref()) { + // put root block on stack again (ignore parents) + // selector schema must not connect in eval! + block_stack.push_back(block_stack.at(1)); + sl = eval(sl->schema()); + block_stack.pop_back(); + } else { + selector_stack.push_back(0); + sl = eval(sl->schema()); + selector_stack.pop_back(); + } + } + for (Complex_Selector_Obj cs : sl->elements()) { + if (!cs.isNull() && !cs->head().isNull()) { + cs->head()->media_block(media_block_stack.back()); + } + } + selector_stack.push_back(0); + expand_selector_list(sl, extender); + selector_stack.pop_back(); + } + return 0; + } + + Statement_Ptr Expand::operator()(Definition_Ptr d) + { + Env* env = environment(); + Definition_Obj dd = SASS_MEMORY_COPY(d); + env->local_frame()[d->name() + + (d->type() == Definition::MIXIN ? "[m]" : "[f]")] = dd; + + if (d->type() == Definition::FUNCTION && ( + Prelexer::calc_fn_call(d->name().c_str()) || + d->name() == "element" || + d->name() == "expression" || + d->name() == "url" + )) { + deprecated( + "Naming a function \"" + d->name() + "\" is disallowed and will be an error in future versions of Sass.", + "This name conflicts with an existing CSS function with special parse rules.", + false, d->pstate() + ); + } + + // set the static link so we can have lexical scoping + dd->environment(env); + return 0; + } + + Statement_Ptr Expand::operator()(Mixin_Call_Ptr c) + { + if (recursions > maxRecursion) { + throw Exception::StackError(traces, *c); + } + + recursions ++; + + Env* env = environment(); + std::string full_name(c->name() + "[m]"); + if (!env->has(full_name)) { + error("no mixin named " + c->name(), c->pstate(), traces); + } + Definition_Obj def = Cast((*env)[full_name]); + Block_Obj body = def->block(); + Parameters_Obj params = def->parameters(); + + if (c->block() && c->name() != "@content" && !body->has_content()) { + error("Mixin \"" + c->name() + "\" does not accept a content block.", c->pstate(), traces); + } + Expression_Obj rv = c->arguments()->perform(&eval); + Arguments_Obj args = Cast(rv); + std::string msg(", in mixin `" + c->name() + "`"); + traces.push_back(Backtrace(c->pstate(), msg)); + ctx.callee_stack.push_back({ + c->name().c_str(), + c->pstate().path, + c->pstate().line + 1, + c->pstate().column + 1, + SASS_CALLEE_MIXIN, + { env } + }); + + Env new_env(def->environment()); + env_stack.push_back(&new_env); + if (c->block()) { + // represent mixin content blocks as thunks/closures + Definition_Obj thunk = SASS_MEMORY_NEW(Definition, + c->pstate(), + "@content", + SASS_MEMORY_NEW(Parameters, c->pstate()), + c->block(), + Definition::MIXIN); + thunk->environment(env); + new_env.local_frame()["@content[m]"] = thunk; + } + + bind(std::string("Mixin"), c->name(), params, args, &ctx, &new_env, &eval); + + Block_Obj trace_block = SASS_MEMORY_NEW(Block, c->pstate()); + Trace_Obj trace = SASS_MEMORY_NEW(Trace, c->pstate(), c->name(), trace_block); + + env->set_global("is_in_mixin", bool_true); + if (Block_Ptr pr = block_stack.back()) { + trace_block->is_root(pr->is_root()); + } + block_stack.push_back(trace_block); + for (auto bb : body->elements()) { + if (Ruleset_Ptr r = Cast(bb)) { + r->is_root(trace_block->is_root()); + } + Statement_Obj ith = bb->perform(this); + if (ith) trace->block()->append(ith); + } + block_stack.pop_back(); + env->del_global("is_in_mixin"); + + ctx.callee_stack.pop_back(); + env_stack.pop_back(); + traces.pop_back(); + + recursions --; + return trace.detach(); + } + + Statement_Ptr Expand::operator()(Content_Ptr c) + { + Env* env = environment(); + // convert @content directives into mixin calls to the underlying thunk + if (!env->has("@content[m]")) return 0; + + if (block_stack.back()->is_root()) { + selector_stack.push_back(0); + } + + Mixin_Call_Obj call = SASS_MEMORY_NEW(Mixin_Call, + c->pstate(), + "@content", + SASS_MEMORY_NEW(Arguments, c->pstate())); + + Trace_Obj trace = Cast(call->perform(this)); + + if (block_stack.back()->is_root()) { + selector_stack.pop_back(); + } + + return trace.detach(); + } + + // produce an error if something is not implemented + inline Statement_Ptr Expand::fallback_impl(AST_Node_Ptr n) + { + std::string err =std:: string("`Expand` doesn't handle ") + typeid(*n).name(); + String_Quoted_Obj msg = SASS_MEMORY_NEW(String_Quoted, ParserState("[WARN]"), err); + error("unknown internal error; please contact the LibSass maintainers", n->pstate(), traces); + return SASS_MEMORY_NEW(Warning, ParserState("[WARN]"), msg); + } + + // process and add to last block on stack + inline void Expand::append_block(Block_Ptr b) + { + if (b->is_root()) call_stack.push_back(b); + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Ptr stm = b->at(i); + Statement_Obj ith = stm->perform(this); + if (ith) block_stack.back()->append(ith); + } + if (b->is_root()) call_stack.pop_back(); + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/expand.hpp b/mybulma/node_modules/node-sass/src/libsass/src/expand.hpp new file mode 100644 index 0000000..3464c98 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/expand.hpp @@ -0,0 +1,82 @@ +#ifndef SASS_EXPAND_H +#define SASS_EXPAND_H + +#include + +#include "ast.hpp" +#include "eval.hpp" +#include "operation.hpp" +#include "environment.hpp" + +namespace Sass { + + class Listize; + class Context; + class Eval; + struct Backtrace; + + class Expand : public Operation_CRTP { + public: + + Env* environment(); + Selector_List_Obj selector(); + + Context& ctx; + Backtraces& traces; + Eval eval; + size_t recursions; + bool in_keyframes; + bool at_root_without_rule; + bool old_at_root_without_rule; + + // it's easier to work with vectors + std::vector env_stack; + std::vector block_stack; + std::vector call_stack; + std::vector selector_stack; + std::vector media_block_stack; + + Boolean_Obj bool_true; + + Statement_Ptr fallback_impl(AST_Node_Ptr n); + + private: + void expand_selector_list(Selector_Obj, Selector_List_Obj extender); + + public: + Expand(Context&, Env*, std::vector* stack = NULL); + ~Expand() { } + + Block_Ptr operator()(Block_Ptr); + Statement_Ptr operator()(Ruleset_Ptr); + Statement_Ptr operator()(Media_Block_Ptr); + Statement_Ptr operator()(Supports_Block_Ptr); + Statement_Ptr operator()(At_Root_Block_Ptr); + Statement_Ptr operator()(Directive_Ptr); + Statement_Ptr operator()(Declaration_Ptr); + Statement_Ptr operator()(Assignment_Ptr); + Statement_Ptr operator()(Import_Ptr); + Statement_Ptr operator()(Import_Stub_Ptr); + Statement_Ptr operator()(Warning_Ptr); + Statement_Ptr operator()(Error_Ptr); + Statement_Ptr operator()(Debug_Ptr); + Statement_Ptr operator()(Comment_Ptr); + Statement_Ptr operator()(If_Ptr); + Statement_Ptr operator()(For_Ptr); + Statement_Ptr operator()(Each_Ptr); + Statement_Ptr operator()(While_Ptr); + Statement_Ptr operator()(Return_Ptr); + Statement_Ptr operator()(Extension_Ptr); + Statement_Ptr operator()(Definition_Ptr); + Statement_Ptr operator()(Mixin_Call_Ptr); + Statement_Ptr operator()(Content_Ptr); + + template + Statement_Ptr fallback(U x) { return fallback_impl(x); } + + void append_block(Block_Ptr); + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/extend.cpp b/mybulma/node_modules/node-sass/src/libsass/src/extend.cpp new file mode 100644 index 0000000..6022698 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/extend.cpp @@ -0,0 +1,2130 @@ +#include "sass.hpp" +#include "extend.hpp" +#include "context.hpp" +#include "backtrace.hpp" +#include "paths.hpp" +#include "parser.hpp" +#include "expand.hpp" +#include "node.hpp" +#include "sass_util.hpp" +#include "remove_placeholders.hpp" +#include "debug.hpp" +#include +#include +#include + +/* + NOTES: + + - The print* functions print to cerr. This allows our testing frameworks (like sass-spec) to ignore the output, which + is very helpful when debugging. The format of the output is mainly to wrap things in square brackets to match what + ruby already outputs (to make comparisons easier). + + - For the direct porting effort, we're trying to port method-for-method until we get all the tests passing. + Where applicable, I've tried to include the ruby code above the function for reference until all our tests pass. + The ruby code isn't always directly portable, so I've tried to include any modified ruby code that was actually + used for the porting. + + - DO NOT try to optimize yet. We get a tremendous benefit out of comparing the output of each stage of the extend to the ruby + output at the same stage. This makes it much easier to determine where problems are. Try to keep as close to + the ruby code as you can until we have all the sass-spec tests passing. Then, we should optimize. However, if you see + something that could probably be optimized, let's not forget it. Add a // TODO: or // IMPROVEMENT: comment. + + - Coding conventions in this file (these may need to be changed before merging back into master) + - Very basic hungarian notation: + p prefix for pointers (pSelector) + no prefix for value types and references (selector) + - Use STL iterators where possible + - prefer verbose naming over terse naming + - use typedefs for STL container types for make maintenance easier + + - You may see a lot of comments that say "// TODO: is this the correct combinator?". See the comment referring to combinators + in extendCompoundSelector for a more extensive explanation of my confusion. I think our divergence in data model from ruby + sass causes this to be necessary. + + + GLOBAL TODOS: + + - wrap the contents of the print functions in DEBUG preprocesser conditionals so they will be optimized away in non-debug mode. + + - consider making the extend* functions member functions to avoid passing around ctx and subset_map map around. This has the + drawback that the implementation details of the operator are then exposed to the outside world, which is not ideal and + can cause additional compile time dependencies. + + - mark the helper methods in this file static to given them compilation unit linkage. + + - implement parent directive matching + + - fix compilation warnings for unused Extend members if we really don't need those references anymore. + */ + + +namespace Sass { + + + +#ifdef DEBUG + + // TODO: move the ast specific ostream operators into ast.hpp/ast.cpp + std::ostream& operator<<(std::ostream& os, const Complex_Selector::Combinator combinator) { + switch (combinator) { + case Complex_Selector::ANCESTOR_OF: os << "\" \""; break; + case Complex_Selector::PARENT_OF: os << "\">\""; break; + case Complex_Selector::PRECEDES: os << "\"~\""; break; + case Complex_Selector::ADJACENT_TO: os << "\"+\""; break; + case Complex_Selector::REFERENCE: os << "\"/\""; break; + } + + return os; + } + + + std::ostream& operator<<(std::ostream& os, Compound_Selector& compoundSelector) { + for (size_t i = 0, L = compoundSelector.length(); i < L; ++i) { + if (i > 0) os << ", "; + os << compoundSelector[i]->to_string(); + } + return os; + } + + std::ostream& operator<<(std::ostream& os, Simple_Selector& simpleSelector) { + os << simpleSelector.to_string(); + return os; + } + + // Print a string representation of a Compound_Selector + static void printSimpleSelector(Simple_Selector* pSimpleSelector, const char* message=NULL, bool newline=true) { + + if (message) { + std::cerr << message; + } + + if (pSimpleSelector) { + std::cerr << "[" << *pSimpleSelector << "]"; + } else { + std::cerr << "NULL"; + } + + if (newline) { + std::cerr << std::endl; + } + } + + // Print a string representation of a Compound_Selector + static void printCompoundSelector(Compound_Selector_Ptr pCompoundSelector, const char* message=NULL, bool newline=true) { + + if (message) { + std::cerr << message; + } + + if (pCompoundSelector) { + std::cerr << "[" << *pCompoundSelector << "]"; + } else { + std::cerr << "NULL"; + } + + if (newline) { + std::cerr << std::endl; + } + } + + + std::ostream& operator<<(std::ostream& os, Complex_Selector& complexSelector) { + + os << "["; + Complex_Selector_Ptr pIter = &complexSelector; + bool first = true; + while (pIter) { + if (pIter->combinator() != Complex_Selector::ANCESTOR_OF) { + if (!first) { + os << ", "; + } + first = false; + os << pIter->combinator(); + } + + if (!first) { + os << ", "; + } + first = false; + + if (pIter->head()) { + os << pIter->head()->to_string(); + } else { + os << "NULL_HEAD"; + } + + pIter = pIter->tail(); + } + os << "]"; + + return os; + } + + + // Print a string representation of a Complex_Selector + static void printComplexSelector(Complex_Selector_Ptr pComplexSelector, const char* message=NULL, bool newline=true) { + + if (message) { + std::cerr << message; + } + + if (pComplexSelector) { + std::cerr << *pComplexSelector; + } else { + std::cerr << "NULL"; + } + + if (newline) { + std::cerr << std::endl; + } + } + + static void printSelsNewSeqPairCollection(SubSetMapLookups& collection, const char* message=NULL, bool newline=true) { + + if (message) { + std::cerr << message; + } + bool first = true; + std::cerr << "["; + for(SubSetMapLookup& pair : collection) { + if (first) { + first = false; + } else { + std::cerr << ", "; + } + std::cerr << "["; + Compound_Selector_Ptr pSels = pair.first; + Complex_Selector_Ptr pNewSelector = pair.second; + std::cerr << "[" << *pSels << "], "; + printComplexSelector(pNewSelector, NULL, false); + } + std::cerr << "]"; + + if (newline) { + std::cerr << std::endl; + } + } + + // Print a string representation of a ComplexSelectorSet + static void printSourcesSet(ComplexSelectorSet& sources, const char* message=NULL, bool newline=true) { + + if (message) { + std::cerr << message; + } + + // Convert to a deque of strings so we can sort since order doesn't matter in a set. This should cut down on + // the differences we see when debug printing. + typedef std::deque SourceStrings; + SourceStrings sourceStrings; + for (ComplexSelectorSet::iterator iterator = sources.begin(), iteratorEnd = sources.end(); iterator != iteratorEnd; ++iterator) { + Complex_Selector_Ptr pSource = *iterator; + std::stringstream sstream; + sstream << complexSelectorToNode(pSource); + sourceStrings.push_back(sstream.str()); + } + + // Sort to get consistent output + std::sort(sourceStrings.begin(), sourceStrings.end()); + + std::cerr << "ComplexSelectorSet["; + for (SourceStrings::iterator iterator = sourceStrings.begin(), iteratorEnd = sourceStrings.end(); iterator != iteratorEnd; ++iterator) { + std::string source = *iterator; + if (iterator != sourceStrings.begin()) { + std::cerr << ", "; + } + std::cerr << source; + } + std::cerr << "]"; + + if (newline) { + std::cerr << std::endl; + } + } + + + std::ostream& operator<<(std::ostream& os, SubSetMapPairs& entries) { + os << "SUBSET_MAP_ENTRIES["; + + for (SubSetMapPairs::iterator iterator = entries.begin(), endIterator = entries.end(); iterator != endIterator; ++iterator) { + Complex_Selector_Obj pExtComplexSelector = iterator->first; // The selector up to where the @extend is (ie, the thing to merge) + Compound_Selector_Obj pExtCompoundSelector = iterator->second; // The stuff after the @extend + + if (iterator != entries.begin()) { + os << ", "; + } + + os << "("; + + if (pExtComplexSelector) { + std::cerr << *pExtComplexSelector; + } else { + std::cerr << "NULL"; + } + + os << " -> "; + + if (pExtCompoundSelector) { + std::cerr << *pExtCompoundSelector; + } else { + std::cerr << "NULL"; + } + + os << ")"; + + } + + os << "]"; + + return os; + } +#endif + + static bool parentSuperselector(Complex_Selector_Ptr pOne, Complex_Selector_Ptr pTwo) { + // TODO: figure out a better way to create a Complex_Selector from scratch + // TODO: There's got to be a better way. This got ugly quick... + Element_Selector_Obj fakeParent = SASS_MEMORY_NEW(Element_Selector, ParserState("[FAKE]"), "temp"); + Compound_Selector_Obj fakeHead = SASS_MEMORY_NEW(Compound_Selector, ParserState("[FAKE]"), 1 /*size*/); + fakeHead->elements().push_back(fakeParent); + Complex_Selector_Obj fakeParentContainer = SASS_MEMORY_NEW(Complex_Selector, ParserState("[FAKE]"), Complex_Selector::ANCESTOR_OF, fakeHead /*head*/, NULL /*tail*/); + + pOne->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF); + pTwo->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF); + + bool isSuperselector = pOne->is_superselector_of(pTwo); + + pOne->clear_innermost(); + pTwo->clear_innermost(); + + return isSuperselector; + } + + void nodeToComplexSelectorDeque(const Node& node, ComplexSelectorDeque& out) { + for (NodeDeque::iterator iter = node.collection()->begin(), iterEnd = node.collection()->end(); iter != iterEnd; iter++) { + Node& child = *iter; + out.push_back(nodeToComplexSelector(child)); + } + } + + Node complexSelectorDequeToNode(const ComplexSelectorDeque& deque) { + Node result = Node::createCollection(); + + for (ComplexSelectorDeque::const_iterator iter = deque.begin(), iterEnd = deque.end(); iter != iterEnd; iter++) { + Complex_Selector_Obj pChild = *iter; + result.collection()->push_back(complexSelectorToNode(pChild)); + } + + return result; + } + + class LcsCollectionComparator { + public: + LcsCollectionComparator() {} + + bool operator()(Complex_Selector_Obj pOne, Complex_Selector_Obj pTwo, Complex_Selector_Obj& pOut) const { + /* + This code is based on the following block from ruby sass' subweave + do |s1, s2| + next s1 if s1 == s2 + next unless s1.first.is_a?(SimpleSequence) && s2.first.is_a?(SimpleSequence) + next s2 if parent_superselector?(s1, s2) + next s1 if parent_superselector?(s2, s1) + end + */ + + if (*pOne == *pTwo) { + pOut = pOne; + return true; + } + + if (pOne->combinator() != Complex_Selector::ANCESTOR_OF || pTwo->combinator() != Complex_Selector::ANCESTOR_OF) { + return false; + } + + if (parentSuperselector(pOne, pTwo)) { + pOut = pTwo; + return true; + } + + if (parentSuperselector(pTwo, pOne)) { + pOut = pOne; + return true; + } + + return false; + } + }; + + + /* + This is the equivalent of ruby's Sass::Util.lcs_backtrace. + + # Computes a single longest common subsequence for arrays x and y. + # Algorithm from http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Reading_out_an_LCS + */ + void lcs_backtrace(const LCSTable& c, ComplexSelectorDeque& x, ComplexSelectorDeque& y, int i, int j, const LcsCollectionComparator& comparator, ComplexSelectorDeque& out) { + //DEBUG_PRINTLN(LCS, "LCSBACK: X=" << x << " Y=" << y << " I=" << i << " J=" << j) + // TODO: make printComplexSelectorDeque and use DEBUG_EXEC AND DEBUG_PRINTLN HERE to get equivalent output + + if (i == 0 || j == 0) { + DEBUG_PRINTLN(LCS, "RETURNING EMPTY") + return; + } + + + Complex_Selector_Obj pCompareOut; + if (comparator(x[i], y[j], pCompareOut)) { + DEBUG_PRINTLN(LCS, "RETURNING AFTER ELEM COMPARE") + lcs_backtrace(c, x, y, i - 1, j - 1, comparator, out); + out.push_back(pCompareOut); + return; + } + + if (c[i][j - 1] > c[i - 1][j]) { + DEBUG_PRINTLN(LCS, "RETURNING AFTER TABLE COMPARE") + lcs_backtrace(c, x, y, i, j - 1, comparator, out); + return; + } + + DEBUG_PRINTLN(LCS, "FINAL RETURN") + lcs_backtrace(c, x, y, i - 1, j, comparator, out); + return; + } + + /* + This is the equivalent of ruby's Sass::Util.lcs_table. + + # Calculates the memoization table for the Least Common Subsequence algorithm. + # Algorithm from http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Computing_the_length_of_the_LCS + */ + void lcs_table(const ComplexSelectorDeque& x, const ComplexSelectorDeque& y, const LcsCollectionComparator& comparator, LCSTable& out) { + //DEBUG_PRINTLN(LCS, "LCSTABLE: X=" << x << " Y=" << y) + // TODO: make printComplexSelectorDeque and use DEBUG_EXEC AND DEBUG_PRINTLN HERE to get equivalent output + + LCSTable c(x.size(), std::vector(y.size())); + + // These shouldn't be necessary since the vector will be initialized to 0 already. + // x.size.times {|i| c[i][0] = 0} + // y.size.times {|j| c[0][j] = 0} + + for (size_t i = 1; i < x.size(); i++) { + for (size_t j = 1; j < y.size(); j++) { + Complex_Selector_Obj pCompareOut; + + if (comparator(x[i], y[j], pCompareOut)) { + c[i][j] = c[i - 1][j - 1] + 1; + } else { + c[i][j] = std::max(c[i][j - 1], c[i - 1][j]); + } + } + } + + out = c; + } + + /* + This is the equivalent of ruby's Sass::Util.lcs. + + # Computes a single longest common subsequence for `x` and `y`. + # If there are more than one longest common subsequences, + # the one returned is that which starts first in `x`. + + # @param x [NodeCollection] + # @param y [NodeCollection] + # @comparator An equality check between elements of `x` and `y`. + # @return [NodeCollection] The LCS + + http://en.wikipedia.org/wiki/Longest_common_subsequence_problem + */ + void lcs(ComplexSelectorDeque& x, ComplexSelectorDeque& y, const LcsCollectionComparator& comparator, ComplexSelectorDeque& out) { + //DEBUG_PRINTLN(LCS, "LCS: X=" << x << " Y=" << y) + // TODO: make printComplexSelectorDeque and use DEBUG_EXEC AND DEBUG_PRINTLN HERE to get equivalent output + + x.push_front(NULL); + y.push_front(NULL); + + LCSTable table; + lcs_table(x, y, comparator, table); + + return lcs_backtrace(table, x, y, static_cast(x.size()) - 1, static_cast(y.size()) - 1, comparator, out); + } + + + /* + This is the equivalent of ruby's Sequence.trim. + + The following is the modified version of the ruby code that was more portable to C++. You + should be able to drop it into ruby 3.2.19 and get the same results from ruby sass. + + # Avoid truly horrific quadratic behavior. TODO: I think there + # may be a way to get perfect trimming without going quadratic. + return seqses if seqses.size > 100 + + # Keep the results in a separate array so we can be sure we aren't + # comparing against an already-trimmed selector. This ensures that two + # identical selectors don't mutually trim one another. + result = seqses.dup + + # This is n^2 on the sequences, but only comparing between + # separate sequences should limit the quadratic behavior. + seqses.each_with_index do |seqs1, i| + tempResult = [] + + for seq1 in seqs1 do + max_spec = 0 + for seq in _sources(seq1) do + max_spec = [max_spec, seq.specificity].max + end + + + isMoreSpecificOuter = false + for seqs2 in result do + if seqs1.equal?(seqs2) then + next + end + + # Second Law of Extend: the specificity of a generated selector + # should never be less than the specificity of the extending + # selector. + # + # See https://github.com/nex3/sass/issues/324. + isMoreSpecificInner = false + for seq2 in seqs2 do + isMoreSpecificInner = _specificity(seq2) >= max_spec && _superselector?(seq2, seq1) + if isMoreSpecificInner then + break + end + end + + if isMoreSpecificInner then + isMoreSpecificOuter = true + break + end + end + + if !isMoreSpecificOuter then + tempResult.push(seq1) + end + end + + result[i] = tempResult + + end + + result + */ + /* + - IMPROVEMENT: We could probably work directly in the output trimmed deque. + */ + Node Extend::trim(Node& seqses, bool isReplace) { + // See the comments in the above ruby code before embarking on understanding this function. + + // Avoid poor performance in extreme cases. + if (seqses.collection()->size() > 100) { + return seqses; + } + + + DEBUG_PRINTLN(TRIM, "TRIM: " << seqses) + + + Node result = Node::createCollection(); + result.plus(seqses); + + DEBUG_PRINTLN(TRIM, "RESULT INITIAL: " << result) + + // Normally we use the standard STL iterators, but in this case, we need to access the result collection by index since we're + // iterating the input collection, computing a value, and then setting the result in the output collection. We have to keep track + // of the index manually. + int toTrimIndex = 0; + + for (NodeDeque::iterator seqsesIter = seqses.collection()->begin(), seqsesIterEnd = seqses.collection()->end(); seqsesIter != seqsesIterEnd; ++seqsesIter) { + Node& seqs1 = *seqsesIter; + + DEBUG_PRINTLN(TRIM, "SEQS1: " << seqs1 << " " << toTrimIndex) + + Node tempResult = Node::createCollection(); + tempResult.got_line_feed = seqs1.got_line_feed; + + for (NodeDeque::iterator seqs1Iter = seqs1.collection()->begin(), seqs1EndIter = seqs1.collection()->end(); seqs1Iter != seqs1EndIter; ++seqs1Iter) { + Node& seq1 = *seqs1Iter; + + Complex_Selector_Obj pSeq1 = nodeToComplexSelector(seq1); + + // Compute the maximum specificity. This requires looking at the "sources" of the sequence. See SimpleSequence.sources in the ruby code + // for a good description of sources. + // + // TODO: I'm pretty sure there's a bug in the sources code. It was implemented for sass-spec's 182_test_nested_extend_loop test. + // While the test passes, I compared the state of each trim call to verify correctness. The last trim call had incorrect sources. We + // had an extra source that the ruby version did not have. Without a failing test case, this is going to be extra hard to find. My + // best guess at this point is that we're cloning an object somewhere and maintaining the sources when we shouldn't be. This is purely + // a guess though. + unsigned long maxSpecificity = isReplace ? pSeq1->specificity() : 0; + ComplexSelectorSet sources = pSeq1->sources(); + + DEBUG_PRINTLN(TRIM, "TRIM SEQ1: " << seq1) + DEBUG_EXEC(TRIM, printSourcesSet(sources, "TRIM SOURCES: ")) + + for (ComplexSelectorSet::iterator sourcesSetIterator = sources.begin(), sourcesSetIteratorEnd = sources.end(); sourcesSetIterator != sourcesSetIteratorEnd; ++sourcesSetIterator) { + const Complex_Selector_Obj& pCurrentSelector = *sourcesSetIterator; + maxSpecificity = std::max(maxSpecificity, pCurrentSelector->specificity()); + } + + DEBUG_PRINTLN(TRIM, "MAX SPECIFICITY: " << maxSpecificity) + + bool isMoreSpecificOuter = false; + + int resultIndex = 0; + + for (NodeDeque::iterator resultIter = result.collection()->begin(), resultIterEnd = result.collection()->end(); resultIter != resultIterEnd; ++resultIter) { + Node& seqs2 = *resultIter; + + DEBUG_PRINTLN(TRIM, "SEQS1: " << seqs1) + DEBUG_PRINTLN(TRIM, "SEQS2: " << seqs2) + + // Do not compare the same sequence to itself. The ruby call we're trying to + // emulate is: seqs1.equal?(seqs2). equal? is an object comparison, not an equivalency comparision. + // Since we have the same pointers in seqes and results, we can do a pointer comparision. seqs1 is + // derived from seqses and seqs2 is derived from result. + if (seqs1.collection() == seqs2.collection()) { + DEBUG_PRINTLN(TRIM, "CONTINUE") + continue; + } + + bool isMoreSpecificInner = false; + + for (NodeDeque::iterator seqs2Iter = seqs2.collection()->begin(), seqs2IterEnd = seqs2.collection()->end(); seqs2Iter != seqs2IterEnd; ++seqs2Iter) { + Node& seq2 = *seqs2Iter; + + Complex_Selector_Obj pSeq2 = nodeToComplexSelector(seq2); + + DEBUG_PRINTLN(TRIM, "SEQ2 SPEC: " << pSeq2->specificity()) + DEBUG_PRINTLN(TRIM, "IS SPEC: " << pSeq2->specificity() << " >= " << maxSpecificity << " " << (pSeq2->specificity() >= maxSpecificity ? "true" : "false")) + DEBUG_PRINTLN(TRIM, "IS SUPER: " << (pSeq2->is_superselector_of(pSeq1) ? "true" : "false")) + + isMoreSpecificInner = pSeq2->specificity() >= maxSpecificity && pSeq2->is_superselector_of(pSeq1); + + if (isMoreSpecificInner) { + DEBUG_PRINTLN(TRIM, "FOUND MORE SPECIFIC") + break; + } + } + + // If we found something more specific, we're done. Let the outer loop know and stop iterating. + if (isMoreSpecificInner) { + isMoreSpecificOuter = true; + break; + } + + resultIndex++; + } + + if (!isMoreSpecificOuter) { + DEBUG_PRINTLN(TRIM, "PUSHING: " << seq1) + tempResult.collection()->push_back(seq1); + } + + } + + DEBUG_PRINTLN(TRIM, "RESULT BEFORE ASSIGN: " << result) + DEBUG_PRINTLN(TRIM, "TEMP RESULT: " << toTrimIndex << " " << tempResult) + (*result.collection())[toTrimIndex] = tempResult; + + toTrimIndex++; + + DEBUG_PRINTLN(TRIM, "RESULT: " << result) + } + + return result; + } + + + + static bool parentSuperselector(const Node& one, const Node& two) { + // TODO: figure out a better way to create a Complex_Selector from scratch + // TODO: There's got to be a better way. This got ugly quick... + Element_Selector_Obj fakeParent = SASS_MEMORY_NEW(Element_Selector, ParserState("[FAKE]"), "temp"); + Compound_Selector_Obj fakeHead = SASS_MEMORY_NEW(Compound_Selector, ParserState("[FAKE]"), 1 /*size*/); + fakeHead->elements().push_back(fakeParent); + Complex_Selector_Obj fakeParentContainer = SASS_MEMORY_NEW(Complex_Selector, ParserState("[FAKE]"), Complex_Selector::ANCESTOR_OF, fakeHead /*head*/, NULL /*tail*/); + + Complex_Selector_Obj pOneWithFakeParent = nodeToComplexSelector(one); + pOneWithFakeParent->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF); + Complex_Selector_Obj pTwoWithFakeParent = nodeToComplexSelector(two); + pTwoWithFakeParent->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF); + + return pOneWithFakeParent->is_superselector_of(pTwoWithFakeParent); + } + + + class ParentSuperselectorChunker { + public: + ParentSuperselectorChunker(Node& lcs) : mLcs(lcs) {} + Node& mLcs; + + bool operator()(const Node& seq) const { + // {|s| parent_superselector?(s.first, lcs.first)} + if (seq.collection()->size() == 0) return false; + return parentSuperselector(seq.collection()->front(), mLcs.collection()->front()); + } + }; + + class SubweaveEmptyChunker { + public: + bool operator()(const Node& seq) const { + // {|s| s.empty?} + + return seq.collection()->empty(); + } + }; + + /* + # Takes initial subsequences of `seq1` and `seq2` and returns all + # orderings of those subsequences. The initial subsequences are determined + # by a block. + # + # Destructively removes the initial subsequences of `seq1` and `seq2`. + # + # For example, given `(A B C | D E)` and `(1 2 | 3 4 5)` (with `|` + # denoting the boundary of the initial subsequence), this would return + # `[(A B C 1 2), (1 2 A B C)]`. The sequences would then be `(D E)` and + # `(3 4 5)`. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @yield [a] Used to determine when to cut off the initial subsequences. + # Called repeatedly for each sequence until it returns true. + # @yieldparam a [Array] A final subsequence of one input sequence after + # cutting off some initial subsequence. + # @yieldreturn [Boolean] Whether or not to cut off the initial subsequence + # here. + # @return [Array] All possible orderings of the initial subsequences. + def chunks(seq1, seq2) + chunk1 = [] + chunk1 << seq1.shift until yield seq1 + chunk2 = [] + chunk2 << seq2.shift until yield seq2 + return [] if chunk1.empty? && chunk2.empty? + return [chunk2] if chunk1.empty? + return [chunk1] if chunk2.empty? + [chunk1 + chunk2, chunk2 + chunk1] + end + */ + template + static Node chunks(Node& seq1, Node& seq2, const ChunkerType& chunker) { + Node chunk1 = Node::createCollection(); + while (seq1.collection()->size() && !chunker(seq1)) { + chunk1.collection()->push_back(seq1.collection()->front()); + seq1.collection()->pop_front(); + } + + Node chunk2 = Node::createCollection(); + while (!seq2.collection()->empty() && !chunker(seq2)) { + chunk2.collection()->push_back(seq2.collection()->front()); + seq2.collection()->pop_front(); + } + + if (chunk1.collection()->empty() && chunk2.collection()->empty()) { + DEBUG_PRINTLN(CHUNKS, "RETURNING BOTH EMPTY") + return Node::createCollection(); + } + + if (chunk1.collection()->empty()) { + Node chunk2Wrapper = Node::createCollection(); + chunk2Wrapper.collection()->push_back(chunk2); + DEBUG_PRINTLN(CHUNKS, "RETURNING ONE EMPTY") + return chunk2Wrapper; + } + + if (chunk2.collection()->empty()) { + Node chunk1Wrapper = Node::createCollection(); + chunk1Wrapper.collection()->push_back(chunk1); + DEBUG_PRINTLN(CHUNKS, "RETURNING TWO EMPTY") + return chunk1Wrapper; + } + + Node perms = Node::createCollection(); + + Node firstPermutation = Node::createCollection(); + firstPermutation.collection()->insert(firstPermutation.collection()->end(), chunk1.collection()->begin(), chunk1.collection()->end()); + firstPermutation.collection()->insert(firstPermutation.collection()->end(), chunk2.collection()->begin(), chunk2.collection()->end()); + perms.collection()->push_back(firstPermutation); + + Node secondPermutation = Node::createCollection(); + secondPermutation.collection()->insert(secondPermutation.collection()->end(), chunk2.collection()->begin(), chunk2.collection()->end()); + secondPermutation.collection()->insert(secondPermutation.collection()->end(), chunk1.collection()->begin(), chunk1.collection()->end()); + perms.collection()->push_back(secondPermutation); + + DEBUG_PRINTLN(CHUNKS, "RETURNING PERM") + + return perms; + } + + + static Node groupSelectors(Node& seq) { + Node newSeq = Node::createCollection(); + + Node tail = Node::createCollection(); + tail.plus(seq); + + while (!tail.collection()->empty()) { + Node head = Node::createCollection(); + + do { + head.collection()->push_back(tail.collection()->front()); + tail.collection()->pop_front(); + } while (!tail.collection()->empty() && (head.collection()->back().isCombinator() || tail.collection()->front().isCombinator())); + + newSeq.collection()->push_back(head); + } + + return newSeq; + } + + + static void getAndRemoveInitialOps(Node& seq, Node& ops) { + NodeDeque& seqCollection = *(seq.collection()); + NodeDeque& opsCollection = *(ops.collection()); + + while (seqCollection.size() > 0 && seqCollection.front().isCombinator()) { + opsCollection.push_back(seqCollection.front()); + seqCollection.pop_front(); + } + } + + + static void getAndRemoveFinalOps(Node& seq, Node& ops) { + NodeDeque& seqCollection = *(seq.collection()); + NodeDeque& opsCollection = *(ops.collection()); + + while (seqCollection.size() > 0 && seqCollection.back().isCombinator()) { + opsCollection.push_back(seqCollection.back()); // Purposefully reversed to match ruby code + seqCollection.pop_back(); + } + } + + + /* + def merge_initial_ops(seq1, seq2) + ops1, ops2 = [], [] + ops1 << seq1.shift while seq1.first.is_a?(String) + ops2 << seq2.shift while seq2.first.is_a?(String) + + newline = false + newline ||= !!ops1.shift if ops1.first == "\n" + newline ||= !!ops2.shift if ops2.first == "\n" + + # If neither sequence is a subsequence of the other, they cannot be + # merged successfully + lcs = Sass::Util.lcs(ops1, ops2) + return unless lcs == ops1 || lcs == ops2 + return (newline ? ["\n"] : []) + (ops1.size > ops2.size ? ops1 : ops2) + end + */ + static Node mergeInitialOps(Node& seq1, Node& seq2) { + Node ops1 = Node::createCollection(); + Node ops2 = Node::createCollection(); + + getAndRemoveInitialOps(seq1, ops1); + getAndRemoveInitialOps(seq2, ops2); + + // TODO: Do we have this information available to us? + // newline = false + // newline ||= !!ops1.shift if ops1.first == "\n" + // newline ||= !!ops2.shift if ops2.first == "\n" + + // If neither sequence is a subsequence of the other, they cannot be merged successfully + DefaultLcsComparator lcsDefaultComparator; + Node opsLcs = lcs(ops1, ops2, lcsDefaultComparator); + + if (!(opsLcs == ops1 || opsLcs == ops2)) { + return Node::createNil(); + } + + // TODO: more newline logic + // return (newline ? ["\n"] : []) + (ops1.size > ops2.size ? ops1 : ops2) + + return (ops1.collection()->size() > ops2.collection()->size() ? ops1 : ops2); + } + + + /* + def merge_final_ops(seq1, seq2, res = []) + + + # This code looks complicated, but it's actually just a bunch of special + # cases for interactions between different combinators. + op1, op2 = ops1.first, ops2.first + if op1 && op2 + sel1 = seq1.pop + sel2 = seq2.pop + if op1 == '~' && op2 == '~' + if sel1.superselector?(sel2) + res.unshift sel2, '~' + elsif sel2.superselector?(sel1) + res.unshift sel1, '~' + else + merged = sel1.unify(sel2.members, sel2.subject?) + res.unshift [ + [sel1, '~', sel2, '~'], + [sel2, '~', sel1, '~'], + ([merged, '~'] if merged) + ].compact + end + elsif (op1 == '~' && op2 == '+') || (op1 == '+' && op2 == '~') + if op1 == '~' + tilde_sel, plus_sel = sel1, sel2 + else + tilde_sel, plus_sel = sel2, sel1 + end + + if tilde_sel.superselector?(plus_sel) + res.unshift plus_sel, '+' + else + merged = plus_sel.unify(tilde_sel.members, tilde_sel.subject?) + res.unshift [ + [tilde_sel, '~', plus_sel, '+'], + ([merged, '+'] if merged) + ].compact + end + elsif op1 == '>' && %w[~ +].include?(op2) + res.unshift sel2, op2 + seq1.push sel1, op1 + elsif op2 == '>' && %w[~ +].include?(op1) + res.unshift sel1, op1 + seq2.push sel2, op2 + elsif op1 == op2 + return unless merged = sel1.unify(sel2.members, sel2.subject?) + res.unshift merged, op1 + else + # Unknown selector combinators can't be unified + return + end + return merge_final_ops(seq1, seq2, res) + elsif op1 + seq2.pop if op1 == '>' && seq2.last && seq2.last.superselector?(seq1.last) + res.unshift seq1.pop, op1 + return merge_final_ops(seq1, seq2, res) + else # op2 + seq1.pop if op2 == '>' && seq1.last && seq1.last.superselector?(seq2.last) + res.unshift seq2.pop, op2 + return merge_final_ops(seq1, seq2, res) + end + end + */ + static Node mergeFinalOps(Node& seq1, Node& seq2, Node& res) { + + Node ops1 = Node::createCollection(); + Node ops2 = Node::createCollection(); + + getAndRemoveFinalOps(seq1, ops1); + getAndRemoveFinalOps(seq2, ops2); + + // TODO: do we have newlines to remove? + // ops1.reject! {|o| o == "\n"} + // ops2.reject! {|o| o == "\n"} + + if (ops1.collection()->empty() && ops2.collection()->empty()) { + return res; + } + + if (ops1.collection()->size() > 1 || ops2.collection()->size() > 1) { + DefaultLcsComparator lcsDefaultComparator; + Node opsLcs = lcs(ops1, ops2, lcsDefaultComparator); + + // If there are multiple operators, something hacky's going on. If one is a supersequence of the other, use that, otherwise give up. + + if (!(opsLcs == ops1 || opsLcs == ops2)) { + return Node::createNil(); + } + + if (ops1.collection()->size() > ops2.collection()->size()) { + res.collection()->insert(res.collection()->begin(), ops1.collection()->rbegin(), ops1.collection()->rend()); + } else { + res.collection()->insert(res.collection()->begin(), ops2.collection()->rbegin(), ops2.collection()->rend()); + } + + return res; + } + + if (!ops1.collection()->empty() && !ops2.collection()->empty()) { + + Node op1 = ops1.collection()->front(); + Node op2 = ops2.collection()->front(); + + Node sel1 = seq1.collection()->back(); + seq1.collection()->pop_back(); + + Node sel2 = seq2.collection()->back(); + seq2.collection()->pop_back(); + + if (op1.combinator() == Complex_Selector::PRECEDES && op2.combinator() == Complex_Selector::PRECEDES) { + + if (sel1.selector()->is_superselector_of(sel2.selector())) { + + res.collection()->push_front(op1 /*PRECEDES - could have been op2 as well*/); + res.collection()->push_front(sel2); + + } else if (sel2.selector()->is_superselector_of(sel1.selector())) { + + res.collection()->push_front(op1 /*PRECEDES - could have been op2 as well*/); + res.collection()->push_front(sel1); + + } else { + + DEBUG_PRINTLN(ALL, "sel1: " << sel1) + DEBUG_PRINTLN(ALL, "sel2: " << sel2) + + Complex_Selector_Obj pMergedWrapper = SASS_MEMORY_CLONE(sel1.selector()); // Clone the Complex_Selector to get back to something we can transform to a node once we replace the head with the unification result + // TODO: does subject matter? Ruby: return unless merged = sel1.unify(sel2.members, sel2.subject?) + Compound_Selector_Ptr pMerged = sel1.selector()->head()->unify_with(sel2.selector()->head()); + pMergedWrapper->head(pMerged); + + DEBUG_EXEC(ALL, printCompoundSelector(pMerged, "MERGED: ")) + + Node newRes = Node::createCollection(); + + Node firstPerm = Node::createCollection(); + firstPerm.collection()->push_back(sel1); + firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES)); + firstPerm.collection()->push_back(sel2); + firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES)); + newRes.collection()->push_back(firstPerm); + + Node secondPerm = Node::createCollection(); + secondPerm.collection()->push_back(sel2); + secondPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES)); + secondPerm.collection()->push_back(sel1); + secondPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES)); + newRes.collection()->push_back(secondPerm); + + if (pMerged) { + Node mergedPerm = Node::createCollection(); + mergedPerm.collection()->push_back(Node::createSelector(pMergedWrapper)); + mergedPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES)); + newRes.collection()->push_back(mergedPerm); + } + + res.collection()->push_front(newRes); + + DEBUG_PRINTLN(ALL, "RESULT: " << res) + + } + + } else if (((op1.combinator() == Complex_Selector::PRECEDES && op2.combinator() == Complex_Selector::ADJACENT_TO)) || ((op1.combinator() == Complex_Selector::ADJACENT_TO && op2.combinator() == Complex_Selector::PRECEDES))) { + + Node tildeSel = sel1; + Node plusSel = sel2; + Node plusOp = op2; + if (op1.combinator() != Complex_Selector::PRECEDES) { + tildeSel = sel2; + plusSel = sel1; + plusOp = op1; + } + + if (tildeSel.selector()->is_superselector_of(plusSel.selector())) { + + res.collection()->push_front(plusOp); + res.collection()->push_front(plusSel); + + } else { + + DEBUG_PRINTLN(ALL, "PLUS SEL: " << plusSel) + DEBUG_PRINTLN(ALL, "TILDE SEL: " << tildeSel) + + Complex_Selector_Obj pMergedWrapper = SASS_MEMORY_CLONE(plusSel.selector()); // Clone the Complex_Selector to get back to something we can transform to a node once we replace the head with the unification result + // TODO: does subject matter? Ruby: merged = plus_sel.unify(tilde_sel.members, tilde_sel.subject?) + Compound_Selector_Ptr pMerged = plusSel.selector()->head()->unify_with(tildeSel.selector()->head()); + pMergedWrapper->head(pMerged); + + DEBUG_EXEC(ALL, printCompoundSelector(pMerged, "MERGED: ")) + + Node newRes = Node::createCollection(); + + Node firstPerm = Node::createCollection(); + firstPerm.collection()->push_back(tildeSel); + firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES)); + firstPerm.collection()->push_back(plusSel); + firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::ADJACENT_TO)); + newRes.collection()->push_back(firstPerm); + + if (pMerged) { + Node mergedPerm = Node::createCollection(); + mergedPerm.collection()->push_back(Node::createSelector(pMergedWrapper)); + mergedPerm.collection()->push_back(Node::createCombinator(Complex_Selector::ADJACENT_TO)); + newRes.collection()->push_back(mergedPerm); + } + + res.collection()->push_front(newRes); + + DEBUG_PRINTLN(ALL, "RESULT: " << res) + + } + } else if (op1.combinator() == Complex_Selector::PARENT_OF && (op2.combinator() == Complex_Selector::PRECEDES || op2.combinator() == Complex_Selector::ADJACENT_TO)) { + + res.collection()->push_front(op2); + res.collection()->push_front(sel2); + + seq1.collection()->push_back(sel1); + seq1.collection()->push_back(op1); + + } else if (op2.combinator() == Complex_Selector::PARENT_OF && (op1.combinator() == Complex_Selector::PRECEDES || op1.combinator() == Complex_Selector::ADJACENT_TO)) { + + res.collection()->push_front(op1); + res.collection()->push_front(sel1); + + seq2.collection()->push_back(sel2); + seq2.collection()->push_back(op2); + + } else if (op1.combinator() == op2.combinator()) { + + DEBUG_PRINTLN(ALL, "sel1: " << sel1) + DEBUG_PRINTLN(ALL, "sel2: " << sel2) + + Complex_Selector_Obj pMergedWrapper = SASS_MEMORY_CLONE(sel1.selector()); // Clone the Complex_Selector to get back to something we can transform to a node once we replace the head with the unification result + // TODO: does subject matter? Ruby: return unless merged = sel1.unify(sel2.members, sel2.subject?) + Compound_Selector_Ptr pMerged = sel1.selector()->head()->unify_with(sel2.selector()->head()); + pMergedWrapper->head(pMerged); + + DEBUG_EXEC(ALL, printCompoundSelector(pMerged, "MERGED: ")) + + if (!pMerged) { + return Node::createNil(); + } + + res.collection()->push_front(op1); + res.collection()->push_front(Node::createSelector(pMergedWrapper)); + + DEBUG_PRINTLN(ALL, "RESULT: " << res) + + } else { + return Node::createNil(); + } + + return mergeFinalOps(seq1, seq2, res); + + } else if (!ops1.collection()->empty()) { + + Node op1 = ops1.collection()->front(); + + if (op1.combinator() == Complex_Selector::PARENT_OF && !seq2.collection()->empty() && seq2.collection()->back().selector()->is_superselector_of(seq1.collection()->back().selector())) { + seq2.collection()->pop_back(); + } + + // TODO: consider unshift(NodeCollection, Node) + res.collection()->push_front(op1); + res.collection()->push_front(seq1.collection()->back()); + seq1.collection()->pop_back(); + + return mergeFinalOps(seq1, seq2, res); + + } else { // !ops2.collection()->empty() + + Node op2 = ops2.collection()->front(); + + if (op2.combinator() == Complex_Selector::PARENT_OF && !seq1.collection()->empty() && seq1.collection()->back().selector()->is_superselector_of(seq2.collection()->back().selector())) { + seq1.collection()->pop_back(); + } + + res.collection()->push_front(op2); + res.collection()->push_front(seq2.collection()->back()); + seq2.collection()->pop_back(); + + return mergeFinalOps(seq1, seq2, res); + + } + + } + + + /* + This is the equivalent of ruby's Sequence.subweave. + + Here is the original subweave code for reference during porting. + + def subweave(seq1, seq2) + return [seq2] if seq1.empty? + return [seq1] if seq2.empty? + + seq1, seq2 = seq1.dup, seq2.dup + return unless init = merge_initial_ops(seq1, seq2) + return unless fin = merge_final_ops(seq1, seq2) + seq1 = group_selectors(seq1) + seq2 = group_selectors(seq2) + lcs = Sass::Util.lcs(seq2, seq1) do |s1, s2| + next s1 if s1 == s2 + next unless s1.first.is_a?(SimpleSequence) && s2.first.is_a?(SimpleSequence) + next s2 if parent_superselector?(s1, s2) + next s1 if parent_superselector?(s2, s1) + end + + diff = [[init]] + until lcs.empty? + diff << chunks(seq1, seq2) {|s| parent_superselector?(s.first, lcs.first)} << [lcs.shift] + seq1.shift + seq2.shift + end + diff << chunks(seq1, seq2) {|s| s.empty?} + diff += fin.map {|sel| sel.is_a?(Array) ? sel : [sel]} + diff.reject! {|c| c.empty?} + + result = Sass::Util.paths(diff).map {|p| p.flatten}.reject {|p| path_has_two_subjects?(p)} + + result + end + */ + Node subweave(Node& one, Node& two) { + // Check for the simple cases + if (one.collection()->size() == 0) { + Node out = Node::createCollection(); + out.collection()->push_back(two); + return out; + } + if (two.collection()->size() == 0) { + Node out = Node::createCollection(); + out.collection()->push_back(one); + return out; + } + + Node seq1 = Node::createCollection(); + seq1.plus(one); + Node seq2 = Node::createCollection(); + seq2.plus(two); + + DEBUG_PRINTLN(SUBWEAVE, "SUBWEAVE ONE: " << seq1) + DEBUG_PRINTLN(SUBWEAVE, "SUBWEAVE TWO: " << seq2) + + Node init = mergeInitialOps(seq1, seq2); + if (init.isNil()) { + return Node::createNil(); + } + + DEBUG_PRINTLN(SUBWEAVE, "INIT: " << init) + + Node res = Node::createCollection(); + Node fin = mergeFinalOps(seq1, seq2, res); + if (fin.isNil()) { + return Node::createNil(); + } + + DEBUG_PRINTLN(SUBWEAVE, "FIN: " << fin) + + + // Moving this line up since fin isn't modified between now and when it happened before + // fin.map {|sel| sel.is_a?(Array) ? sel : [sel]} + + for (NodeDeque::iterator finIter = fin.collection()->begin(), finEndIter = fin.collection()->end(); + finIter != finEndIter; ++finIter) { + + Node& childNode = *finIter; + + if (!childNode.isCollection()) { + Node wrapper = Node::createCollection(); + wrapper.collection()->push_back(childNode); + childNode = wrapper; + } + + } + + DEBUG_PRINTLN(SUBWEAVE, "FIN MAPPED: " << fin) + + + + Node groupSeq1 = groupSelectors(seq1); + DEBUG_PRINTLN(SUBWEAVE, "SEQ1: " << groupSeq1) + + Node groupSeq2 = groupSelectors(seq2); + DEBUG_PRINTLN(SUBWEAVE, "SEQ2: " << groupSeq2) + + + ComplexSelectorDeque groupSeq1Converted; + nodeToComplexSelectorDeque(groupSeq1, groupSeq1Converted); + + ComplexSelectorDeque groupSeq2Converted; + nodeToComplexSelectorDeque(groupSeq2, groupSeq2Converted); + + ComplexSelectorDeque out; + LcsCollectionComparator collectionComparator; + lcs(groupSeq2Converted, groupSeq1Converted, collectionComparator, out); + Node seqLcs = complexSelectorDequeToNode(out); + + DEBUG_PRINTLN(SUBWEAVE, "SEQLCS: " << seqLcs) + + + Node initWrapper = Node::createCollection(); + initWrapper.collection()->push_back(init); + Node diff = Node::createCollection(); + diff.collection()->push_back(initWrapper); + + DEBUG_PRINTLN(SUBWEAVE, "DIFF INIT: " << diff) + + + while (!seqLcs.collection()->empty()) { + ParentSuperselectorChunker superselectorChunker(seqLcs); + Node chunksResult = chunks(groupSeq1, groupSeq2, superselectorChunker); + diff.collection()->push_back(chunksResult); + + Node lcsWrapper = Node::createCollection(); + lcsWrapper.collection()->push_back(seqLcs.collection()->front()); + seqLcs.collection()->pop_front(); + diff.collection()->push_back(lcsWrapper); + + if (groupSeq1.collection()->size()) groupSeq1.collection()->pop_front(); + if (groupSeq2.collection()->size()) groupSeq2.collection()->pop_front(); + } + + DEBUG_PRINTLN(SUBWEAVE, "DIFF POST LCS: " << diff) + + + DEBUG_PRINTLN(SUBWEAVE, "CHUNKS: ONE=" << groupSeq1 << " TWO=" << groupSeq2) + + + SubweaveEmptyChunker emptyChunker; + Node chunksResult = chunks(groupSeq1, groupSeq2, emptyChunker); + diff.collection()->push_back(chunksResult); + + + DEBUG_PRINTLN(SUBWEAVE, "DIFF POST CHUNKS: " << diff) + + + diff.collection()->insert(diff.collection()->end(), fin.collection()->begin(), fin.collection()->end()); + + DEBUG_PRINTLN(SUBWEAVE, "DIFF POST FIN MAPPED: " << diff) + + // JMA - filter out the empty nodes (use a new collection, since iterator erase() invalidates the old collection) + Node diffFiltered = Node::createCollection(); + for (NodeDeque::iterator diffIter = diff.collection()->begin(), diffEndIter = diff.collection()->end(); + diffIter != diffEndIter; ++diffIter) { + Node& node = *diffIter; + if (node.collection() && !node.collection()->empty()) { + diffFiltered.collection()->push_back(node); + } + } + diff = diffFiltered; + + DEBUG_PRINTLN(SUBWEAVE, "DIFF POST REJECT: " << diff) + + + Node pathsResult = paths(diff); + + DEBUG_PRINTLN(SUBWEAVE, "PATHS: " << pathsResult) + + + // We're flattening in place + for (NodeDeque::iterator pathsIter = pathsResult.collection()->begin(), pathsEndIter = pathsResult.collection()->end(); + pathsIter != pathsEndIter; ++pathsIter) { + + Node& child = *pathsIter; + child = flatten(child); + } + + DEBUG_PRINTLN(SUBWEAVE, "FLATTENED: " << pathsResult) + + + /* + TODO: implement + rejected = mapped.reject {|p| path_has_two_subjects?(p)} + $stderr.puts "REJECTED: #{rejected}" + */ + + + return pathsResult; + + } + /* + // disabled to avoid clang warning [-Wunused-function] + static Node subweaveNaive(const Node& one, const Node& two) { + Node out = Node::createCollection(); + + // Check for the simple cases + if (one.isNil()) { + out.collection()->push_back(two.klone()); + } else if (two.isNil()) { + out.collection()->push_back(one.klone()); + } else { + // Do the naive implementation. pOne = A B and pTwo = C D ...yields... A B C D and C D A B + // See https://gist.github.com/nex3/7609394 for details. + + Node firstPerm = one.klone(); + Node twoCloned = two.klone(); + firstPerm.plus(twoCloned); + out.collection()->push_back(firstPerm); + + Node secondPerm = two.klone(); + Node oneCloned = one.klone(); + secondPerm.plus(oneCloned ); + out.collection()->push_back(secondPerm); + } + + return out; + } + */ + + + /* + This is the equivalent of ruby's Sequence.weave. + + The following is the modified version of the ruby code that was more portable to C++. You + should be able to drop it into ruby 3.2.19 and get the same results from ruby sass. + + def weave(path) + # This function works by moving through the selector path left-to-right, + # building all possible prefixes simultaneously. These prefixes are + # `befores`, while the remaining parenthesized suffixes is `afters`. + befores = [[]] + afters = path.dup + + until afters.empty? + current = afters.shift.dup + last_current = [current.pop] + + tempResult = [] + + for before in befores do + sub = subweave(before, current) + if sub.nil? + next + end + + for seqs in sub do + tempResult.push(seqs + last_current) + end + end + + befores = tempResult + + end + + return befores + end + */ + /* + def weave(path) + befores = [[]] + afters = path.dup + + until afters.empty? + current = afters.shift.dup + + last_current = [current.pop] + + + tempResult = [] + + for before in befores do + sub = subweave(before, current) + + if sub.nil? + next [] + end + + + for seqs in sub do + toPush = seqs + last_current + + tempResult.push(seqs + last_current) + end + + end + + befores = tempResult + + end + + return befores + end + */ + Node Extend::weave(Node& path) { + + DEBUG_PRINTLN(WEAVE, "WEAVE: " << path) + + Node befores = Node::createCollection(); + befores.collection()->push_back(Node::createCollection()); + + Node afters = Node::createCollection(); + afters.plus(path); + + while (!afters.collection()->empty()) { + Node current = afters.collection()->front().klone(); + afters.collection()->pop_front(); + DEBUG_PRINTLN(WEAVE, "CURRENT: " << current) + if (current.collection()->size() == 0) continue; + + Node last_current = Node::createCollection(); + last_current.collection()->push_back(current.collection()->back()); + current.collection()->pop_back(); + DEBUG_PRINTLN(WEAVE, "CURRENT POST POP: " << current) + DEBUG_PRINTLN(WEAVE, "LAST CURRENT: " << last_current) + + Node tempResult = Node::createCollection(); + + for (NodeDeque::iterator beforesIter = befores.collection()->begin(), beforesEndIter = befores.collection()->end(); beforesIter != beforesEndIter; beforesIter++) { + Node& before = *beforesIter; + + Node sub = subweave(before, current); + + DEBUG_PRINTLN(WEAVE, "SUB: " << sub) + + if (sub.isNil()) { + return Node::createCollection(); + } + + for (NodeDeque::iterator subIter = sub.collection()->begin(), subEndIter = sub.collection()->end(); subIter != subEndIter; subIter++) { + Node& seqs = *subIter; + + Node toPush = Node::createCollection(); + toPush.plus(seqs); + toPush.plus(last_current); + + // move line feed from inner to outer selector (very hacky indeed) + if (last_current.collection() && last_current.collection()->front().selector()) { + toPush.got_line_feed = last_current.collection()->front().got_line_feed; + last_current.collection()->front().selector()->has_line_feed(false); + last_current.collection()->front().got_line_feed = false; + } + + tempResult.collection()->push_back(toPush); + + } + } + + befores = tempResult; + + } + + return befores; + } + + + + /* + This is the equivalent of ruby's SimpleSequence.do_extend. + + // TODO: I think I have some modified ruby code to put here. Check. + */ + /* + ISSUES: + - Previous TODO: Do we need to group the results by extender? + - What does subject do in?: next unless unified = seq.members.last.unify(self_without_sel, subject?) + - IMPROVEMENT: The search for uniqueness at the end is not ideal since it's has to loop over everything... + - IMPROVEMENT: Check if the final search for uniqueness is doing anything that extendComplexSelector isn't already doing... + */ + template + class GroupByToAFunctor { + public: + KeyType operator()(SubSetMapPair& extPair) const { + Complex_Selector_Obj pSelector = extPair.first; + return pSelector; + } + }; + Node Extend::extendCompoundSelector(Compound_Selector_Ptr pSelector, CompoundSelectorSet& seen, bool isReplace) { + + /* this turned out to be too much overhead + probably due to holding a "Node" object + // check if we already extended this selector + // we can do this since subset_map is "static" + auto memoized = memoizeCompound.find(pSelector); + if (memoized != memoizeCompound.end()) { + return memoized->second.klone(); + } + */ + + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelector, "EXTEND COMPOUND: ")) + // TODO: Ruby has another loop here to skip certain members? + + // let RESULTS be an empty list of complex selectors + Node results = Node::createCollection(); + // extendedSelectors.got_line_feed = true; + + SubSetMapPairs entries = subset_map.get_v(pSelector); + + GroupByToAFunctor extPairKeyFunctor; + SubSetMapResults arr; + group_by_to_a(entries, extPairKeyFunctor, arr); + + SubSetMapLookups holder; + + // for each (EXTENDER, TARGET) in MAP.get(COMPOUND): + for (SubSetMapResult& groupedPair : arr) { + + Complex_Selector_Obj seq = groupedPair.first; + SubSetMapPairs& group = groupedPair.second; + + DEBUG_EXEC(EXTEND_COMPOUND, printComplexSelector(seq, "SEQ: ")) + + Compound_Selector_Obj pSels = SASS_MEMORY_NEW(Compound_Selector, pSelector->pstate()); + for (SubSetMapPair& pair : group) { + pair.second->extended(true); + pSels->concat(pair.second); + } + + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSels, "SELS: ")) + + // The selector up to where the @extend is (ie, the thing to merge) + Complex_Selector_Ptr pExtComplexSelector = seq; + + // TODO: This can return a Compound_Selector with no elements. Should that just be returning NULL? + // RUBY: self_without_sel = Sass::Util.array_minus(members, sels) + Compound_Selector_Obj pSelectorWithoutExtendSelectors = pSelector->minus(pSels); + + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelector, "MEMBERS: ")) + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelectorWithoutExtendSelectors, "SELF_WO_SEL: ")) + + Compound_Selector_Obj pInnermostCompoundSelector = pExtComplexSelector->last()->head(); + + if (!pInnermostCompoundSelector) { + pInnermostCompoundSelector = SASS_MEMORY_NEW(Compound_Selector, pSelector->pstate()); + } + Compound_Selector_Obj pUnifiedSelector = pInnermostCompoundSelector->unify_with(pSelectorWithoutExtendSelectors); + + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pInnermostCompoundSelector, "LHS: ")) + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelectorWithoutExtendSelectors, "RHS: ")) + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pUnifiedSelector, "UNIFIED: ")) + + // RUBY: next unless unified + if (!pUnifiedSelector || pUnifiedSelector->length() == 0) { + continue; + } + + // TODO: implement the parent directive match (if necessary based on test failures) + // next if group.map {|e, _| check_directives_match!(e, parent_directives)}.none? + + // TODO: This seems a little fishy to me. See if it causes any problems. From the ruby, we should be able to just + // get rid of the last Compound_Selector and replace it with this one. I think the reason this code is more + // complex is that Complex_Selector contains a combinator, but in ruby combinators have already been filtered + // out and aren't operated on. + Complex_Selector_Obj pNewSelector = SASS_MEMORY_CLONE(pExtComplexSelector); // ->first(); + + Complex_Selector_Obj pNewInnerMost = SASS_MEMORY_NEW(Complex_Selector, pSelector->pstate(), Complex_Selector::ANCESTOR_OF, pUnifiedSelector, NULL); + + Complex_Selector::Combinator combinator = pNewSelector->clear_innermost(); + pNewSelector->set_innermost(pNewInnerMost, combinator); + +#ifdef DEBUG + ComplexSelectorSet debugSet; + debugSet = pNewSelector->sources(); + if (debugSet.size() > 0) { + throw std::runtime_error("The new selector should start with no sources. Something needs to be cloned to fix this."); + } + debugSet = pExtComplexSelector->sources(); + if (debugSet.size() > 0) { + throw std::runtime_error("The extension selector from our subset map should not have sources. These will bleed to the new selector. Something needs to be cloned to fix this."); + } +#endif + + + // if (pSelector && pSelector->has_line_feed()) pNewInnerMost->has_line_feed(true); + // Set the sources on our new Complex_Selector to the sources of this simple sequence plus the thing we're extending. + DEBUG_PRINTLN(EXTEND_COMPOUND, "SOURCES SETTING ON NEW SEQ: " << complexSelectorToNode(pNewSelector)) + + DEBUG_EXEC(EXTEND_COMPOUND, ComplexSelectorSet oldSet = pNewSelector->sources(); printSourcesSet(oldSet, "SOURCES NEW SEQ BEGIN: ")) + + // I actually want to create a copy here (performance!) + ComplexSelectorSet newSourcesSet = pSelector->sources(); // XXX + DEBUG_EXEC(EXTEND_COMPOUND, printSourcesSet(newSourcesSet, "SOURCES THIS EXTEND: ")) + + newSourcesSet.insert(pExtComplexSelector); + DEBUG_EXEC(EXTEND_COMPOUND, printSourcesSet(newSourcesSet, "SOURCES WITH NEW SOURCE: ")) + + // RUBY: new_seq.add_sources!(sources + [seq]) + pNewSelector->addSources(newSourcesSet); + + DEBUG_EXEC(EXTEND_COMPOUND, ComplexSelectorSet newSet = pNewSelector->sources(); printSourcesSet(newSet, "SOURCES ON NEW SELECTOR AFTER ADD: ")) + DEBUG_EXEC(EXTEND_COMPOUND, printSourcesSet(pSelector->sources(), "SOURCES THIS EXTEND WHICH SHOULD BE SAME STILL: ")) + + + if (pSels->has_line_feed()) pNewSelector->has_line_feed(true); + + holder.push_back(std::make_pair(pSels, pNewSelector)); + } + + + for (SubSetMapLookup& pair : holder) { + + Compound_Selector_Obj pSels = pair.first; + Complex_Selector_Obj pNewSelector = pair.second; + + + // RUBY??: next [] if seen.include?(sels) + if (seen.find(pSels) != seen.end()) { + continue; + } + + + CompoundSelectorSet recurseSeen(seen); + recurseSeen.insert(pSels); + + + DEBUG_PRINTLN(EXTEND_COMPOUND, "RECURSING DO EXTEND: " << complexSelectorToNode(pNewSelector)) + Node recurseExtendedSelectors = extendComplexSelector(pNewSelector, recurseSeen, isReplace, false); // !:isOriginal + + DEBUG_PRINTLN(EXTEND_COMPOUND, "RECURSING DO EXTEND RETURN: " << recurseExtendedSelectors) + + for (NodeDeque::iterator iterator = recurseExtendedSelectors.collection()->begin(), endIterator = recurseExtendedSelectors.collection()->end(); + iterator != endIterator; ++iterator) { + Node newSelector = *iterator; + +// DEBUG_PRINTLN(EXTEND_COMPOUND, "EXTENDED AT THIS POINT: " << results) +// DEBUG_PRINTLN(EXTEND_COMPOUND, "SELECTOR EXISTS ALREADY: " << newSelector << " " << results.contains(newSelector, false /*simpleSelectorOrderDependent*/)); + + if (!results.contains(newSelector)) { +// DEBUG_PRINTLN(EXTEND_COMPOUND, "ADDING NEW SELECTOR") + results.collection()->push_back(newSelector); + } + } + } + + DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelector, "EXTEND COMPOUND END: ")) + + // this turned out to be too much overhead + // memory results in a map table - since extending is very expensive + // memoizeCompound.insert(std::pair(pSelector, results)); + + return results; + } + + + // check if selector has something to be extended by subset_map + bool Extend::complexSelectorHasExtension(Complex_Selector_Ptr selector, CompoundSelectorSet& seen) { + + bool hasExtension = false; + + Complex_Selector_Obj pIter = selector; + + while (!hasExtension && pIter) { + Compound_Selector_Obj pHead = pIter->head(); + + if (pHead) { + SubSetMapPairs entries = subset_map.get_v(pHead); + for (SubSetMapPair ext : entries) { + // check if both selectors have the same media block parent + // if (ext.first->media_block() == pComplexSelector->media_block()) continue; + if (ext.second->media_block() == 0) continue; + if (pHead->media_block() && + ext.second->media_block()->media_queries() && + pHead->media_block()->media_queries() + ) { + std::string query_left(ext.second->media_block()->media_queries()->to_string()); + std::string query_right(pHead->media_block()->media_queries()->to_string()); + if (query_left == query_right) continue; + } + + // fail if one goes across media block boundaries + std::stringstream err; + std::string cwd(Sass::File::get_cwd()); + ParserState pstate(ext.second->pstate()); + std::string rel_path(Sass::File::abs2rel(pstate.path, cwd, cwd)); + err << "You may not @extend an outer selector from within @media.\n"; + err << "You may only @extend selectors within the same directive.\n"; + err << "From \"@extend " << ext.second->to_string() << "\""; + err << " on line " << pstate.line+1 << " of " << rel_path << "\n"; + error(err.str(), selector->pstate(), eval->exp.traces); + } + if (entries.size() > 0) hasExtension = true; + } + + pIter = pIter->tail(); + } + + return hasExtension; + } + + + /* + This is the equivalent of ruby's Sequence.do_extend. + + // TODO: I think I have some modified ruby code to put here. Check. + */ + /* + ISSUES: + - check to automatically include combinators doesn't transfer over to libsass' data model where + the combinator and compound selector are one unit + next [[sseq_or_op]] unless sseq_or_op.is_a?(SimpleSequence) + */ + Node Extend::extendComplexSelector(Complex_Selector_Ptr selector, CompoundSelectorSet& seen, bool isReplace, bool isOriginal) { + + // check if we already extended this selector + // we can do this since subset_map is "static" + auto memoized = memoizeComplex.find(selector); + if (memoized != memoizeComplex.end()) { + return memoized->second; + } + + // convert the input selector to extend node format + Node complexSelector = complexSelectorToNode(selector); + DEBUG_PRINTLN(EXTEND_COMPLEX, "EXTEND COMPLEX: " << complexSelector) + + // let CHOICES be an empty list of selector-lists + // create new collection to hold the results + Node choices = Node::createCollection(); + + // for each compound selector COMPOUND in COMPLEX: + for (Node& sseqOrOp : *complexSelector.collection()) { + + DEBUG_PRINTLN(EXTEND_COMPLEX, "LOOP: " << sseqOrOp) + + // If it's not a selector (meaning it's a combinator), just include it automatically + // RUBY: next [[sseq_or_op]] unless sseq_or_op.is_a?(SimpleSequence) + if (!sseqOrOp.isSelector()) { + // Wrap our Combinator in two collections to match ruby. This is essentially making a collection Node + // with one collection child. The collection child represents a Complex_Selector that is only a combinator. + Node outer = Node::createCollection(); + Node inner = Node::createCollection(); + outer.collection()->push_back(inner); + inner.collection()->push_back(sseqOrOp); + choices.collection()->push_back(outer); + continue; + } + + // verified now that node is a valid selector + Complex_Selector_Obj sseqSel = sseqOrOp.selector(); + Compound_Selector_Obj sseqHead = sseqSel->head(); + + // let EXTENDED be extend_compound(COMPOUND, SEEN) + // extend the compound selector against the given subset_map + // RUBY: extended = sseq_or_op.do_extend(extends, parent_directives, replace, seen) + Node extended = extendCompoundSelector(sseqHead, seen, isReplace); // slow(17%)! + if (sseqOrOp.got_line_feed) extended.got_line_feed = true; + DEBUG_PRINTLN(EXTEND_COMPLEX, "EXTENDED: " << extended) + + // Prepend the Compound_Selector based on the choices logic; choices seems to be extend but with a ruby + // Array instead of a Sequence due to the member mapping: choices = extended.map {|seq| seq.members} + // RUBY: extended.first.add_sources!([self]) if original && !has_placeholder? + if (isOriginal && !selector->has_placeholder()) { + ComplexSelectorSet srcset; + srcset.insert(selector); + sseqSel->addSources(srcset); + // DEBUG_PRINTLN(EXTEND_COMPLEX, "ADD SOURCES: " << *pComplexSelector) + } + + bool isSuperselector = false; + // if no complex selector in EXTENDED is a superselector of COMPOUND: + for (Node& childNode : *extended.collection()) { + Complex_Selector_Obj pExtensionSelector = nodeToComplexSelector(childNode); + if (pExtensionSelector->is_superselector_of(sseqSel)) { + isSuperselector = true; + break; + } + } + + if (!isSuperselector) { + // add a complex selector composed only of COMPOUND to EXTENDED + if (sseqOrOp.got_line_feed) sseqSel->has_line_feed(sseqOrOp.got_line_feed); + extended.collection()->push_front(complexSelectorToNode(sseqSel)); + } + + DEBUG_PRINTLN(EXTEND_COMPLEX, "CHOICES UNSHIFTED: " << extended) + + // add EXTENDED to CHOICES + // Aggregate our current extensions + choices.collection()->push_back(extended); + } + + + DEBUG_PRINTLN(EXTEND_COMPLEX, "EXTENDED NOT EXPANDED: " << choices) + + + + // Ruby Equivalent: paths + Node paths = Sass::paths(choices); + + DEBUG_PRINTLN(EXTEND_COMPLEX, "PATHS: " << paths) + + // let WEAVES be an empty list of selector lists + Node weaves = Node::createCollection(); + + // for each list of complex selectors PATH in paths(CHOICES): + for (Node& path : *paths.collection()) { + // add weave(PATH) to WEAVES + Node weaved = weave(path); // slow(12%)! + weaved.got_line_feed = path.got_line_feed; + weaves.collection()->push_back(weaved); + } + + DEBUG_PRINTLN(EXTEND_COMPLEX, "WEAVES: " << weaves) + + // Ruby Equivalent: trim + Node trimmed(trim(weaves, isReplace)); // slow(19%)! + + DEBUG_PRINTLN(EXTEND_COMPLEX, "TRIMMED: " << trimmed) + + // Ruby Equivalent: flatten + Node flattened(flatten(trimmed, 1)); + + DEBUG_PRINTLN(EXTEND_COMPLEX, ">>>>> EXTENDED: " << extendedSelectors) + DEBUG_PRINTLN(EXTEND_COMPLEX, "EXTEND COMPLEX END: " << complexSelector) + + // memory results in a map table - since extending is very expensive + memoizeComplex.insert(std::pair(selector, flattened)); + + // return trim(WEAVES) + return flattened; + } + + + + /* + This is the equivalent of ruby's CommaSequence.do_extend. + */ + // We get a selector list with has something to extend and a subset_map with + // all extenders. Pick the ones that match our selectors in the list. + Selector_List_Ptr Extend::extendSelectorList(Selector_List_Obj pSelectorList, bool isReplace, bool& extendedSomething, CompoundSelectorSet& seen) { + + Selector_List_Obj pNewSelectors = SASS_MEMORY_NEW(Selector_List, pSelectorList->pstate(), pSelectorList->length()); + + // check if we already extended this selector + // we can do this since subset_map is "static" + auto memoized = memoizeList.find(pSelectorList); + if (memoized != memoizeList.end()) { + extendedSomething = true; + return memoized->second; + } + + extendedSomething = false; + // process each comlplex selector in the selector list. + // Find the ones that can be extended by given subset_map. + for (size_t index = 0, length = pSelectorList->length(); index < length; index++) { + Complex_Selector_Obj pSelector = (*pSelectorList)[index]; + + // ruby sass seems to keep a list of things that have extensions and then only extend those. We don't currently do that. + // Since it's not that expensive to check if an extension exists in the subset map and since it can be relatively expensive to + // run through the extend code (which does a data model transformation), check if there is anything to extend before doing + // the extend. We might be able to optimize extendComplexSelector, but this approach keeps us closer to ruby sass (which helps + // when debugging). + if (!complexSelectorHasExtension(pSelector, seen)) { + pNewSelectors->append(pSelector); + continue; + } + + // complexSelectorHasExtension was true! + extendedSomething = true; + + // now do the actual extension of the complex selector + Node extendedSelectors = extendComplexSelector(pSelector, seen, isReplace, true); + + if (!pSelector->has_placeholder()) { + Node nSelector(complexSelectorToNode(pSelector)); + if (!extendedSelectors.contains(nSelector)) { + pNewSelectors->append(pSelector); + continue; + } + } + + bool doReplace = isReplace; + for (Node& childNode : *extendedSelectors.collection()) { + // When it is a replace, skip the first one, unless there is only one + if(doReplace && extendedSelectors.collection()->size() > 1 ) { + doReplace = false; + continue; + } + pNewSelectors->append(nodeToComplexSelector(childNode)); + } + } + + Remove_Placeholders remove_placeholders; + // it seems that we have to remove the place holders early here + // normally we do this as the very last step (compare to ruby sass) + pNewSelectors = remove_placeholders.remove_placeholders(pNewSelectors); + + // unwrap all wrapped selectors with inner lists + for (Complex_Selector_Obj cur : pNewSelectors->elements()) { + // process tails + while (cur) { + // process header + if (cur->head() && seen.find(cur->head()) == seen.end()) { + CompoundSelectorSet recseen(seen); + recseen.insert(cur->head()); + // create a copy since we add multiple items if stuff get unwrapped + Compound_Selector_Obj cpy_head = SASS_MEMORY_NEW(Compound_Selector, cur->pstate()); + for (Simple_Selector_Obj hs : *cur->head()) { + if (Wrapped_Selector_Obj ws = Cast(hs)) { + ws->selector(SASS_MEMORY_CLONE(ws->selector())); + if (Selector_List_Obj sl = Cast(ws->selector())) { + // special case for ruby ass + if (sl->empty()) { + // this seems inconsistent but it is how ruby sass seems to remove parentheses + cpy_head->append(SASS_MEMORY_NEW(Element_Selector, hs->pstate(), ws->name())); + } + // has wrapped not selectors + else if (ws->name() == ":not") { + // extend the inner list of wrapped selector + bool extended = false; + Selector_List_Obj ext_sl = extendSelectorList(sl, false, extended, recseen); + for (size_t i = 0; i < ext_sl->length(); i += 1) { + if (Complex_Selector_Obj ext_cs = ext_sl->at(i)) { + // create clones for wrapped selector and the inner list + Wrapped_Selector_Obj cpy_ws = SASS_MEMORY_COPY(ws); + Selector_List_Obj cpy_ws_sl = SASS_MEMORY_NEW(Selector_List, sl->pstate()); + // remove parent selectors from inner selector + Compound_Selector_Obj ext_head = NULL; + if (ext_cs->first()) ext_head = ext_cs->first()->head(); + if (ext_head && ext_head && ext_head->length() > 0) { + cpy_ws_sl->append(ext_cs->first()); + } + // assign list to clone + cpy_ws->selector(cpy_ws_sl); + // append the clone + cpy_head->append(cpy_ws); + } + } + if (eval && extended) { + eval->exp.selector_stack.push_back(pNewSelectors); + cpy_head->perform(eval); + eval->exp.selector_stack.pop_back(); + } + } + // has wrapped selectors + else { + Wrapped_Selector_Obj cpy_ws = SASS_MEMORY_COPY(ws); + Selector_List_Obj ext_sl = extendSelectorList(sl, recseen); + cpy_ws->selector(ext_sl); + cpy_head->append(cpy_ws); + } + } else { + cpy_head->append(hs); + } + } else { + cpy_head->append(hs); + } + } + // replace header + cur->head(cpy_head); + } + // process tail + cur = cur->tail(); + } + } + + // memory results in a map table - since extending is very expensive + memoizeList.insert(std::pair(pSelectorList, pNewSelectors)); + + return pNewSelectors.detach(); + + } + + + bool shouldExtendBlock(Block_Obj b) { + + // If a block is empty, there's no reason to extend it since any rules placed on this block + // won't have any output. The main benefit of this is for structures like: + // + // .a { + // .b { + // x: y; + // } + // } + // + // We end up visiting two rulesets (one with the selector .a and the other with the selector .a .b). + // In this case, we don't want to try to pull rules onto .a since they won't get output anyway since + // there are no child statements. However .a .b should have extensions applied. + + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + + if (Cast(stm)) { + // Do nothing. This doesn't count as a statement that causes extension since we'll + // iterate over this rule set in a future visit and try to extend it. + } + else { + return true; + } + } + + return false; + + } + + + // Extend a ruleset by extending the selectors and updating them on the ruleset. The block's rules don't need to change. + // Every Ruleset in the whole tree is calling this function. We decide if there + // was is @extend that matches our selector. If we find one, we will go further + // and call the extend magic for our selector. The subset_map contains all blocks + // where @extend was found. Pick the ones that match our selector! + void Extend::extendObjectWithSelectorAndBlock(Ruleset_Ptr pObject) { + + DEBUG_PRINTLN(EXTEND_OBJECT, "FOUND SELECTOR: " << Cast(pObject->selector())->to_string()) + + // Ruby sass seems to filter nodes that don't have any content well before we get here. + // I'm not sure the repercussions of doing so, so for now, let's just not extend things + // that won't be output later. Profiling shows this may us 0.2% or so. + if (!shouldExtendBlock(pObject->block())) { + DEBUG_PRINTLN(EXTEND_OBJECT, "RETURNING WITHOUT EXTEND ATTEMPT") + return; + } + + bool extendedSomething = false; + + CompoundSelectorSet seen; + Selector_List_Obj pNewSelectorList = extendSelectorList(pObject->selector(), false, extendedSomething, seen); + + if (extendedSomething && pNewSelectorList) { + DEBUG_PRINTLN(EXTEND_OBJECT, "EXTEND ORIGINAL SELECTORS: " << pObject->selector()->to_string()) + DEBUG_PRINTLN(EXTEND_OBJECT, "EXTEND SETTING NEW SELECTORS: " << pNewSelectorList->to_string()) + pNewSelectorList->remove_parent_selectors(); + pObject->selector(pNewSelectorList); + } else { + DEBUG_PRINTLN(EXTEND_OBJECT, "EXTEND DID NOT TRY TO EXTEND ANYTHING") + } + } + + Extend::Extend(Subset_Map& ssm) + : subset_map(ssm), eval(NULL) + { } + + void Extend::setEval(Eval& e) { + eval = &e; + } + + void Extend::operator()(Block_Ptr b) + { + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + stm->perform(this); + } + // do final check if everything was extended + // we set `extended` flag on extended selectors + if (b->is_root()) { + // debug_subset_map(subset_map); + for(auto const &it : subset_map.values()) { + Complex_Selector_Ptr sel = NULL; + Compound_Selector_Ptr ext = NULL; + if (it.first) sel = it.first->first(); + if (it.second) ext = it.second; + if (ext && (ext->extended() || ext->is_optional())) continue; + std::string str_sel(sel ? sel->to_string({ NESTED, 5 }) : "NULL"); + std::string str_ext(ext ? ext->to_string({ NESTED, 5 }) : "NULL"); + // debug_ast(sel, "sel: "); + // debug_ast(ext, "ext: "); + error("\"" + str_sel + "\" failed to @extend \"" + str_ext + "\".\n" + "The selector \"" + str_ext + "\" was not found.\n" + "Use \"@extend " + str_ext + " !optional\" if the" + " extend should be able to fail.", (ext ? ext->pstate() : NULL), eval->exp.traces); + } + } + + } + + void Extend::operator()(Ruleset_Ptr pRuleset) + { + extendObjectWithSelectorAndBlock( pRuleset ); + pRuleset->block()->perform(this); + } + + void Extend::operator()(Supports_Block_Ptr pFeatureBlock) + { + pFeatureBlock->block()->perform(this); + } + + void Extend::operator()(Media_Block_Ptr pMediaBlock) + { + pMediaBlock->block()->perform(this); + } + + void Extend::operator()(Directive_Ptr a) + { + // Selector_List_Ptr ls = Cast(a->selector()); + // selector_stack.push_back(ls); + if (a->block()) a->block()->perform(this); + // exp.selector_stack.pop_back(); + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/extend.hpp b/mybulma/node_modules/node-sass/src/libsass/src/extend.hpp new file mode 100644 index 0000000..03042f3 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/extend.hpp @@ -0,0 +1,86 @@ +#ifndef SASS_EXTEND_H +#define SASS_EXTEND_H + +#include +#include + +#include "ast.hpp" +#include "node.hpp" +#include "eval.hpp" +#include "operation.hpp" +#include "subset_map.hpp" +#include "ast_fwd_decl.hpp" + +namespace Sass { + + Node subweave(Node& one, Node& two); + + class Extend : public Operation_CRTP { + + Subset_Map& subset_map; + Eval* eval; + + void fallback_impl(AST_Node_Ptr n) { } + + private: + + std::unordered_map< + Selector_List_Obj, // key + Selector_List_Obj, // value + HashNodes, // hasher + CompareNodes // compare + > memoizeList; + + std::unordered_map< + Complex_Selector_Obj, // key + Node, // value + HashNodes, // hasher + CompareNodes // compare + > memoizeComplex; + + /* this turned out to be too much overhead + re-evaluate once we store an ast selector + std::unordered_map< + Compound_Selector_Obj, // key + Node, // value + HashNodes, // hasher + CompareNodes // compare + > memoizeCompound; + */ + + void extendObjectWithSelectorAndBlock(Ruleset_Ptr pObject); + Node extendComplexSelector(Complex_Selector_Ptr sel, CompoundSelectorSet& seen, bool isReplace, bool isOriginal); + Node extendCompoundSelector(Compound_Selector_Ptr sel, CompoundSelectorSet& seen, bool isReplace); + bool complexSelectorHasExtension(Complex_Selector_Ptr selector, CompoundSelectorSet& seen); + Node trim(Node& seqses, bool isReplace); + Node weave(Node& path); + + public: + void setEval(Eval& eval); + Selector_List_Ptr extendSelectorList(Selector_List_Obj pSelectorList, bool isReplace, bool& extendedSomething, CompoundSelectorSet& seen); + Selector_List_Ptr extendSelectorList(Selector_List_Obj pSelectorList, bool isReplace = false) { + bool extendedSomething = false; + CompoundSelectorSet seen; + return extendSelectorList(pSelectorList, isReplace, extendedSomething, seen); + } + Selector_List_Ptr extendSelectorList(Selector_List_Obj pSelectorList, CompoundSelectorSet& seen) { + bool isReplace = false; + bool extendedSomething = false; + return extendSelectorList(pSelectorList, isReplace, extendedSomething, seen); + } + Extend(Subset_Map&); + ~Extend() { } + + void operator()(Block_Ptr); + void operator()(Ruleset_Ptr); + void operator()(Supports_Block_Ptr); + void operator()(Media_Block_Ptr); + void operator()(Directive_Ptr); + + template + void fallback(U x) { return fallback_impl(x); } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/file.cpp b/mybulma/node_modules/node-sass/src/libsass/src/file.cpp new file mode 100644 index 0000000..32d4a7c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/file.cpp @@ -0,0 +1,485 @@ +#include "sass.hpp" +#ifdef _WIN32 +# ifdef __MINGW32__ +# ifndef off64_t +# define off64_t _off64_t /* Workaround for http://sourceforge.net/p/mingw/bugs/2024/ */ +# endif +# endif +# include +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#else +# include +#endif +#include +#include +#include +#include +#include +#include +#include "file.hpp" +#include "context.hpp" +#include "prelexer.hpp" +#include "utf8_string.hpp" +#include "sass_functions.hpp" +#include "sass2scss.h" + +#ifdef _WIN32 +# include + +# ifdef _MSC_VER +# include +inline static std::string wstring_to_string(const std::wstring& wstr) +{ + std::wstring_convert, wchar_t> wchar_converter; + return wchar_converter.to_bytes(wstr); +} +# else // mingw(/gcc) does not support C++11's codecvt yet. +inline static std::string wstring_to_string(const std::wstring &wstr) +{ + int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL); + std::string strTo(size_needed, 0); + WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL); + return strTo; +} +# endif +#endif + +namespace Sass { + namespace File { + + // return the current directory + // always with forward slashes + // always with trailing slash + std::string get_cwd() + { + const size_t wd_len = 4096; + #ifndef _WIN32 + char wd[wd_len]; + char* pwd = getcwd(wd, wd_len); + // we should check error for more detailed info (e.g. ENOENT) + // http://man7.org/linux/man-pages/man2/getcwd.2.html#ERRORS + if (pwd == NULL) throw Exception::OperationError("cwd gone missing"); + std::string cwd = pwd; + #else + wchar_t wd[wd_len]; + wchar_t* pwd = _wgetcwd(wd, wd_len); + if (pwd == NULL) throw Exception::OperationError("cwd gone missing"); + std::string cwd = wstring_to_string(pwd); + //convert backslashes to forward slashes + replace(cwd.begin(), cwd.end(), '\\', '/'); + #endif + if (cwd[cwd.length() - 1] != '/') cwd += '/'; + return cwd; + } + + // test if path exists and is a file + bool file_exists(const std::string& path) + { + #ifdef _WIN32 + wchar_t resolved[32768]; + // windows unicode filepaths are encoded in utf16 + std::string abspath(join_paths(get_cwd(), path)); + std::wstring wpath(UTF_8::convert_to_utf16("\\\\?\\" + abspath)); + std::replace(wpath.begin(), wpath.end(), '/', '\\'); + DWORD rv = GetFullPathNameW(wpath.c_str(), 32767, resolved, NULL); + if (rv > 32767) throw Exception::OperationError("Path is too long"); + if (rv == 0) throw Exception::OperationError("Path could not be resolved"); + DWORD dwAttrib = GetFileAttributesW(resolved); + return (dwAttrib != INVALID_FILE_ATTRIBUTES && + (!(dwAttrib & FILE_ATTRIBUTE_DIRECTORY))); + #else + struct stat st_buf; + return (stat (path.c_str(), &st_buf) == 0) && + (!S_ISDIR (st_buf.st_mode)); + #endif + } + + // return if given path is absolute + // works with *nix and windows paths + bool is_absolute_path(const std::string& path) + { + #ifdef _WIN32 + if (path.length() >= 2 && isalpha(path[0]) && path[1] == ':') return true; + #endif + size_t i = 0; + // check if we have a protocol + if (path[i] && Prelexer::is_alpha(path[i])) { + // skip over all alphanumeric characters + while (path[i] && Prelexer::is_alnum(path[i])) ++i; + i = i && path[i] == ':' ? i + 1 : 0; + } + return path[i] == '/'; + } + + // helper function to find the last directory seperator + inline size_t find_last_folder_separator(const std::string& path, size_t limit = std::string::npos) + { + size_t pos; + size_t pos_p = path.find_last_of('/', limit); + #ifdef _WIN32 + size_t pos_w = path.find_last_of('\\', limit); + #else + size_t pos_w = std::string::npos; + #endif + if (pos_p != std::string::npos && pos_w != std::string::npos) { + pos = std::max(pos_p, pos_w); + } + else if (pos_p != std::string::npos) { + pos = pos_p; + } + else { + pos = pos_w; + } + return pos; + } + + // return only the directory part of path + std::string dir_name(const std::string& path) + { + size_t pos = find_last_folder_separator(path); + if (pos == std::string::npos) return ""; + else return path.substr(0, pos+1); + } + + // return only the filename part of path + std::string base_name(const std::string& path) + { + size_t pos = find_last_folder_separator(path); + if (pos == std::string::npos) return path; + else return path.substr(pos+1); + } + + // do a logical clean up of the path + // no physical check on the filesystem + std::string make_canonical_path (std::string path) + { + + // declarations + size_t pos; + + #ifdef _WIN32 + //convert backslashes to forward slashes + replace(path.begin(), path.end(), '\\', '/'); + #endif + + pos = 0; // remove all self references inside the path string + while((pos = path.find("/./", pos)) != std::string::npos) path.erase(pos, 2); + + // remove all leading and trailing self references + while(path.length() > 1 && path.substr(0, 2) == "./") path.erase(0, 2); + while((pos = path.length()) > 1 && path.substr(pos - 2) == "/.") path.erase(pos - 2); + + + size_t proto = 0; + // check if we have a protocol + if (path[proto] && Prelexer::is_alpha(path[proto])) { + // skip over all alphanumeric characters + while (path[proto] && Prelexer::is_alnum(path[proto++])) {} + // then skip over the mandatory colon + if (proto && path[proto] == ':') ++ proto; + } + + // then skip over start slashes + while (path[proto++] == '/') {} + + pos = proto; // collapse multiple delimiters into a single one + while((pos = path.find("//", pos)) != std::string::npos) path.erase(pos, 1); + + return path; + + } + + // join two path segments cleanly together + // but only if right side is not absolute yet + std::string join_paths(std::string l, std::string r) + { + + #ifdef _WIN32 + // convert Windows backslashes to URL forward slashes + replace(l.begin(), l.end(), '\\', '/'); + replace(r.begin(), r.end(), '\\', '/'); + #endif + + if (l.empty()) return r; + if (r.empty()) return l; + + if (is_absolute_path(r)) return r; + if (l[l.length()-1] != '/') l += '/'; + + // this does a logical cleanup of the right hand path + // Note that this does collapse x/../y sections into y. + // This is by design. If /foo on your system is a symlink + // to /bar/baz, then /foo/../cd is actually /bar/cd, + // not /cd as a naive ../ removal would give you. + // will only work on leading double dot dirs on rhs + // therefore it is safe if lhs is already resolved cwd + while ((r.length() > 3) && ((r.substr(0, 3) == "../") || (r.substr(0, 3)) == "..\\")) { + size_t L = l.length(), pos = find_last_folder_separator(l, L - 2); + bool is_slash = pos + 2 == L && (l[pos+1] == '/' || l[pos+1] == '\\'); + bool is_self = pos + 3 == L && (l[pos+1] == '.'); + if (!is_self && !is_slash) r = r.substr(3); + else if (pos == std::string::npos) break; + l = l.substr(0, pos == std::string::npos ? pos : pos + 1); + } + + return l + r; + } + + std::string path_for_console(const std::string& rel_path, const std::string& abs_path, const std::string& orig_path) + { + // magic algorith goes here!! + + // if the file is outside this directory show the absolute path + if (rel_path.substr(0, 3) == "../") { + return orig_path; + } + // this seems to work most of the time + return abs_path == orig_path ? abs_path : rel_path; + } + + // create an absolute path by resolving relative paths with cwd + std::string rel2abs(const std::string& path, const std::string& base, const std::string& cwd) + { + return make_canonical_path(join_paths(join_paths(cwd + "/", base + "/"), path)); + } + + // create a path that is relative to the given base directory + // path and base will first be resolved against cwd to make them absolute + std::string abs2rel(const std::string& path, const std::string& base, const std::string& cwd) + { + + std::string abs_path = rel2abs(path, cwd); + std::string abs_base = rel2abs(base, cwd); + + size_t proto = 0; + // check if we have a protocol + if (path[proto] && Prelexer::is_alpha(path[proto])) { + // skip over all alphanumeric characters + while (path[proto] && Prelexer::is_alnum(path[proto++])) {} + // then skip over the mandatory colon + if (proto && path[proto] == ':') ++ proto; + } + + // distinguish between windows absolute paths and valid protocols + // we assume that protocols must at least have two chars to be valid + if (proto && path[proto++] == '/' && proto > 3) return path; + + #ifdef _WIN32 + // absolute link must have a drive letter, and we know that we + // can only create relative links if both are on the same drive + if (abs_base[0] != abs_path[0]) return abs_path; + #endif + + std::string stripped_uri = ""; + std::string stripped_base = ""; + + size_t index = 0; + size_t minSize = std::min(abs_path.size(), abs_base.size()); + for (size_t i = 0; i < minSize; ++i) { + #ifdef FS_CASE_SENSITIVE + if (abs_path[i] != abs_base[i]) break; + #else + // compare the charactes in a case insensitive manner + // windows fs is only case insensitive in ascii ranges + if (tolower(abs_path[i]) != tolower(abs_base[i])) break; + #endif + if (abs_path[i] == '/') index = i + 1; + } + for (size_t i = index; i < abs_path.size(); ++i) { + stripped_uri += abs_path[i]; + } + for (size_t i = index; i < abs_base.size(); ++i) { + stripped_base += abs_base[i]; + } + + size_t left = 0; + size_t directories = 0; + for (size_t right = 0; right < stripped_base.size(); ++right) { + if (stripped_base[right] == '/') { + if (stripped_base.substr(left, 2) != "..") { + ++directories; + } + else if (directories > 1) { + --directories; + } + else { + directories = 0; + } + left = right + 1; + } + } + + std::string result = ""; + for (size_t i = 0; i < directories; ++i) { + result += "../"; + } + result += stripped_uri; + + return result; + } + + // Resolution order for ambiguous imports: + // (1) filename as given + // (2) underscore + given + // (3) underscore + given + extension + // (4) given + extension + std::vector resolve_includes(const std::string& root, const std::string& file, const std::vector& exts) + { + std::string filename = join_paths(root, file); + // split the filename + std::string base(dir_name(file)); + std::string name(base_name(file)); + std::vector includes; + // create full path (maybe relative) + std::string rel_path(join_paths(base, name)); + std::string abs_path(join_paths(root, rel_path)); + if (file_exists(abs_path)) includes.push_back({{ rel_path, root }, abs_path }); + // next test variation with underscore + rel_path = join_paths(base, "_" + name); + abs_path = join_paths(root, rel_path); + if (file_exists(abs_path)) includes.push_back({{ rel_path, root }, abs_path }); + // next test exts plus underscore + for(auto ext : exts) { + rel_path = join_paths(base, "_" + name + ext); + abs_path = join_paths(root, rel_path); + if (file_exists(abs_path)) includes.push_back({{ rel_path, root }, abs_path }); + } + // next test plain name with exts + for(auto ext : exts) { + rel_path = join_paths(base, name + ext); + abs_path = join_paths(root, rel_path); + if (file_exists(abs_path)) includes.push_back({{ rel_path, root }, abs_path }); + } + // nothing found + return includes; + } + + std::vector find_files(const std::string& file, const std::vector paths) + { + std::vector includes; + for (std::string path : paths) { + std::string abs_path(join_paths(path, file)); + if (file_exists(abs_path)) includes.push_back(abs_path); + } + return includes; + } + + std::vector find_files(const std::string& file, struct Sass_Compiler* compiler) + { + // get the last import entry to get current base directory + // struct Sass_Options* options = sass_compiler_get_options(compiler); + Sass_Import_Entry import = sass_compiler_get_last_import(compiler); + const std::vector& incs = compiler->cpp_ctx->include_paths; + // create the vector with paths to lookup + std::vector paths(1 + incs.size()); + paths.push_back(dir_name(import->abs_path)); + paths.insert(paths.end(), incs.begin(), incs.end()); + // dispatch to find files in paths + return find_files(file, paths); + } + + // helper function to search one file in all include paths + // this is normally not used internally by libsass (C-API sugar) + std::string find_file(const std::string& file, const std::vector paths) + { + if (file.empty()) return file; + auto res = find_files(file, paths); + return res.empty() ? "" : res.front(); + } + + // helper function to resolve a filename + std::string find_include(const std::string& file, const std::vector paths) + { + // search in every include path for a match + for (size_t i = 0, S = paths.size(); i < S; ++i) + { + std::vector resolved(resolve_includes(paths[i], file)); + if (resolved.size()) return resolved[0].abs_path; + } + // nothing found + return std::string(""); + } + + // try to load the given filename + // returned memory must be freed + // will auto convert .sass files + char* read_file(const std::string& path) + { + #ifdef _WIN32 + BYTE* pBuffer; + DWORD dwBytes; + wchar_t resolved[32768]; + // windows unicode filepaths are encoded in utf16 + std::string abspath(join_paths(get_cwd(), path)); + std::wstring wpath(UTF_8::convert_to_utf16("\\\\?\\" + abspath)); + std::replace(wpath.begin(), wpath.end(), '/', '\\'); + DWORD rv = GetFullPathNameW(wpath.c_str(), 32767, resolved, NULL); + if (rv > 32767) throw Exception::OperationError("Path is too long"); + if (rv == 0) throw Exception::OperationError("Path could not be resolved"); + HANDLE hFile = CreateFileW(resolved, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); + if (hFile == INVALID_HANDLE_VALUE) return 0; + DWORD dwFileLength = GetFileSize(hFile, NULL); + if (dwFileLength == INVALID_FILE_SIZE) return 0; + // allocate an extra byte for the null char + // and another one for edge-cases in lexer + pBuffer = (BYTE*)malloc((dwFileLength+2)*sizeof(BYTE)); + ReadFile(hFile, pBuffer, dwFileLength, &dwBytes, NULL); + pBuffer[dwFileLength+0] = '\0'; + pBuffer[dwFileLength+1] = '\0'; + CloseHandle(hFile); + // just convert from unsigned char* + char* contents = (char*) pBuffer; + #else + struct stat st; + if (stat(path.c_str(), &st) == -1 || S_ISDIR(st.st_mode)) return 0; + std::ifstream file(path.c_str(), std::ios::in | std::ios::binary | std::ios::ate); + char* contents = 0; + if (file.is_open()) { + size_t size = file.tellg(); + // allocate an extra byte for the null char + // and another one for edge-cases in lexer + contents = (char*) malloc((size+2)*sizeof(char)); + file.seekg(0, std::ios::beg); + file.read(contents, size); + contents[size+0] = '\0'; + contents[size+1] = '\0'; + file.close(); + } + #endif + std::string extension; + if (path.length() > 5) { + extension = path.substr(path.length() - 5, 5); + } + for(size_t i=0; i split_path_list(const char* str) + { + std::vector paths; + if (str == NULL) return paths; + // find delimiter via prelexer (return zero at end) + const char* end = Prelexer::find_first(str); + // search until null delimiter + while (end) { + // add path from current position to delimiter + paths.push_back(std::string(str, end - str)); + str = end + 1; // skip delimiter + end = Prelexer::find_first(str); + } + // add path from current position to end + paths.push_back(std::string(str)); + // return back + return paths; + } + + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/file.hpp b/mybulma/node_modules/node-sass/src/libsass/src/file.hpp new file mode 100644 index 0000000..279b9e9 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/file.hpp @@ -0,0 +1,133 @@ +#ifndef SASS_FILE_H +#define SASS_FILE_H + +#include +#include + +#include "sass/context.h" +#include "ast_fwd_decl.hpp" + +namespace Sass { + + namespace File { + + // return the current directory + // always with forward slashes + std::string get_cwd(); + + // test if path exists and is a file + bool file_exists(const std::string& file); + + // return if given path is absolute + // works with *nix and windows paths + bool is_absolute_path(const std::string& path); + + // return only the directory part of path + std::string dir_name(const std::string& path); + + // return only the filename part of path + std::string base_name(const std::string&); + + // do a locigal clean up of the path + // no physical check on the filesystem + std::string make_canonical_path (std::string path); + + // join two path segments cleanly together + // but only if right side is not absolute yet + std::string join_paths(std::string root, std::string name); + + // if the relative path is outside of the cwd we want want to + // show the absolute path in console messages + std::string path_for_console(const std::string& rel_path, const std::string& abs_path, const std::string& orig_path); + + // create an absolute path by resolving relative paths with cwd + std::string rel2abs(const std::string& path, const std::string& base = ".", const std::string& cwd = get_cwd()); + + // create a path that is relative to the given base directory + // path and base will first be resolved against cwd to make them absolute + std::string abs2rel(const std::string& path, const std::string& base = ".", const std::string& cwd = get_cwd()); + + // helper function to resolve a filename + // searching without variations in all paths + std::string find_file(const std::string& file, struct Sass_Compiler* options); + std::string find_file(const std::string& file, const std::vector paths); + + // helper function to resolve a include filename + // this has the original resolve logic for sass include + std::string find_include(const std::string& file, const std::vector paths); + + // split a path string delimited by semicolons or colons (OS dependent) + std::vector split_path_list(const char* paths); + + // try to load the given filename + // returned memory must be freed + // will auto convert .sass files + char* read_file(const std::string& file); + + } + + // requested import + class Importer { + public: + // requested import path + std::string imp_path; + // parent context path + std::string ctx_path; + // base derived from context path + // this really just acts as a cache + std::string base_path; + public: + Importer(std::string imp_path, std::string ctx_path) + : imp_path(File::make_canonical_path(imp_path)), + ctx_path(File::make_canonical_path(ctx_path)), + base_path(File::dir_name(ctx_path)) + { } + }; + + // a resolved include (final import) + class Include : public Importer { + public: + // resolved absolute path + std::string abs_path; + public: + Include(const Importer& imp, std::string abs_path) + : Importer(imp), abs_path(abs_path) + { } + }; + + // a loaded resource + class Resource { + public: + // the file contents + char* contents; + // conected sourcemap + char* srcmap; + public: + Resource(char* contents, char* srcmap) + : contents(contents), srcmap(srcmap) + { } + }; + + // parsed stylesheet from loaded resource + class StyleSheet : public Resource { + public: + // parsed root block + Block_Obj root; + public: + StyleSheet(const Resource& res, Block_Obj root) + : Resource(res), root(root) + { } + }; + + namespace File { + + static std::vector defaultExtensions = { ".scss", ".sass", ".css" }; + + std::vector resolve_includes(const std::string& root, const std::string& file, + const std::vector& exts = defaultExtensions); + + } + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/functions.cpp b/mybulma/node_modules/node-sass/src/libsass/src/functions.cpp new file mode 100644 index 0000000..c9999fc --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/functions.cpp @@ -0,0 +1,2234 @@ +#include "sass.hpp" +#include "functions.hpp" +#include "ast.hpp" +#include "context.hpp" +#include "backtrace.hpp" +#include "parser.hpp" +#include "constants.hpp" +#include "inspect.hpp" +#include "extend.hpp" +#include "eval.hpp" +#include "util.hpp" +#include "expand.hpp" +#include "operators.hpp" +#include "utf8_string.hpp" +#include "sass/base.h" +#include "utf8.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __MINGW32__ +#include "windows.h" +#include "wincrypt.h" +#endif + +#define ARG(argname, argtype) get_arg(argname, env, sig, pstate, traces) +#define ARGM(argname, argtype, ctx) get_arg_m(argname, env, sig, pstate, traces, ctx) + +// return a number object (copied since we want to have reduced units) +#define ARGN(argname) get_arg_n(argname, env, sig, pstate, traces) // Number copy + +// special function for weird hsla percent (10px == 10% == 10 != 0.1) +#define ARGVAL(argname) get_arg_val(argname, env, sig, pstate, traces) // double + +// macros for common ranges (u mean unsigned or upper, r for full range) +#define DARG_U_FACT(argname) get_arg_r(argname, env, sig, pstate, traces, - 0.0, 1.0) // double +#define DARG_R_FACT(argname) get_arg_r(argname, env, sig, pstate, traces, - 1.0, 1.0) // double +#define DARG_U_BYTE(argname) get_arg_r(argname, env, sig, pstate, traces, - 0.0, 255.0) // double +#define DARG_R_BYTE(argname) get_arg_r(argname, env, sig, pstate, traces, - 255.0, 255.0) // double +#define DARG_U_PRCT(argname) get_arg_r(argname, env, sig, pstate, traces, - 0.0, 100.0) // double +#define DARG_R_PRCT(argname) get_arg_r(argname, env, sig, pstate, traces, - 100.0, 100.0) // double + +// macros for color related inputs (rbg and alpha/opacity values) +#define COLOR_NUM(argname) color_num(argname, env, sig, pstate, traces) // double +#define ALPHA_NUM(argname) alpha_num(argname, env, sig, pstate, traces) // double + +namespace Sass { + using std::stringstream; + using std::endl; + + Definition_Ptr make_native_function(Signature sig, Native_Function func, Context& ctx) + { + Parser sig_parser = Parser::from_c_str(sig, ctx, ctx.traces, ParserState("[built-in function]")); + sig_parser.lex(); + std::string name(Util::normalize_underscores(sig_parser.lexed)); + Parameters_Obj params = sig_parser.parse_parameters(); + return SASS_MEMORY_NEW(Definition, + ParserState("[built-in function]"), + sig, + name, + params, + func, + false); + } + + Definition_Ptr make_c_function(Sass_Function_Entry c_func, Context& ctx) + { + using namespace Prelexer; + + const char* sig = sass_function_get_signature(c_func); + Parser sig_parser = Parser::from_c_str(sig, ctx, ctx.traces, ParserState("[c function]")); + // allow to overload generic callback plus @warn, @error and @debug with custom functions + sig_parser.lex < alternatives < identifier, exactly <'*'>, + exactly < Constants::warn_kwd >, + exactly < Constants::error_kwd >, + exactly < Constants::debug_kwd > + > >(); + std::string name(Util::normalize_underscores(sig_parser.lexed)); + Parameters_Obj params = sig_parser.parse_parameters(); + return SASS_MEMORY_NEW(Definition, + ParserState("[c function]"), + sig, + name, + params, + c_func, + false, true); + } + + std::string function_name(Signature sig) + { + std::string str(sig); + return str.substr(0, str.find('(')); + } + + namespace Functions { + + inline void handle_utf8_error (const ParserState& pstate, Backtraces traces) + { + try { + throw; + } + catch (utf8::invalid_code_point) { + std::string msg("utf8::invalid_code_point"); + error(msg, pstate, traces); + } + catch (utf8::not_enough_room) { + std::string msg("utf8::not_enough_room"); + error(msg, pstate, traces); + } + catch (utf8::invalid_utf8) { + std::string msg("utf8::invalid_utf8"); + error(msg, pstate, traces); + } + catch (...) { throw; } + } + + template + T* get_arg(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces) + { + // Minimal error handling -- the expectation is that built-ins will be written correctly! + T* val = Cast(env[argname]); + if (!val) { + std::string msg("argument `"); + msg += argname; + msg += "` of `"; + msg += sig; + msg += "` must be a "; + msg += T::type_name(); + error(msg, pstate, traces); + } + return val; + } + + Map_Ptr get_arg_m(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx) + { + // Minimal error handling -- the expectation is that built-ins will be written correctly! + Map_Ptr val = Cast(env[argname]); + if (val) return val; + + List_Ptr lval = Cast(env[argname]); + if (lval && lval->length() == 0) return SASS_MEMORY_NEW(Map, pstate, 0); + + // fallback on get_arg for error handling + val = get_arg(argname, env, sig, pstate, traces); + return val; + } + + double get_arg_r(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, double lo, double hi) + { + // Minimal error handling -- the expectation is that built-ins will be written correctly! + Number_Ptr val = get_arg(argname, env, sig, pstate, traces); + Number tmpnr(val); + tmpnr.reduce(); + double v = tmpnr.value(); + if (!(lo <= v && v <= hi)) { + std::stringstream msg; + msg << "argument `" << argname << "` of `" << sig << "` must be between "; + msg << lo << " and " << hi; + error(msg.str(), pstate, traces); + } + return v; + } + + Number_Ptr get_arg_n(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces) + { + // Minimal error handling -- the expectation is that built-ins will be written correctly! + Number_Ptr val = get_arg(argname, env, sig, pstate, traces); + val = SASS_MEMORY_COPY(val); + val->reduce(); + return val; + } + + double get_arg_v(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces) + { + // Minimal error handling -- the expectation is that built-ins will be written correctly! + Number_Ptr val = get_arg(argname, env, sig, pstate, traces); + Number tmpnr(val); + tmpnr.reduce(); + /* + if (tmpnr.unit() == "%") { + tmpnr.value(tmpnr.value() / 100); + tmpnr.numerators.clear(); + } else { + if (!tmpnr.is_unitless()) error("argument " + argname + " of `" + std::string(sig) + "` must be unitless", pstate); + } + */ + return tmpnr.value(); + } + + double get_arg_val(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces) + { + // Minimal error handling -- the expectation is that built-ins will be written correctly! + Number_Ptr val = get_arg(argname, env, sig, pstate, traces); + Number tmpnr(val); + tmpnr.reduce(); + return tmpnr.value(); + } + + double color_num(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces) + { + Number_Ptr val = get_arg(argname, env, sig, pstate, traces); + Number tmpnr(val); + tmpnr.reduce(); + if (tmpnr.unit() == "%") { + return std::min(std::max(tmpnr.value() * 255 / 100.0, 0.0), 255.0); + } else { + return std::min(std::max(tmpnr.value(), 0.0), 255.0); + } + } + + + inline double alpha_num(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces) { + Number_Ptr val = get_arg(argname, env, sig, pstate, traces); + Number tmpnr(val); + tmpnr.reduce(); + if (tmpnr.unit() == "%") { + return std::min(std::max(tmpnr.value(), 0.0), 100.0); + } else { + return std::min(std::max(tmpnr.value(), 0.0), 1.0); + } + } + + #define ARGSEL(argname, seltype, contextualize) get_arg_sel(argname, env, sig, pstate, traces, ctx) + + template + T get_arg_sel(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx); + + template <> + Selector_List_Obj get_arg_sel(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx) { + Expression_Obj exp = ARG(argname, Expression); + if (exp->concrete_type() == Expression::NULL_VAL) { + std::stringstream msg; + msg << argname << ": null is not a valid selector: it must be a string,\n"; + msg << "a list of strings, or a list of lists of strings for `" << function_name(sig) << "'"; + error(msg.str(), pstate, traces); + } + if (String_Constant_Ptr str = Cast(exp)) { + str->quote_mark(0); + } + std::string exp_src = exp->to_string(ctx.c_options); + return Parser::parse_selector(exp_src.c_str(), ctx, traces); + } + + template <> + Compound_Selector_Obj get_arg_sel(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx) { + Expression_Obj exp = ARG(argname, Expression); + if (exp->concrete_type() == Expression::NULL_VAL) { + std::stringstream msg; + msg << argname << ": null is not a string for `" << function_name(sig) << "'"; + error(msg.str(), pstate, traces); + } + if (String_Constant_Ptr str = Cast(exp)) { + str->quote_mark(0); + } + std::string exp_src = exp->to_string(ctx.c_options); + Selector_List_Obj sel_list = Parser::parse_selector(exp_src.c_str(), ctx, traces); + if (sel_list->length() == 0) return NULL; + Complex_Selector_Obj first = sel_list->first(); + if (!first->tail()) return first->head(); + return first->tail()->head(); + } + + #ifdef __MINGW32__ + uint64_t GetSeed() + { + HCRYPTPROV hp = 0; + BYTE rb[8]; + CryptAcquireContext(&hp, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); + CryptGenRandom(hp, sizeof(rb), rb); + CryptReleaseContext(hp, 0); + + uint64_t seed; + memcpy(&seed, &rb[0], sizeof(seed)); + + return seed; + } + #else + uint64_t GetSeed() + { + std::random_device rd; + return rd(); + } + #endif + + // note: the performance of many implementations of + // random_device degrades sharply once the entropy pool + // is exhausted. For practical use, random_device is + // generally only used to seed a PRNG such as mt19937. + static std::mt19937 rand(static_cast(GetSeed())); + + // features + static std::set features { + "global-variable-shadowing", + "extend-selector-pseudoclass", + "at-error", + "units-level-3", + "custom-property" + }; + + //////////////// + // RGB FUNCTIONS + //////////////// + + inline bool special_number(String_Constant_Ptr s) { + if (s) { + std::string calc("calc("); + std::string var("var("); + std::string ss(s->value()); + return std::equal(calc.begin(), calc.end(), ss.begin()) || + std::equal(var.begin(), var.end(), ss.begin()); + } + return false; + } + + Signature rgb_sig = "rgb($red, $green, $blue)"; + BUILT_IN(rgb) + { + if ( + special_number(Cast(env["$red"])) || + special_number(Cast(env["$green"])) || + special_number(Cast(env["$blue"])) + ) { + return SASS_MEMORY_NEW(String_Constant, pstate, "rgb(" + + env["$red"]->to_string() + + ", " + + env["$green"]->to_string() + + ", " + + env["$blue"]->to_string() + + ")" + ); + } + + return SASS_MEMORY_NEW(Color, + pstate, + COLOR_NUM("$red"), + COLOR_NUM("$green"), + COLOR_NUM("$blue")); + } + + Signature rgba_4_sig = "rgba($red, $green, $blue, $alpha)"; + BUILT_IN(rgba_4) + { + if ( + special_number(Cast(env["$red"])) || + special_number(Cast(env["$green"])) || + special_number(Cast(env["$blue"])) || + special_number(Cast(env["$alpha"])) + ) { + return SASS_MEMORY_NEW(String_Constant, pstate, "rgba(" + + env["$red"]->to_string() + + ", " + + env["$green"]->to_string() + + ", " + + env["$blue"]->to_string() + + ", " + + env["$alpha"]->to_string() + + ")" + ); + } + + return SASS_MEMORY_NEW(Color, + pstate, + COLOR_NUM("$red"), + COLOR_NUM("$green"), + COLOR_NUM("$blue"), + ALPHA_NUM("$alpha")); + } + + Signature rgba_2_sig = "rgba($color, $alpha)"; + BUILT_IN(rgba_2) + { + if ( + special_number(Cast(env["$color"])) + ) { + return SASS_MEMORY_NEW(String_Constant, pstate, "rgba(" + + env["$color"]->to_string() + + ", " + + env["$alpha"]->to_string() + + ")" + ); + } + + Color_Ptr c_arg = ARG("$color", Color); + + if ( + special_number(Cast(env["$alpha"])) + ) { + std::stringstream strm; + strm << "rgba(" + << (int)c_arg->r() << ", " + << (int)c_arg->g() << ", " + << (int)c_arg->b() << ", " + << env["$alpha"]->to_string() + << ")"; + return SASS_MEMORY_NEW(String_Constant, pstate, strm.str()); + } + + Color_Ptr new_c = SASS_MEMORY_COPY(c_arg); + new_c->a(ALPHA_NUM("$alpha")); + new_c->disp(""); + return new_c; + } + + Signature red_sig = "red($color)"; + BUILT_IN(red) + { return SASS_MEMORY_NEW(Number, pstate, ARG("$color", Color)->r()); } + + Signature green_sig = "green($color)"; + BUILT_IN(green) + { return SASS_MEMORY_NEW(Number, pstate, ARG("$color", Color)->g()); } + + Signature blue_sig = "blue($color)"; + BUILT_IN(blue) + { return SASS_MEMORY_NEW(Number, pstate, ARG("$color", Color)->b()); } + + Color* colormix(Context& ctx, ParserState& pstate, Color* color1, Color* color2, double weight) { + double p = weight/100; + double w = 2*p - 1; + double a = color1->a() - color2->a(); + + double w1 = (((w * a == -1) ? w : (w + a)/(1 + w*a)) + 1)/2.0; + double w2 = 1 - w1; + + return SASS_MEMORY_NEW(Color, + pstate, + Sass::round(w1*color1->r() + w2*color2->r(), ctx.c_options.precision), + Sass::round(w1*color1->g() + w2*color2->g(), ctx.c_options.precision), + Sass::round(w1*color1->b() + w2*color2->b(), ctx.c_options.precision), + color1->a()*p + color2->a()*(1-p)); + } + + Signature mix_sig = "mix($color-1, $color-2, $weight: 50%)"; + BUILT_IN(mix) + { + Color_Obj color1 = ARG("$color-1", Color); + Color_Obj color2 = ARG("$color-2", Color); + double weight = DARG_U_PRCT("$weight"); + return colormix(ctx, pstate, color1, color2, weight); + + } + + //////////////// + // HSL FUNCTIONS + //////////////// + + // RGB to HSL helper function + struct HSL { double h; double s; double l; }; + HSL rgb_to_hsl(double r, double g, double b) + { + + // Algorithm from http://en.wikipedia.org/wiki/wHSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + r /= 255.0; g /= 255.0; b /= 255.0; + + double max = std::max(r, std::max(g, b)); + double min = std::min(r, std::min(g, b)); + double delta = max - min; + + double h = 0; + double s; + double l = (max + min) / 2.0; + + if (NEAR_EQUAL(max, min)) { + h = s = 0; // achromatic + } + else { + if (l < 0.5) s = delta / (max + min); + else s = delta / (2.0 - max - min); + + if (r == max) h = (g - b) / delta + (g < b ? 6 : 0); + else if (g == max) h = (b - r) / delta + 2; + else if (b == max) h = (r - g) / delta + 4; + } + + HSL hsl_struct; + hsl_struct.h = h / 6 * 360; + hsl_struct.s = s * 100; + hsl_struct.l = l * 100; + + return hsl_struct; + } + + // hue to RGB helper function + double h_to_rgb(double m1, double m2, double h) { + while (h < 0) h += 1; + while (h > 1) h -= 1; + if (h*6.0 < 1) return m1 + (m2 - m1)*h*6; + if (h*2.0 < 1) return m2; + if (h*3.0 < 2) return m1 + (m2 - m1) * (2.0/3.0 - h)*6; + return m1; + } + + Color_Ptr hsla_impl(double h, double s, double l, double a, Context& ctx, ParserState pstate) + { + h /= 360.0; + s /= 100.0; + l /= 100.0; + + if (l < 0) l = 0; + if (s < 0) s = 0; + if (l > 1) l = 1; + if (s > 1) s = 1; + while (h < 0) h += 1; + while (h > 1) h -= 1; + + // if saturation is exacly zero, we loose + // information for hue, since it will evaluate + // to zero if converted back from rgb. Setting + // saturation to a very tiny number solves this. + if (s == 0) s = 1e-10; + + // Algorithm from the CSS3 spec: http://www.w3.org/TR/css3-color/#hsl-color. + double m2; + if (l <= 0.5) m2 = l*(s+1.0); + else m2 = (l+s)-(l*s); + double m1 = (l*2.0)-m2; + // round the results -- consider moving this into the Color constructor + double r = (h_to_rgb(m1, m2, h + 1.0/3.0) * 255.0); + double g = (h_to_rgb(m1, m2, h) * 255.0); + double b = (h_to_rgb(m1, m2, h - 1.0/3.0) * 255.0); + + return SASS_MEMORY_NEW(Color, pstate, r, g, b, a); + } + + Signature hsl_sig = "hsl($hue, $saturation, $lightness)"; + BUILT_IN(hsl) + { + if ( + special_number(Cast(env["$hue"])) || + special_number(Cast(env["$saturation"])) || + special_number(Cast(env["$lightness"])) + ) { + return SASS_MEMORY_NEW(String_Constant, pstate, "hsl(" + + env["$hue"]->to_string() + + ", " + + env["$saturation"]->to_string() + + ", " + + env["$lightness"]->to_string() + + ")" + ); + } + + return hsla_impl(ARGVAL("$hue"), + ARGVAL("$saturation"), + ARGVAL("$lightness"), + 1.0, + ctx, + pstate); + } + + Signature hsla_sig = "hsla($hue, $saturation, $lightness, $alpha)"; + BUILT_IN(hsla) + { + if ( + special_number(Cast(env["$hue"])) || + special_number(Cast(env["$saturation"])) || + special_number(Cast(env["$lightness"])) || + special_number(Cast(env["$alpha"])) + ) { + return SASS_MEMORY_NEW(String_Constant, pstate, "hsla(" + + env["$hue"]->to_string() + + ", " + + env["$saturation"]->to_string() + + ", " + + env["$lightness"]->to_string() + + ", " + + env["$alpha"]->to_string() + + ")" + ); + } + + return hsla_impl(ARGVAL("$hue"), + ARGVAL("$saturation"), + ARGVAL("$lightness"), + ARGVAL("$alpha"), + ctx, + pstate); + } + + Signature hue_sig = "hue($color)"; + BUILT_IN(hue) + { + Color_Ptr rgb_color = ARG("$color", Color); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + return SASS_MEMORY_NEW(Number, pstate, hsl_color.h, "deg"); + } + + Signature saturation_sig = "saturation($color)"; + BUILT_IN(saturation) + { + Color_Ptr rgb_color = ARG("$color", Color); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + return SASS_MEMORY_NEW(Number, pstate, hsl_color.s, "%"); + } + + Signature lightness_sig = "lightness($color)"; + BUILT_IN(lightness) + { + Color_Ptr rgb_color = ARG("$color", Color); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + return SASS_MEMORY_NEW(Number, pstate, hsl_color.l, "%"); + } + + Signature adjust_hue_sig = "adjust-hue($color, $degrees)"; + BUILT_IN(adjust_hue) + { + Color_Ptr rgb_color = ARG("$color", Color); + double degrees = ARGVAL("$degrees"); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + return hsla_impl(hsl_color.h + degrees, + hsl_color.s, + hsl_color.l, + rgb_color->a(), + ctx, + pstate); + } + + Signature lighten_sig = "lighten($color, $amount)"; + BUILT_IN(lighten) + { + Color_Ptr rgb_color = ARG("$color", Color); + double amount = DARG_U_PRCT("$amount"); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + //Check lightness is not negative before lighten it + double hslcolorL = hsl_color.l; + if (hslcolorL < 0) { + hslcolorL = 0; + } + + return hsla_impl(hsl_color.h, + hsl_color.s, + hslcolorL + amount, + rgb_color->a(), + ctx, + pstate); + } + + Signature darken_sig = "darken($color, $amount)"; + BUILT_IN(darken) + { + Color_Ptr rgb_color = ARG("$color", Color); + double amount = DARG_U_PRCT("$amount"); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + + //Check lightness if not over 100, before darken it + double hslcolorL = hsl_color.l; + if (hslcolorL > 100) { + hslcolorL = 100; + } + + return hsla_impl(hsl_color.h, + hsl_color.s, + hslcolorL - amount, + rgb_color->a(), + ctx, + pstate); + } + + Signature saturate_sig = "saturate($color, $amount: false)"; + BUILT_IN(saturate) + { + // CSS3 filter function overload: pass literal through directly + if (!Cast(env["$amount"])) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "saturate(" + env["$color"]->to_string(ctx.c_options) + ")"); + } + + double amount = DARG_U_PRCT("$amount"); + Color_Ptr rgb_color = ARG("$color", Color); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + + double hslcolorS = hsl_color.s + amount; + + // Saturation cannot be below 0 or above 100 + if (hslcolorS < 0) { + hslcolorS = 0; + } + if (hslcolorS > 100) { + hslcolorS = 100; + } + + return hsla_impl(hsl_color.h, + hslcolorS, + hsl_color.l, + rgb_color->a(), + ctx, + pstate); + } + + Signature desaturate_sig = "desaturate($color, $amount)"; + BUILT_IN(desaturate) + { + Color_Ptr rgb_color = ARG("$color", Color); + double amount = DARG_U_PRCT("$amount"); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + + double hslcolorS = hsl_color.s - amount; + + // Saturation cannot be below 0 or above 100 + if (hslcolorS <= 0) { + hslcolorS = 0; + } + if (hslcolorS > 100) { + hslcolorS = 100; + } + + return hsla_impl(hsl_color.h, + hslcolorS, + hsl_color.l, + rgb_color->a(), + ctx, + pstate); + } + + Signature grayscale_sig = "grayscale($color)"; + BUILT_IN(grayscale) + { + // CSS3 filter function overload: pass literal through directly + Number_Ptr amount = Cast(env["$color"]); + if (amount) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "grayscale(" + amount->to_string(ctx.c_options) + ")"); + } + + Color_Ptr rgb_color = ARG("$color", Color); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + return hsla_impl(hsl_color.h, + 0.0, + hsl_color.l, + rgb_color->a(), + ctx, + pstate); + } + + Signature complement_sig = "complement($color)"; + BUILT_IN(complement) + { + Color_Ptr rgb_color = ARG("$color", Color); + HSL hsl_color = rgb_to_hsl(rgb_color->r(), + rgb_color->g(), + rgb_color->b()); + return hsla_impl(hsl_color.h - 180.0, + hsl_color.s, + hsl_color.l, + rgb_color->a(), + ctx, + pstate); + } + + Signature invert_sig = "invert($color, $weight: 100%)"; + BUILT_IN(invert) + { + // CSS3 filter function overload: pass literal through directly + Number_Ptr amount = Cast(env["$color"]); + if (amount) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "invert(" + amount->to_string(ctx.c_options) + ")"); + } + + double weight = DARG_U_PRCT("$weight"); + Color_Ptr rgb_color = ARG("$color", Color); + Color_Obj inv = SASS_MEMORY_NEW(Color, + pstate, + 255 - rgb_color->r(), + 255 - rgb_color->g(), + 255 - rgb_color->b(), + rgb_color->a()); + return colormix(ctx, pstate, inv, rgb_color, weight); + } + + //////////////////// + // OPACITY FUNCTIONS + //////////////////// + Signature alpha_sig = "alpha($color)"; + Signature opacity_sig = "opacity($color)"; + BUILT_IN(alpha) + { + String_Constant_Ptr ie_kwd = Cast(env["$color"]); + if (ie_kwd) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "alpha(" + ie_kwd->value() + ")"); + } + + // CSS3 filter function overload: pass literal through directly + Number_Ptr amount = Cast(env["$color"]); + if (amount) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "opacity(" + amount->to_string(ctx.c_options) + ")"); + } + + return SASS_MEMORY_NEW(Number, pstate, ARG("$color", Color)->a()); + } + + Signature opacify_sig = "opacify($color, $amount)"; + Signature fade_in_sig = "fade-in($color, $amount)"; + BUILT_IN(opacify) + { + Color_Ptr color = ARG("$color", Color); + double amount = DARG_U_FACT("$amount"); + double alpha = std::min(color->a() + amount, 1.0); + return SASS_MEMORY_NEW(Color, + pstate, + color->r(), + color->g(), + color->b(), + alpha); + } + + Signature transparentize_sig = "transparentize($color, $amount)"; + Signature fade_out_sig = "fade-out($color, $amount)"; + BUILT_IN(transparentize) + { + Color_Ptr color = ARG("$color", Color); + double amount = DARG_U_FACT("$amount"); + double alpha = std::max(color->a() - amount, 0.0); + return SASS_MEMORY_NEW(Color, + pstate, + color->r(), + color->g(), + color->b(), + alpha); + } + + //////////////////////// + // OTHER COLOR FUNCTIONS + //////////////////////// + + Signature adjust_color_sig = "adjust-color($color, $red: false, $green: false, $blue: false, $hue: false, $saturation: false, $lightness: false, $alpha: false)"; + BUILT_IN(adjust_color) + { + Color_Ptr color = ARG("$color", Color); + Number_Ptr r = Cast(env["$red"]); + Number_Ptr g = Cast(env["$green"]); + Number_Ptr b = Cast(env["$blue"]); + Number_Ptr h = Cast(env["$hue"]); + Number_Ptr s = Cast(env["$saturation"]); + Number_Ptr l = Cast(env["$lightness"]); + Number_Ptr a = Cast(env["$alpha"]); + + bool rgb = r || g || b; + bool hsl = h || s || l; + + if (rgb && hsl) { + error("Cannot specify HSL and RGB values for a color at the same time for `adjust-color'", pstate, traces); + } + if (rgb) { + double rr = r ? DARG_R_BYTE("$red") : 0; + double gg = g ? DARG_R_BYTE("$green") : 0; + double bb = b ? DARG_R_BYTE("$blue") : 0; + double aa = a ? DARG_R_FACT("$alpha") : 0; + return SASS_MEMORY_NEW(Color, + pstate, + color->r() + rr, + color->g() + gg, + color->b() + bb, + color->a() + aa); + } + if (hsl) { + HSL hsl_struct = rgb_to_hsl(color->r(), color->g(), color->b()); + double ss = s ? DARG_R_PRCT("$saturation") : 0; + double ll = l ? DARG_R_PRCT("$lightness") : 0; + double aa = a ? DARG_R_FACT("$alpha") : 0; + return hsla_impl(hsl_struct.h + (h ? h->value() : 0), + hsl_struct.s + ss, + hsl_struct.l + ll, + color->a() + aa, + ctx, + pstate); + } + if (a) { + return SASS_MEMORY_NEW(Color, + pstate, + color->r(), + color->g(), + color->b(), + color->a() + (a ? a->value() : 0)); + } + error("not enough arguments for `adjust-color'", pstate, traces); + // unreachable + return color; + } + + Signature scale_color_sig = "scale-color($color, $red: false, $green: false, $blue: false, $hue: false, $saturation: false, $lightness: false, $alpha: false)"; + BUILT_IN(scale_color) + { + Color_Ptr color = ARG("$color", Color); + Number_Ptr r = Cast(env["$red"]); + Number_Ptr g = Cast(env["$green"]); + Number_Ptr b = Cast(env["$blue"]); + Number_Ptr h = Cast(env["$hue"]); + Number_Ptr s = Cast(env["$saturation"]); + Number_Ptr l = Cast(env["$lightness"]); + Number_Ptr a = Cast(env["$alpha"]); + + bool rgb = r || g || b; + bool hsl = h || s || l; + + if (rgb && hsl) { + error("Cannot specify HSL and RGB values for a color at the same time for `scale-color'", pstate, traces); + } + if (rgb) { + double rscale = (r ? DARG_R_PRCT("$red") : 0.0) / 100.0; + double gscale = (g ? DARG_R_PRCT("$green") : 0.0) / 100.0; + double bscale = (b ? DARG_R_PRCT("$blue") : 0.0) / 100.0; + double ascale = (a ? DARG_R_PRCT("$alpha") : 0.0) / 100.0; + return SASS_MEMORY_NEW(Color, + pstate, + color->r() + rscale * (rscale > 0.0 ? 255 - color->r() : color->r()), + color->g() + gscale * (gscale > 0.0 ? 255 - color->g() : color->g()), + color->b() + bscale * (bscale > 0.0 ? 255 - color->b() : color->b()), + color->a() + ascale * (ascale > 0.0 ? 1.0 - color->a() : color->a())); + } + if (hsl) { + double hscale = (h ? DARG_R_PRCT("$hue") : 0.0) / 100.0; + double sscale = (s ? DARG_R_PRCT("$saturation") : 0.0) / 100.0; + double lscale = (l ? DARG_R_PRCT("$lightness") : 0.0) / 100.0; + double ascale = (a ? DARG_R_PRCT("$alpha") : 0.0) / 100.0; + HSL hsl_struct = rgb_to_hsl(color->r(), color->g(), color->b()); + hsl_struct.h += hscale * (hscale > 0.0 ? 360.0 - hsl_struct.h : hsl_struct.h); + hsl_struct.s += sscale * (sscale > 0.0 ? 100.0 - hsl_struct.s : hsl_struct.s); + hsl_struct.l += lscale * (lscale > 0.0 ? 100.0 - hsl_struct.l : hsl_struct.l); + double alpha = color->a() + ascale * (ascale > 0.0 ? 1.0 - color->a() : color->a()); + return hsla_impl(hsl_struct.h, hsl_struct.s, hsl_struct.l, alpha, ctx, pstate); + } + if (a) { + double ascale = (DARG_R_PRCT("$alpha")) / 100.0; + return SASS_MEMORY_NEW(Color, + pstate, + color->r(), + color->g(), + color->b(), + color->a() + ascale * (ascale > 0.0 ? 1.0 - color->a() : color->a())); + } + error("not enough arguments for `scale-color'", pstate, traces); + // unreachable + return color; + } + + Signature change_color_sig = "change-color($color, $red: false, $green: false, $blue: false, $hue: false, $saturation: false, $lightness: false, $alpha: false)"; + BUILT_IN(change_color) + { + Color_Ptr color = ARG("$color", Color); + Number_Ptr r = Cast(env["$red"]); + Number_Ptr g = Cast(env["$green"]); + Number_Ptr b = Cast(env["$blue"]); + Number_Ptr h = Cast(env["$hue"]); + Number_Ptr s = Cast(env["$saturation"]); + Number_Ptr l = Cast(env["$lightness"]); + Number_Ptr a = Cast(env["$alpha"]); + + bool rgb = r || g || b; + bool hsl = h || s || l; + + if (rgb && hsl) { + error("Cannot specify HSL and RGB values for a color at the same time for `change-color'", pstate, traces); + } + if (rgb) { + return SASS_MEMORY_NEW(Color, + pstate, + r ? DARG_U_BYTE("$red") : color->r(), + g ? DARG_U_BYTE("$green") : color->g(), + b ? DARG_U_BYTE("$blue") : color->b(), + a ? DARG_U_BYTE("$alpha") : color->a()); + } + if (hsl) { + HSL hsl_struct = rgb_to_hsl(color->r(), color->g(), color->b()); + if (h) hsl_struct.h = std::fmod(h->value(), 360.0); + if (s) hsl_struct.s = DARG_U_PRCT("$saturation"); + if (l) hsl_struct.l = DARG_U_PRCT("$lightness"); + double alpha = a ? DARG_U_FACT("$alpha") : color->a(); + return hsla_impl(hsl_struct.h, hsl_struct.s, hsl_struct.l, alpha, ctx, pstate); + } + if (a) { + double alpha = DARG_U_FACT("$alpha"); + return SASS_MEMORY_NEW(Color, + pstate, + color->r(), + color->g(), + color->b(), + alpha); + } + error("not enough arguments for `change-color'", pstate, traces); + // unreachable + return color; + } + + template + static double cap_channel(double c) { + if (c > range) return range; + else if (c < 0) return 0; + else return c; + } + + Signature ie_hex_str_sig = "ie-hex-str($color)"; + BUILT_IN(ie_hex_str) + { + Color_Ptr c = ARG("$color", Color); + double r = cap_channel<0xff>(c->r()); + double g = cap_channel<0xff>(c->g()); + double b = cap_channel<0xff>(c->b()); + double a = cap_channel<1> (c->a()) * 255; + + std::stringstream ss; + ss << '#' << std::setw(2) << std::setfill('0'); + ss << std::hex << std::setw(2) << static_cast(Sass::round(a, ctx.c_options.precision)); + ss << std::hex << std::setw(2) << static_cast(Sass::round(r, ctx.c_options.precision)); + ss << std::hex << std::setw(2) << static_cast(Sass::round(g, ctx.c_options.precision)); + ss << std::hex << std::setw(2) << static_cast(Sass::round(b, ctx.c_options.precision)); + + std::string result(ss.str()); + for (size_t i = 0, L = result.length(); i < L; ++i) { + result[i] = std::toupper(result[i]); + } + return SASS_MEMORY_NEW(String_Quoted, pstate, result); + } + + /////////////////// + // STRING FUNCTIONS + /////////////////// + + Signature unquote_sig = "unquote($string)"; + BUILT_IN(sass_unquote) + { + AST_Node_Obj arg = env["$string"]; + if (String_Quoted_Ptr string_quoted = Cast(arg)) { + String_Constant_Ptr result = SASS_MEMORY_NEW(String_Constant, pstate, string_quoted->value()); + // remember if the string was quoted (color tokens) + result->is_delayed(true); // delay colors + return result; + } + else if (String_Constant_Ptr str = Cast(arg)) { + return str; + } + else if (Expression_Ptr ex = Cast(arg)) { + Sass_Output_Style oldstyle = ctx.c_options.output_style; + ctx.c_options.output_style = SASS_STYLE_NESTED; + std::string val(arg->to_string(ctx.c_options)); + val = Cast(arg) ? "null" : val; + ctx.c_options.output_style = oldstyle; + + deprecated_function("Passing " + val + ", a non-string value, to unquote()", pstate); + return ex; + } + throw std::runtime_error("Invalid Data Type for unquote"); + } + + Signature quote_sig = "quote($string)"; + BUILT_IN(sass_quote) + { + AST_Node_Obj arg = env["$string"]; + // only set quote mark to true if already a string + if (String_Quoted_Ptr qstr = Cast(arg)) { + qstr->quote_mark('*'); + return qstr; + } + // all other nodes must be converted to a string node + std::string str(quote(arg->to_string(ctx.c_options), String_Constant::double_quote())); + String_Quoted_Ptr result = SASS_MEMORY_NEW(String_Quoted, pstate, str); + result->quote_mark('*'); + return result; + } + + + Signature str_length_sig = "str-length($string)"; + BUILT_IN(str_length) + { + size_t len = std::string::npos; + try { + String_Constant_Ptr s = ARG("$string", String_Constant); + len = UTF_8::code_point_count(s->value(), 0, s->value().size()); + + } + // handle any invalid utf8 errors + // other errors will be re-thrown + catch (...) { handle_utf8_error(pstate, traces); } + // return something even if we had an error (-1) + return SASS_MEMORY_NEW(Number, pstate, (double)len); + } + + Signature str_insert_sig = "str-insert($string, $insert, $index)"; + BUILT_IN(str_insert) + { + std::string str; + try { + String_Constant_Ptr s = ARG("$string", String_Constant); + str = s->value(); + str = unquote(str); + String_Constant_Ptr i = ARG("$insert", String_Constant); + std::string ins = i->value(); + ins = unquote(ins); + double index = ARGVAL("$index"); + size_t len = UTF_8::code_point_count(str, 0, str.size()); + + if (index > 0 && index <= len) { + // positive and within string length + str.insert(UTF_8::offset_at_position(str, static_cast(index) - 1), ins); + } + else if (index > len) { + // positive and past string length + str += ins; + } + else if (index == 0) { + str = ins + str; + } + else if (std::abs(index) <= len) { + // negative and within string length + index += len + 1; + str.insert(UTF_8::offset_at_position(str, static_cast(index)), ins); + } + else { + // negative and past string length + str = ins + str; + } + + if (String_Quoted_Ptr ss = Cast(s)) { + if (ss->quote_mark()) str = quote(str); + } + } + // handle any invalid utf8 errors + // other errors will be re-thrown + catch (...) { handle_utf8_error(pstate, traces); } + return SASS_MEMORY_NEW(String_Quoted, pstate, str); + } + + Signature str_index_sig = "str-index($string, $substring)"; + BUILT_IN(str_index) + { + size_t index = std::string::npos; + try { + String_Constant_Ptr s = ARG("$string", String_Constant); + String_Constant_Ptr t = ARG("$substring", String_Constant); + std::string str = s->value(); + str = unquote(str); + std::string substr = t->value(); + substr = unquote(substr); + + size_t c_index = str.find(substr); + if(c_index == std::string::npos) { + return SASS_MEMORY_NEW(Null, pstate); + } + index = UTF_8::code_point_count(str, 0, c_index) + 1; + } + // handle any invalid utf8 errors + // other errors will be re-thrown + catch (...) { handle_utf8_error(pstate, traces); } + // return something even if we had an error (-1) + return SASS_MEMORY_NEW(Number, pstate, (double)index); + } + + Signature str_slice_sig = "str-slice($string, $start-at, $end-at:-1)"; + BUILT_IN(str_slice) + { + std::string newstr; + try { + String_Constant_Ptr s = ARG("$string", String_Constant); + double start_at = ARGVAL("$start-at"); + double end_at = ARGVAL("$end-at"); + String_Quoted_Ptr ss = Cast(s); + + std::string str = unquote(s->value()); + + size_t size = utf8::distance(str.begin(), str.end()); + + if (!Cast(env["$end-at"])) { + end_at = -1; + } + + if (end_at == 0 || (end_at + size) < 0) { + if (ss && ss->quote_mark()) newstr = quote(""); + return SASS_MEMORY_NEW(String_Quoted, pstate, newstr); + } + + if (end_at < 0) { + end_at += size + 1; + if (end_at == 0) end_at = 1; + } + if (end_at > size) { end_at = (double)size; } + if (start_at < 0) { + start_at += size + 1; + if (start_at < 0) start_at = 0; + } + else if (start_at == 0) { ++ start_at; } + + if (start_at <= end_at) + { + std::string::iterator start = str.begin(); + utf8::advance(start, start_at - 1, str.end()); + std::string::iterator end = start; + utf8::advance(end, end_at - start_at + 1, str.end()); + newstr = std::string(start, end); + } + if (ss) { + if(ss->quote_mark()) newstr = quote(newstr); + } + } + // handle any invalid utf8 errors + // other errors will be re-thrown + catch (...) { handle_utf8_error(pstate, traces); } + return SASS_MEMORY_NEW(String_Quoted, pstate, newstr); + } + + Signature to_upper_case_sig = "to-upper-case($string)"; + BUILT_IN(to_upper_case) + { + String_Constant_Ptr s = ARG("$string", String_Constant); + std::string str = s->value(); + + for (size_t i = 0, L = str.length(); i < L; ++i) { + if (Sass::Util::isAscii(str[i])) { + str[i] = std::toupper(str[i]); + } + } + + if (String_Quoted_Ptr ss = Cast(s)) { + String_Quoted_Ptr cpy = SASS_MEMORY_COPY(ss); + cpy->value(str); + return cpy; + } else { + return SASS_MEMORY_NEW(String_Quoted, pstate, str); + } + } + + Signature to_lower_case_sig = "to-lower-case($string)"; + BUILT_IN(to_lower_case) + { + String_Constant_Ptr s = ARG("$string", String_Constant); + std::string str = s->value(); + + for (size_t i = 0, L = str.length(); i < L; ++i) { + if (Sass::Util::isAscii(str[i])) { + str[i] = std::tolower(str[i]); + } + } + + if (String_Quoted_Ptr ss = Cast(s)) { + String_Quoted_Ptr cpy = SASS_MEMORY_COPY(ss); + cpy->value(str); + return cpy; + } else { + return SASS_MEMORY_NEW(String_Quoted, pstate, str); + } + } + + /////////////////// + // NUMBER FUNCTIONS + /////////////////// + + Signature percentage_sig = "percentage($number)"; + BUILT_IN(percentage) + { + Number_Obj n = ARGN("$number"); + if (!n->is_unitless()) error("argument $number of `" + std::string(sig) + "` must be unitless", pstate, traces); + return SASS_MEMORY_NEW(Number, pstate, n->value() * 100, "%"); + } + + Signature round_sig = "round($number)"; + BUILT_IN(round) + { + Number_Obj r = ARGN("$number"); + r->value(Sass::round(r->value(), ctx.c_options.precision)); + r->pstate(pstate); + return r.detach(); + } + + Signature ceil_sig = "ceil($number)"; + BUILT_IN(ceil) + { + Number_Obj r = ARGN("$number"); + r->value(std::ceil(r->value())); + r->pstate(pstate); + return r.detach(); + } + + Signature floor_sig = "floor($number)"; + BUILT_IN(floor) + { + Number_Obj r = ARGN("$number"); + r->value(std::floor(r->value())); + r->pstate(pstate); + return r.detach(); + } + + Signature abs_sig = "abs($number)"; + BUILT_IN(abs) + { + Number_Obj r = ARGN("$number"); + r->value(std::abs(r->value())); + r->pstate(pstate); + return r.detach(); + } + + Signature min_sig = "min($numbers...)"; + BUILT_IN(min) + { + List_Ptr arglist = ARG("$numbers", List); + Number_Obj least = NULL; + for (size_t i = 0, L = arglist->length(); i < L; ++i) { + Expression_Obj val = arglist->value_at_index(i); + Number_Obj xi = Cast(val); + if (!xi) { + error("\"" + val->to_string(ctx.c_options) + "\" is not a number for `min'", pstate, traces); + } + if (least) { + if (*xi < *least) least = xi; + } else least = xi; + } + return least.detach(); + } + + Signature max_sig = "max($numbers...)"; + BUILT_IN(max) + { + List_Ptr arglist = ARG("$numbers", List); + Number_Obj greatest = NULL; + for (size_t i = 0, L = arglist->length(); i < L; ++i) { + Expression_Obj val = arglist->value_at_index(i); + Number_Obj xi = Cast(val); + if (!xi) { + error("\"" + val->to_string(ctx.c_options) + "\" is not a number for `max'", pstate, traces); + } + if (greatest) { + if (*greatest < *xi) greatest = xi; + } else greatest = xi; + } + return greatest.detach(); + } + + Signature random_sig = "random($limit:false)"; + BUILT_IN(random) + { + AST_Node_Obj arg = env["$limit"]; + Value_Ptr v = Cast(arg); + Number_Ptr l = Cast(arg); + Boolean_Ptr b = Cast(arg); + if (l) { + double lv = l->value(); + if (lv < 1) { + stringstream err; + err << "$limit " << lv << " must be greater than or equal to 1 for `random'"; + error(err.str(), pstate, traces); + } + bool eq_int = std::fabs(trunc(lv) - lv) < NUMBER_EPSILON; + if (!eq_int) { + stringstream err; + err << "Expected $limit to be an integer but got " << lv << " for `random'"; + error(err.str(), pstate, traces); + } + std::uniform_real_distribution<> distributor(1, lv + 1); + uint_fast32_t distributed = static_cast(distributor(rand)); + return SASS_MEMORY_NEW(Number, pstate, (double)distributed); + } + else if (b) { + std::uniform_real_distribution<> distributor(0, 1); + double distributed = static_cast(distributor(rand)); + return SASS_MEMORY_NEW(Number, pstate, distributed); + } else if (v) { + traces.push_back(Backtrace(pstate)); + throw Exception::InvalidArgumentType(pstate, traces, "random", "$limit", "number", v); + } else { + traces.push_back(Backtrace(pstate)); + throw Exception::InvalidArgumentType(pstate, traces, "random", "$limit", "number"); + } + } + + ///////////////// + // LIST FUNCTIONS + ///////////////// + + Signature length_sig = "length($list)"; + BUILT_IN(length) + { + if (Selector_List_Ptr sl = Cast(env["$list"])) { + return SASS_MEMORY_NEW(Number, pstate, (double)sl->length()); + } + Expression_Ptr v = ARG("$list", Expression); + if (v->concrete_type() == Expression::MAP) { + Map_Ptr map = Cast(env["$list"]); + return SASS_MEMORY_NEW(Number, pstate, (double)(map ? map->length() : 1)); + } + if (v->concrete_type() == Expression::SELECTOR) { + if (Compound_Selector_Ptr h = Cast(v)) { + return SASS_MEMORY_NEW(Number, pstate, (double)h->length()); + } else if (Selector_List_Ptr ls = Cast(v)) { + return SASS_MEMORY_NEW(Number, pstate, (double)ls->length()); + } else { + return SASS_MEMORY_NEW(Number, pstate, 1); + } + } + + List_Ptr list = Cast(env["$list"]); + return SASS_MEMORY_NEW(Number, + pstate, + (double)(list ? list->size() : 1)); + } + + Signature nth_sig = "nth($list, $n)"; + BUILT_IN(nth) + { + double nr = ARGVAL("$n"); + Map_Ptr m = Cast(env["$list"]); + if (Selector_List_Ptr sl = Cast(env["$list"])) { + size_t len = m ? m->length() : sl->length(); + bool empty = m ? m->empty() : sl->empty(); + if (empty) error("argument `$list` of `" + std::string(sig) + "` must not be empty", pstate, traces); + double index = std::floor(nr < 0 ? len + nr : nr - 1); + if (index < 0 || index > len - 1) error("index out of bounds for `" + std::string(sig) + "`", pstate, traces); + // return (*sl)[static_cast(index)]; + Listize listize; + return (*sl)[static_cast(index)]->perform(&listize); + } + List_Obj l = Cast(env["$list"]); + if (nr == 0) error("argument `$n` of `" + std::string(sig) + "` must be non-zero", pstate, traces); + // if the argument isn't a list, then wrap it in a singleton list + if (!m && !l) { + l = SASS_MEMORY_NEW(List, pstate, 1); + l->append(ARG("$list", Expression)); + } + size_t len = m ? m->length() : l->length(); + bool empty = m ? m->empty() : l->empty(); + if (empty) error("argument `$list` of `" + std::string(sig) + "` must not be empty", pstate, traces); + double index = std::floor(nr < 0 ? len + nr : nr - 1); + if (index < 0 || index > len - 1) error("index out of bounds for `" + std::string(sig) + "`", pstate, traces); + + if (m) { + l = SASS_MEMORY_NEW(List, pstate, 1); + l->append(m->keys()[static_cast(index)]); + l->append(m->at(m->keys()[static_cast(index)])); + return l.detach(); + } + else { + Expression_Obj rv = l->value_at_index(static_cast(index)); + rv->set_delayed(false); + return rv.detach(); + } + } + + Signature set_nth_sig = "set-nth($list, $n, $value)"; + BUILT_IN(set_nth) + { + Map_Obj m = Cast(env["$list"]); + List_Obj l = Cast(env["$list"]); + Number_Obj n = ARG("$n", Number); + Expression_Obj v = ARG("$value", Expression); + if (!l) { + l = SASS_MEMORY_NEW(List, pstate, 1); + l->append(ARG("$list", Expression)); + } + if (m) { + l = m->to_list(pstate); + } + if (l->empty()) error("argument `$list` of `" + std::string(sig) + "` must not be empty", pstate, traces); + double index = std::floor(n->value() < 0 ? l->length() + n->value() : n->value() - 1); + if (index < 0 || index > l->length() - 1) error("index out of bounds for `" + std::string(sig) + "`", pstate, traces); + List_Ptr result = SASS_MEMORY_NEW(List, pstate, l->length(), l->separator(), false, l->is_bracketed()); + for (size_t i = 0, L = l->length(); i < L; ++i) { + result->append(((i == index) ? v : (*l)[i])); + } + return result; + } + + Signature index_sig = "index($list, $value)"; + BUILT_IN(index) + { + Map_Obj m = Cast(env["$list"]); + List_Obj l = Cast(env["$list"]); + Expression_Obj v = ARG("$value", Expression); + if (!l) { + l = SASS_MEMORY_NEW(List, pstate, 1); + l->append(ARG("$list", Expression)); + } + if (m) { + l = m->to_list(pstate); + } + for (size_t i = 0, L = l->length(); i < L; ++i) { + if (Operators::eq(l->value_at_index(i), v)) return SASS_MEMORY_NEW(Number, pstate, (double)(i+1)); + } + return SASS_MEMORY_NEW(Null, pstate); + } + + Signature join_sig = "join($list1, $list2, $separator: auto, $bracketed: auto)"; + BUILT_IN(join) + { + Map_Obj m1 = Cast(env["$list1"]); + Map_Obj m2 = Cast(env["$list2"]); + List_Obj l1 = Cast(env["$list1"]); + List_Obj l2 = Cast(env["$list2"]); + String_Constant_Obj sep = ARG("$separator", String_Constant); + enum Sass_Separator sep_val = (l1 ? l1->separator() : SASS_SPACE); + Value* bracketed = ARG("$bracketed", Value); + bool is_bracketed = (l1 ? l1->is_bracketed() : false); + if (!l1) { + l1 = SASS_MEMORY_NEW(List, pstate, 1); + l1->append(ARG("$list1", Expression)); + sep_val = (l2 ? l2->separator() : SASS_SPACE); + is_bracketed = (l2 ? l2->is_bracketed() : false); + } + if (!l2) { + l2 = SASS_MEMORY_NEW(List, pstate, 1); + l2->append(ARG("$list2", Expression)); + } + if (m1) { + l1 = m1->to_list(pstate); + sep_val = SASS_COMMA; + } + if (m2) { + l2 = m2->to_list(pstate); + } + size_t len = l1->length() + l2->length(); + std::string sep_str = unquote(sep->value()); + if (sep_str == "space") sep_val = SASS_SPACE; + else if (sep_str == "comma") sep_val = SASS_COMMA; + else if (sep_str != "auto") error("argument `$separator` of `" + std::string(sig) + "` must be `space`, `comma`, or `auto`", pstate, traces); + String_Constant_Obj bracketed_as_str = Cast(bracketed); + bool bracketed_is_auto = bracketed_as_str && unquote(bracketed_as_str->value()) == "auto"; + if (!bracketed_is_auto) { + is_bracketed = !bracketed->is_false(); + } + List_Obj result = SASS_MEMORY_NEW(List, pstate, len, sep_val, false, is_bracketed); + result->concat(l1); + result->concat(l2); + return result.detach(); + } + + Signature append_sig = "append($list, $val, $separator: auto)"; + BUILT_IN(append) + { + Map_Obj m = Cast(env["$list"]); + List_Obj l = Cast(env["$list"]); + Expression_Obj v = ARG("$val", Expression); + if (Selector_List_Ptr sl = Cast(env["$list"])) { + Listize listize; + l = Cast(sl->perform(&listize)); + } + String_Constant_Obj sep = ARG("$separator", String_Constant); + if (!l) { + l = SASS_MEMORY_NEW(List, pstate, 1); + l->append(ARG("$list", Expression)); + } + if (m) { + l = m->to_list(pstate); + } + List_Ptr result = SASS_MEMORY_COPY(l); + std::string sep_str(unquote(sep->value())); + if (sep_str != "auto") { // check default first + if (sep_str == "space") result->separator(SASS_SPACE); + else if (sep_str == "comma") result->separator(SASS_COMMA); + else error("argument `$separator` of `" + std::string(sig) + "` must be `space`, `comma`, or `auto`", pstate, traces); + } + if (l->is_arglist()) { + result->append(SASS_MEMORY_NEW(Argument, + v->pstate(), + v, + "", + false, + false)); + + } else { + result->append(v); + } + return result; + } + + Signature zip_sig = "zip($lists...)"; + BUILT_IN(zip) + { + List_Obj arglist = SASS_MEMORY_COPY(ARG("$lists", List)); + size_t shortest = 0; + for (size_t i = 0, L = arglist->length(); i < L; ++i) { + List_Obj ith = Cast(arglist->value_at_index(i)); + Map_Obj mith = Cast(arglist->value_at_index(i)); + if (!ith) { + if (mith) { + ith = mith->to_list(pstate); + } else { + ith = SASS_MEMORY_NEW(List, pstate, 1); + ith->append(arglist->value_at_index(i)); + } + if (arglist->is_arglist()) { + Argument_Obj arg = (Argument_Ptr)(arglist->at(i).ptr()); // XXX + arg->value(ith); + } else { + (*arglist)[i] = ith; + } + } + shortest = (i ? std::min(shortest, ith->length()) : ith->length()); + } + List_Ptr zippers = SASS_MEMORY_NEW(List, pstate, shortest, SASS_COMMA); + size_t L = arglist->length(); + for (size_t i = 0; i < shortest; ++i) { + List_Ptr zipper = SASS_MEMORY_NEW(List, pstate, L); + for (size_t j = 0; j < L; ++j) { + zipper->append(Cast(arglist->value_at_index(j))->at(i)); + } + zippers->append(zipper); + } + return zippers; + } + + Signature list_separator_sig = "list_separator($list)"; + BUILT_IN(list_separator) + { + List_Obj l = Cast(env["$list"]); + if (!l) { + l = SASS_MEMORY_NEW(List, pstate, 1); + l->append(ARG("$list", Expression)); + } + return SASS_MEMORY_NEW(String_Quoted, + pstate, + l->separator() == SASS_COMMA ? "comma" : "space"); + } + + ///////////////// + // MAP FUNCTIONS + ///////////////// + + Signature map_get_sig = "map-get($map, $key)"; + BUILT_IN(map_get) + { + // leaks for "map-get((), foo)" if not Obj + // investigate why this is (unexpected) + Map_Obj m = ARGM("$map", Map, ctx); + Expression_Obj v = ARG("$key", Expression); + try { + Expression_Obj val = m->at(v); + if (!val) return SASS_MEMORY_NEW(Null, pstate); + val->set_delayed(false); + return val.detach(); + } catch (const std::out_of_range&) { + return SASS_MEMORY_NEW(Null, pstate); + } + catch (...) { throw; } + } + + Signature map_has_key_sig = "map-has-key($map, $key)"; + BUILT_IN(map_has_key) + { + Map_Obj m = ARGM("$map", Map, ctx); + Expression_Obj v = ARG("$key", Expression); + return SASS_MEMORY_NEW(Boolean, pstate, m->has(v)); + } + + Signature map_keys_sig = "map-keys($map)"; + BUILT_IN(map_keys) + { + Map_Obj m = ARGM("$map", Map, ctx); + List_Ptr result = SASS_MEMORY_NEW(List, pstate, m->length(), SASS_COMMA); + for ( auto key : m->keys()) { + result->append(key); + } + return result; + } + + Signature map_values_sig = "map-values($map)"; + BUILT_IN(map_values) + { + Map_Obj m = ARGM("$map", Map, ctx); + List_Ptr result = SASS_MEMORY_NEW(List, pstate, m->length(), SASS_COMMA); + for ( auto key : m->keys()) { + result->append(m->at(key)); + } + return result; + } + + Signature map_merge_sig = "map-merge($map1, $map2)"; + BUILT_IN(map_merge) + { + Map_Obj m1 = ARGM("$map1", Map, ctx); + Map_Obj m2 = ARGM("$map2", Map, ctx); + + size_t len = m1->length() + m2->length(); + Map_Ptr result = SASS_MEMORY_NEW(Map, pstate, len); + // concat not implemented for maps + *result += m1; + *result += m2; + return result; + } + + Signature map_remove_sig = "map-remove($map, $keys...)"; + BUILT_IN(map_remove) + { + bool remove; + Map_Obj m = ARGM("$map", Map, ctx); + List_Obj arglist = ARG("$keys", List); + Map_Ptr result = SASS_MEMORY_NEW(Map, pstate, 1); + for (auto key : m->keys()) { + remove = false; + for (size_t j = 0, K = arglist->length(); j < K && !remove; ++j) { + remove = Operators::eq(key, arglist->value_at_index(j)); + } + if (!remove) *result << std::make_pair(key, m->at(key)); + } + return result; + } + + Signature keywords_sig = "keywords($args)"; + BUILT_IN(keywords) + { + List_Obj arglist = SASS_MEMORY_COPY(ARG("$args", List)); // copy + Map_Obj result = SASS_MEMORY_NEW(Map, pstate, 1); + for (size_t i = arglist->size(), L = arglist->length(); i < L; ++i) { + Expression_Obj obj = arglist->at(i); + Argument_Obj arg = (Argument_Ptr) obj.ptr(); // XXX + std::string name = std::string(arg->name()); + name = name.erase(0, 1); // sanitize name (remove dollar sign) + *result << std::make_pair(SASS_MEMORY_NEW(String_Quoted, + pstate, name), + arg->value()); + } + return result.detach(); + } + + ////////////////////////// + // INTROSPECTION FUNCTIONS + ////////////////////////// + + Signature type_of_sig = "type-of($value)"; + BUILT_IN(type_of) + { + Expression_Ptr v = ARG("$value", Expression); + return SASS_MEMORY_NEW(String_Quoted, pstate, v->type()); + } + + Signature unit_sig = "unit($number)"; + BUILT_IN(unit) + { + Number_Obj arg = ARGN("$number"); + std::string str(quote(arg->unit(), '"')); + return SASS_MEMORY_NEW(String_Quoted, pstate, str); + } + + Signature unitless_sig = "unitless($number)"; + BUILT_IN(unitless) + { + Number_Obj arg = ARGN("$number"); + bool unitless = arg->is_unitless(); + return SASS_MEMORY_NEW(Boolean, pstate, unitless); + } + + Signature comparable_sig = "comparable($number-1, $number-2)"; + BUILT_IN(comparable) + { + Number_Obj n1 = ARGN("$number-1"); + Number_Obj n2 = ARGN("$number-2"); + if (n1->is_unitless() || n2->is_unitless()) { + return SASS_MEMORY_NEW(Boolean, pstate, true); + } + // normalize into main units + n1->normalize(); n2->normalize(); + Units &lhs_unit = *n1, &rhs_unit = *n2; + bool is_comparable = (lhs_unit == rhs_unit); + return SASS_MEMORY_NEW(Boolean, pstate, is_comparable); + } + + Signature variable_exists_sig = "variable-exists($name)"; + BUILT_IN(variable_exists) + { + std::string s = Util::normalize_underscores(unquote(ARG("$name", String_Constant)->value())); + + if(d_env.has("$"+s)) { + return SASS_MEMORY_NEW(Boolean, pstate, true); + } + else { + return SASS_MEMORY_NEW(Boolean, pstate, false); + } + } + + Signature global_variable_exists_sig = "global-variable-exists($name)"; + BUILT_IN(global_variable_exists) + { + std::string s = Util::normalize_underscores(unquote(ARG("$name", String_Constant)->value())); + + if(d_env.has_global("$"+s)) { + return SASS_MEMORY_NEW(Boolean, pstate, true); + } + else { + return SASS_MEMORY_NEW(Boolean, pstate, false); + } + } + + Signature function_exists_sig = "function-exists($name)"; + BUILT_IN(function_exists) + { + String_Constant_Ptr ss = Cast(env["$name"]); + if (!ss) { + error("$name: " + (env["$name"]->to_string()) + " is not a string for `function-exists'", pstate, traces); + } + + std::string name = Util::normalize_underscores(unquote(ss->value())); + + if(d_env.has_global(name+"[f]")) { + return SASS_MEMORY_NEW(Boolean, pstate, true); + } + else { + return SASS_MEMORY_NEW(Boolean, pstate, false); + } + } + + Signature mixin_exists_sig = "mixin-exists($name)"; + BUILT_IN(mixin_exists) + { + std::string s = Util::normalize_underscores(unquote(ARG("$name", String_Constant)->value())); + + if(d_env.has_global(s+"[m]")) { + return SASS_MEMORY_NEW(Boolean, pstate, true); + } + else { + return SASS_MEMORY_NEW(Boolean, pstate, false); + } + } + + Signature feature_exists_sig = "feature-exists($name)"; + BUILT_IN(feature_exists) + { + std::string s = unquote(ARG("$name", String_Constant)->value()); + + if(features.find(s) == features.end()) { + return SASS_MEMORY_NEW(Boolean, pstate, false); + } + else { + return SASS_MEMORY_NEW(Boolean, pstate, true); + } + } + + Signature call_sig = "call($name, $args...)"; + BUILT_IN(call) + { + std::string name; + Function_Ptr ff = Cast(env["$name"]); + String_Constant_Ptr ss = Cast(env["$name"]); + + if (ss) { + name = Util::normalize_underscores(unquote(ss->value())); + std::cerr << "DEPRECATION WARNING: "; + std::cerr << "Passing a string to call() is deprecated and will be illegal" << std::endl; + std::cerr << "in Sass 4.0. Use call(get-function(" + quote(name) + ")) instead." << std::endl; + std::cerr << std::endl; + } else if (ff) { + name = ff->name(); + } + + List_Obj arglist = SASS_MEMORY_COPY(ARG("$args", List)); + + Arguments_Obj args = SASS_MEMORY_NEW(Arguments, pstate); + // std::string full_name(name + "[f]"); + // Definition_Ptr def = d_env.has(full_name) ? Cast((d_env)[full_name]) : 0; + // Parameters_Ptr params = def ? def->parameters() : 0; + // size_t param_size = params ? params->length() : 0; + for (size_t i = 0, L = arglist->length(); i < L; ++i) { + Expression_Obj expr = arglist->value_at_index(i); + // if (params && params->has_rest_parameter()) { + // Parameter_Obj p = param_size > i ? (*params)[i] : 0; + // List_Ptr list = Cast(expr); + // if (list && p && !p->is_rest_parameter()) expr = (*list)[0]; + // } + if (arglist->is_arglist()) { + Expression_Obj obj = arglist->at(i); + Argument_Obj arg = (Argument_Ptr) obj.ptr(); // XXX + args->append(SASS_MEMORY_NEW(Argument, + pstate, + expr, + arg ? arg->name() : "", + arg ? arg->is_rest_argument() : false, + arg ? arg->is_keyword_argument() : false)); + } else { + args->append(SASS_MEMORY_NEW(Argument, pstate, expr)); + } + } + Function_Call_Obj func = SASS_MEMORY_NEW(Function_Call, pstate, name, args); + Expand expand(ctx, &d_env, &selector_stack); + func->via_call(true); // calc invoke is allowed + if (ff) func->func(ff); + return func->perform(&expand.eval); + } + + //////////////////// + // BOOLEAN FUNCTIONS + //////////////////// + + Signature not_sig = "not($value)"; + BUILT_IN(sass_not) + { + return SASS_MEMORY_NEW(Boolean, pstate, ARG("$value", Expression)->is_false()); + } + + Signature if_sig = "if($condition, $if-true, $if-false)"; + // BUILT_IN(sass_if) + // { return ARG("$condition", Expression)->is_false() ? ARG("$if-false", Expression) : ARG("$if-true", Expression); } + BUILT_IN(sass_if) + { + Expand expand(ctx, &d_env, &selector_stack); + Expression_Obj cond = ARG("$condition", Expression)->perform(&expand.eval); + bool is_true = !cond->is_false(); + Expression_Obj res = ARG(is_true ? "$if-true" : "$if-false", Expression); + res = res->perform(&expand.eval); + res->set_delayed(false); // clone? + return res.detach(); + } + + ////////////////////////// + // MISCELLANEOUS FUNCTIONS + ////////////////////////// + + // value.check_deprecated_interp if value.is_a?(Sass::Script::Value::String) + // unquoted_string(value.to_sass) + + Signature inspect_sig = "inspect($value)"; + BUILT_IN(inspect) + { + Expression_Ptr v = ARG("$value", Expression); + if (v->concrete_type() == Expression::NULL_VAL) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "null"); + } else if (v->concrete_type() == Expression::BOOLEAN && v->is_false()) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "false"); + } else if (v->concrete_type() == Expression::STRING) { + return v; + } else { + // ToDo: fix to_sass for nested parentheses + Sass_Output_Style old_style; + old_style = ctx.c_options.output_style; + ctx.c_options.output_style = TO_SASS; + Emitter emitter(ctx.c_options); + Inspect i(emitter); + i.in_declaration = false; + v->perform(&i); + ctx.c_options.output_style = old_style; + return SASS_MEMORY_NEW(String_Quoted, pstate, i.get_buffer()); + } + // return v; + } + Signature selector_nest_sig = "selector-nest($selectors...)"; + BUILT_IN(selector_nest) + { + List_Ptr arglist = ARG("$selectors", List); + + // Not enough parameters + if( arglist->length() == 0 ) + error("$selectors: At least one selector must be passed for `selector-nest'", pstate, traces); + + // Parse args into vector of selectors + std::vector parsedSelectors; + for (size_t i = 0, L = arglist->length(); i < L; ++i) { + Expression_Obj exp = Cast(arglist->value_at_index(i)); + if (exp->concrete_type() == Expression::NULL_VAL) { + std::stringstream msg; + msg << "$selectors: null is not a valid selector: it must be a string,\n"; + msg << "a list of strings, or a list of lists of strings for 'selector-nest'"; + error(msg.str(), pstate, traces); + } + if (String_Constant_Obj str = Cast(exp)) { + str->quote_mark(0); + } + std::string exp_src = exp->to_string(ctx.c_options); + Selector_List_Obj sel = Parser::parse_selector(exp_src.c_str(), ctx, traces); + parsedSelectors.push_back(sel); + } + + // Nothing to do + if( parsedSelectors.empty() ) { + return SASS_MEMORY_NEW(Null, pstate); + } + + // Set the first element as the `result`, keep appending to as we go down the parsedSelector vector. + std::vector::iterator itr = parsedSelectors.begin(); + Selector_List_Obj result = *itr; + ++itr; + + for(;itr != parsedSelectors.end(); ++itr) { + Selector_List_Obj child = *itr; + std::vector exploded; + selector_stack.push_back(result); + Selector_List_Obj rv = child->resolve_parent_refs(selector_stack, traces); + selector_stack.pop_back(); + for (size_t m = 0, mLen = rv->length(); m < mLen; ++m) { + exploded.push_back((*rv)[m]); + } + result->elements(exploded); + } + + Listize listize; + return result->perform(&listize); + } + + Signature selector_append_sig = "selector-append($selectors...)"; + BUILT_IN(selector_append) + { + List_Ptr arglist = ARG("$selectors", List); + + // Not enough parameters + if( arglist->length() == 0 ) + error("$selectors: At least one selector must be passed for `selector-append'", pstate, traces); + + // Parse args into vector of selectors + std::vector parsedSelectors; + for (size_t i = 0, L = arglist->length(); i < L; ++i) { + Expression_Obj exp = Cast(arglist->value_at_index(i)); + if (exp->concrete_type() == Expression::NULL_VAL) { + std::stringstream msg; + msg << "$selectors: null is not a valid selector: it must be a string,\n"; + msg << "a list of strings, or a list of lists of strings for 'selector-append'"; + error(msg.str(), pstate, traces); + } + if (String_Constant_Ptr str = Cast(exp)) { + str->quote_mark(0); + } + std::string exp_src = exp->to_string(); + Selector_List_Obj sel = Parser::parse_selector(exp_src.c_str(), ctx, traces); + parsedSelectors.push_back(sel); + } + + // Nothing to do + if( parsedSelectors.empty() ) { + return SASS_MEMORY_NEW(Null, pstate); + } + + // Set the first element as the `result`, keep appending to as we go down the parsedSelector vector. + std::vector::iterator itr = parsedSelectors.begin(); + Selector_List_Obj result = *itr; + ++itr; + + for(;itr != parsedSelectors.end(); ++itr) { + Selector_List_Obj child = *itr; + std::vector newElements; + + // For every COMPLEX_SELECTOR in `result` + // For every COMPLEX_SELECTOR in `child` + // let parentSeqClone equal a copy of result->elements[i] + // let childSeq equal child->elements[j] + // Append all of childSeq head elements into parentSeqClone + // Set the innermost tail of parentSeqClone, to childSeq's tail + // Replace result->elements with newElements + for (size_t i = 0, resultLen = result->length(); i < resultLen; ++i) { + for (size_t j = 0, childLen = child->length(); j < childLen; ++j) { + Complex_Selector_Obj parentSeqClone = SASS_MEMORY_CLONE((*result)[i]); + Complex_Selector_Obj childSeq = (*child)[j]; + Complex_Selector_Obj base = childSeq->tail(); + + // Must be a simple sequence + if( childSeq->combinator() != Complex_Selector::Combinator::ANCESTOR_OF ) { + std::string msg("Can't append \""); + msg += childSeq->to_string(); + msg += "\" to \""; + msg += parentSeqClone->to_string(); + msg += "\" for `selector-append'"; + error(msg, pstate, traces); + } + + // Cannot be a Universal selector + Element_Selector_Obj pType = Cast(childSeq->head()->first()); + if(pType && pType->name() == "*") { + std::string msg("Can't append \""); + msg += childSeq->to_string(); + msg += "\" to \""; + msg += parentSeqClone->to_string(); + msg += "\" for `selector-append'"; + error(msg, pstate, traces); + } + + // TODO: Add check for namespace stuff + + // append any selectors in childSeq's head + parentSeqClone->innermost()->head()->concat(base->head()); + + // Set parentSeqClone new tail + parentSeqClone->innermost()->tail( base->tail() ); + + newElements.push_back(parentSeqClone); + } + } + + result->elements(newElements); + } + + Listize listize; + return result->perform(&listize); + } + + Signature selector_unify_sig = "selector-unify($selector1, $selector2)"; + BUILT_IN(selector_unify) + { + Selector_List_Obj selector1 = ARGSEL("$selector1", Selector_List_Obj, p_contextualize); + Selector_List_Obj selector2 = ARGSEL("$selector2", Selector_List_Obj, p_contextualize); + + Selector_List_Obj result = selector1->unify_with(selector2); + Listize listize; + return result->perform(&listize); + } + + Signature simple_selectors_sig = "simple-selectors($selector)"; + BUILT_IN(simple_selectors) + { + Compound_Selector_Obj sel = ARGSEL("$selector", Compound_Selector_Obj, p_contextualize); + + List_Ptr l = SASS_MEMORY_NEW(List, sel->pstate(), sel->length(), SASS_COMMA); + + for (size_t i = 0, L = sel->length(); i < L; ++i) { + Simple_Selector_Obj ss = (*sel)[i]; + std::string ss_string = ss->to_string() ; + + l->append(SASS_MEMORY_NEW(String_Quoted, ss->pstate(), ss_string)); + } + + return l; + } + + Signature selector_extend_sig = "selector-extend($selector, $extendee, $extender)"; + BUILT_IN(selector_extend) + { + Selector_List_Obj selector = ARGSEL("$selector", Selector_List_Obj, p_contextualize); + Selector_List_Obj extendee = ARGSEL("$extendee", Selector_List_Obj, p_contextualize); + Selector_List_Obj extender = ARGSEL("$extender", Selector_List_Obj, p_contextualize); + + Subset_Map subset_map; + extender->populate_extends(extendee, subset_map); + Extend extend(subset_map); + + Selector_List_Obj result = extend.extendSelectorList(selector, false); + + Listize listize; + return result->perform(&listize); + } + + Signature selector_replace_sig = "selector-replace($selector, $original, $replacement)"; + BUILT_IN(selector_replace) + { + Selector_List_Obj selector = ARGSEL("$selector", Selector_List_Obj, p_contextualize); + Selector_List_Obj original = ARGSEL("$original", Selector_List_Obj, p_contextualize); + Selector_List_Obj replacement = ARGSEL("$replacement", Selector_List_Obj, p_contextualize); + Subset_Map subset_map; + replacement->populate_extends(original, subset_map); + Extend extend(subset_map); + + Selector_List_Obj result = extend.extendSelectorList(selector, true); + + Listize listize; + return result->perform(&listize); + } + + Signature selector_parse_sig = "selector-parse($selector)"; + BUILT_IN(selector_parse) + { + Selector_List_Obj sel = ARGSEL("$selector", Selector_List_Obj, p_contextualize); + + Listize listize; + return sel->perform(&listize); + } + + Signature is_superselector_sig = "is-superselector($super, $sub)"; + BUILT_IN(is_superselector) + { + Selector_List_Obj sel_sup = ARGSEL("$super", Selector_List_Obj, p_contextualize); + Selector_List_Obj sel_sub = ARGSEL("$sub", Selector_List_Obj, p_contextualize); + bool result = sel_sup->is_superselector_of(sel_sub); + return SASS_MEMORY_NEW(Boolean, pstate, result); + } + + Signature unique_id_sig = "unique-id()"; + BUILT_IN(unique_id) + { + std::stringstream ss; + std::uniform_real_distribution<> distributor(0, 4294967296); // 16^8 + uint_fast32_t distributed = static_cast(distributor(rand)); + ss << "u" << std::setfill('0') << std::setw(8) << std::hex << distributed; + return SASS_MEMORY_NEW(String_Quoted, pstate, ss.str()); + } + + Signature is_bracketed_sig = "is-bracketed($list)"; + BUILT_IN(is_bracketed) + { + Value_Obj value = ARG("$list", Value); + List_Obj list = Cast(value); + return SASS_MEMORY_NEW(Boolean, pstate, list && list->is_bracketed()); + } + + Signature content_exists_sig = "content-exists()"; + BUILT_IN(content_exists) + { + if (!d_env.has_global("is_in_mixin")) { + error("Cannot call content-exists() except within a mixin.", pstate, traces); + } + return SASS_MEMORY_NEW(Boolean, pstate, d_env.has_lexical("@content[m]")); + } + + Signature get_function_sig = "get-function($name, $css: false)"; + BUILT_IN(get_function) + { + String_Constant_Ptr ss = Cast(env["$name"]); + if (!ss) { + error("$name: " + (env["$name"]->to_string()) + " is not a string for `get-function'", pstate, traces); + } + + std::string name = Util::normalize_underscores(unquote(ss->value())); + std::string full_name = name + "[f]"; + + Boolean_Obj css = ARG("$css", Boolean); + if (!css->is_false()) { + Definition_Ptr def = SASS_MEMORY_NEW(Definition, + pstate, + name, + SASS_MEMORY_NEW(Parameters, pstate), + SASS_MEMORY_NEW(Block, pstate, 0, false), + Definition::FUNCTION); + return SASS_MEMORY_NEW(Function, pstate, def, true); + } + + + if (!d_env.has_global(full_name)) { + error("Function not found: " + name, pstate, traces); + } + + Definition_Ptr def = Cast(d_env[full_name]); + return SASS_MEMORY_NEW(Function, pstate, def, false); + } + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/functions.hpp b/mybulma/node_modules/node-sass/src/libsass/src/functions.hpp new file mode 100644 index 0000000..7019be9 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/functions.hpp @@ -0,0 +1,198 @@ +#ifndef SASS_FUNCTIONS_H +#define SASS_FUNCTIONS_H + +#include "listize.hpp" +#include "position.hpp" +#include "environment.hpp" +#include "ast_fwd_decl.hpp" +#include "sass/functions.h" + +#define BUILT_IN(name) Expression_Ptr \ +name(Env& env, Env& d_env, Context& ctx, Signature sig, ParserState pstate, Backtraces traces, std::vector selector_stack) + +namespace Sass { + struct Backtrace; + typedef const char* Signature; + typedef Expression_Ptr (*Native_Function)(Env&, Env&, Context&, Signature, ParserState, Backtraces, std::vector); + + Definition_Ptr make_native_function(Signature, Native_Function, Context& ctx); + Definition_Ptr make_c_function(Sass_Function_Entry c_func, Context& ctx); + + std::string function_name(Signature); + + namespace Functions { + + extern Signature rgb_sig; + extern Signature rgba_4_sig; + extern Signature rgba_2_sig; + extern Signature red_sig; + extern Signature green_sig; + extern Signature blue_sig; + extern Signature mix_sig; + extern Signature hsl_sig; + extern Signature hsla_sig; + extern Signature hue_sig; + extern Signature saturation_sig; + extern Signature lightness_sig; + extern Signature adjust_hue_sig; + extern Signature lighten_sig; + extern Signature darken_sig; + extern Signature saturate_sig; + extern Signature desaturate_sig; + extern Signature grayscale_sig; + extern Signature complement_sig; + extern Signature invert_sig; + extern Signature alpha_sig; + extern Signature opacity_sig; + extern Signature opacify_sig; + extern Signature fade_in_sig; + extern Signature transparentize_sig; + extern Signature fade_out_sig; + extern Signature adjust_color_sig; + extern Signature scale_color_sig; + extern Signature change_color_sig; + extern Signature ie_hex_str_sig; + extern Signature unquote_sig; + extern Signature quote_sig; + extern Signature str_length_sig; + extern Signature str_insert_sig; + extern Signature str_index_sig; + extern Signature str_slice_sig; + extern Signature to_upper_case_sig; + extern Signature to_lower_case_sig; + extern Signature percentage_sig; + extern Signature round_sig; + extern Signature ceil_sig; + extern Signature floor_sig; + extern Signature abs_sig; + extern Signature min_sig; + extern Signature max_sig; + extern Signature inspect_sig; + extern Signature random_sig; + extern Signature length_sig; + extern Signature nth_sig; + extern Signature index_sig; + extern Signature join_sig; + extern Signature append_sig; + extern Signature zip_sig; + extern Signature list_separator_sig; + extern Signature type_of_sig; + extern Signature unit_sig; + extern Signature unitless_sig; + extern Signature comparable_sig; + extern Signature variable_exists_sig; + extern Signature global_variable_exists_sig; + extern Signature function_exists_sig; + extern Signature mixin_exists_sig; + extern Signature feature_exists_sig; + extern Signature call_sig; + extern Signature not_sig; + extern Signature if_sig; + extern Signature map_get_sig; + extern Signature map_merge_sig; + extern Signature map_remove_sig; + extern Signature map_keys_sig; + extern Signature map_values_sig; + extern Signature map_has_key_sig; + extern Signature keywords_sig; + extern Signature set_nth_sig; + extern Signature unique_id_sig; + extern Signature selector_nest_sig; + extern Signature selector_append_sig; + extern Signature selector_extend_sig; + extern Signature selector_replace_sig; + extern Signature selector_unify_sig; + extern Signature is_superselector_sig; + extern Signature simple_selectors_sig; + extern Signature selector_parse_sig; + extern Signature is_bracketed_sig; + extern Signature content_exists_sig; + extern Signature get_function_sig; + + BUILT_IN(rgb); + BUILT_IN(rgba_4); + BUILT_IN(rgba_2); + BUILT_IN(red); + BUILT_IN(green); + BUILT_IN(blue); + BUILT_IN(mix); + BUILT_IN(hsl); + BUILT_IN(hsla); + BUILT_IN(hue); + BUILT_IN(saturation); + BUILT_IN(lightness); + BUILT_IN(adjust_hue); + BUILT_IN(lighten); + BUILT_IN(darken); + BUILT_IN(saturate); + BUILT_IN(desaturate); + BUILT_IN(grayscale); + BUILT_IN(complement); + BUILT_IN(invert); + BUILT_IN(alpha); + BUILT_IN(opacify); + BUILT_IN(transparentize); + BUILT_IN(adjust_color); + BUILT_IN(scale_color); + BUILT_IN(change_color); + BUILT_IN(ie_hex_str); + BUILT_IN(sass_unquote); + BUILT_IN(sass_quote); + BUILT_IN(str_length); + BUILT_IN(str_insert); + BUILT_IN(str_index); + BUILT_IN(str_slice); + BUILT_IN(to_upper_case); + BUILT_IN(to_lower_case); + BUILT_IN(percentage); + BUILT_IN(round); + BUILT_IN(ceil); + BUILT_IN(floor); + BUILT_IN(abs); + BUILT_IN(min); + BUILT_IN(max); + BUILT_IN(inspect); + BUILT_IN(random); + BUILT_IN(length); + BUILT_IN(nth); + BUILT_IN(index); + BUILT_IN(join); + BUILT_IN(append); + BUILT_IN(zip); + BUILT_IN(list_separator); + BUILT_IN(type_of); + BUILT_IN(unit); + BUILT_IN(unitless); + BUILT_IN(comparable); + BUILT_IN(variable_exists); + BUILT_IN(global_variable_exists); + BUILT_IN(function_exists); + BUILT_IN(mixin_exists); + BUILT_IN(feature_exists); + BUILT_IN(call); + BUILT_IN(sass_not); + BUILT_IN(sass_if); + BUILT_IN(map_get); + BUILT_IN(map_merge); + BUILT_IN(map_remove); + BUILT_IN(map_keys); + BUILT_IN(map_values); + BUILT_IN(map_has_key); + BUILT_IN(keywords); + BUILT_IN(set_nth); + BUILT_IN(unique_id); + BUILT_IN(selector_nest); + BUILT_IN(selector_append); + BUILT_IN(selector_extend); + BUILT_IN(selector_replace); + BUILT_IN(selector_unify); + BUILT_IN(is_superselector); + BUILT_IN(simple_selectors); + BUILT_IN(selector_parse); + BUILT_IN(is_bracketed); + BUILT_IN(content_exists); + BUILT_IN(get_function); + } +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/inspect.cpp b/mybulma/node_modules/node-sass/src/libsass/src/inspect.cpp new file mode 100644 index 0000000..5cd8cc0 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/inspect.cpp @@ -0,0 +1,1138 @@ +#include "sass.hpp" +#include +#include +#include +#include +#include +#include + +#include "ast.hpp" +#include "inspect.hpp" +#include "context.hpp" +#include "listize.hpp" +#include "color_maps.hpp" +#include "utf8/checked.h" + +namespace Sass { + + Inspect::Inspect(const Emitter& emi) + : Emitter(emi) + { } + Inspect::~Inspect() { } + + // statements + void Inspect::operator()(Block_Ptr block) + { + if (!block->is_root()) { + add_open_mapping(block); + append_scope_opener(); + } + if (output_style() == NESTED) indentation += block->tabs(); + for (size_t i = 0, L = block->length(); i < L; ++i) { + (*block)[i]->perform(this); + } + if (output_style() == NESTED) indentation -= block->tabs(); + if (!block->is_root()) { + append_scope_closer(); + add_close_mapping(block); + } + + } + + void Inspect::operator()(Ruleset_Ptr ruleset) + { + if (ruleset->selector()) { + opt.in_selector = true; + ruleset->selector()->perform(this); + opt.in_selector = false; + } + if (ruleset->block()) { + ruleset->block()->perform(this); + } + } + + void Inspect::operator()(Keyframe_Rule_Ptr rule) + { + if (rule->name()) rule->name()->perform(this); + if (rule->block()) rule->block()->perform(this); + } + + void Inspect::operator()(Bubble_Ptr bubble) + { + append_indentation(); + append_token("::BUBBLE", bubble); + append_scope_opener(); + bubble->node()->perform(this); + append_scope_closer(); + } + + void Inspect::operator()(Media_Block_Ptr media_block) + { + append_indentation(); + append_token("@media", media_block); + append_mandatory_space(); + in_media_block = true; + media_block->media_queries()->perform(this); + in_media_block = false; + media_block->block()->perform(this); + } + + void Inspect::operator()(Supports_Block_Ptr feature_block) + { + append_indentation(); + append_token("@supports", feature_block); + append_mandatory_space(); + feature_block->condition()->perform(this); + feature_block->block()->perform(this); + } + + void Inspect::operator()(At_Root_Block_Ptr at_root_block) + { + append_indentation(); + append_token("@at-root ", at_root_block); + append_mandatory_space(); + if(at_root_block->expression()) at_root_block->expression()->perform(this); + if(at_root_block->block()) at_root_block->block()->perform(this); + } + + void Inspect::operator()(Directive_Ptr at_rule) + { + append_indentation(); + append_token(at_rule->keyword(), at_rule); + if (at_rule->selector()) { + append_mandatory_space(); + bool was_wrapped = in_wrapped; + in_wrapped = true; + at_rule->selector()->perform(this); + in_wrapped = was_wrapped; + } + if (at_rule->value()) { + append_mandatory_space(); + at_rule->value()->perform(this); + } + if (at_rule->block()) { + at_rule->block()->perform(this); + } + else { + append_delimiter(); + } + } + + void Inspect::operator()(Declaration_Ptr dec) + { + if (dec->value()->concrete_type() == Expression::NULL_VAL) return; + bool was_decl = in_declaration; + in_declaration = true; + LOCAL_FLAG(in_custom_property, dec->is_custom_property()); + + if (output_style() == NESTED) + indentation += dec->tabs(); + append_indentation(); + if (dec->property()) + dec->property()->perform(this); + append_colon_separator(); + + if (dec->value()->concrete_type() == Expression::SELECTOR) { + Listize listize; + Expression_Obj ls = dec->value()->perform(&listize); + ls->perform(this); + } else { + dec->value()->perform(this); + } + + if (dec->is_important()) { + append_optional_space(); + append_string("!important"); + } + append_delimiter(); + if (output_style() == NESTED) + indentation -= dec->tabs(); + in_declaration = was_decl; + } + + void Inspect::operator()(Assignment_Ptr assn) + { + append_token(assn->variable(), assn); + append_colon_separator(); + assn->value()->perform(this); + if (assn->is_default()) { + append_optional_space(); + append_string("!default"); + } + append_delimiter(); + } + + void Inspect::operator()(Import_Ptr import) + { + if (!import->urls().empty()) { + append_token("@import", import); + append_mandatory_space(); + + import->urls().front()->perform(this); + if (import->urls().size() == 1) { + if (import->import_queries()) { + append_mandatory_space(); + import->import_queries()->perform(this); + } + } + append_delimiter(); + for (size_t i = 1, S = import->urls().size(); i < S; ++i) { + append_mandatory_linefeed(); + append_token("@import", import); + append_mandatory_space(); + + import->urls()[i]->perform(this); + if (import->urls().size() - 1 == i) { + if (import->import_queries()) { + append_mandatory_space(); + import->import_queries()->perform(this); + } + } + append_delimiter(); + } + } + } + + void Inspect::operator()(Import_Stub_Ptr import) + { + append_indentation(); + append_token("@import", import); + append_mandatory_space(); + append_string(import->imp_path()); + append_delimiter(); + } + + void Inspect::operator()(Warning_Ptr warning) + { + append_indentation(); + append_token("@warn", warning); + append_mandatory_space(); + warning->message()->perform(this); + append_delimiter(); + } + + void Inspect::operator()(Error_Ptr error) + { + append_indentation(); + append_token("@error", error); + append_mandatory_space(); + error->message()->perform(this); + append_delimiter(); + } + + void Inspect::operator()(Debug_Ptr debug) + { + append_indentation(); + append_token("@debug", debug); + append_mandatory_space(); + debug->value()->perform(this); + append_delimiter(); + } + + void Inspect::operator()(Comment_Ptr comment) + { + in_comment = true; + comment->text()->perform(this); + in_comment = false; + } + + void Inspect::operator()(If_Ptr cond) + { + append_indentation(); + append_token("@if", cond); + append_mandatory_space(); + cond->predicate()->perform(this); + cond->block()->perform(this); + if (cond->alternative()) { + append_optional_linefeed(); + append_indentation(); + append_string("else"); + cond->alternative()->perform(this); + } + } + + void Inspect::operator()(For_Ptr loop) + { + append_indentation(); + append_token("@for", loop); + append_mandatory_space(); + append_string(loop->variable()); + append_string(" from "); + loop->lower_bound()->perform(this); + append_string(loop->is_inclusive() ? " through " : " to "); + loop->upper_bound()->perform(this); + loop->block()->perform(this); + } + + void Inspect::operator()(Each_Ptr loop) + { + append_indentation(); + append_token("@each", loop); + append_mandatory_space(); + append_string(loop->variables()[0]); + for (size_t i = 1, L = loop->variables().size(); i < L; ++i) { + append_comma_separator(); + append_string(loop->variables()[i]); + } + append_string(" in "); + loop->list()->perform(this); + loop->block()->perform(this); + } + + void Inspect::operator()(While_Ptr loop) + { + append_indentation(); + append_token("@while", loop); + append_mandatory_space(); + loop->predicate()->perform(this); + loop->block()->perform(this); + } + + void Inspect::operator()(Return_Ptr ret) + { + append_indentation(); + append_token("@return", ret); + append_mandatory_space(); + ret->value()->perform(this); + append_delimiter(); + } + + void Inspect::operator()(Extension_Ptr extend) + { + append_indentation(); + append_token("@extend", extend); + append_mandatory_space(); + extend->selector()->perform(this); + append_delimiter(); + } + + void Inspect::operator()(Definition_Ptr def) + { + append_indentation(); + if (def->type() == Definition::MIXIN) { + append_token("@mixin", def); + append_mandatory_space(); + } else { + append_token("@function", def); + append_mandatory_space(); + } + append_string(def->name()); + def->parameters()->perform(this); + def->block()->perform(this); + } + + void Inspect::operator()(Mixin_Call_Ptr call) + { + append_indentation(); + append_token("@include", call); + append_mandatory_space(); + append_string(call->name()); + if (call->arguments()) { + call->arguments()->perform(this); + } + if (call->block()) { + append_optional_space(); + call->block()->perform(this); + } + if (!call->block()) append_delimiter(); + } + + void Inspect::operator()(Content_Ptr content) + { + append_indentation(); + append_token("@content", content); + append_delimiter(); + } + + void Inspect::operator()(Map_Ptr map) + { + if (output_style() == TO_SASS && map->empty()) { + append_string("()"); + return; + } + if (map->empty()) return; + if (map->is_invisible()) return; + bool items_output = false; + append_string("("); + for (auto key : map->keys()) { + if (items_output) append_comma_separator(); + key->perform(this); + append_colon_separator(); + LOCAL_FLAG(in_space_array, true); + LOCAL_FLAG(in_comma_array, true); + map->at(key)->perform(this); + items_output = true; + } + append_string(")"); + } + + std::string Inspect::lbracket(List_Ptr list) { + return list->is_bracketed() ? "[" : "("; + } + + std::string Inspect::rbracket(List_Ptr list) { + return list->is_bracketed() ? "]" : ")"; + } + + void Inspect::operator()(List_Ptr list) + { + if (list->empty() && (output_style() == TO_SASS || list->is_bracketed())) { + append_string(lbracket(list)); + append_string(rbracket(list)); + return; + } + std::string sep(list->separator() == SASS_SPACE ? " " : ","); + if ((output_style() != COMPRESSED) && sep == ",") sep += " "; + else if (in_media_block && sep != " ") sep += " "; // verified + if (list->empty()) return; + bool items_output = false; + + bool was_space_array = in_space_array; + bool was_comma_array = in_comma_array; + // if the list is bracketed, always include the left bracket + if (list->is_bracketed()) { + append_string(lbracket(list)); + } + // probably ruby sass eqivalent of element_needs_parens + else if (output_style() == TO_SASS && + list->length() == 1 && + !list->from_selector() && + !Cast(list->at(0)) && + !Cast(list->at(0)) + ) { + append_string(lbracket(list)); + } + else if (!in_declaration && (list->separator() == SASS_HASH || + (list->separator() == SASS_SPACE && in_space_array) || + (list->separator() == SASS_COMMA && in_comma_array) + )) { + append_string(lbracket(list)); + } + + if (list->separator() == SASS_SPACE) in_space_array = true; + else if (list->separator() == SASS_COMMA) in_comma_array = true; + + for (size_t i = 0, L = list->size(); i < L; ++i) { + if (list->separator() == SASS_HASH) + { sep[0] = i % 2 ? ':' : ','; } + Expression_Obj list_item = list->at(i); + if (output_style() != TO_SASS) { + if (list_item->is_invisible()) { + // this fixes an issue with "" in a list + if (!Cast(list_item)) { + continue; + } + } + } + if (items_output) { + append_string(sep); + } + if (items_output && sep != " ") + append_optional_space(); + list_item->perform(this); + items_output = true; + } + + in_comma_array = was_comma_array; + in_space_array = was_space_array; + + // if the list is bracketed, always include the right bracket + if (list->is_bracketed()) { + if (list->separator() == SASS_COMMA && list->size() == 1) { + append_string(","); + } + append_string(rbracket(list)); + } + // probably ruby sass eqivalent of element_needs_parens + else if (output_style() == TO_SASS && + list->length() == 1 && + !list->from_selector() && + !Cast(list->at(0)) && + !Cast(list->at(0)) + ) { + append_string(","); + append_string(rbracket(list)); + } + else if (!in_declaration && (list->separator() == SASS_HASH || + (list->separator() == SASS_SPACE && in_space_array) || + (list->separator() == SASS_COMMA && in_comma_array) + )) { + append_string(rbracket(list)); + } + + } + + void Inspect::operator()(Binary_Expression_Ptr expr) + { + expr->left()->perform(this); + if ( in_media_block || + (output_style() == INSPECT) || ( + expr->op().ws_before + && (!expr->is_interpolant()) + && (expr->is_left_interpolant() || + expr->is_right_interpolant()) + + )) append_string(" "); + switch (expr->optype()) { + case Sass_OP::AND: append_string("&&"); break; + case Sass_OP::OR: append_string("||"); break; + case Sass_OP::EQ: append_string("=="); break; + case Sass_OP::NEQ: append_string("!="); break; + case Sass_OP::GT: append_string(">"); break; + case Sass_OP::GTE: append_string(">="); break; + case Sass_OP::LT: append_string("<"); break; + case Sass_OP::LTE: append_string("<="); break; + case Sass_OP::ADD: append_string("+"); break; + case Sass_OP::SUB: append_string("-"); break; + case Sass_OP::MUL: append_string("*"); break; + case Sass_OP::DIV: append_string("/"); break; + case Sass_OP::MOD: append_string("%"); break; + default: break; // shouldn't get here + } + if ( in_media_block || + (output_style() == INSPECT) || ( + expr->op().ws_after + && (!expr->is_interpolant()) + && (expr->is_left_interpolant() || + expr->is_right_interpolant()) + )) append_string(" "); + expr->right()->perform(this); + } + + void Inspect::operator()(Unary_Expression_Ptr expr) + { + if (expr->optype() == Unary_Expression::PLUS) append_string("+"); + else if (expr->optype() == Unary_Expression::SLASH) append_string("/"); + else append_string("-"); + expr->operand()->perform(this); + } + + void Inspect::operator()(Function_Call_Ptr call) + { + append_token(call->name(), call); + call->arguments()->perform(this); + } + + void Inspect::operator()(Function_Call_Schema_Ptr call) + { + call->name()->perform(this); + call->arguments()->perform(this); + } + + void Inspect::operator()(Variable_Ptr var) + { + append_token(var->name(), var); + } + + void Inspect::operator()(Number_Ptr n) + { + + std::string res; + + // reduce units + n->reduce(); + + // check if the fractional part of the value equals to zero + // neat trick from http://stackoverflow.com/a/1521682/1550314 + // double int_part; bool is_int = modf(value, &int_part) == 0.0; + + // this all cannot be done with one run only, since fixed + // output differs from normal output and regular output + // can contain scientific notation which we do not want! + + // first sample + std::stringstream ss; + ss.precision(12); + ss << n->value(); + + // check if we got scientific notation in result + if (ss.str().find_first_of("e") != std::string::npos) { + ss.clear(); ss.str(std::string()); + ss.precision(std::max(12, opt.precision)); + ss << std::fixed << n->value(); + } + + std::string tmp = ss.str(); + size_t pos_point = tmp.find_first_of(".,"); + size_t pos_fract = tmp.find_last_not_of("0"); + bool is_int = pos_point == pos_fract || + pos_point == std::string::npos; + + // reset stream for another run + ss.clear(); ss.str(std::string()); + + // take a shortcut for integers + if (is_int) + { + ss.precision(0); + ss << std::fixed << n->value(); + res = std::string(ss.str()); + } + // process floats + else + { + // do we have have too much precision? + if (pos_fract < opt.precision + pos_point) + { ss.precision((int)(pos_fract - pos_point)); } + else { ss.precision(opt.precision); } + // round value again + ss << std::fixed << n->value(); + res = std::string(ss.str()); + // maybe we truncated up to decimal point + size_t pos = res.find_last_not_of("0"); + // handle case where we have a "0" + if (pos == std::string::npos) { + res = "0.0"; + } else { + bool at_dec_point = res[pos] == '.' || + res[pos] == ','; + // don't leave a blank point + if (at_dec_point) ++ pos; + res.resize (pos + 1); + } + } + + // some final cosmetics + if (res == "0.0") res = "0"; + else if (res == "") res = "0"; + else if (res == "-0") res = "0"; + else if (res == "-0.0") res = "0"; + else if (opt.output_style == COMPRESSED) + { + // check if handling negative nr + size_t off = res[0] == '-' ? 1 : 0; + // remove leading zero from floating point in compressed mode + if (n->zero() && res[off] == '0' && res[off+1] == '.') res.erase(off, 1); + } + + // add unit now + res += n->unit(); + + // output the final token + append_token(res, n); + } + + // helper function for serializing colors + template + static double cap_channel(double c) { + if (c > range) return range; + else if (c < 0) return 0; + else return c; + } + + void Inspect::operator()(Color_Ptr c) + { + // output the final token + std::stringstream ss; + + // original color name + // maybe an unknown token + std::string name = c->disp(); + + if (opt.in_selector && name != "") { + append_token(name, c); + return; + } + + // resolved color + std::string res_name = name; + + double r = Sass::round(cap_channel<0xff>(c->r()), opt.precision); + double g = Sass::round(cap_channel<0xff>(c->g()), opt.precision); + double b = Sass::round(cap_channel<0xff>(c->b()), opt.precision); + double a = cap_channel<1> (c->a()); + + // get color from given name (if one was given at all) + if (name != "" && name_to_color(name)) { + Color_Ptr_Const n = name_to_color(name); + r = Sass::round(cap_channel<0xff>(n->r()), opt.precision); + g = Sass::round(cap_channel<0xff>(n->g()), opt.precision); + b = Sass::round(cap_channel<0xff>(n->b()), opt.precision); + a = cap_channel<1> (n->a()); + } + // otherwise get the possible resolved color name + else { + double numval = r * 0x10000 + g * 0x100 + b; + if (color_to_name(numval)) + res_name = color_to_name(numval); + } + + std::stringstream hexlet; + // dart sass compressed all colors in regular css always + // ruby sass and libsass does it only when not delayed + // since color math is going to be removed, this can go too + bool compressed = opt.output_style == COMPRESSED; + hexlet << '#' << std::setw(1) << std::setfill('0'); + // create a short color hexlet if there is any need for it + if (compressed && is_color_doublet(r, g, b) && a == 1) { + hexlet << std::hex << std::setw(1) << (static_cast(r) >> 4); + hexlet << std::hex << std::setw(1) << (static_cast(g) >> 4); + hexlet << std::hex << std::setw(1) << (static_cast(b) >> 4); + } else { + hexlet << std::hex << std::setw(2) << static_cast(r); + hexlet << std::hex << std::setw(2) << static_cast(g); + hexlet << std::hex << std::setw(2) << static_cast(b); + } + + if (compressed && !c->is_delayed()) name = ""; + if (opt.output_style == INSPECT && a >= 1) { + append_token(hexlet.str(), c); + return; + } + + // retain the originally specified color definition if unchanged + if (name != "") { + ss << name; + } + else if (a >= 1) { + if (res_name != "") { + if (compressed && hexlet.str().size() < res_name.size()) { + ss << hexlet.str(); + } else { + ss << res_name; + } + } + else { + ss << hexlet.str(); + } + } + else { + ss << "rgba("; + ss << static_cast(r) << ","; + if (!compressed) ss << " "; + ss << static_cast(g) << ","; + if (!compressed) ss << " "; + ss << static_cast(b) << ","; + if (!compressed) ss << " "; + ss << a << ')'; + } + + append_token(ss.str(), c); + + } + + void Inspect::operator()(Boolean_Ptr b) + { + // output the final token + append_token(b->value() ? "true" : "false", b); + } + + void Inspect::operator()(String_Schema_Ptr ss) + { + // Evaluation should turn these into String_Constants, + // so this method is only for inspection purposes. + for (size_t i = 0, L = ss->length(); i < L; ++i) { + if ((*ss)[i]->is_interpolant()) append_string("#{"); + (*ss)[i]->perform(this); + if ((*ss)[i]->is_interpolant()) append_string("}"); + } + } + + void Inspect::operator()(String_Constant_Ptr s) + { + append_token(s->value(), s); + } + + void Inspect::operator()(String_Quoted_Ptr s) + { + if (const char q = s->quote_mark()) { + append_token(quote(s->value(), q), s); + } else { + append_token(s->value(), s); + } + } + + void Inspect::operator()(Custom_Error_Ptr e) + { + append_token(e->message(), e); + } + + void Inspect::operator()(Custom_Warning_Ptr w) + { + append_token(w->message(), w); + } + + void Inspect::operator()(Supports_Operator_Ptr so) + { + + if (so->needs_parens(so->left())) append_string("("); + so->left()->perform(this); + if (so->needs_parens(so->left())) append_string(")"); + + if (so->operand() == Supports_Operator::AND) { + append_mandatory_space(); + append_token("and", so); + append_mandatory_space(); + } else if (so->operand() == Supports_Operator::OR) { + append_mandatory_space(); + append_token("or", so); + append_mandatory_space(); + } + + if (so->needs_parens(so->right())) append_string("("); + so->right()->perform(this); + if (so->needs_parens(so->right())) append_string(")"); + } + + void Inspect::operator()(Supports_Negation_Ptr sn) + { + append_token("not", sn); + append_mandatory_space(); + if (sn->needs_parens(sn->condition())) append_string("("); + sn->condition()->perform(this); + if (sn->needs_parens(sn->condition())) append_string(")"); + } + + void Inspect::operator()(Supports_Declaration_Ptr sd) + { + append_string("("); + sd->feature()->perform(this); + append_string(": "); + sd->value()->perform(this); + append_string(")"); + } + + void Inspect::operator()(Supports_Interpolation_Ptr sd) + { + sd->value()->perform(this); + } + + void Inspect::operator()(Media_Query_Ptr mq) + { + size_t i = 0; + if (mq->media_type()) { + if (mq->is_negated()) append_string("not "); + else if (mq->is_restricted()) append_string("only "); + mq->media_type()->perform(this); + } + else { + (*mq)[i++]->perform(this); + } + for (size_t L = mq->length(); i < L; ++i) { + append_string(" and "); + (*mq)[i]->perform(this); + } + } + + void Inspect::operator()(Media_Query_Expression_Ptr mqe) + { + if (mqe->is_interpolated()) { + mqe->feature()->perform(this); + } + else { + append_string("("); + mqe->feature()->perform(this); + if (mqe->value()) { + append_string(": "); // verified + mqe->value()->perform(this); + } + append_string(")"); + } + } + + void Inspect::operator()(At_Root_Query_Ptr ae) + { + if (ae->feature()) { + append_string("("); + ae->feature()->perform(this); + if (ae->value()) { + append_colon_separator(); + ae->value()->perform(this); + } + append_string(")"); + } + } + + void Inspect::operator()(Function_Ptr f) + { + append_token("get-function", f); + append_string("("); + append_string(quote(f->name())); + append_string(")"); + } + + void Inspect::operator()(Null_Ptr n) + { + // output the final token + append_token("null", n); + } + + // parameters and arguments + void Inspect::operator()(Parameter_Ptr p) + { + append_token(p->name(), p); + if (p->default_value()) { + append_colon_separator(); + p->default_value()->perform(this); + } + else if (p->is_rest_parameter()) { + append_string("..."); + } + } + + void Inspect::operator()(Parameters_Ptr p) + { + append_string("("); + if (!p->empty()) { + (*p)[0]->perform(this); + for (size_t i = 1, L = p->length(); i < L; ++i) { + append_comma_separator(); + (*p)[i]->perform(this); + } + } + append_string(")"); + } + + void Inspect::operator()(Argument_Ptr a) + { + if (!a->name().empty()) { + append_token(a->name(), a); + append_colon_separator(); + } + if (!a->value()) return; + // Special case: argument nulls can be ignored + if (a->value()->concrete_type() == Expression::NULL_VAL) { + return; + } + if (a->value()->concrete_type() == Expression::STRING) { + String_Constant_Ptr s = Cast(a->value()); + if (s) s->perform(this); + } else { + a->value()->perform(this); + } + if (a->is_rest_argument()) { + append_string("..."); + } + } + + void Inspect::operator()(Arguments_Ptr a) + { + append_string("("); + if (!a->empty()) { + (*a)[0]->perform(this); + for (size_t i = 1, L = a->length(); i < L; ++i) { + append_string(", "); // verified + // Sass Bug? append_comma_separator(); + (*a)[i]->perform(this); + } + } + append_string(")"); + } + + void Inspect::operator()(Selector_Schema_Ptr s) + { + opt.in_selector = true; + s->contents()->perform(this); + opt.in_selector = false; + } + + void Inspect::operator()(Parent_Selector_Ptr p) + { + if (p->is_real_parent_ref()) append_string("&"); + } + + void Inspect::operator()(Placeholder_Selector_Ptr s) + { + append_token(s->name(), s); + if (s->has_line_break()) append_optional_linefeed(); + if (s->has_line_break()) append_indentation(); + + } + + void Inspect::operator()(Element_Selector_Ptr s) + { + append_token(s->ns_name(), s); + } + + void Inspect::operator()(Class_Selector_Ptr s) + { + append_token(s->ns_name(), s); + if (s->has_line_break()) append_optional_linefeed(); + if (s->has_line_break()) append_indentation(); + } + + void Inspect::operator()(Id_Selector_Ptr s) + { + append_token(s->ns_name(), s); + if (s->has_line_break()) append_optional_linefeed(); + if (s->has_line_break()) append_indentation(); + } + + void Inspect::operator()(Attribute_Selector_Ptr s) + { + append_string("["); + add_open_mapping(s); + append_token(s->ns_name(), s); + if (!s->matcher().empty()) { + append_string(s->matcher()); + if (s->value() && *s->value()) { + s->value()->perform(this); + } + } + add_close_mapping(s); + if (s->modifier() != 0) { + append_mandatory_space(); + append_char(s->modifier()); + } + append_string("]"); + } + + void Inspect::operator()(Pseudo_Selector_Ptr s) + { + append_token(s->ns_name(), s); + if (s->expression()) { + append_string("("); + s->expression()->perform(this); + append_string(")"); + } + } + + void Inspect::operator()(Wrapped_Selector_Ptr s) + { + if (s->name() == " ") { + append_string(""); + } else { + bool was = in_wrapped; + in_wrapped = true; + append_token(s->name(), s); + append_string("("); + bool was_comma_array = in_comma_array; + in_comma_array = false; + s->selector()->perform(this); + in_comma_array = was_comma_array; + append_string(")"); + in_wrapped = was; + } + } + + void Inspect::operator()(Compound_Selector_Ptr s) + { + for (size_t i = 0, L = s->length(); i < L; ++i) { + (*s)[i]->perform(this); + } + if (s->has_line_break()) { + if (output_style() != COMPACT) { + append_optional_linefeed(); + } + } + } + + void Inspect::operator()(Complex_Selector_Ptr c) + { + Compound_Selector_Obj head = c->head(); + Complex_Selector_Obj tail = c->tail(); + Complex_Selector::Combinator comb = c->combinator(); + + if (comb == Complex_Selector::ANCESTOR_OF && (!head || head->empty())) { + if (tail) tail->perform(this); + return; + } + + if (c->has_line_feed()) { + if (!(c->has_parent_ref())) { + append_optional_linefeed(); + append_indentation(); + } + } + + if (head && head->length() != 0) head->perform(this); + bool is_empty = !head || head->length() == 0 || head->is_empty_reference(); + bool is_tail = head && !head->is_empty_reference() && tail; + if (output_style() == COMPRESSED && comb != Complex_Selector::ANCESTOR_OF) scheduled_space = 0; + + switch (comb) { + case Complex_Selector::ANCESTOR_OF: + if (is_tail) append_mandatory_space(); + break; + case Complex_Selector::PARENT_OF: + append_optional_space(); + append_string(">"); + append_optional_space(); + break; + case Complex_Selector::ADJACENT_TO: + append_optional_space(); + append_string("+"); + append_optional_space(); + break; + case Complex_Selector::REFERENCE: + append_mandatory_space(); + append_string("/"); + if (c->reference()) c->reference()->perform(this); + append_string("/"); + append_mandatory_space(); + break; + case Complex_Selector::PRECEDES: + if (is_empty) append_optional_space(); + else append_mandatory_space(); + append_string("~"); + if (tail) append_mandatory_space(); + else append_optional_space(); + break; + default: break; + } + if (tail && comb != Complex_Selector::ANCESTOR_OF) { + if (c->has_line_break()) append_optional_linefeed(); + } + if (tail) tail->perform(this); + if (!tail && c->has_line_break()) { + if (output_style() == COMPACT) { + append_mandatory_space(); + } + } + } + + void Inspect::operator()(Selector_List_Ptr g) + { + + if (g->empty()) { + if (output_style() == TO_SASS) { + append_token("()", g); + } + return; + } + + + bool was_comma_array = in_comma_array; + // probably ruby sass eqivalent of element_needs_parens + if (output_style() == TO_SASS && g->length() == 1 && + (!Cast((*g)[0]) && + !Cast((*g)[0]))) { + append_string("("); + } + else if (!in_declaration && in_comma_array) { + append_string("("); + } + + if (in_declaration) in_comma_array = true; + + for (size_t i = 0, L = g->length(); i < L; ++i) { + if (!in_wrapped && i == 0) append_indentation(); + if ((*g)[i] == 0) continue; + schedule_mapping(g->at(i)->last()); + // add_open_mapping((*g)[i]->last()); + (*g)[i]->perform(this); + // add_close_mapping((*g)[i]->last()); + if (i < L - 1) { + scheduled_space = 0; + append_comma_separator(); + } + } + + in_comma_array = was_comma_array; + // probably ruby sass eqivalent of element_needs_parens + if (output_style() == TO_SASS && g->length() == 1 && + (!Cast((*g)[0]) && + !Cast((*g)[0]))) { + append_string(",)"); + } + else if (!in_declaration && in_comma_array) { + append_string(")"); + } + + } + + void Inspect::fallback_impl(AST_Node_Ptr n) + { + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/inspect.hpp b/mybulma/node_modules/node-sass/src/libsass/src/inspect.hpp new file mode 100644 index 0000000..c36790b --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/inspect.hpp @@ -0,0 +1,103 @@ +#ifndef SASS_INSPECT_H +#define SASS_INSPECT_H + +#include "position.hpp" +#include "operation.hpp" +#include "emitter.hpp" + +namespace Sass { + class Context; + + class Inspect : public Operation_CRTP, public Emitter { + protected: + // import all the class-specific methods and override as desired + using Operation_CRTP::operator(); + + void fallback_impl(AST_Node_Ptr n); + + public: + + Inspect(const Emitter& emi); + virtual ~Inspect(); + + // statements + virtual void operator()(Block_Ptr); + virtual void operator()(Ruleset_Ptr); + virtual void operator()(Bubble_Ptr); + virtual void operator()(Supports_Block_Ptr); + virtual void operator()(Media_Block_Ptr); + virtual void operator()(At_Root_Block_Ptr); + virtual void operator()(Directive_Ptr); + virtual void operator()(Keyframe_Rule_Ptr); + virtual void operator()(Declaration_Ptr); + virtual void operator()(Assignment_Ptr); + virtual void operator()(Import_Ptr); + virtual void operator()(Import_Stub_Ptr); + virtual void operator()(Warning_Ptr); + virtual void operator()(Error_Ptr); + virtual void operator()(Debug_Ptr); + virtual void operator()(Comment_Ptr); + virtual void operator()(If_Ptr); + virtual void operator()(For_Ptr); + virtual void operator()(Each_Ptr); + virtual void operator()(While_Ptr); + virtual void operator()(Return_Ptr); + virtual void operator()(Extension_Ptr); + virtual void operator()(Definition_Ptr); + virtual void operator()(Mixin_Call_Ptr); + virtual void operator()(Content_Ptr); + // expressions + virtual void operator()(Map_Ptr); + virtual void operator()(Function_Ptr); + virtual void operator()(List_Ptr); + virtual void operator()(Binary_Expression_Ptr); + virtual void operator()(Unary_Expression_Ptr); + virtual void operator()(Function_Call_Ptr); + virtual void operator()(Function_Call_Schema_Ptr); + // virtual void operator()(Custom_Warning_Ptr); + // virtual void operator()(Custom_Error_Ptr); + virtual void operator()(Variable_Ptr); + virtual void operator()(Number_Ptr); + virtual void operator()(Color_Ptr); + virtual void operator()(Boolean_Ptr); + virtual void operator()(String_Schema_Ptr); + virtual void operator()(String_Constant_Ptr); + virtual void operator()(String_Quoted_Ptr); + virtual void operator()(Custom_Error_Ptr); + virtual void operator()(Custom_Warning_Ptr); + virtual void operator()(Supports_Operator_Ptr); + virtual void operator()(Supports_Negation_Ptr); + virtual void operator()(Supports_Declaration_Ptr); + virtual void operator()(Supports_Interpolation_Ptr); + virtual void operator()(Media_Query_Ptr); + virtual void operator()(Media_Query_Expression_Ptr); + virtual void operator()(At_Root_Query_Ptr); + virtual void operator()(Null_Ptr); + virtual void operator()(Parent_Selector_Ptr p); + // parameters and arguments + virtual void operator()(Parameter_Ptr); + virtual void operator()(Parameters_Ptr); + virtual void operator()(Argument_Ptr); + virtual void operator()(Arguments_Ptr); + // selectors + virtual void operator()(Selector_Schema_Ptr); + virtual void operator()(Placeholder_Selector_Ptr); + virtual void operator()(Element_Selector_Ptr); + virtual void operator()(Class_Selector_Ptr); + virtual void operator()(Id_Selector_Ptr); + virtual void operator()(Attribute_Selector_Ptr); + virtual void operator()(Pseudo_Selector_Ptr); + virtual void operator()(Wrapped_Selector_Ptr); + virtual void operator()(Compound_Selector_Ptr); + virtual void operator()(Complex_Selector_Ptr); + virtual void operator()(Selector_List_Ptr); + + virtual std::string lbracket(List_Ptr); + virtual std::string rbracket(List_Ptr); + + // template + // void fallback(U x) { fallback_impl(reinterpret_cast(x)); } + }; + +} +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/json.cpp b/mybulma/node_modules/node-sass/src/libsass/src/json.cpp new file mode 100644 index 0000000..8f433f5 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/json.cpp @@ -0,0 +1,1436 @@ +/* + Copyright (C) 2011 Joseph A. Adams (joeyadams3.14159@gmail.com) + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS +#define _CRT_NONSTDC_NO_DEPRECATE +#endif + +#include "json.hpp" + +// include utf8 library used by libsass +// ToDo: replace internal json utf8 code +#include "utf8.h" + +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) && _MSC_VER < 1900 +#include +#ifdef snprintf +#undef snprintf +#endif +extern "C" int snprintf(char *, size_t, const char *, ...); +#endif + +#define out_of_memory() do { \ + fprintf(stderr, "Out of memory.\n"); \ + exit(EXIT_FAILURE); \ + } while (0) + +/* Sadly, strdup is not portable. */ +static char *json_strdup(const char *str) +{ + char *ret = (char*) malloc(strlen(str) + 1); + if (ret == NULL) + out_of_memory(); + strcpy(ret, str); + return ret; +} + +/* String buffer */ + +typedef struct +{ + char *cur; + char *end; + char *start; +} SB; + +static void sb_init(SB *sb) +{ + sb->start = (char*) malloc(17); + if (sb->start == NULL) + out_of_memory(); + sb->cur = sb->start; + sb->end = sb->start + 16; +} + +/* sb and need may be evaluated multiple times. */ +#define sb_need(sb, need) do { \ + if ((sb)->end - (sb)->cur < (need)) \ + sb_grow(sb, need); \ + } while (0) + +static void sb_grow(SB *sb, int need) +{ + size_t length = sb->cur - sb->start; + size_t alloc = sb->end - sb->start; + + do { + alloc *= 2; + } while (alloc < length + need); + + sb->start = (char*) realloc(sb->start, alloc + 1); + if (sb->start == NULL) + out_of_memory(); + sb->cur = sb->start + length; + sb->end = sb->start + alloc; +} + +static void sb_put(SB *sb, const char *bytes, int count) +{ + sb_need(sb, count); + memcpy(sb->cur, bytes, count); + sb->cur += count; +} + +#define sb_putc(sb, c) do { \ + if ((sb)->cur >= (sb)->end) \ + sb_grow(sb, 1); \ + *(sb)->cur++ = (c); \ + } while (0) + +static void sb_puts(SB *sb, const char *str) +{ + sb_put(sb, str, (int)strlen(str)); +} + +static char *sb_finish(SB *sb) +{ + *sb->cur = 0; + assert(sb->start <= sb->cur && strlen(sb->start) == (size_t)(sb->cur - sb->start)); + return sb->start; +} + +static void sb_free(SB *sb) +{ + free(sb->start); +} + +/* + * Unicode helper functions + * + * These are taken from the ccan/charset module and customized a bit. + * Putting them here means the compiler can (choose to) inline them, + * and it keeps ccan/json from having a dependency. + * + * We use uint32_t Type for Unicode codepoints. + * We need our own because wchar_t might be 16 bits. + */ + +/* + * Validate a single UTF-8 character starting at @s. + * The string must be null-terminated. + * + * If it's valid, return its length (1 thru 4). + * If it's invalid or clipped, return 0. + * + * This function implements the syntax given in RFC3629, which is + * the same as that given in The Unicode Standard, Version 6.0. + * + * It has the following properties: + * + * * All codepoints U+0000..U+10FFFF may be encoded, + * except for U+D800..U+DFFF, which are reserved + * for UTF-16 surrogate pair encoding. + * * UTF-8 byte sequences longer than 4 bytes are not permitted, + * as they exceed the range of Unicode. + * * The sixty-six Unicode "non-characters" are permitted + * (namely, U+FDD0..U+FDEF, U+xxFFFE, and U+xxFFFF). + */ +static int utf8_validate_cz(const char *s) +{ + unsigned char c = *s++; + + if (c <= 0x7F) { /* 00..7F */ + return 1; + } else if (c <= 0xC1) { /* 80..C1 */ + /* Disallow overlong 2-byte sequence. */ + return 0; + } else if (c <= 0xDF) { /* C2..DF */ + /* Make sure subsequent byte is in the range 0x80..0xBF. */ + if (((unsigned char)*s++ & 0xC0) != 0x80) + return 0; + + return 2; + } else if (c <= 0xEF) { /* E0..EF */ + /* Disallow overlong 3-byte sequence. */ + if (c == 0xE0 && (unsigned char)*s < 0xA0) + return 0; + + /* Disallow U+D800..U+DFFF. */ + if (c == 0xED && (unsigned char)*s > 0x9F) + return 0; + + /* Make sure subsequent bytes are in the range 0x80..0xBF. */ + if (((unsigned char)*s++ & 0xC0) != 0x80) + return 0; + if (((unsigned char)*s++ & 0xC0) != 0x80) + return 0; + + return 3; + } else if (c <= 0xF4) { /* F0..F4 */ + /* Disallow overlong 4-byte sequence. */ + if (c == 0xF0 && (unsigned char)*s < 0x90) + return 0; + + /* Disallow codepoints beyond U+10FFFF. */ + if (c == 0xF4 && (unsigned char)*s > 0x8F) + return 0; + + /* Make sure subsequent bytes are in the range 0x80..0xBF. */ + if (((unsigned char)*s++ & 0xC0) != 0x80) + return 0; + if (((unsigned char)*s++ & 0xC0) != 0x80) + return 0; + if (((unsigned char)*s++ & 0xC0) != 0x80) + return 0; + + return 4; + } else { /* F5..FF */ + return 0; + } +} + +/* Validate a null-terminated UTF-8 string. */ +static bool utf8_validate(const char *s) +{ + int len; + + for (; *s != 0; s += len) { + len = utf8_validate_cz(s); + if (len == 0) + return false; + } + + return true; +} + +/* + * Read a single UTF-8 character starting at @s, + * returning the length, in bytes, of the character read. + * + * This function assumes input is valid UTF-8, + * and that there are enough characters in front of @s. + */ +static int utf8_read_char(const char *s, uint32_t *out) +{ + const unsigned char *c = (const unsigned char*) s; + + assert(utf8_validate_cz(s)); + + if (c[0] <= 0x7F) { + /* 00..7F */ + *out = c[0]; + return 1; + } else if (c[0] <= 0xDF) { + /* C2..DF (unless input is invalid) */ + *out = ((uint32_t)c[0] & 0x1F) << 6 | + ((uint32_t)c[1] & 0x3F); + return 2; + } else if (c[0] <= 0xEF) { + /* E0..EF */ + *out = ((uint32_t)c[0] & 0xF) << 12 | + ((uint32_t)c[1] & 0x3F) << 6 | + ((uint32_t)c[2] & 0x3F); + return 3; + } else { + /* F0..F4 (unless input is invalid) */ + *out = ((uint32_t)c[0] & 0x7) << 18 | + ((uint32_t)c[1] & 0x3F) << 12 | + ((uint32_t)c[2] & 0x3F) << 6 | + ((uint32_t)c[3] & 0x3F); + return 4; + } +} + +/* + * Write a single UTF-8 character to @s, + * returning the length, in bytes, of the character written. + * + * @unicode must be U+0000..U+10FFFF, but not U+D800..U+DFFF. + * + * This function will write up to 4 bytes to @out. + */ +static int utf8_write_char(uint32_t unicode, char *out) +{ + unsigned char *o = (unsigned char*) out; + + assert(unicode <= 0x10FFFF && !(unicode >= 0xD800 && unicode <= 0xDFFF)); + + if (unicode <= 0x7F) { + /* U+0000..U+007F */ + *o++ = unicode; + return 1; + } else if (unicode <= 0x7FF) { + /* U+0080..U+07FF */ + *o++ = 0xC0 | unicode >> 6; + *o++ = 0x80 | (unicode & 0x3F); + return 2; + } else if (unicode <= 0xFFFF) { + /* U+0800..U+FFFF */ + *o++ = 0xE0 | unicode >> 12; + *o++ = 0x80 | (unicode >> 6 & 0x3F); + *o++ = 0x80 | (unicode & 0x3F); + return 3; + } else { + /* U+10000..U+10FFFF */ + *o++ = 0xF0 | unicode >> 18; + *o++ = 0x80 | (unicode >> 12 & 0x3F); + *o++ = 0x80 | (unicode >> 6 & 0x3F); + *o++ = 0x80 | (unicode & 0x3F); + return 4; + } +} + +/* + * Compute the Unicode codepoint of a UTF-16 surrogate pair. + * + * @uc should be 0xD800..0xDBFF, and @lc should be 0xDC00..0xDFFF. + * If they aren't, this function returns false. + */ +static bool from_surrogate_pair(uint16_t uc, uint16_t lc, uint32_t *unicode) +{ + if (uc >= 0xD800 && uc <= 0xDBFF && lc >= 0xDC00 && lc <= 0xDFFF) { + *unicode = 0x10000 + ((((uint32_t)uc & 0x3FF) << 10) | (lc & 0x3FF)); + return true; + } else { + return false; + } +} + +/* + * Construct a UTF-16 surrogate pair given a Unicode codepoint. + * + * @unicode must be U+10000..U+10FFFF. + */ +static void to_surrogate_pair(uint32_t unicode, uint16_t *uc, uint16_t *lc) +{ + uint32_t n; + + assert(unicode >= 0x10000 && unicode <= 0x10FFFF); + + n = unicode - 0x10000; + *uc = ((n >> 10) & 0x3FF) | 0xD800; + *lc = (n & 0x3FF) | 0xDC00; +} + +static bool is_space (const char *c); +static bool is_digit (const char *c); +static bool parse_value (const char **sp, JsonNode **out); +static bool parse_string (const char **sp, char **out); +static bool parse_number (const char **sp, double *out); +static bool parse_array (const char **sp, JsonNode **out); +static bool parse_object (const char **sp, JsonNode **out); +static bool parse_hex16 (const char **sp, uint16_t *out); + +static bool expect_literal (const char **sp, const char *str); +static void skip_space (const char **sp); + +static void emit_value (SB *out, const JsonNode *node); +static void emit_value_indented (SB *out, const JsonNode *node, const char *space, int indent_level); +static void emit_string (SB *out, const char *str); +static void emit_number (SB *out, double num); +static void emit_array (SB *out, const JsonNode *array); +static void emit_array_indented (SB *out, const JsonNode *array, const char *space, int indent_level); +static void emit_object (SB *out, const JsonNode *object); +static void emit_object_indented (SB *out, const JsonNode *object, const char *space, int indent_level); + +static int write_hex16(char *out, uint16_t val); + +static JsonNode *mknode(JsonTag tag); +static void append_node(JsonNode *parent, JsonNode *child); +static void prepend_node(JsonNode *parent, JsonNode *child); +static void append_member(JsonNode *object, char *key, JsonNode *value); + +/* Assertion-friendly validity checks */ +static bool tag_is_valid(unsigned int tag); +static bool number_is_valid(const char *num); + +JsonNode *json_decode(const char *json) +{ + const char *s = json; + JsonNode *ret; + + skip_space(&s); + if (!parse_value(&s, &ret)) + return NULL; + + skip_space(&s); + if (*s != 0) { + json_delete(ret); + return NULL; + } + + return ret; +} + +char *json_encode(const JsonNode *node) +{ + return json_stringify(node, NULL); +} + +char *json_encode_string(const char *str) +{ + SB sb; + sb_init(&sb); + + try { + emit_string(&sb, str); + } + catch (std::exception) { + sb_free(&sb); + throw; + } + + return sb_finish(&sb); +} + +char *json_stringify(const JsonNode *node, const char *space) +{ + SB sb; + sb_init(&sb); + + try { + if (space != NULL) + emit_value_indented(&sb, node, space, 0); + else + emit_value(&sb, node); + } + catch (std::exception) { + sb_free(&sb); + throw; + } + + return sb_finish(&sb); +} + +void json_delete(JsonNode *node) +{ + if (node != NULL) { + json_remove_from_parent(node); + + switch (node->tag) { + case JSON_STRING: + free(node->string_); + break; + case JSON_ARRAY: + case JSON_OBJECT: + { + JsonNode *child, *next; + for (child = node->children.head; child != NULL; child = next) { + next = child->next; + json_delete(child); + } + break; + } + default:; + } + + free(node); + } +} + +bool json_validate(const char *json) +{ + const char *s = json; + + skip_space(&s); + if (!parse_value(&s, NULL)) + return false; + + skip_space(&s); + if (*s != 0) + return false; + + return true; +} + +JsonNode *json_find_element(JsonNode *array, int index) +{ + JsonNode *element; + int i = 0; + + if (array == NULL || array->tag != JSON_ARRAY) + return NULL; + + json_foreach(element, array) { + if (i == index) + return element; + i++; + } + + return NULL; +} + +JsonNode *json_find_member(JsonNode *object, const char *name) +{ + JsonNode *member; + + if (object == NULL || object->tag != JSON_OBJECT) + return NULL; + + json_foreach(member, object) + if (strcmp(member->key, name) == 0) + return member; + + return NULL; +} + +JsonNode *json_first_child(const JsonNode *node) +{ + if (node != NULL && (node->tag == JSON_ARRAY || node->tag == JSON_OBJECT)) + return node->children.head; + return NULL; +} + +static JsonNode *mknode(JsonTag tag) +{ + JsonNode *ret = (JsonNode*) calloc(1, sizeof(JsonNode)); + if (ret == NULL) + out_of_memory(); + ret->tag = tag; + return ret; +} + +JsonNode *json_mknull(void) +{ + return mknode(JSON_NULL); +} + +JsonNode *json_mkbool(bool b) +{ + JsonNode *ret = mknode(JSON_BOOL); + ret->bool_ = b; + return ret; +} + +static JsonNode *mkstring(char *s) +{ + JsonNode *ret = mknode(JSON_STRING); + ret->string_ = s; + return ret; +} + +JsonNode *json_mkstring(const char *s) +{ + return mkstring(json_strdup(s)); +} + +JsonNode *json_mknumber(double n) +{ + JsonNode *node = mknode(JSON_NUMBER); + node->number_ = n; + return node; +} + +JsonNode *json_mkarray(void) +{ + return mknode(JSON_ARRAY); +} + +JsonNode *json_mkobject(void) +{ + return mknode(JSON_OBJECT); +} + +static void append_node(JsonNode *parent, JsonNode *child) +{ + if (child != NULL && parent != NULL) { + child->parent = parent; + child->prev = parent->children.tail; + child->next = NULL; + + if (parent->children.tail != NULL) + parent->children.tail->next = child; + else + parent->children.head = child; + parent->children.tail = child; + } +} + +static void prepend_node(JsonNode *parent, JsonNode *child) +{ + if (child != NULL && parent != NULL) { + child->parent = parent; + child->prev = NULL; + child->next = parent->children.head; + + if (parent->children.head != NULL) + parent->children.head->prev = child; + else + parent->children.tail = child; + parent->children.head = child; + } +} + +static void append_member(JsonNode *object, char *key, JsonNode *value) +{ + if (value != NULL && object != NULL) { + value->key = key; + append_node(object, value); + } +} + +void json_append_element(JsonNode *array, JsonNode *element) +{ + if (array != NULL && element !=NULL) { + assert(array->tag == JSON_ARRAY); + assert(element->parent == NULL); + + append_node(array, element); + } +} + +void json_prepend_element(JsonNode *array, JsonNode *element) +{ + assert(array->tag == JSON_ARRAY); + assert(element->parent == NULL); + + prepend_node(array, element); +} + +void json_append_member(JsonNode *object, const char *key, JsonNode *value) +{ + if (object != NULL && key != NULL && value != NULL) { + assert(object->tag == JSON_OBJECT); + assert(value->parent == NULL); + + append_member(object, json_strdup(key), value); + } +} + +void json_prepend_member(JsonNode *object, const char *key, JsonNode *value) +{ + if (object != NULL && key != NULL && value != NULL) { + assert(object->tag == JSON_OBJECT); + assert(value->parent == NULL); + + value->key = json_strdup(key); + prepend_node(object, value); + } +} + +void json_remove_from_parent(JsonNode *node) +{ + if (node != NULL) { + JsonNode *parent = node->parent; + + if (parent != NULL) { + if (node->prev != NULL) + node->prev->next = node->next; + else + parent->children.head = node->next; + + if (node->next != NULL) + node->next->prev = node->prev; + else + parent->children.tail = node->prev; + + free(node->key); + + node->parent = NULL; + node->prev = node->next = NULL; + node->key = NULL; + } + } +} + +static bool parse_value(const char **sp, JsonNode **out) +{ + const char *s = *sp; + + switch (*s) { + case 'n': + if (expect_literal(&s, "null")) { + if (out) + *out = json_mknull(); + *sp = s; + return true; + } + return false; + + case 'f': + if (expect_literal(&s, "false")) { + if (out) + *out = json_mkbool(false); + *sp = s; + return true; + } + return false; + + case 't': + if (expect_literal(&s, "true")) { + if (out) + *out = json_mkbool(true); + *sp = s; + return true; + } + return false; + + case '"': { + char *str = NULL; + if (parse_string(&s, out ? &str : NULL)) { + if (out) + *out = mkstring(str); + *sp = s; + return true; + } + return false; + } + + case '[': + if (parse_array(&s, out)) { + *sp = s; + return true; + } + return false; + + case '{': + if (parse_object(&s, out)) { + *sp = s; + return true; + } + return false; + + default: { + double num; + if (parse_number(&s, out ? &num : NULL)) { + if (out) + *out = json_mknumber(num); + *sp = s; + return true; + } + return false; + } + } +} + +static bool parse_array(const char **sp, JsonNode **out) +{ + const char *s = *sp; + JsonNode *ret = out ? json_mkarray() : NULL; + JsonNode *element = NULL; + + if (*s++ != '[') + goto failure; + skip_space(&s); + + if (*s == ']') { + s++; + goto success; + } + + for (;;) { + if (!parse_value(&s, out ? &element : NULL)) + goto failure; + skip_space(&s); + + if (out) + json_append_element(ret, element); + + if (*s == ']') { + s++; + goto success; + } + + if (*s++ != ',') + goto failure; + skip_space(&s); + } + +success: + *sp = s; + if (out) + *out = ret; + return true; + +failure: + json_delete(ret); + return false; +} + +static bool parse_object(const char **sp, JsonNode **out) +{ + const char *s = *sp; + JsonNode *ret = out ? json_mkobject() : NULL; + char *key = NULL; + JsonNode *value = NULL; + + if (*s++ != '{') + goto failure; + skip_space(&s); + + if (*s == '}') { + s++; + goto success; + } + + for (;;) { + if (!parse_string(&s, out ? &key : NULL)) + goto failure; + skip_space(&s); + + if (*s++ != ':') + goto failure_free_key; + skip_space(&s); + + if (!parse_value(&s, out ? &value : NULL)) + goto failure_free_key; + skip_space(&s); + + if (out) + append_member(ret, key, value); + + if (*s == '}') { + s++; + goto success; + } + + if (*s++ != ',') + goto failure; + skip_space(&s); + } + +success: + *sp = s; + if (out) + *out = ret; + return true; + +failure_free_key: + if (out) + free(key); +failure: + json_delete(ret); + return false; +} + +bool parse_string(const char **sp, char **out) +{ + const char *s = *sp; + SB sb = { 0, 0, 0 }; + char throwaway_buffer[4]; + /* enough space for a UTF-8 character */ + char *b; + + if (*s++ != '"') + return false; + + if (out) { + sb_init(&sb); + sb_need(&sb, 4); + b = sb.cur; + } else { + b = throwaway_buffer; + } + + while (*s != '"') { + unsigned char c = *s++; + + /* Parse next character, and write it to b. */ + if (c == '\\') { + c = *s++; + switch (c) { + case '"': + case '\\': + case '/': + *b++ = c; + break; + case 'b': + *b++ = '\b'; + break; + case 'f': + *b++ = '\f'; + break; + case 'n': + *b++ = '\n'; + break; + case 'r': + *b++ = '\r'; + break; + case 't': + *b++ = '\t'; + break; + case 'u': + { + uint16_t uc, lc; + uint32_t unicode; + + if (!parse_hex16(&s, &uc)) + goto failed; + + if (uc >= 0xD800 && uc <= 0xDFFF) { + /* Handle UTF-16 surrogate pair. */ + if (*s++ != '\\' || *s++ != 'u' || !parse_hex16(&s, &lc)) + goto failed; /* Incomplete surrogate pair. */ + if (!from_surrogate_pair(uc, lc, &unicode)) + goto failed; /* Invalid surrogate pair. */ + } else if (uc == 0) { + /* Disallow "\u0000". */ + goto failed; + } else { + unicode = uc; + } + + b += utf8_write_char(unicode, b); + break; + } + default: + /* Invalid escape */ + goto failed; + } + } else if (c <= 0x1F) { + /* Control characters are not allowed in string literals. */ + goto failed; + } else { + /* Validate and echo a UTF-8 character. */ + int len; + + s--; + len = utf8_validate_cz(s); + if (len == 0) + goto failed; /* Invalid UTF-8 character. */ + + while (len--) + *b++ = *s++; + } + + /* + * Update sb to know about the new bytes, + * and set up b to write another character. + */ + if (out) { + sb.cur = b; + sb_need(&sb, 4); + b = sb.cur; + } else { + b = throwaway_buffer; + } + } + s++; + + if (out) + *out = sb_finish(&sb); + *sp = s; + return true; + +failed: + if (out) + sb_free(&sb); + return false; +} + +bool is_space(const char *c) { + return ((*c) == '\t' || (*c) == '\n' || (*c) == '\r' || (*c) == ' '); +} + +bool is_digit(const char *c){ + return ((*c) >= '0' && (*c) <= '9'); +} + +/* + * The JSON spec says that a number shall follow this precise pattern + * (spaces and quotes added for readability): + * '-'? (0 | [1-9][0-9]*) ('.' [0-9]+)? ([Ee] [+-]? [0-9]+)? + * + * However, some JSON parsers are more liberal. For instance, PHP accepts + * '.5' and '1.'. JSON.parse accepts '+3'. + * + * This function takes the strict approach. + */ +bool parse_number(const char **sp, double *out) +{ + const char *s = *sp; + + /* '-'? */ + if (*s == '-') + s++; + + /* (0 | [1-9][0-9]*) */ + if (*s == '0') { + s++; + } else { + if (!is_digit(s)) + return false; + do { + s++; + } while (is_digit(s)); + } + + /* ('.' [0-9]+)? */ + if (*s == '.') { + s++; + if (!is_digit(s)) + return false; + do { + s++; + } while (is_digit(s)); + } + + /* ([Ee] [+-]? [0-9]+)? */ + if (*s == 'E' || *s == 'e') { + s++; + if (*s == '+' || *s == '-') + s++; + if (!is_digit(s)) + return false; + do { + s++; + } while (is_digit(s)); + } + + if (out) + *out = strtod(*sp, NULL); + + *sp = s; + return true; +} + +static void skip_space(const char **sp) +{ + const char *s = *sp; + while (is_space(s)) + s++; + *sp = s; +} + +static void emit_value(SB *out, const JsonNode *node) +{ + assert(tag_is_valid(node->tag)); + switch (node->tag) { + case JSON_NULL: + sb_puts(out, "null"); + break; + case JSON_BOOL: + sb_puts(out, node->bool_ ? "true" : "false"); + break; + case JSON_STRING: + emit_string(out, node->string_); + break; + case JSON_NUMBER: + emit_number(out, node->number_); + break; + case JSON_ARRAY: + emit_array(out, node); + break; + case JSON_OBJECT: + emit_object(out, node); + break; + default: + assert(false); + } +} + +void emit_value_indented(SB *out, const JsonNode *node, const char *space, int indent_level) +{ + assert(tag_is_valid(node->tag)); + switch (node->tag) { + case JSON_NULL: + sb_puts(out, "null"); + break; + case JSON_BOOL: + sb_puts(out, node->bool_ ? "true" : "false"); + break; + case JSON_STRING: + emit_string(out, node->string_); + break; + case JSON_NUMBER: + emit_number(out, node->number_); + break; + case JSON_ARRAY: + emit_array_indented(out, node, space, indent_level); + break; + case JSON_OBJECT: + emit_object_indented(out, node, space, indent_level); + break; + default: + assert(false); + } +} + +static void emit_array(SB *out, const JsonNode *array) +{ + const JsonNode *element; + + sb_putc(out, '['); + json_foreach(element, array) { + emit_value(out, element); + if (element->next != NULL) + sb_putc(out, ','); + } + sb_putc(out, ']'); +} + +static void emit_array_indented(SB *out, const JsonNode *array, const char *space, int indent_level) +{ + const JsonNode *element = array->children.head; + int i; + + if (element == NULL) { + sb_puts(out, "[]"); + return; + } + + sb_puts(out, "[\n"); + while (element != NULL) { + for (i = 0; i < indent_level + 1; i++) + sb_puts(out, space); + emit_value_indented(out, element, space, indent_level + 1); + + element = element->next; + sb_puts(out, element != NULL ? ",\n" : "\n"); + } + for (i = 0; i < indent_level; i++) + sb_puts(out, space); + sb_putc(out, ']'); +} + +static void emit_object(SB *out, const JsonNode *object) +{ + const JsonNode *member; + + sb_putc(out, '{'); + json_foreach(member, object) { + emit_string(out, member->key); + sb_putc(out, ':'); + emit_value(out, member); + if (member->next != NULL) + sb_putc(out, ','); + } + sb_putc(out, '}'); +} + +static void emit_object_indented(SB *out, const JsonNode *object, const char *space, int indent_level) +{ + const JsonNode *member = object->children.head; + int i; + + if (member == NULL) { + sb_puts(out, "{}"); + return; + } + + sb_puts(out, "{\n"); + while (member != NULL) { + for (i = 0; i < indent_level + 1; i++) + sb_puts(out, space); + emit_string(out, member->key); + sb_puts(out, ": "); + emit_value_indented(out, member, space, indent_level + 1); + + member = member->next; + sb_puts(out, member != NULL ? ",\n" : "\n"); + } + for (i = 0; i < indent_level; i++) + sb_puts(out, space); + sb_putc(out, '}'); +} + +void emit_string(SB *out, const char *str) +{ + bool escape_unicode = false; + const char *s = str; + char *b; + +// make assertion catchable +#ifndef NDEBUG + if (!utf8_validate(str)) { + throw utf8::invalid_utf8(0); + } +#endif + + assert(utf8_validate(str)); + + /* + * 14 bytes is enough space to write up to two + * \uXXXX escapes and two quotation marks. + */ + sb_need(out, 14); + b = out->cur; + + *b++ = '"'; + while (*s != 0) { + unsigned char c = *s++; + + /* Encode the next character, and write it to b. */ + switch (c) { + case '"': + *b++ = '\\'; + *b++ = '"'; + break; + case '\\': + *b++ = '\\'; + *b++ = '\\'; + break; + case '\b': + *b++ = '\\'; + *b++ = 'b'; + break; + case '\f': + *b++ = '\\'; + *b++ = 'f'; + break; + case '\n': + *b++ = '\\'; + *b++ = 'n'; + break; + case '\r': + *b++ = '\\'; + *b++ = 'r'; + break; + case '\t': + *b++ = '\\'; + *b++ = 't'; + break; + default: { + int len; + + s--; + len = utf8_validate_cz(s); + + if (len == 0) { + /* + * Handle invalid UTF-8 character gracefully in production + * by writing a replacement character (U+FFFD) + * and skipping a single byte. + * + * This should never happen when assertions are enabled + * due to the assertion at the beginning of this function. + */ + assert(false); + if (escape_unicode) { + strcpy(b, "\\uFFFD"); + b += 6; + } else { + *b++ = 0xEFu; + *b++ = 0xBFu; + *b++ = 0xBDu; + } + s++; + } else if (c < 0x1F || (c >= 0x80 && escape_unicode)) { + /* Encode using \u.... */ + uint32_t unicode; + + s += utf8_read_char(s, &unicode); + + if (unicode <= 0xFFFF) { + *b++ = '\\'; + *b++ = 'u'; + b += write_hex16(b, unicode); + } else { + /* Produce a surrogate pair. */ + uint16_t uc, lc; + assert(unicode <= 0x10FFFF); + to_surrogate_pair(unicode, &uc, &lc); + *b++ = '\\'; + *b++ = 'u'; + b += write_hex16(b, uc); + *b++ = '\\'; + *b++ = 'u'; + b += write_hex16(b, lc); + } + } else { + /* Write the character directly. */ + while (len--) + *b++ = *s++; + } + + break; + } + } + + /* + * Update *out to know about the new bytes, + * and set up b to write another encoded character. + */ + out->cur = b; + sb_need(out, 14); + b = out->cur; + } + *b++ = '"'; + + out->cur = b; +} + +static void emit_number(SB *out, double num) +{ + /* + * This isn't exactly how JavaScript renders numbers, + * but it should produce valid JSON for reasonable numbers + * preserve precision well enough, and avoid some oddities + * like 0.3 -> 0.299999999999999988898 . + */ + char buf[64]; + sprintf(buf, "%.16g", num); + + if (number_is_valid(buf)) + sb_puts(out, buf); + else + sb_puts(out, "null"); +} + +static bool tag_is_valid(unsigned int tag) +{ + return (/* tag >= JSON_NULL && */ tag <= JSON_OBJECT); +} + +static bool number_is_valid(const char *num) +{ + return (parse_number(&num, NULL) && *num == '\0'); +} + +static bool expect_literal(const char **sp, const char *str) +{ + const char *s = *sp; + + while (*str != '\0') + if (*s++ != *str++) + return false; + + *sp = s; + return true; +} + +/* + * Parses exactly 4 hex characters (capital or lowercase). + * Fails if any input chars are not [0-9A-Fa-f]. + */ +static bool parse_hex16(const char **sp, uint16_t *out) +{ + const char *s = *sp; + uint16_t ret = 0; + uint16_t i; + uint16_t tmp; + char c; + + for (i = 0; i < 4; i++) { + c = *s++; + if (c >= '0' && c <= '9') + tmp = c - '0'; + else if (c >= 'A' && c <= 'F') + tmp = c - 'A' + 10; + else if (c >= 'a' && c <= 'f') + tmp = c - 'a' + 10; + else + return false; + + ret <<= 4; + ret += tmp; + } + + if (out) + *out = ret; + *sp = s; + return true; +} + +/* + * Encodes a 16-bit number into hexadecimal, + * writing exactly 4 hex chars. + */ +static int write_hex16(char *out, uint16_t val) +{ + const char *hex = "0123456789ABCDEF"; + + *out++ = hex[(val >> 12) & 0xF]; + *out++ = hex[(val >> 8) & 0xF]; + *out++ = hex[(val >> 4) & 0xF]; + *out++ = hex[ val & 0xF]; + + return 4; +} + +bool json_check(const JsonNode *node, char errmsg[256]) +{ + #define problem(...) do { \ + if (errmsg != NULL) \ + snprintf(errmsg, 256, __VA_ARGS__); \ + return false; \ + } while (0) + + if (node->key != NULL && !utf8_validate(node->key)) + problem("key contains invalid UTF-8"); + + if (!tag_is_valid(node->tag)) + problem("tag is invalid (%u)", node->tag); + + if (node->tag == JSON_BOOL) { + if (node->bool_ != false && node->bool_ != true) + problem("bool_ is neither false (%d) nor true (%d)", (int)false, (int)true); + } else if (node->tag == JSON_STRING) { + if (node->string_ == NULL) + problem("string_ is NULL"); + if (!utf8_validate(node->string_)) + problem("string_ contains invalid UTF-8"); + } else if (node->tag == JSON_ARRAY || node->tag == JSON_OBJECT) { + JsonNode *head = node->children.head; + JsonNode *tail = node->children.tail; + + if (head == NULL || tail == NULL) { + if (head != NULL) + problem("tail is NULL, but head is not"); + if (tail != NULL) + problem("head is NULL, but tail is not"); + } else { + JsonNode *child; + JsonNode *last = NULL; + + if (head->prev != NULL) + problem("First child's prev pointer is not NULL"); + + for (child = head; child != NULL; last = child, child = child->next) { + if (child == node) + problem("node is its own child"); + if (child->next == child) + problem("child->next == child (cycle)"); + if (child->next == head) + problem("child->next == head (cycle)"); + + if (child->parent != node) + problem("child does not point back to parent"); + if (child->next != NULL && child->next->prev != child) + problem("child->next does not point back to child"); + + if (node->tag == JSON_ARRAY && child->key != NULL) + problem("Array element's key is not NULL"); + if (node->tag == JSON_OBJECT && child->key == NULL) + problem("Object member's key is NULL"); + + if (!json_check(child, errmsg)) + return false; + } + + if (last != tail) + problem("tail does not match pointer found by starting at head and following next links"); + } + } + + return true; + + #undef problem +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/json.hpp b/mybulma/node_modules/node-sass/src/libsass/src/json.hpp new file mode 100644 index 0000000..05b35cd --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/json.hpp @@ -0,0 +1,117 @@ +/* + Copyright (C) 2011 Joseph A. Adams (joeyadams3.14159@gmail.com) + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#ifndef CCAN_JSON_H +#define CCAN_JSON_H + +#include +#include + +typedef enum { + JSON_NULL, + JSON_BOOL, + JSON_STRING, + JSON_NUMBER, + JSON_ARRAY, + JSON_OBJECT, +} JsonTag; + +typedef struct JsonNode JsonNode; + +struct JsonNode +{ + /* only if parent is an object or array (NULL otherwise) */ + JsonNode *parent; + JsonNode *prev, *next; + + /* only if parent is an object (NULL otherwise) */ + char *key; /* Must be valid UTF-8. */ + + JsonTag tag; + union { + /* JSON_BOOL */ + bool bool_; + + /* JSON_STRING */ + char *string_; /* Must be valid UTF-8. */ + + /* JSON_NUMBER */ + double number_; + + /* JSON_ARRAY */ + /* JSON_OBJECT */ + struct { + JsonNode *head, *tail; + } children; + }; +}; + +/*** Encoding, decoding, and validation ***/ + +JsonNode *json_decode (const char *json); +char *json_encode (const JsonNode *node); +char *json_encode_string (const char *str); +char *json_stringify (const JsonNode *node, const char *space); +void json_delete (JsonNode *node); + +bool json_validate (const char *json); + +/*** Lookup and traversal ***/ + +JsonNode *json_find_element (JsonNode *array, int index); +JsonNode *json_find_member (JsonNode *object, const char *key); + +JsonNode *json_first_child (const JsonNode *node); + +#define json_foreach(i, object_or_array) \ + for ((i) = json_first_child(object_or_array); \ + (i) != NULL; \ + (i) = (i)->next) + +/*** Construction and manipulation ***/ + +JsonNode *json_mknull(void); +JsonNode *json_mkbool(bool b); +JsonNode *json_mkstring(const char *s); +JsonNode *json_mknumber(double n); +JsonNode *json_mkarray(void); +JsonNode *json_mkobject(void); + +void json_append_element(JsonNode *array, JsonNode *element); +void json_prepend_element(JsonNode *array, JsonNode *element); +void json_append_member(JsonNode *object, const char *key, JsonNode *value); +void json_prepend_member(JsonNode *object, const char *key, JsonNode *value); + +void json_remove_from_parent(JsonNode *node); + +/*** Debugging ***/ + +/* + * Look for structure and encoding problems in a JsonNode or its descendents. + * + * If a problem is detected, return false, writing a description of the problem + * to errmsg (unless errmsg is NULL). + */ +bool json_check(const JsonNode *node, char errmsg[256]); + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/kwd_arg_macros.hpp b/mybulma/node_modules/node-sass/src/libsass/src/kwd_arg_macros.hpp new file mode 100644 index 0000000..e135da7 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/kwd_arg_macros.hpp @@ -0,0 +1,28 @@ +#ifndef SASS_KWD_ARG_MACROS_H +#define SASS_KWD_ARG_MACROS_H + +// Example usage: +// KWD_ARG_SET(Args) { +// KWD_ARG(Args, string, foo); +// KWD_ARG(Args, int, bar); +// ... +// }; +// +// ... and later ... +// +// something(Args().foo("hey").bar(3)); + +#define KWD_ARG_SET(set_name) class set_name + +#define KWD_ARG(set_name, type, name) \ +private: \ + type name##_; \ +public: \ + set_name& name(type name##__) { \ + name##_ = name##__; \ + return *this; \ + } \ + type name() { return name##_; } \ +private: + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/lexer.cpp b/mybulma/node_modules/node-sass/src/libsass/src/lexer.cpp new file mode 100644 index 0000000..be7f677 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/lexer.cpp @@ -0,0 +1,181 @@ +#include "sass.hpp" +#include +#include +#include +#include "lexer.hpp" +#include "constants.hpp" + + +namespace Sass { + using namespace Constants; + + namespace Prelexer { + + //#################################### + // BASIC CHARACTER MATCHERS + //#################################### + + // Match standard control chars + const char* kwd_at(const char* src) { return exactly<'@'>(src); } + const char* kwd_dot(const char* src) { return exactly<'.'>(src); } + const char* kwd_comma(const char* src) { return exactly<','>(src); }; + const char* kwd_colon(const char* src) { return exactly<':'>(src); }; + const char* kwd_star(const char* src) { return exactly<'*'>(src); }; + const char* kwd_plus(const char* src) { return exactly<'+'>(src); }; + const char* kwd_minus(const char* src) { return exactly<'-'>(src); }; + const char* kwd_slash(const char* src) { return exactly<'/'>(src); }; + + //#################################### + // implement some function that do exist in the standard + // but those are locale aware which brought some trouble + // this even seems to improve performance by quite a bit + //#################################### + + bool is_alpha(const char& chr) + { + return unsigned(chr - 'A') <= 'Z' - 'A' || + unsigned(chr - 'a') <= 'z' - 'a'; + } + + bool is_space(const char& chr) + { + // adapted the technique from is_alpha + return chr == ' ' || unsigned(chr - '\t') <= '\r' - '\t'; + } + + bool is_digit(const char& chr) + { + // adapted the technique from is_alpha + return unsigned(chr - '0') <= '9' - '0'; + } + + bool is_number(const char& chr) + { + // adapted the technique from is_alpha + return is_digit(chr) || chr == '-' || chr == '+'; + } + + bool is_xdigit(const char& chr) + { + // adapted the technique from is_alpha + return unsigned(chr - '0') <= '9' - '0' || + unsigned(chr - 'a') <= 'f' - 'a' || + unsigned(chr - 'A') <= 'F' - 'A'; + } + + bool is_punct(const char& chr) + { + // locale independent + return chr == '.'; + } + + bool is_alnum(const char& chr) + { + return is_alpha(chr) || is_digit(chr); + } + + // check if char is outside ascii range + bool is_unicode(const char& chr) + { + // check for unicode range + return unsigned(chr) > 127; + } + + // check if char is outside ascii range + // but with specific ranges (copied from Ruby Sass) + bool is_nonascii(const char& chr) + { + unsigned int cmp = unsigned(chr); + return ( + (cmp >= 128 && cmp <= 15572911) || + (cmp >= 15630464 && cmp <= 15712189) || + (cmp >= 4036001920) + ); + } + + // check if char is within a reduced ascii range + // valid in a uri (copied from Ruby Sass) + bool is_uri_character(const char& chr) + { + unsigned int cmp = unsigned(chr); + return (cmp > 41 && cmp < 127) || + cmp == ':' || cmp == '/'; + } + + // check if char is within a reduced ascii range + // valid for escaping (copied from Ruby Sass) + bool is_escapable_character(const char& chr) + { + unsigned int cmp = unsigned(chr); + return cmp > 31 && cmp < 127; + } + + // Match word character (look ahead) + bool is_character(const char& chr) + { + // valid alpha, numeric or unicode char (plus hyphen) + return is_alnum(chr) || is_unicode(chr) || chr == '-'; + } + + //#################################### + // BASIC CLASS MATCHERS + //#################################### + + // create matchers that advance the position + const char* space(const char* src) { return is_space(*src) ? src + 1 : 0; } + const char* alpha(const char* src) { return is_alpha(*src) ? src + 1 : 0; } + const char* unicode(const char* src) { return is_unicode(*src) ? src + 1 : 0; } + const char* nonascii(const char* src) { return is_nonascii(*src) ? src + 1 : 0; } + const char* digit(const char* src) { return is_digit(*src) ? src + 1 : 0; } + const char* xdigit(const char* src) { return is_xdigit(*src) ? src + 1 : 0; } + const char* alnum(const char* src) { return is_alnum(*src) ? src + 1 : 0; } + const char* punct(const char* src) { return is_punct(*src) ? src + 1 : 0; } + const char* hyphen(const char* src) { return *src && *src == '-' ? src + 1 : 0; } + const char* character(const char* src) { return is_character(*src) ? src + 1 : 0; } + const char* uri_character(const char* src) { return is_uri_character(*src) ? src + 1 : 0; } + const char* escapable_character(const char* src) { return is_escapable_character(*src) ? src + 1 : 0; } + + // Match multiple ctype characters. + const char* spaces(const char* src) { return one_plus(src); } + const char* digits(const char* src) { return one_plus(src); } + const char* hyphens(const char* src) { return one_plus(src); } + + // Whitespace handling. + const char* no_spaces(const char* src) { return negate< space >(src); } + const char* optional_spaces(const char* src) { return zero_plus< space >(src); } + + // Match any single character. + const char* any_char(const char* src) { return *src ? src + 1 : src; } + + // Match word boundary (zero-width lookahead). + const char* word_boundary(const char* src) { return is_character(*src) || *src == '#' ? 0 : src; } + + // Match linefeed /(?:\n|\r\n?)/ + const char* re_linebreak(const char* src) + { + // end of file or unix linefeed return here + if (*src == 0 || *src == '\n') return src + 1; + // a carriage return may optionally be followed by a linefeed + if (*src == '\r') return *(src + 1) == '\n' ? src + 2 : src + 1; + // no linefeed + return 0; + } + + // Assert string boundaries (/\Z|\z|\A/) + // This is a zero-width positive lookahead + const char* end_of_line(const char* src) + { + // end of file or unix linefeed return here + return *src == 0 || *src == '\n' || *src == '\r' ? src : 0; + } + + // Assert end_of_file boundary (/\z/) + // This is a zero-width positive lookahead + const char* end_of_file(const char* src) + { + // end of file or unix linefeed return here + return *src == 0 ? src : 0; + } + + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/lexer.hpp b/mybulma/node_modules/node-sass/src/libsass/src/lexer.hpp new file mode 100644 index 0000000..5838c29 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/lexer.hpp @@ -0,0 +1,315 @@ +#ifndef SASS_LEXER_H +#define SASS_LEXER_H + +#include + +namespace Sass { + namespace Prelexer { + + //#################################### + // BASIC CHARACTER MATCHERS + //#################################### + + // Match standard control chars + const char* kwd_at(const char* src); + const char* kwd_dot(const char* src); + const char* kwd_comma(const char* src); + const char* kwd_colon(const char* src); + const char* kwd_star(const char* src); + const char* kwd_plus(const char* src); + const char* kwd_minus(const char* src); + const char* kwd_slash(const char* src); + + //#################################### + // BASIC CLASS MATCHERS + //#################################### + + // These are locale independant + bool is_space(const char& src); + bool is_alpha(const char& src); + bool is_punct(const char& src); + bool is_digit(const char& src); + bool is_number(const char& src); + bool is_alnum(const char& src); + bool is_xdigit(const char& src); + bool is_unicode(const char& src); + bool is_nonascii(const char& src); + bool is_character(const char& src); + bool is_uri_character(const char& src); + bool escapable_character(const char& src); + + // Match a single ctype predicate. + const char* space(const char* src); + const char* alpha(const char* src); + const char* digit(const char* src); + const char* xdigit(const char* src); + const char* alnum(const char* src); + const char* punct(const char* src); + const char* hyphen(const char* src); + const char* unicode(const char* src); + const char* nonascii(const char* src); + const char* character(const char* src); + const char* uri_character(const char* src); + const char* escapable_character(const char* src); + + // Match multiple ctype characters. + const char* spaces(const char* src); + const char* digits(const char* src); + const char* hyphens(const char* src); + + // Whitespace handling. + const char* no_spaces(const char* src); + const char* optional_spaces(const char* src); + + // Match any single character (/./). + const char* any_char(const char* src); + + // Assert word boundary (/\b/) + // Is a zero-width positive lookaheads + const char* word_boundary(const char* src); + + // Match a single linebreak (/(?:\n|\r\n?)/). + const char* re_linebreak(const char* src); + + // Assert string boundaries (/\Z|\z|\A/) + // There are zero-width positive lookaheads + const char* end_of_line(const char* src); + + // Assert end_of_file boundary (/\z/) + const char* end_of_file(const char* src); + // const char* start_of_string(const char* src); + + // Type definition for prelexer functions + typedef const char* (*prelexer)(const char*); + + //#################################### + // BASIC "REGEX" CONSTRUCTORS + //#################################### + + // Match a single character literal. + // Regex equivalent: /(?:x)/ + template + const char* exactly(const char* src) { + return *src == chr ? src + 1 : 0; + } + + // Match the full string literal. + // Regex equivalent: /(?:literal)/ + template + const char* exactly(const char* src) { + if (str == NULL) return 0; + const char* pre = str; + if (src == NULL) return 0; + // there is a small chance that the search string + // is longer than the rest of the string to look at + while (*pre && *src == *pre) { + ++src, ++pre; + } + // did the matcher finish? + return *pre == 0 ? src : 0; + } + + + // Match a single character literal. + // Regex equivalent: /(?:x)/i + // only define lower case alpha chars + template + const char* insensitive(const char* src) { + return *src == chr || *src+32 == chr ? src + 1 : 0; + } + + // Match the full string literal. + // Regex equivalent: /(?:literal)/i + // only define lower case alpha chars + template + const char* insensitive(const char* src) { + if (str == NULL) return 0; + const char* pre = str; + if (src == NULL) return 0; + // there is a small chance that the search string + // is longer than the rest of the string to look at + while (*pre && (*src == *pre || *src+32 == *pre)) { + ++src, ++pre; + } + // did the matcher finish? + return *pre == 0 ? src : 0; + } + + // Match for members of char class. + // Regex equivalent: /[axy]/ + template + const char* class_char(const char* src) { + const char* cc = char_class; + while (*cc && *src != *cc) ++cc; + return *cc ? src + 1 : 0; + } + + // Match for members of char class. + // Regex equivalent: /[axy]+/ + template + const char* class_chars(const char* src) { + const char* p = src; + while (class_char(p)) ++p; + return p == src ? 0 : p; + } + + // Match for members of char class. + // Regex equivalent: /[^axy]/ + template + const char* neg_class_char(const char* src) { + if (*src == 0) return 0; + const char* cc = neg_char_class; + while (*cc && *src != *cc) ++cc; + return *cc ? 0 : src + 1; + } + + // Match for members of char class. + // Regex equivalent: /[^axy]+/ + template + const char* neg_class_chars(const char* src) { + const char* p = src; + while (neg_class_char(p)) ++p; + return p == src ? 0 : p; + } + + // Match all except the supplied one. + // Regex equivalent: /[^x]/ + template + const char* any_char_but(const char* src) { + return (*src && *src != chr) ? src + 1 : 0; + } + + // Succeeds if the matcher fails. + // Aka. zero-width negative lookahead. + // Regex equivalent: /(?!literal)/ + template + const char* negate(const char* src) { + return mx(src) ? 0 : src; + } + + // Succeeds if the matcher succeeds. + // Aka. zero-width positive lookahead. + // Regex equivalent: /(?=literal)/ + // just hangs around until we need it + template + const char* lookahead(const char* src) { + return mx(src) ? src : 0; + } + + // Tries supplied matchers in order. + // Succeeds if one of them succeeds. + // Regex equivalent: /(?:FOO|BAR)/ + template + const char* alternatives(const char* src) { + const char* rslt; + if ((rslt = mx(src))) return rslt; + return 0; + } + template + const char* alternatives(const char* src) { + const char* rslt; + if ((rslt = mx1(src))) return rslt; + return alternatives(src); + } + + // Tries supplied matchers in order. + // Succeeds if all of them succeeds. + // Regex equivalent: /(?:FOO)(?:BAR)/ + template + const char* sequence(const char* src) { + const char* rslt = src; + if (!(rslt = mx1(rslt))) return 0; + return rslt; + } + template + const char* sequence(const char* src) { + const char* rslt = src; + if (!(rslt = mx1(rslt))) return 0; + return sequence(rslt); + } + + + // Match a pattern or not. Always succeeds. + // Regex equivalent: /(?:literal)?/ + template + const char* optional(const char* src) { + const char* p = mx(src); + return p ? p : src; + } + + // Match zero or more of the patterns. + // Regex equivalent: /(?:literal)*/ + template + const char* zero_plus(const char* src) { + const char* p = mx(src); + while (p) src = p, p = mx(src); + return src; + } + + // Match one or more of the patterns. + // Regex equivalent: /(?:literal)+/ + template + const char* one_plus(const char* src) { + const char* p = mx(src); + if (!p) return 0; + while (p) src = p, p = mx(src); + return src; + } + + // Match mx non-greedy until delimiter. + // Other prelexers are greedy by default. + // Regex equivalent: /(?:$mx)*?(?=$delim)\b/ + template + const char* non_greedy(const char* src) { + while (!delim(src)) { + const char* p = mx(src); + if (p == src) return 0; + if (p == 0) return 0; + src = p; + } + return src; + } + + //#################################### + // ADVANCED "REGEX" CONSTRUCTORS + //#################################### + + // Match with word boundary rule. + // Regex equivalent: /(?:$mx)\b/i + template + const char* keyword(const char* src) { + return sequence < + insensitive < str >, + word_boundary + >(src); + } + + // Match with word boundary rule. + // Regex equivalent: /(?:$mx)\b/ + template + const char* word(const char* src) { + return sequence < + exactly < str >, + word_boundary + >(src); + } + + template + const char* loosely(const char* src) { + return sequence < + optional_spaces, + exactly < chr > + >(src); + } + template + const char* loosely(const char* src) { + return sequence < + optional_spaces, + exactly < str > + >(src); + } + + } +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/listize.cpp b/mybulma/node_modules/node-sass/src/libsass/src/listize.cpp new file mode 100644 index 0000000..cb921ae --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/listize.cpp @@ -0,0 +1,86 @@ +#include "sass.hpp" +#include +#include +#include + +#include "listize.hpp" +#include "context.hpp" +#include "backtrace.hpp" +#include "error_handling.hpp" + +namespace Sass { + + Listize::Listize() + { } + + Expression_Ptr Listize::operator()(Selector_List_Ptr sel) + { + List_Obj l = SASS_MEMORY_NEW(List, sel->pstate(), sel->length(), SASS_COMMA); + l->from_selector(true); + for (size_t i = 0, L = sel->length(); i < L; ++i) { + if (!sel->at(i)) continue; + l->append(sel->at(i)->perform(this)); + } + if (l->length()) return l.detach(); + return SASS_MEMORY_NEW(Null, l->pstate()); + } + + Expression_Ptr Listize::operator()(Compound_Selector_Ptr sel) + { + std::string str; + for (size_t i = 0, L = sel->length(); i < L; ++i) { + Expression_Ptr e = (*sel)[i]->perform(this); + if (e) str += e->to_string(); + } + return SASS_MEMORY_NEW(String_Quoted, sel->pstate(), str); + } + + Expression_Ptr Listize::operator()(Complex_Selector_Ptr sel) + { + List_Obj l = SASS_MEMORY_NEW(List, sel->pstate(), 2); + l->from_selector(true); + Compound_Selector_Obj head = sel->head(); + if (head && !head->is_empty_reference()) + { + Expression_Ptr hh = head->perform(this); + if (hh) l->append(hh); + } + + std::string reference = ! sel->reference() ? "" + : sel->reference()->to_string(); + switch(sel->combinator()) + { + case Complex_Selector::PARENT_OF: + l->append(SASS_MEMORY_NEW(String_Quoted, sel->pstate(), ">")); + break; + case Complex_Selector::ADJACENT_TO: + l->append(SASS_MEMORY_NEW(String_Quoted, sel->pstate(), "+")); + break; + case Complex_Selector::REFERENCE: + l->append(SASS_MEMORY_NEW(String_Quoted, sel->pstate(), "/" + reference + "/")); + break; + case Complex_Selector::PRECEDES: + l->append(SASS_MEMORY_NEW(String_Quoted, sel->pstate(), "~")); + break; + case Complex_Selector::ANCESTOR_OF: + break; + default: break; + } + + Complex_Selector_Obj tail = sel->tail(); + if (tail) + { + Expression_Obj tt = tail->perform(this); + if (List_Ptr ls = Cast(tt)) + { l->concat(ls); } + } + if (l->length() == 0) return 0; + return l.detach(); + } + + Expression_Ptr Listize::fallback_impl(AST_Node_Ptr n) + { + return Cast(n); + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/listize.hpp b/mybulma/node_modules/node-sass/src/libsass/src/listize.hpp new file mode 100644 index 0000000..9716ebe --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/listize.hpp @@ -0,0 +1,34 @@ +#ifndef SASS_LISTIZE_H +#define SASS_LISTIZE_H + +#include +#include + +#include "ast.hpp" +#include "context.hpp" +#include "operation.hpp" +#include "environment.hpp" + +namespace Sass { + + struct Backtrace; + + class Listize : public Operation_CRTP { + + Expression_Ptr fallback_impl(AST_Node_Ptr n); + + public: + Listize(); + ~Listize() { } + + Expression_Ptr operator()(Selector_List_Ptr); + Expression_Ptr operator()(Complex_Selector_Ptr); + Expression_Ptr operator()(Compound_Selector_Ptr); + + template + Expression_Ptr fallback(U x) { return fallback_impl(x); } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/mapping.hpp b/mybulma/node_modules/node-sass/src/libsass/src/mapping.hpp new file mode 100644 index 0000000..54fb4a0 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/mapping.hpp @@ -0,0 +1,18 @@ +#ifndef SASS_MAPPING_H +#define SASS_MAPPING_H + +#include "position.hpp" + +namespace Sass { + + struct Mapping { + Position original_position; + Position generated_position; + + Mapping(const Position& original_position, const Position& generated_position) + : original_position(original_position), generated_position(generated_position) { } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.cpp b/mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.cpp new file mode 100644 index 0000000..2530360 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.cpp @@ -0,0 +1,114 @@ +#include "../sass.hpp" +#include +#include + +#include "SharedPtr.hpp" +#include "../ast_fwd_decl.hpp" + +#ifdef DEBUG_SHARED_PTR +#include "../debugger.hpp" +#endif + +namespace Sass { + + #ifdef DEBUG_SHARED_PTR + void SharedObj::dumpMemLeaks() { + if (!all.empty()) { + std::cerr << "###################################\n"; + std::cerr << "# REPORTING MISSING DEALLOCATIONS #\n"; + std::cerr << "###################################\n"; + for (SharedObj* var : all) { + if (AST_Node_Ptr ast = dynamic_cast(var)) { + debug_ast(ast); + } else { + std::cerr << "LEAKED " << var << "\n"; + } + } + } + } + std::vector SharedObj::all; + #endif + + bool SharedObj::taint = false; + + SharedObj::SharedObj() + : detached(false) + #ifdef DEBUG_SHARED_PTR + , dbg(false) + #endif + { + refcounter = 0; + #ifdef DEBUG_SHARED_PTR + if (taint) all.push_back(this); + #endif + }; + + SharedObj::~SharedObj() { + #ifdef DEBUG_SHARED_PTR + if (dbg) std::cerr << "Destruct " << this << "\n"; + if(!all.empty()) { // check needed for MSVC (no clue why?) + all.erase(std::remove(all.begin(), all.end(), this), all.end()); + } + #endif + }; + + void SharedPtr::decRefCount() { + if (node) { + -- node->refcounter; + #ifdef DEBUG_SHARED_PTR + if (node->dbg) std::cerr << "- " << node << " X " << node->refcounter << " (" << this << ") " << "\n"; + #endif + if (node->refcounter == 0) { + #ifdef DEBUG_SHARED_PTR + // AST_Node_Ptr ast = dynamic_cast(node); + if (node->dbg) std::cerr << "DELETE NODE " << node << "\n"; + #endif + if (!node->detached) { + delete(node); + } + } + } + } + + void SharedPtr::incRefCount() { + if (node) { + ++ node->refcounter; + node->detached = false; + #ifdef DEBUG_SHARED_PTR + if (node->dbg) { + std::cerr << "+ " << node << " X " << node->refcounter << " (" << this << ") " << "\n"; + } + #endif + } + } + + SharedPtr::~SharedPtr() { + decRefCount(); + } + + + // the create constructor + SharedPtr::SharedPtr(SharedObj* ptr) + : node(ptr) { + incRefCount(); + } + // copy assignment operator + SharedPtr& SharedPtr::operator=(const SharedPtr& rhs) { + void* cur_ptr = (void*) node; + void* rhs_ptr = (void*) rhs.node; + if (cur_ptr == rhs_ptr) { + return *this; + } + decRefCount(); + node = rhs.node; + incRefCount(); + return *this; + } + + // the copy constructor + SharedPtr::SharedPtr(const SharedPtr& obj) + : node(obj.node) { + incRefCount(); + } + +} \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.hpp b/mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.hpp new file mode 100644 index 0000000..f20dfa3 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/memory/SharedPtr.hpp @@ -0,0 +1,206 @@ +#ifndef SASS_MEMORY_SHARED_PTR_H +#define SASS_MEMORY_SHARED_PTR_H + +#include "sass/base.h" + +#include + +namespace Sass { + + class SharedPtr; + + /////////////////////////////////////////////////////////////////////////////// + // Use macros for the allocation task, since overloading operator `new` + // has been proven to be flaky under certain compilers (see comment below). + /////////////////////////////////////////////////////////////////////////////// + + #ifdef DEBUG_SHARED_PTR + + #define SASS_MEMORY_NEW(Class, ...) \ + ((Class*)(new Class(__VA_ARGS__))->trace(__FILE__, __LINE__)) \ + + #define SASS_MEMORY_COPY(obj) \ + ((obj)->copy(__FILE__, __LINE__)) \ + + #define SASS_MEMORY_CLONE(obj) \ + ((obj)->clone(__FILE__, __LINE__)) \ + + #else + + #define SASS_MEMORY_NEW(Class, ...) \ + new Class(__VA_ARGS__) \ + + #define SASS_MEMORY_COPY(obj) \ + ((obj)->copy()) \ + + #define SASS_MEMORY_CLONE(obj) \ + ((obj)->clone()) \ + + #endif + + class SharedObj { + protected: + friend class SharedPtr; + friend class Memory_Manager; + #ifdef DEBUG_SHARED_PTR + static std::vector all; + std::string file; + size_t line; + #endif + static bool taint; + long refcounter; + // long refcount; + bool detached; + #ifdef DEBUG_SHARED_PTR + bool dbg; + #endif + public: + #ifdef DEBUG_SHARED_PTR + static void dumpMemLeaks(); + SharedObj* trace(std::string file, size_t line) { + this->file = file; + this->line = line; + return this; + } + #endif + SharedObj(); + #ifdef DEBUG_SHARED_PTR + std::string getDbgFile() { + return file; + } + size_t getDbgLine() { + return line; + } + void setDbg(bool dbg) { + this->dbg = dbg; + } + #endif + static void setTaint(bool val) { + taint = val; + } + virtual ~SharedObj(); + long getRefCount() { + return refcounter; + } + }; + + + class SharedPtr { + protected: + SharedObj* node; + protected: + void decRefCount(); + void incRefCount(); + public: + // the empty constructor + SharedPtr() + : node(NULL) {}; + // the create constructor + SharedPtr(SharedObj* ptr); + // the copy constructor + SharedPtr(const SharedPtr& obj); + // the move constructor + SharedPtr(SharedPtr&& obj); + // copy assignment operator + SharedPtr& operator=(const SharedPtr& obj); + // move assignment operator + SharedPtr& operator=(SharedPtr&& obj); + // pure virtual destructor + virtual ~SharedPtr() = 0; + public: + SharedObj* obj () const { + return node; + }; + SharedObj* operator-> () const { + return node; + }; + bool isNull () { + return node == NULL; + }; + bool isNull () const { + return node == NULL; + }; + SharedObj* detach() const { + if (node) { + node->detached = true; + } + return node; + }; + operator bool() const { + return node != NULL; + }; + + }; + + template < class T > + class SharedImpl : private SharedPtr { + public: + SharedImpl() + : SharedPtr(NULL) {}; + SharedImpl(T* node) + : SharedPtr(node) {}; + template < class U > + SharedImpl(SharedImpl obj) + : SharedPtr(static_cast(obj.ptr())) {} + SharedImpl(T&& node) + : SharedPtr(node) {}; + SharedImpl(const T& node) + : SharedPtr(node) {}; + // the copy constructor + SharedImpl(const SharedImpl& impl) + : SharedPtr(impl.node) {}; + // the move constructor + SharedImpl(SharedImpl&& impl) + : SharedPtr(impl.node) {}; + // copy assignment operator + SharedImpl& operator=(const SharedImpl& rhs) { + if (node) decRefCount(); + node = rhs.node; + incRefCount(); + return *this; + } + // move assignment operator + SharedImpl& operator=(SharedImpl&& rhs) { + // don't move our self + if (this != &rhs) { + if (node) decRefCount(); + node = std::move(rhs.node); + rhs.node = NULL; + } + return *this; + } + ~SharedImpl() {}; + public: + operator T*() const { + return static_cast(this->obj()); + } + operator T&() const { + return *static_cast(this->obj()); + } + T& operator* () const { + return *static_cast(this->obj()); + }; + T* operator-> () const { + return static_cast(this->obj()); + }; + T* ptr () const { + return static_cast(this->obj()); + }; + T* detach() const { + if (this->obj() == NULL) return NULL; + return static_cast(SharedPtr::detach()); + } + bool isNull() const { + return this->obj() == NULL; + } + bool operator<(const T& rhs) const { + return *this->ptr() < rhs; + }; + operator bool() const { + return this->obj() != NULL; + }; + }; + +} + +#endif \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/src/node.cpp b/mybulma/node_modules/node-sass/src/libsass/src/node.cpp new file mode 100644 index 0000000..08eada7 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/node.cpp @@ -0,0 +1,319 @@ +#include "sass.hpp" +#include + +#include "node.hpp" +#include "context.hpp" +#include "parser.hpp" + +namespace Sass { + + + Node Node::createCombinator(const Complex_Selector::Combinator& combinator) { + NodeDequePtr null; + return Node(COMBINATOR, combinator, NULL /*pSelector*/, null /*pCollection*/); + } + + + Node Node::createSelector(const Complex_Selector& pSelector) { + NodeDequePtr null; + + Complex_Selector_Ptr pStripped = SASS_MEMORY_COPY(&pSelector); + pStripped->tail(NULL); + pStripped->combinator(Complex_Selector::ANCESTOR_OF); + + Node n(SELECTOR, Complex_Selector::ANCESTOR_OF, pStripped, null /*pCollection*/); + n.got_line_feed = pSelector.has_line_feed(); + return n; + } + + + Node Node::createCollection() { + NodeDequePtr pEmptyCollection = std::make_shared(); + return Node(COLLECTION, Complex_Selector::ANCESTOR_OF, NULL /*pSelector*/, pEmptyCollection); + } + + + Node Node::createCollection(const NodeDeque& values) { + NodeDequePtr pShallowCopiedCollection = std::make_shared(values); + return Node(COLLECTION, Complex_Selector::ANCESTOR_OF, NULL /*pSelector*/, pShallowCopiedCollection); + } + + + Node Node::createNil() { + NodeDequePtr null; + return Node(NIL, Complex_Selector::ANCESTOR_OF, NULL /*pSelector*/, null /*pCollection*/); + } + + + Node::Node(const TYPE& type, Complex_Selector::Combinator combinator, Complex_Selector_Ptr pSelector, NodeDequePtr& pCollection) + : got_line_feed(false), mType(type), mCombinator(combinator), mpSelector(pSelector), mpCollection(pCollection) + { if (pSelector) got_line_feed = pSelector->has_line_feed(); } + + + Node Node::klone() const { + NodeDequePtr pNewCollection = std::make_shared(); + if (mpCollection) { + for (NodeDeque::iterator iter = mpCollection->begin(), iterEnd = mpCollection->end(); iter != iterEnd; iter++) { + Node& toClone = *iter; + pNewCollection->push_back(toClone.klone()); + } + } + + Node n(mType, mCombinator, mpSelector ? SASS_MEMORY_COPY(mpSelector) : NULL, pNewCollection); + n.got_line_feed = got_line_feed; + return n; + } + + + bool Node::contains(const Node& potentialChild) const { + bool found = false; + + for (NodeDeque::iterator iter = mpCollection->begin(), iterEnd = mpCollection->end(); iter != iterEnd; iter++) { + Node& toTest = *iter; + + if (toTest == potentialChild) { + found = true; + break; + } + } + + return found; + } + + + bool Node::operator==(const Node& rhs) const { + if (this->type() != rhs.type()) { + return false; + } + + if (this->isCombinator()) { + + return this->combinator() == rhs.combinator(); + + } else if (this->isNil()) { + + return true; // no state to check + + } else if (this->isSelector()){ + + return *this->selector() == *rhs.selector(); + + } else if (this->isCollection()) { + + if (this->collection()->size() != rhs.collection()->size()) { + return false; + } + + for (NodeDeque::iterator lhsIter = this->collection()->begin(), lhsIterEnd = this->collection()->end(), + rhsIter = rhs.collection()->begin(); lhsIter != lhsIterEnd; lhsIter++, rhsIter++) { + + if (*lhsIter != *rhsIter) { + return false; + } + + } + + return true; + + } + + // We shouldn't get here. + throw "Comparing unknown node types. A new type was probably added and this method wasn't implemented for it."; + } + + + void Node::plus(Node& rhs) { + if (!this->isCollection() || !rhs.isCollection()) { + throw "Both the current node and rhs must be collections."; + } + this->collection()->insert(this->collection()->end(), rhs.collection()->begin(), rhs.collection()->end()); + } + +#ifdef DEBUG + std::ostream& operator<<(std::ostream& os, const Node& node) { + + if (node.isCombinator()) { + + switch (node.combinator()) { + case Complex_Selector::ANCESTOR_OF: os << "\" \""; break; + case Complex_Selector::PARENT_OF: os << "\">\""; break; + case Complex_Selector::PRECEDES: os << "\"~\""; break; + case Complex_Selector::ADJACENT_TO: os << "\"+\""; break; + case Complex_Selector::REFERENCE: os << "\"/\""; break; + } + + } else if (node.isNil()) { + + os << "nil"; + + } else if (node.isSelector()){ + + os << node.selector()->head()->to_string(); + + } else if (node.isCollection()) { + + os << "["; + + for (NodeDeque::iterator iter = node.collection()->begin(), iterBegin = node.collection()->begin(), iterEnd = node.collection()->end(); iter != iterEnd; iter++) { + if (iter != iterBegin) { + os << ", "; + } + + os << (*iter); + } + + os << "]"; + + } + + return os; + + } +#endif + + + Node complexSelectorToNode(Complex_Selector_Ptr pToConvert) { + if (pToConvert == NULL) { + return Node::createNil(); + } + Node node = Node::createCollection(); + node.got_line_feed = pToConvert->has_line_feed(); + bool has_lf = pToConvert->has_line_feed(); + + // unwrap the selector from parent ref + if (pToConvert->head() && pToConvert->head()->has_parent_ref()) { + Complex_Selector_Obj tail = pToConvert->tail(); + if (tail) tail->has_line_feed(pToConvert->has_line_feed()); + pToConvert = tail; + } + + while (pToConvert) { + + bool empty_parent_ref = pToConvert->head() && pToConvert->head()->is_empty_reference(); + + // the first Complex_Selector may contain a dummy head pointer, skip it. + if (pToConvert->head() && !empty_parent_ref) { + node.collection()->push_back(Node::createSelector(*pToConvert)); + if (has_lf) node.collection()->back().got_line_feed = has_lf; + if (pToConvert->head() || empty_parent_ref) { + if (pToConvert->tail()) { + pToConvert->tail()->has_line_feed(pToConvert->has_line_feed()); + } + } + has_lf = false; + } + + if (pToConvert->combinator() != Complex_Selector::ANCESTOR_OF) { + node.collection()->push_back(Node::createCombinator(pToConvert->combinator())); + if (has_lf) node.collection()->back().got_line_feed = has_lf; + has_lf = false; + } + + if (pToConvert && empty_parent_ref && pToConvert->tail()) { + // pToConvert->tail()->has_line_feed(pToConvert->has_line_feed()); + } + + pToConvert = pToConvert->tail(); + } + + return node; + } + + + Complex_Selector_Ptr nodeToComplexSelector(const Node& toConvert) { + if (toConvert.isNil()) { + return NULL; + } + + + if (!toConvert.isCollection()) { + throw "The node to convert to a Complex_Selector_Ptr must be a collection type or nil."; + } + + + NodeDeque& childNodes = *toConvert.collection(); + + std::string noPath(""); + Complex_Selector_Obj pFirst = SASS_MEMORY_NEW(Complex_Selector, ParserState("[NODE]"), Complex_Selector::ANCESTOR_OF, NULL, NULL); + + Complex_Selector_Obj pCurrent = pFirst; + + if (toConvert.isSelector()) pFirst->has_line_feed(toConvert.got_line_feed); + if (toConvert.isCombinator()) pFirst->has_line_feed(toConvert.got_line_feed); + + for (NodeDeque::iterator childIter = childNodes.begin(), childIterEnd = childNodes.end(); childIter != childIterEnd; childIter++) { + + Node& child = *childIter; + + if (child.isSelector()) { + // JMA - need to clone the selector, because they can end up getting shared across Node + // collections, and can result in an infinite loop during the call to parentSuperselector() + pCurrent->tail(SASS_MEMORY_COPY(child.selector())); + // if (child.got_line_feed) pCurrent->has_line_feed(child.got_line_feed); + pCurrent = pCurrent->tail(); + } else if (child.isCombinator()) { + pCurrent->combinator(child.combinator()); + if (child.got_line_feed) pCurrent->has_line_feed(child.got_line_feed); + + // if the next node is also a combinator, create another Complex_Selector to hold it so it doesn't replace the current combinator + if (childIter+1 != childIterEnd) { + Node& nextNode = *(childIter+1); + if (nextNode.isCombinator()) { + pCurrent->tail(SASS_MEMORY_NEW(Complex_Selector, ParserState("[NODE]"), Complex_Selector::ANCESTOR_OF, NULL, NULL)); + if (nextNode.got_line_feed) pCurrent->tail()->has_line_feed(nextNode.got_line_feed); + pCurrent = pCurrent->tail(); + } + } + } else { + throw "The node to convert's children must be only combinators or selectors."; + } + } + + // Put the dummy Compound_Selector in the first position, for consistency with the rest of libsass + Compound_Selector_Ptr fakeHead = SASS_MEMORY_NEW(Compound_Selector, ParserState("[NODE]"), 1); + Parent_Selector_Ptr selectorRef = SASS_MEMORY_NEW(Parent_Selector, ParserState("[NODE]")); + fakeHead->elements().push_back(selectorRef); + if (toConvert.got_line_feed) pFirst->has_line_feed(toConvert.got_line_feed); + // pFirst->has_line_feed(pFirst->has_line_feed() || pFirst->tail()->has_line_feed() || toConvert.got_line_feed); + pFirst->head(fakeHead); + return SASS_MEMORY_COPY(pFirst); + } + + // A very naive trim function, which removes duplicates in a node + // This is only used in Complex_Selector::unify_with for now, may need modifications to fit other needs + Node Node::naiveTrim(Node& seqses) { + + std::vector res; + std::vector known; + + NodeDeque::reverse_iterator seqsesIter = seqses.collection()->rbegin(), + seqsesIterEnd = seqses.collection()->rend(); + + for (; seqsesIter != seqsesIterEnd; ++seqsesIter) + { + Node& seqs1 = *seqsesIter; + if( seqs1.isSelector() ) { + Complex_Selector_Obj sel = seqs1.selector(); + std::vector::iterator it; + bool found = false; + for (it = known.begin(); it != known.end(); ++it) { + if (**it == *sel) { found = true; break; } + } + if( !found ) { + known.push_back(seqs1.selector()); + res.push_back(&seqs1); + } + } else { + res.push_back(&seqs1); + } + } + + Node result = Node::createCollection(); + + for (size_t i = res.size() - 1; i != std::string::npos; --i) { + result.collection()->push_back(*res[i]); + } + + return result; + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/node.hpp b/mybulma/node_modules/node-sass/src/libsass/src/node.hpp new file mode 100644 index 0000000..23ba360 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/node.hpp @@ -0,0 +1,118 @@ +#ifndef SASS_NODE_H +#define SASS_NODE_H + +#include +#include + +#include "ast.hpp" + + +namespace Sass { + + + + + class Context; + + /* + There are a lot of stumbling blocks when trying to port the ruby extend code to C++. The biggest is the choice of + data type. The ruby code will pretty seamlessly switch types between an Array (libsass' + equivalent is the Complex_Selector) to a Sequence, which contains more metadata about the sequence than just the + selector info. They also have the ability to have arbitrary nestings of arrays like [1, [2]], which is hard to + implement using Array equivalents in C++ (like the deque or vector). They also have the ability to include nil + in the arrays, like [1, nil, 3], which has potential semantic differences than an empty array [1, [], 3]. To be + able to represent all of these as unique cases, we need to create a tree of variant objects. The tree nature allows + the inconsistent nesting levels. The variant nature (while making some of the C++ code uglier) allows the code to + more closely match the ruby code, which is a huge benefit when attempting to implement an complex algorithm like + the Extend operator. + + Note that the current libsass data model also pairs the combinator with the Complex_Selector that follows it, but + ruby sass has no such restriction, so we attempt to create a data structure that can handle them split apart. + */ + + class Node; + typedef std::deque NodeDeque; + typedef std::shared_ptr NodeDequePtr; + + class Node { + public: + enum TYPE { + SELECTOR, + COMBINATOR, + COLLECTION, + NIL + }; + + TYPE type() const { return mType; } + bool isCombinator() const { return mType == COMBINATOR; } + bool isSelector() const { return mType == SELECTOR; } + bool isCollection() const { return mType == COLLECTION; } + bool isNil() const { return mType == NIL; } + bool got_line_feed; + + Complex_Selector::Combinator combinator() const { return mCombinator; } + + Complex_Selector_Obj selector() { return mpSelector; } + Complex_Selector_Obj selector() const { return mpSelector; } + + NodeDequePtr collection() { return mpCollection; } + const NodeDequePtr collection() const { return mpCollection; } + + static Node createCombinator(const Complex_Selector::Combinator& combinator); + + // This method will klone the selector, stripping off the tail and combinator + static Node createSelector(const Complex_Selector& pSelector); + + static Node createCollection(); + static Node createCollection(const NodeDeque& values); + + static Node createNil(); + static Node naiveTrim(Node& seqses); + + Node klone() const; + + bool operator==(const Node& rhs) const; + inline bool operator!=(const Node& rhs) const { return !(*this == rhs); } + + + /* + COLLECTION FUNCTIONS + + Most types don't need any helper methods (nil and combinator due to their simplicity and + selector due to the fact that we leverage the non-node selector code on the Complex_Selector + whereever possible). The following methods are intended to be called on Node objects whose + type is COLLECTION only. + */ + + // rhs and this must be node collections. Shallow copy the nodes from rhs to the end of this. + // This function DOES NOT remove the nodes from rhs. + void plus(Node& rhs); + + // potentialChild must be a node collection of selectors/combinators. this must be a collection + // of collections of nodes/combinators. This method checks if potentialChild is a child of this + // Node. + bool contains(const Node& potentialChild) const; + + private: + // Private constructor; Use the static methods (like createCombinator and createSelector) + // to instantiate this object. This is more expressive, and it allows us to break apart each + // case into separate functions. + Node(const TYPE& type, Complex_Selector::Combinator combinator, Complex_Selector_Ptr pSelector, NodeDequePtr& pCollection); + + TYPE mType; + + // TODO: can we union these to save on memory? + Complex_Selector::Combinator mCombinator; + Complex_Selector_Obj mpSelector; + NodeDequePtr mpCollection; + }; + +#ifdef DEBUG + std::ostream& operator<<(std::ostream& os, const Node& node); +#endif + Node complexSelectorToNode(Complex_Selector_Ptr pToConvert); + Complex_Selector_Ptr nodeToComplexSelector(const Node& toConvert); + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/operation.hpp b/mybulma/node_modules/node-sass/src/libsass/src/operation.hpp new file mode 100644 index 0000000..2d4fbec --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/operation.hpp @@ -0,0 +1,173 @@ +#ifndef SASS_OPERATION_H +#define SASS_OPERATION_H + +#include "ast_fwd_decl.hpp" + +namespace Sass { + + template + class Operation { + public: + virtual T operator()(AST_Node_Ptr x) = 0; + virtual ~Operation() { } + // statements + virtual T operator()(Block_Ptr x) = 0; + virtual T operator()(Ruleset_Ptr x) = 0; + virtual T operator()(Bubble_Ptr x) = 0; + virtual T operator()(Trace_Ptr x) = 0; + virtual T operator()(Supports_Block_Ptr x) = 0; + virtual T operator()(Media_Block_Ptr x) = 0; + virtual T operator()(At_Root_Block_Ptr x) = 0; + virtual T operator()(Directive_Ptr x) = 0; + virtual T operator()(Keyframe_Rule_Ptr x) = 0; + virtual T operator()(Declaration_Ptr x) = 0; + virtual T operator()(Assignment_Ptr x) = 0; + virtual T operator()(Import_Ptr x) = 0; + virtual T operator()(Import_Stub_Ptr x) = 0; + virtual T operator()(Warning_Ptr x) = 0; + virtual T operator()(Error_Ptr x) = 0; + virtual T operator()(Debug_Ptr x) = 0; + virtual T operator()(Comment_Ptr x) = 0; + virtual T operator()(If_Ptr x) = 0; + virtual T operator()(For_Ptr x) = 0; + virtual T operator()(Each_Ptr x) = 0; + virtual T operator()(While_Ptr x) = 0; + virtual T operator()(Return_Ptr x) = 0; + virtual T operator()(Content_Ptr x) = 0; + virtual T operator()(Extension_Ptr x) = 0; + virtual T operator()(Definition_Ptr x) = 0; + virtual T operator()(Mixin_Call_Ptr x) = 0; + // expressions + virtual T operator()(List_Ptr x) = 0; + virtual T operator()(Map_Ptr x) = 0; + virtual T operator()(Function_Ptr x) = 0; + virtual T operator()(Binary_Expression_Ptr x) = 0; + virtual T operator()(Unary_Expression_Ptr x) = 0; + virtual T operator()(Function_Call_Ptr x) = 0; + virtual T operator()(Function_Call_Schema_Ptr x) = 0; + virtual T operator()(Custom_Warning_Ptr x) = 0; + virtual T operator()(Custom_Error_Ptr x) = 0; + virtual T operator()(Variable_Ptr x) = 0; + virtual T operator()(Number_Ptr x) = 0; + virtual T operator()(Color_Ptr x) = 0; + virtual T operator()(Boolean_Ptr x) = 0; + virtual T operator()(String_Schema_Ptr x) = 0; + virtual T operator()(String_Quoted_Ptr x) = 0; + virtual T operator()(String_Constant_Ptr x) = 0; + virtual T operator()(Supports_Condition_Ptr x) = 0; + virtual T operator()(Supports_Operator_Ptr x) = 0; + virtual T operator()(Supports_Negation_Ptr x) = 0; + virtual T operator()(Supports_Declaration_Ptr x) = 0; + virtual T operator()(Supports_Interpolation_Ptr x) = 0; + virtual T operator()(Media_Query_Ptr x) = 0; + virtual T operator()(Media_Query_Expression_Ptr x) = 0; + virtual T operator()(At_Root_Query_Ptr x) = 0; + virtual T operator()(Null_Ptr x) = 0; + virtual T operator()(Parent_Selector_Ptr x) = 0; + // parameters and arguments + virtual T operator()(Parameter_Ptr x) = 0; + virtual T operator()(Parameters_Ptr x) = 0; + virtual T operator()(Argument_Ptr x) = 0; + virtual T operator()(Arguments_Ptr x) = 0; + // selectors + virtual T operator()(Selector_Schema_Ptr x) = 0; + virtual T operator()(Placeholder_Selector_Ptr x) = 0; + virtual T operator()(Element_Selector_Ptr x) = 0; + virtual T operator()(Class_Selector_Ptr x) = 0; + virtual T operator()(Id_Selector_Ptr x) = 0; + virtual T operator()(Attribute_Selector_Ptr x) = 0; + virtual T operator()(Pseudo_Selector_Ptr x) = 0; + virtual T operator()(Wrapped_Selector_Ptr x) = 0; + virtual T operator()(Compound_Selector_Ptr x)= 0; + virtual T operator()(Complex_Selector_Ptr x) = 0; + virtual T operator()(Selector_List_Ptr x) = 0; + + template + T fallback(U x) { return T(); } + }; + + template + class Operation_CRTP : public Operation { + public: + D& impl() { return static_cast(*this); } + public: + T operator()(AST_Node_Ptr x) { return static_cast(this)->fallback(x); } + // statements + T operator()(Block_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Ruleset_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Bubble_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Trace_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Supports_Block_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Media_Block_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(At_Root_Block_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Directive_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Keyframe_Rule_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Declaration_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Assignment_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Import_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Import_Stub_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Warning_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Error_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Debug_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Comment_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(If_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(For_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Each_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(While_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Return_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Content_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Extension_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Definition_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Mixin_Call_Ptr x) { return static_cast(this)->fallback(x); } + // expressions + T operator()(List_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Map_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Function_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Binary_Expression_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Unary_Expression_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Function_Call_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Function_Call_Schema_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Custom_Warning_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Custom_Error_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Variable_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Number_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Color_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Boolean_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(String_Schema_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(String_Constant_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(String_Quoted_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Supports_Condition_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Supports_Operator_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Supports_Negation_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Supports_Declaration_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Supports_Interpolation_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Media_Query_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Media_Query_Expression_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(At_Root_Query_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Null_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Parent_Selector_Ptr x) { return static_cast(this)->fallback(x); } + // parameters and arguments + T operator()(Parameter_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Parameters_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Argument_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Arguments_Ptr x) { return static_cast(this)->fallback(x); } + // selectors + T operator()(Selector_Schema_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Placeholder_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Element_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Class_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Id_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Attribute_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Pseudo_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Wrapped_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Compound_Selector_Ptr x){ return static_cast(this)->fallback(x); } + T operator()(Complex_Selector_Ptr x) { return static_cast(this)->fallback(x); } + T operator()(Selector_List_Ptr x) { return static_cast(this)->fallback(x); } + + template + T fallback(U x) { return T(); } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/operators.cpp b/mybulma/node_modules/node-sass/src/libsass/src/operators.cpp new file mode 100644 index 0000000..a1fd562 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/operators.cpp @@ -0,0 +1,267 @@ +#include "sass.hpp" +#include "operators.hpp" + +namespace Sass { + + namespace Operators { + + inline double add(double x, double y) { return x + y; } + inline double sub(double x, double y) { return x - y; } + inline double mul(double x, double y) { return x * y; } + inline double div(double x, double y) { return x / y; } // x/0 checked by caller + + inline double mod(double x, double y) { // x/0 checked by caller + if ((x > 0 && y < 0) || (x < 0 && y > 0)) { + double ret = std::fmod(x, y); + return ret ? ret + y : ret; + } else { + return std::fmod(x, y); + } + } + + typedef double (*bop)(double, double); + bop ops[Sass_OP::NUM_OPS] = { + 0, 0, // and, or + 0, 0, 0, 0, 0, 0, // eq, neq, gt, gte, lt, lte + add, sub, mul, div, mod + }; + + /* static function, has no pstate or traces */ + bool eq(Expression_Obj lhs, Expression_Obj rhs) + { + // operation is undefined if one is not a number + if (!lhs || !rhs) throw Exception::UndefinedOperation(lhs, rhs, Sass_OP::EQ); + // use compare operator from ast node + return *lhs == *rhs; + } + + /* static function, throws OperationError, has no pstate or traces */ + bool cmp(Expression_Obj lhs, Expression_Obj rhs, const Sass_OP op) + { + // can only compare numbers!? + Number_Obj l = Cast(lhs); + Number_Obj r = Cast(rhs); + // operation is undefined if one is not a number + if (!l || !r) throw Exception::UndefinedOperation(lhs, rhs, op); + // use compare operator from ast node + return *l < *r; + } + + /* static functions, throws OperationError, has no pstate or traces */ + bool lt(Expression_Obj lhs, Expression_Obj rhs) { return cmp(lhs, rhs, Sass_OP::LT); } + bool neq(Expression_Obj lhs, Expression_Obj rhs) { return eq(lhs, rhs) == false; } + bool gt(Expression_Obj lhs, Expression_Obj rhs) { return !cmp(lhs, rhs, Sass_OP::GT) && neq(lhs, rhs); } + bool lte(Expression_Obj lhs, Expression_Obj rhs) { return cmp(lhs, rhs, Sass_OP::LTE) || eq(lhs, rhs); } + bool gte(Expression_Obj lhs, Expression_Obj rhs) { return !cmp(lhs, rhs, Sass_OP::GTE) || eq(lhs, rhs); } + + /* colour math deprecation warning */ + void op_color_deprecation(enum Sass_OP op, std::string lsh, std::string rhs, const ParserState& pstate) + { + std::string op_str( + op == Sass_OP::ADD ? "plus" : + op == Sass_OP::DIV ? "div" : + op == Sass_OP::SUB ? "minus" : + op == Sass_OP::MUL ? "times" : "" + ); + + std::string msg("The operation `" + lsh + " " + op_str + " " + rhs + "` is deprecated and will be an error in future versions."); + std::string tail("Consider using Sass's color functions instead.\nhttp://sass-lang.com/documentation/Sass/Script/Functions.html#other_color_functions"); + + deprecated(msg, tail, false, pstate); + } + + /* static function, throws OperationError, has no traces but optional pstate for returned value */ + Value_Ptr op_strings(Sass::Operand operand, Value& lhs, Value& rhs, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed) + { + enum Sass_OP op = operand.operand; + + String_Quoted_Ptr lqstr = Cast(&lhs); + String_Quoted_Ptr rqstr = Cast(&rhs); + + std::string lstr(lqstr ? lqstr->value() : lhs.to_string(opt)); + std::string rstr(rqstr ? rqstr->value() : rhs.to_string(opt)); + + if (Cast(&lhs)) throw Exception::InvalidNullOperation(&lhs, &rhs, op); + if (Cast(&rhs)) throw Exception::InvalidNullOperation(&lhs, &rhs, op); + + std::string sep; + switch (op) { + case Sass_OP::ADD: sep = ""; break; + case Sass_OP::SUB: sep = "-"; break; + case Sass_OP::DIV: sep = "/"; break; + case Sass_OP::EQ: sep = "=="; break; + case Sass_OP::NEQ: sep = "!="; break; + case Sass_OP::LT: sep = "<"; break; + case Sass_OP::GT: sep = ">"; break; + case Sass_OP::LTE: sep = "<="; break; + case Sass_OP::GTE: sep = ">="; break; + default: + throw Exception::UndefinedOperation(&lhs, &rhs, op); + break; + } + + if (op == Sass_OP::ADD) { + // create string that might be quoted on output (but do not unquote what we pass) + return SASS_MEMORY_NEW(String_Quoted, pstate, lstr + rstr, 0, false, true); + } + + // add whitespace around operator + // but only if result is not delayed + if (sep != "" && delayed == false) { + if (operand.ws_before) sep = " " + sep; + if (operand.ws_after) sep = sep + " "; + } + + if (op == Sass_OP::SUB || op == Sass_OP::DIV) { + if (lqstr && lqstr->quote_mark()) lstr = quote(lstr); + if (rqstr && rqstr->quote_mark()) rstr = quote(rstr); + } + + return SASS_MEMORY_NEW(String_Constant, pstate, lstr + sep + rstr); + } + + /* static function, throws OperationError, has no traces but optional pstate for returned value */ + Value_Ptr op_colors(enum Sass_OP op, const Color& lhs, const Color& rhs, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed) + { + + if (lhs.a() != rhs.a()) { + throw Exception::AlphaChannelsNotEqual(&lhs, &rhs, op); + } + if ((op == Sass_OP::DIV || op == Sass_OP::MOD) && (!rhs.r() || !rhs.g() || !rhs.b())) { + throw Exception::ZeroDivisionError(lhs, rhs); + } + + op_color_deprecation(op, lhs.to_string(), rhs.to_string(), pstate); + + return SASS_MEMORY_NEW(Color, + pstate, + ops[op](lhs.r(), rhs.r()), + ops[op](lhs.g(), rhs.g()), + ops[op](lhs.b(), rhs.b()), + lhs.a()); + } + + /* static function, throws OperationError, has no traces but optional pstate for returned value */ + Value_Ptr op_numbers(enum Sass_OP op, const Number& lhs, const Number& rhs, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed) + { + double lval = lhs.value(); + double rval = rhs.value(); + + if (op == Sass_OP::MOD && rval == 0) { + return SASS_MEMORY_NEW(String_Quoted, pstate, "NaN"); + } + + if (op == Sass_OP::DIV && rval == 0) { + std::string result(lval ? "Infinity" : "NaN"); + return SASS_MEMORY_NEW(String_Quoted, pstate, result); + } + + size_t l_n_units = lhs.numerators.size(); + size_t l_d_units = lhs.numerators.size(); + size_t r_n_units = rhs.denominators.size(); + size_t r_d_units = rhs.denominators.size(); + // optimize out the most common and simplest case + if (l_n_units == r_n_units && l_d_units == r_d_units) { + if (l_n_units + l_d_units <= 1 && r_n_units + r_d_units <= 1) { + if (lhs.numerators == rhs.numerators) { + if (lhs.denominators == rhs.denominators) { + Number_Ptr v = SASS_MEMORY_COPY(&lhs); + v->value(ops[op](lval, rval)); + return v; + } + } + } + } + + Number_Obj v = SASS_MEMORY_COPY(&lhs); + + if (lhs.is_unitless() && (op == Sass_OP::ADD || op == Sass_OP::SUB || op == Sass_OP::MOD)) { + v->numerators = rhs.numerators; + v->denominators = rhs.denominators; + } + + if (op == Sass_OP::MUL) { + v->value(ops[op](lval, rval)); + v->numerators.insert(v->numerators.end(), + rhs.numerators.begin(), rhs.numerators.end() + ); + v->denominators.insert(v->denominators.end(), + rhs.denominators.begin(), rhs.denominators.end() + ); + v->reduce(); + } + else if (op == Sass_OP::DIV) { + v->value(ops[op](lval, rval)); + v->numerators.insert(v->numerators.end(), + rhs.denominators.begin(), rhs.denominators.end() + ); + v->denominators.insert(v->denominators.end(), + rhs.numerators.begin(), rhs.numerators.end() + ); + v->reduce(); + } + else { + Number ln(lhs), rn(rhs); + ln.reduce(); rn.reduce(); + double f(rn.convert_factor(ln)); + v->value(ops[op](lval, rn.value() * f)); + } + + v->pstate(pstate); + return v.detach(); + } + + /* static function, throws OperationError, has no traces but optional pstate for returned value */ + Value_Ptr op_number_color(enum Sass_OP op, const Number& lhs, const Color& rhs, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed) + { + double lval = lhs.value(); + + switch (op) { + case Sass_OP::ADD: + case Sass_OP::MUL: { + op_color_deprecation(op, lhs.to_string(), rhs.to_string(opt), pstate); + return SASS_MEMORY_NEW(Color, + pstate, + ops[op](lval, rhs.r()), + ops[op](lval, rhs.g()), + ops[op](lval, rhs.b()), + rhs.a()); + } + case Sass_OP::SUB: + case Sass_OP::DIV: { + std::string color(rhs.to_string(opt)); + op_color_deprecation(op, lhs.to_string(), color, pstate); + return SASS_MEMORY_NEW(String_Quoted, + pstate, + lhs.to_string(opt) + + sass_op_separator(op) + + color); + } + default: break; + } + throw Exception::UndefinedOperation(&lhs, &rhs, op); + } + + /* static function, throws OperationError, has no traces but optional pstate for returned value */ + Value_Ptr op_color_number(enum Sass_OP op, const Color& lhs, const Number& rhs, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed) + { + double rval = rhs.value(); + + if ((op == Sass_OP::DIV || op == Sass_OP::DIV) && rval == 0) { + // comparison of Fixnum with Float failed? + throw Exception::ZeroDivisionError(lhs, rhs); + } + + op_color_deprecation(op, lhs.to_string(), rhs.to_string(), pstate); + + return SASS_MEMORY_NEW(Color, + pstate, + ops[op](lhs.r(), rval), + ops[op](lhs.g(), rval), + ops[op](lhs.b(), rval), + lhs.a()); + } + + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/operators.hpp b/mybulma/node_modules/node-sass/src/libsass/src/operators.hpp new file mode 100644 index 0000000..f89eb4e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/operators.hpp @@ -0,0 +1,30 @@ +#ifndef SASS_OPERATORS_H +#define SASS_OPERATORS_H + +#include "values.hpp" +#include "sass/values.h" + +namespace Sass { + + namespace Operators { + + // equality operator using AST Node operator== + bool eq(Expression_Obj, Expression_Obj); + bool neq(Expression_Obj, Expression_Obj); + // specific operators based on cmp and eq + bool lt(Expression_Obj, Expression_Obj); + bool gt(Expression_Obj, Expression_Obj); + bool lte(Expression_Obj, Expression_Obj); + bool gte(Expression_Obj, Expression_Obj); + // arithmetic for all the combinations that matter + Value_Ptr op_strings(Sass::Operand, Value&, Value&, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed = false); + Value_Ptr op_colors(enum Sass_OP, const Color&, const Color&, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed = false); + Value_Ptr op_numbers(enum Sass_OP, const Number&, const Number&, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed = false); + Value_Ptr op_number_color(enum Sass_OP, const Number&, const Color&, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed = false); + Value_Ptr op_color_number(enum Sass_OP, const Color&, const Number&, struct Sass_Inspect_Options opt, const ParserState& pstate, bool delayed = false); + + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/output.cpp b/mybulma/node_modules/node-sass/src/libsass/src/output.cpp new file mode 100644 index 0000000..b2ca65e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/output.cpp @@ -0,0 +1,336 @@ +#include "sass.hpp" +#include "ast.hpp" +#include "output.hpp" + +namespace Sass { + + Output::Output(Sass_Output_Options& opt) + : Inspect(Emitter(opt)), + charset(""), + top_nodes(0) + {} + + Output::~Output() { } + + void Output::fallback_impl(AST_Node_Ptr n) + { + return n->perform(this); + } + + void Output::operator()(Number_Ptr n) + { + // check for a valid unit here + // includes result for reporting + if (!n->is_valid_css_unit()) { + // should be handle in check_expression + throw Exception::InvalidValue({}, *n); + } + // use values to_string facility + std::string res = n->to_string(opt); + // output the final token + append_token(res, n); + } + + void Output::operator()(Import_Ptr imp) + { + top_nodes.push_back(imp); + } + + void Output::operator()(Map_Ptr m) + { + // should be handle in check_expression + throw Exception::InvalidValue({}, *m); + } + + OutputBuffer Output::get_buffer(void) + { + + Emitter emitter(opt); + Inspect inspect(emitter); + + size_t size_nodes = top_nodes.size(); + for (size_t i = 0; i < size_nodes; i++) { + top_nodes[i]->perform(&inspect); + inspect.append_mandatory_linefeed(); + } + + // flush scheduled outputs + // maybe omit semicolon if possible + inspect.finalize(wbuf.buffer.size() == 0); + // prepend buffer on top + prepend_output(inspect.output()); + // make sure we end with a linefeed + if (!ends_with(wbuf.buffer, opt.linefeed)) { + // if the output is not completely empty + if (!wbuf.buffer.empty()) append_string(opt.linefeed); + } + + // search for unicode char + for(const char& chr : wbuf.buffer) { + // skip all ascii chars + // static cast to unsigned to handle `char` being signed / unsigned + if (static_cast(chr) < 128) continue; + // declare the charset + if (output_style() != COMPRESSED) + charset = "@charset \"UTF-8\";" + + std::string(opt.linefeed); + else charset = "\xEF\xBB\xBF"; + // abort search + break; + } + + // add charset as first line, before comments and imports + if (!charset.empty()) prepend_string(charset); + + return wbuf; + + } + + void Output::operator()(Comment_Ptr c) + { + std::string txt = c->text()->to_string(opt); + // if (indentation && txt == "/**/") return; + bool important = c->is_important(); + if (output_style() != COMPRESSED || important) { + if (buffer().size() == 0) { + top_nodes.push_back(c); + } else { + in_comment = true; + append_indentation(); + c->text()->perform(this); + in_comment = false; + if (indentation == 0) { + append_mandatory_linefeed(); + } else { + append_optional_linefeed(); + } + } + } + } + + void Output::operator()(Ruleset_Ptr r) + { + Selector_Obj s = r->selector(); + Block_Obj b = r->block(); + + // Filter out rulesets that aren't printable (process its children though) + if (!Util::isPrintable(r, output_style())) { + for (size_t i = 0, L = b->length(); i < L; ++i) { + const Statement_Obj& stm = b->at(i); + if (Cast(stm)) { + if (!Cast(stm)) { + stm->perform(this); + } + } + } + return; + } + + if (output_style() == NESTED) indentation += r->tabs(); + if (opt.source_comments) { + std::stringstream ss; + append_indentation(); + std::string path(File::abs2rel(r->pstate().path)); + ss << "/* line " << r->pstate().line + 1 << ", " << path << " */"; + append_string(ss.str()); + append_optional_linefeed(); + } + scheduled_crutch = s; + if (s) s->perform(this); + append_scope_opener(b); + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + bool bPrintExpression = true; + // Check print conditions + if (Declaration_Ptr dec = Cast(stm)) { + if (String_Constant_Ptr valConst = Cast(dec->value())) { + std::string val(valConst->value()); + if (String_Quoted_Ptr qstr = Cast(valConst)) { + if (!qstr->quote_mark() && val.empty()) { + bPrintExpression = false; + } + } + } + else if (List_Ptr list = Cast(dec->value())) { + bool all_invisible = true; + for (size_t list_i = 0, list_L = list->length(); list_i < list_L; ++list_i) { + Expression_Ptr item = list->at(list_i); + if (!item->is_invisible()) all_invisible = false; + } + if (all_invisible && !list->is_bracketed()) bPrintExpression = false; + } + } + // Print if OK + if (bPrintExpression) { + stm->perform(this); + } + } + if (output_style() == NESTED) indentation -= r->tabs(); + append_scope_closer(b); + + } + void Output::operator()(Keyframe_Rule_Ptr r) + { + Block_Obj b = r->block(); + Selector_Obj v = r->name(); + + if (!v.isNull()) { + v->perform(this); + } + + if (!b) { + append_colon_separator(); + return; + } + + append_scope_opener(); + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + stm->perform(this); + if (i < L - 1) append_special_linefeed(); + } + append_scope_closer(); + } + + void Output::operator()(Supports_Block_Ptr f) + { + if (f->is_invisible()) return; + + Supports_Condition_Obj c = f->condition(); + Block_Obj b = f->block(); + + // Filter out feature blocks that aren't printable (process its children though) + if (!Util::isPrintable(f, output_style())) { + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + if (Cast(stm)) { + stm->perform(this); + } + } + return; + } + + if (output_style() == NESTED) indentation += f->tabs(); + append_indentation(); + append_token("@supports", f); + append_mandatory_space(); + c->perform(this); + append_scope_opener(); + + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + stm->perform(this); + if (i < L - 1) append_special_linefeed(); + } + + if (output_style() == NESTED) indentation -= f->tabs(); + + append_scope_closer(); + + } + + void Output::operator()(Media_Block_Ptr m) + { + if (m->is_invisible()) return; + + Block_Obj b = m->block(); + + // Filter out media blocks that aren't printable (process its children though) + if (!Util::isPrintable(m, output_style())) { + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + if (Cast(stm)) { + stm->perform(this); + } + } + return; + } + if (output_style() == NESTED) indentation += m->tabs(); + append_indentation(); + append_token("@media", m); + append_mandatory_space(); + in_media_block = true; + m->media_queries()->perform(this); + in_media_block = false; + append_scope_opener(); + + for (size_t i = 0, L = b->length(); i < L; ++i) { + if (b->at(i)) { + Statement_Obj stm = b->at(i); + stm->perform(this); + } + if (i < L - 1) append_special_linefeed(); + } + + if (output_style() == NESTED) indentation -= m->tabs(); + append_scope_closer(); + } + + void Output::operator()(Directive_Ptr a) + { + std::string kwd = a->keyword(); + Selector_Obj s = a->selector(); + Expression_Obj v = a->value(); + Block_Obj b = a->block(); + + append_indentation(); + append_token(kwd, a); + if (s) { + append_mandatory_space(); + in_wrapped = true; + s->perform(this); + in_wrapped = false; + } + if (v) { + append_mandatory_space(); + // ruby sass bug? should use options? + append_token(v->to_string(/* opt */), v); + } + if (!b) { + append_delimiter(); + return; + } + + if (b->is_invisible() || b->length() == 0) { + append_optional_space(); + return append_string("{}"); + } + + append_scope_opener(); + + bool format = kwd != "@font-face";; + + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + stm->perform(this); + if (i < L - 1 && format) append_special_linefeed(); + } + + append_scope_closer(); + } + + void Output::operator()(String_Quoted_Ptr s) + { + if (s->quote_mark()) { + append_token(quote(s->value(), s->quote_mark()), s); + } else if (!in_comment) { + append_token(string_to_output(s->value()), s); + } else { + append_token(s->value(), s); + } + } + + void Output::operator()(String_Constant_Ptr s) + { + std::string value(s->value()); + if (s->can_compress_whitespace() && output_style() == COMPRESSED) { + value.erase(std::remove_if(value.begin(), value.end(), ::isspace), value.end()); + } + if (!in_comment && !in_custom_property) { + append_token(string_to_output(value), s); + } else { + append_token(value, s); + } + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/output.hpp b/mybulma/node_modules/node-sass/src/libsass/src/output.hpp new file mode 100644 index 0000000..c460b13 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/output.hpp @@ -0,0 +1,54 @@ +#ifndef SASS_OUTPUT_H +#define SASS_OUTPUT_H + +#include +#include + +#include "util.hpp" +#include "inspect.hpp" +#include "operation.hpp" + +namespace Sass { + class Context; + + // Refactor to make it generic to find linefeed (look behind) + inline bool ends_with(std::string const & value, std::string const & ending) + { + if (ending.size() > value.size()) return false; + return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); + } + + class Output : public Inspect { + protected: + using Inspect::operator(); + + public: + Output(Sass_Output_Options& opt); + virtual ~Output(); + + protected: + std::string charset; + std::vector top_nodes; + + public: + OutputBuffer get_buffer(void); + + virtual void operator()(Map_Ptr); + virtual void operator()(Ruleset_Ptr); + virtual void operator()(Supports_Block_Ptr); + virtual void operator()(Media_Block_Ptr); + virtual void operator()(Directive_Ptr); + virtual void operator()(Keyframe_Rule_Ptr); + virtual void operator()(Import_Ptr); + virtual void operator()(Comment_Ptr); + virtual void operator()(Number_Ptr); + virtual void operator()(String_Quoted_Ptr); + virtual void operator()(String_Constant_Ptr); + + void fallback_impl(AST_Node_Ptr n); + + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/parser.cpp b/mybulma/node_modules/node-sass/src/libsass/src/parser.cpp new file mode 100644 index 0000000..28fe022 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/parser.cpp @@ -0,0 +1,3137 @@ +#include "sass.hpp" +#include "parser.hpp" +#include "file.hpp" +#include "inspect.hpp" +#include "constants.hpp" +#include "util.hpp" +#include "prelexer.hpp" +#include "color_maps.hpp" +#include "sass/functions.h" +#include "error_handling.hpp" + +// Notes about delayed: some ast nodes can have delayed evaluation so +// they can preserve their original semantics if needed. This is most +// prominently exhibited by the division operation, since it is not +// only a valid operation, but also a valid css statement (i.e. for +// fonts, as in `16px/24px`). When parsing lists and expression we +// unwrap single items from lists and other operations. A nested list +// must not be delayed, only the items of the first level sometimes +// are delayed (as with argument lists). To achieve this we need to +// pass status to the list parser, so this can be set correctly. +// Another case with delayed values are colors. In compressed mode +// only processed values get compressed (other are left as written). + +#include +#include +#include +#include + +namespace Sass { + using namespace Constants; + using namespace Prelexer; + + Parser Parser::from_c_str(const char* beg, Context& ctx, Backtraces traces, ParserState pstate, const char* source) + { + pstate.offset.column = 0; + pstate.offset.line = 0; + Parser p(ctx, pstate, traces); + p.source = source ? source : beg; + p.position = beg ? beg : p.source; + p.end = p.position + strlen(p.position); + Block_Obj root = SASS_MEMORY_NEW(Block, pstate); + p.block_stack.push_back(root); + root->is_root(true); + return p; + } + + Parser Parser::from_c_str(const char* beg, const char* end, Context& ctx, Backtraces traces, ParserState pstate, const char* source) + { + pstate.offset.column = 0; + pstate.offset.line = 0; + Parser p(ctx, pstate, traces); + p.source = source ? source : beg; + p.position = beg ? beg : p.source; + p.end = end ? end : p.position + strlen(p.position); + Block_Obj root = SASS_MEMORY_NEW(Block, pstate); + p.block_stack.push_back(root); + root->is_root(true); + return p; + } + + void Parser::advanceToNextToken() { + lex < css_comments >(false); + // advance to position + pstate += pstate.offset; + pstate.offset.column = 0; + pstate.offset.line = 0; + } + + Selector_List_Obj Parser::parse_selector(const char* beg, Context& ctx, Backtraces traces, ParserState pstate, const char* source) + { + Parser p = Parser::from_c_str(beg, ctx, traces, pstate, source); + // ToDo: ruby sass errors on parent references + // ToDo: remap the source-map entries somehow + return p.parse_selector_list(false); + } + + bool Parser::peek_newline(const char* start) + { + return peek_linefeed(start ? start : position) + && ! peek_css>(start); + } + + Parser Parser::from_token(Token t, Context& ctx, Backtraces traces, ParserState pstate, const char* source) + { + Parser p(ctx, pstate, traces); + p.source = source ? source : t.begin; + p.position = t.begin ? t.begin : p.source; + p.end = t.end ? t.end : p.position + strlen(p.position); + Block_Obj root = SASS_MEMORY_NEW(Block, pstate); + p.block_stack.push_back(root); + root->is_root(true); + return p; + } + + /* main entry point to parse root block */ + Block_Obj Parser::parse() + { + + // consume unicode BOM + read_bom(); + + // scan the input to find invalid utf8 sequences + const char* it = utf8::find_invalid(position, end); + + // report invalid utf8 + if (it != end) { + pstate += Offset::init(position, it); + traces.push_back(Backtrace(pstate)); + throw Exception::InvalidSass(pstate, traces, "Invalid UTF-8 sequence"); + } + + // create a block AST node to hold children + Block_Obj root = SASS_MEMORY_NEW(Block, pstate, 0, true); + + // check seems a bit esoteric but works + if (ctx.resources.size() == 1) { + // apply headers only on very first include + ctx.apply_custom_headers(root, path, pstate); + } + + // parse children nodes + block_stack.push_back(root); + parse_block_nodes(true); + block_stack.pop_back(); + + // update final position + root->update_pstate(pstate); + + if (position != end) { + css_error("Invalid CSS", " after ", ": expected selector or at-rule, was "); + } + + return root; + } + + + // convenience function for block parsing + // will create a new block ad-hoc for you + // this is the base block parsing function + Block_Obj Parser::parse_css_block(bool is_root) + { + + // parse comments before block + // lex < optional_css_comments >(); + + // lex mandatory opener or error out + if (!lex_css < exactly<'{'> >()) { + css_error("Invalid CSS", " after ", ": expected \"{\", was "); + } + // create new block and push to the selector stack + Block_Obj block = SASS_MEMORY_NEW(Block, pstate, 0, is_root); + block_stack.push_back(block); + + if (!parse_block_nodes(is_root)) css_error("Invalid CSS", " after ", ": expected \"}\", was "); + + if (!lex_css < exactly<'}'> >()) { + css_error("Invalid CSS", " after ", ": expected \"}\", was "); + } + + // update for end position + // this seems to be done somewhere else + // but that fixed selector schema issue + // block->update_pstate(pstate); + + // parse comments after block + // lex < optional_css_comments >(); + + block_stack.pop_back(); + + return block; + } + + // convenience function for block parsing + // will create a new block ad-hoc for you + // also updates the `in_at_root` flag + Block_Obj Parser::parse_block(bool is_root) + { + return parse_css_block(is_root); + } + + // the main block parsing function + // parses stuff between `{` and `}` + bool Parser::parse_block_nodes(bool is_root) + { + + // loop until end of string + while (position < end) { + + // we should be able to refactor this + parse_block_comments(); + lex < css_whitespace >(); + + if (lex < exactly<';'> >()) continue; + if (peek < end_of_file >()) return true; + if (peek < exactly<'}'> >()) return true; + + if (parse_block_node(is_root)) continue; + + parse_block_comments(); + + if (lex_css < exactly<';'> >()) continue; + if (peek_css < end_of_file >()) return true; + if (peek_css < exactly<'}'> >()) return true; + + // illegal sass + return false; + } + // return success + return true; + } + + // parser for a single node in a block + // semicolons must be lexed beforehand + bool Parser::parse_block_node(bool is_root) { + + Block_Obj block = block_stack.back(); + + parse_block_comments(); + + // throw away white-space + // includes line comments + lex < css_whitespace >(); + + Lookahead lookahead_result; + + // also parse block comments + + // first parse everything that is allowed in functions + if (lex < variable >(true)) { block->append(parse_assignment()); } + else if (lex < kwd_err >(true)) { block->append(parse_error()); } + else if (lex < kwd_dbg >(true)) { block->append(parse_debug()); } + else if (lex < kwd_warn >(true)) { block->append(parse_warning()); } + else if (lex < kwd_if_directive >(true)) { block->append(parse_if_directive()); } + else if (lex < kwd_for_directive >(true)) { block->append(parse_for_directive()); } + else if (lex < kwd_each_directive >(true)) { block->append(parse_each_directive()); } + else if (lex < kwd_while_directive >(true)) { block->append(parse_while_directive()); } + else if (lex < kwd_return_directive >(true)) { block->append(parse_return_directive()); } + + // parse imports to process later + else if (lex < kwd_import >(true)) { + Scope parent = stack.empty() ? Scope::Rules : stack.back(); + if (parent != Scope::Function && parent != Scope::Root && parent != Scope::Rules && parent != Scope::Media) { + if (! peek_css< uri_prefix >(position)) { // this seems to go in ruby sass 3.4.20 + error("Import directives may not be used within control directives or mixins."); + } + } + // this puts the parsed doc into sheets + // import stub will fetch this in expand + Import_Obj imp = parse_import(); + // if it is a url, we only add the statement + if (!imp->urls().empty()) block->append(imp); + // process all resources now (add Import_Stub nodes) + for (size_t i = 0, S = imp->incs().size(); i < S; ++i) { + block->append(SASS_MEMORY_NEW(Import_Stub, pstate, imp->incs()[i])); + } + } + + else if (lex < kwd_extend >(true)) { + Lookahead lookahead = lookahead_for_include(position); + if (!lookahead.found) css_error("Invalid CSS", " after ", ": expected selector, was "); + Selector_List_Obj target; + if (!lookahead.has_interpolants) { + target = parse_selector_list(true); + } + else { + target = SASS_MEMORY_NEW(Selector_List, pstate); + target->schema(parse_selector_schema(lookahead.found, true)); + } + + block->append(SASS_MEMORY_NEW(Extension, pstate, target)); + } + + // selector may contain interpolations which need delayed evaluation + else if ( + !(lookahead_result = lookahead_for_selector(position)).error && + !lookahead_result.is_custom_property + ) + { + block->append(parse_ruleset(lookahead_result)); + } + + // parse multiple specific keyword directives + else if (lex < kwd_media >(true)) { block->append(parse_media_block()); } + else if (lex < kwd_at_root >(true)) { block->append(parse_at_root_block()); } + else if (lex < kwd_include_directive >(true)) { block->append(parse_include_directive()); } + else if (lex < kwd_content_directive >(true)) { block->append(parse_content_directive()); } + else if (lex < kwd_supports_directive >(true)) { block->append(parse_supports_directive()); } + else if (lex < kwd_mixin >(true)) { block->append(parse_definition(Definition::MIXIN)); } + else if (lex < kwd_function >(true)) { block->append(parse_definition(Definition::FUNCTION)); } + + // ignore the @charset directive for now + else if (lex< kwd_charset_directive >(true)) { parse_charset_directive(); } + + // generic at keyword (keep last) + else if (lex< re_special_directive >(true)) { block->append(parse_special_directive()); } + else if (lex< re_prefixed_directive >(true)) { block->append(parse_prefixed_directive()); } + else if (lex< at_keyword >(true)) { block->append(parse_directive()); } + + else if (is_root && stack.back() != Scope::AtRoot /* && block->is_root() */) { + lex< css_whitespace >(); + if (position >= end) return true; + css_error("Invalid CSS", " after ", ": expected 1 selector or at-rule, was "); + } + // parse a declaration + else + { + // ToDo: how does it handle parse errors? + // maybe we are expected to parse something? + Declaration_Obj decl = parse_declaration(); + decl->tabs(indentation); + block->append(decl); + // maybe we have a "sub-block" + if (peek< exactly<'{'> >()) { + if (decl->is_indented()) ++ indentation; + // parse a propset that rides on the declaration's property + stack.push_back(Scope::Properties); + decl->block(parse_block()); + stack.pop_back(); + if (decl->is_indented()) -- indentation; + } + } + // something matched + return true; + } + // EO parse_block_nodes + + // parse imports inside the + Import_Obj Parser::parse_import() + { + Import_Obj imp = SASS_MEMORY_NEW(Import, pstate); + std::vector> to_import; + bool first = true; + do { + while (lex< block_comment >()); + if (lex< quoted_string >()) { + to_import.push_back(std::pair(std::string(lexed), 0)); + } + else if (lex< uri_prefix >()) { + Arguments_Obj args = SASS_MEMORY_NEW(Arguments, pstate); + Function_Call_Obj result = SASS_MEMORY_NEW(Function_Call, pstate, "url", args); + + if (lex< quoted_string >()) { + Expression_Obj quoted_url = parse_string(); + args->append(SASS_MEMORY_NEW(Argument, quoted_url->pstate(), quoted_url)); + } + else if (String_Obj string_url = parse_url_function_argument()) { + args->append(SASS_MEMORY_NEW(Argument, string_url->pstate(), string_url)); + } + else if (peek < skip_over_scopes < exactly < '(' >, exactly < ')' > > >(position)) { + Expression_Obj braced_url = parse_list(); // parse_interpolated_chunk(lexed); + args->append(SASS_MEMORY_NEW(Argument, braced_url->pstate(), braced_url)); + } + else { + error("malformed URL"); + } + if (!lex< exactly<')'> >()) error("URI is missing ')'"); + to_import.push_back(std::pair("", result)); + } + else { + if (first) error("@import directive requires a url or quoted path"); + else error("expecting another url or quoted path in @import list"); + } + first = false; + } while (lex_css< exactly<','> >()); + + if (!peek_css< alternatives< exactly<';'>, exactly<'}'>, end_of_file > >()) { + List_Obj import_queries = parse_media_queries(); + imp->import_queries(import_queries); + } + + for(auto location : to_import) { + if (location.second) { + imp->urls().push_back(location.second); + } + // check if custom importers want to take over the handling + else if (!ctx.call_importers(unquote(location.first), path, pstate, imp)) { + // nobody wants it, so we do our import + ctx.import_url(imp, location.first, path); + } + } + + return imp; + } + + Definition_Obj Parser::parse_definition(Definition::Type which_type) + { + std::string which_str(lexed); + if (!lex< identifier >()) error("invalid name in " + which_str + " definition"); + std::string name(Util::normalize_underscores(lexed)); + if (which_type == Definition::FUNCTION && (name == "and" || name == "or" || name == "not")) + { error("Invalid function name \"" + name + "\"."); } + ParserState source_position_of_def = pstate; + Parameters_Obj params = parse_parameters(); + if (which_type == Definition::MIXIN) stack.push_back(Scope::Mixin); + else stack.push_back(Scope::Function); + Block_Obj body = parse_block(); + stack.pop_back(); + return SASS_MEMORY_NEW(Definition, source_position_of_def, name, params, body, which_type); + } + + Parameters_Obj Parser::parse_parameters() + { + Parameters_Obj params = SASS_MEMORY_NEW(Parameters, pstate); + if (lex_css< exactly<'('> >()) { + // if there's anything there at all + if (!peek_css< exactly<')'> >()) { + do { + if (peek< exactly<')'> >()) break; + params->append(parse_parameter()); + } while (lex_css< exactly<','> >()); + } + if (!lex_css< exactly<')'> >()) { + css_error("Invalid CSS", " after ", ": expected \")\", was "); + } + } + return params; + } + + Parameter_Obj Parser::parse_parameter() + { + if (peek< alternatives< exactly<','>, exactly< '{' >, exactly<';'> > >()) { + css_error("Invalid CSS", " after ", ": expected variable (e.g. $foo), was "); + } + while (lex< alternatives < spaces, block_comment > >()); + lex < variable >(); + std::string name(Util::normalize_underscores(lexed)); + ParserState pos = pstate; + Expression_Obj val; + bool is_rest = false; + while (lex< alternatives < spaces, block_comment > >()); + if (lex< exactly<':'> >()) { // there's a default value + while (lex< block_comment >()); + val = parse_space_list(); + } + else if (lex< exactly< ellipsis > >()) { + is_rest = true; + } + return SASS_MEMORY_NEW(Parameter, pos, name, val, is_rest); + } + + Arguments_Obj Parser::parse_arguments() + { + Arguments_Obj args = SASS_MEMORY_NEW(Arguments, pstate); + if (lex_css< exactly<'('> >()) { + // if there's anything there at all + if (!peek_css< exactly<')'> >()) { + do { + if (peek< exactly<')'> >()) break; + args->append(parse_argument()); + } while (lex_css< exactly<','> >()); + } + if (!lex_css< exactly<')'> >()) { + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + } + return args; + } + + Argument_Obj Parser::parse_argument() + { + if (peek< alternatives< exactly<','>, exactly< '{' >, exactly<';'> > >()) { + css_error("Invalid CSS", " after ", ": expected \")\", was "); + } + if (peek_css< sequence < exactly< hash_lbrace >, exactly< rbrace > > >()) { + position += 2; + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + + Argument_Obj arg; + if (peek_css< sequence < variable, optional_css_comments, exactly<':'> > >()) { + lex_css< variable >(); + std::string name(Util::normalize_underscores(lexed)); + ParserState p = pstate; + lex_css< exactly<':'> >(); + Expression_Obj val = parse_space_list(); + arg = SASS_MEMORY_NEW(Argument, p, val, name); + } + else { + bool is_arglist = false; + bool is_keyword = false; + Expression_Obj val = parse_space_list(); + List_Ptr l = Cast(val); + if (lex_css< exactly< ellipsis > >()) { + if (val->concrete_type() == Expression::MAP || ( + (l != NULL && l->separator() == SASS_HASH) + )) is_keyword = true; + else is_arglist = true; + } + arg = SASS_MEMORY_NEW(Argument, pstate, val, "", is_arglist, is_keyword); + } + return arg; + } + + Assignment_Obj Parser::parse_assignment() + { + std::string name(Util::normalize_underscores(lexed)); + ParserState var_source_position = pstate; + if (!lex< exactly<':'> >()) error("expected ':' after " + name + " in assignment statement"); + if (peek_css< alternatives < exactly<';'>, end_of_file > >()) { + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + Expression_Obj val; + Lookahead lookahead = lookahead_for_value(position); + if (lookahead.has_interpolants && lookahead.found) { + val = parse_value_schema(lookahead.found); + } else { + val = parse_list(); + } + bool is_default = false; + bool is_global = false; + while (peek< alternatives < default_flag, global_flag > >()) { + if (lex< default_flag >()) is_default = true; + else if (lex< global_flag >()) is_global = true; + } + return SASS_MEMORY_NEW(Assignment, var_source_position, name, val, is_default, is_global); + } + + // a ruleset connects a selector and a block + Ruleset_Obj Parser::parse_ruleset(Lookahead lookahead) + { + NESTING_GUARD(nestings); + // inherit is_root from parent block + Block_Obj parent = block_stack.back(); + bool is_root = parent && parent->is_root(); + // make sure to move up the the last position + lex < optional_css_whitespace >(false, true); + // create the connector object (add parts later) + Ruleset_Obj ruleset = SASS_MEMORY_NEW(Ruleset, pstate); + // parse selector static or as schema to be evaluated later + if (lookahead.parsable) ruleset->selector(parse_selector_list(false)); + else { + Selector_List_Obj list = SASS_MEMORY_NEW(Selector_List, pstate); + list->schema(parse_selector_schema(lookahead.position, false)); + ruleset->selector(list); + } + // then parse the inner block + stack.push_back(Scope::Rules); + ruleset->block(parse_block()); + stack.pop_back(); + // update for end position + ruleset->update_pstate(pstate); + ruleset->block()->update_pstate(pstate); + // need this info for sanity checks + ruleset->is_root(is_root); + // return AST Node + return ruleset; + } + + // parse a selector schema that will be evaluated in the eval stage + // uses a string schema internally to do the actual schema handling + // in the eval stage we will be re-parse it into an actual selector + Selector_Schema_Obj Parser::parse_selector_schema(const char* end_of_selector, bool chroot) + { + NESTING_GUARD(nestings); + // move up to the start + lex< optional_spaces >(); + const char* i = position; + // selector schema re-uses string schema implementation + String_Schema_Ptr schema = SASS_MEMORY_NEW(String_Schema, pstate); + // the selector schema is pretty much just a wrapper for the string schema + Selector_Schema_Obj selector_schema = SASS_MEMORY_NEW(Selector_Schema, pstate, schema); + selector_schema->connect_parent(chroot == false); + selector_schema->media_block(last_media_block); + + // process until end + while (i < end_of_selector) { + // try to parse mutliple interpolants + if (const char* p = find_first_in_interval< exactly, block_comment >(i, end_of_selector)) { + // accumulate the preceding segment if the position has advanced + if (i < p) { + std::string parsed(i, p); + String_Constant_Obj str = SASS_MEMORY_NEW(String_Constant, pstate, parsed); + pstate += Offset(parsed); + str->update_pstate(pstate); + schema->append(str); + } + + // skip over all nested inner interpolations up to our own delimiter + const char* j = skip_over_scopes< exactly, exactly >(p + 2, end_of_selector); + // check if the interpolation never ends of only contains white-space (error out) + if (!j || peek < sequence < optional_spaces, exactly > >(p+2)) { + position = p+2; + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + // pass inner expression to the parser to resolve nested interpolations + pstate.add(p, p+2); + Expression_Obj interpolant = Parser::from_c_str(p+2, j, ctx, traces, pstate).parse_list(); + // set status on the list expression + interpolant->is_interpolant(true); + // schema->has_interpolants(true); + // add to the string schema + schema->append(interpolant); + // advance parser state + pstate.add(p+2, j); + // advance position + i = j; + } + // no more interpolants have been found + // add the last segment if there is one + else { + // make sure to add the last bits of the string up to the end (if any) + if (i < end_of_selector) { + std::string parsed(i, end_of_selector); + String_Constant_Obj str = SASS_MEMORY_NEW(String_Constant, pstate, parsed); + pstate += Offset(parsed); + str->update_pstate(pstate); + i = end_of_selector; + schema->append(str); + } + // exit loop + } + } + // EO until eos + + // update position + position = i; + + // update for end position + selector_schema->update_pstate(pstate); + schema->update_pstate(pstate); + + after_token = before_token = pstate; + + // return parsed result + return selector_schema.detach(); + } + // EO parse_selector_schema + + void Parser::parse_charset_directive() + { + lex < + sequence < + quoted_string, + optional_spaces, + exactly <';'> + > + >(); + } + + // called after parsing `kwd_include_directive` + Mixin_Call_Obj Parser::parse_include_directive() + { + // lex identifier into `lexed` var + lex_identifier(); // may error out + // normalize underscores to hyphens + std::string name(Util::normalize_underscores(lexed)); + // create the initial mixin call object + Mixin_Call_Obj call = SASS_MEMORY_NEW(Mixin_Call, pstate, name, 0, 0); + // parse mandatory arguments + call->arguments(parse_arguments()); + // parse optional block + if (peek < exactly <'{'> >()) { + call->block(parse_block()); + } + // return ast node + return call.detach(); + } + // EO parse_include_directive + + // parse a list of complex selectors + // this is the main entry point for most + Selector_List_Obj Parser::parse_selector_list(bool chroot) + { + bool reloop; + bool had_linefeed = false; + NESTING_GUARD(nestings); + Complex_Selector_Obj sel; + Selector_List_Obj group = SASS_MEMORY_NEW(Selector_List, pstate); + group->media_block(last_media_block); + + if (peek_css< alternatives < end_of_file, exactly <'{'>, exactly <','> > >()) { + css_error("Invalid CSS", " after ", ": expected selector, was "); + } + + do { + reloop = false; + + had_linefeed = had_linefeed || peek_newline(); + + if (peek_css< alternatives < class_char < selector_list_delims > > >()) + break; // in case there are superfluous commas at the end + + // now parse the complex selector + sel = parse_complex_selector(chroot); + + if (!sel) return group.detach(); + + sel->has_line_feed(had_linefeed); + + had_linefeed = false; + + while (peek_css< exactly<','> >()) + { + lex< css_comments >(false); + // consume everything up and including the comma separator + reloop = lex< exactly<','> >() != 0; + // remember line break (also between some commas) + had_linefeed = had_linefeed || peek_newline(); + // remember line break (also between some commas) + } + group->append(sel); + } + while (reloop); + while (lex_css< kwd_optional >()) { + group->is_optional(true); + } + // update for end position + group->update_pstate(pstate); + if (sel) sel->last()->has_line_break(false); + return group.detach(); + } + // EO parse_selector_list + + // a complex selector combines a compound selector with another + // complex selector, with one of four combinator operations. + // the compound selector (head) is optional, since the combinator + // can come first in the whole selector sequence (like `> DIV'). + Complex_Selector_Obj Parser::parse_complex_selector(bool chroot) + { + + NESTING_GUARD(nestings); + String_Obj reference = 0; + lex < block_comment >(); + advanceToNextToken(); + Complex_Selector_Obj sel = SASS_MEMORY_NEW(Complex_Selector, pstate); + + if (peek < end_of_file >()) return 0; + + // parse the left hand side + Compound_Selector_Obj lhs; + // special case if it starts with combinator ([+~>]) + if (!peek_css< class_char < selector_combinator_ops > >()) { + // parse the left hand side + lhs = parse_compound_selector(); + } + + + // parse combinator between lhs and rhs + Complex_Selector::Combinator combinator = Complex_Selector::ANCESTOR_OF; + if (lex< exactly<'+'> >()) combinator = Complex_Selector::ADJACENT_TO; + else if (lex< exactly<'~'> >()) combinator = Complex_Selector::PRECEDES; + else if (lex< exactly<'>'> >()) combinator = Complex_Selector::PARENT_OF; + else if (lex< sequence < exactly<'/'>, negate < exactly < '*' > > > >()) { + // comments are allowed, but not spaces? + combinator = Complex_Selector::REFERENCE; + if (!lex < re_reference_combinator >()) return 0; + reference = SASS_MEMORY_NEW(String_Constant, pstate, lexed); + if (!lex < exactly < '/' > >()) return 0; // ToDo: error msg? + } + + if (!lhs && combinator == Complex_Selector::ANCESTOR_OF) return 0; + + // lex < block_comment >(); + sel->head(lhs); + sel->combinator(combinator); + sel->media_block(last_media_block); + + if (combinator == Complex_Selector::REFERENCE) sel->reference(reference); + // has linfeed after combinator? + sel->has_line_break(peek_newline()); + // sel->has_line_feed(has_line_feed); + + // check if we got the abort condition (ToDo: optimize) + if (!peek_css< class_char < complex_selector_delims > >()) { + // parse next selector in sequence + sel->tail(parse_complex_selector(true)); + } + + // add a parent selector if we are not in a root + // also skip adding parent ref if we only have refs + if (!sel->has_parent_ref() && !chroot) { + // create the objects to wrap parent selector reference + Compound_Selector_Obj head = SASS_MEMORY_NEW(Compound_Selector, pstate); + Parent_Selector_Ptr parent = SASS_MEMORY_NEW(Parent_Selector, pstate, false); + parent->media_block(last_media_block); + head->media_block(last_media_block); + // add simple selector + head->append(parent); + // selector may not have any head yet + if (!sel->head()) { sel->head(head); } + // otherwise we need to create a new complex selector and set the old one as its tail + else { + sel = SASS_MEMORY_NEW(Complex_Selector, pstate, Complex_Selector::ANCESTOR_OF, head, sel); + sel->media_block(last_media_block); + } + // peek for linefeed and remember result on head + // if (peek_newline()) head->has_line_break(true); + } + + sel->update_pstate(pstate); + // complex selector + return sel; + } + // EO parse_complex_selector + + // parse one compound selector, which is basically + // a list of simple selectors (directly adjacent) + // lex them exactly (without skipping white-space) + Compound_Selector_Obj Parser::parse_compound_selector() + { + // init an empty compound selector wrapper + Compound_Selector_Obj seq = SASS_MEMORY_NEW(Compound_Selector, pstate); + seq->media_block(last_media_block); + + // skip initial white-space + lex< css_whitespace >(); + + // parse list + while (true) + { + // remove all block comments (don't skip white-space) + lex< delimited_by< slash_star, star_slash, false > >(false); + // parse functional + if (match < re_pseudo_selector >()) + { + seq->append(parse_simple_selector()); + } + // parse parent selector + else if (lex< exactly<'&'> >(false)) + { + // this produces a linefeed!? + seq->has_parent_reference(true); + seq->append(SASS_MEMORY_NEW(Parent_Selector, pstate)); + // parent selector only allowed at start + // upcoming Sass may allow also trailing + if (seq->length() > 1) { + ParserState state(pstate); + Simple_Selector_Obj cur = (*seq)[seq->length()-1]; + Simple_Selector_Obj prev = (*seq)[seq->length()-2]; + std::string sel(prev->to_string({ NESTED, 5 })); + std::string found(cur->to_string({ NESTED, 5 })); + if (lex < identifier >()) { found += std::string(lexed); } + error("Invalid CSS after \"" + sel + "\": expected \"{\", was \"" + found + "\"\n\n" + "\"" + found + "\" may only be used at the beginning of a compound selector.", state); + } + } + // parse type selector + else if (lex< re_type_selector >(false)) + { + seq->append(SASS_MEMORY_NEW(Element_Selector, pstate, lexed)); + } + // peek for abort conditions + else if (peek< spaces >()) break; + else if (peek< end_of_file >()) { break; } + else if (peek_css < class_char < selector_combinator_ops > >()) break; + else if (peek_css < class_char < complex_selector_delims > >()) break; + // otherwise parse another simple selector + else { + Simple_Selector_Obj sel = parse_simple_selector(); + if (!sel) return 0; + seq->append(sel); + } + } + + if (seq && !peek_css>>()) { + seq->has_line_break(peek_newline()); + } + + // EO while true + return seq; + + } + // EO parse_compound_selector + + Simple_Selector_Obj Parser::parse_simple_selector() + { + lex < css_comments >(false); + if (lex< class_name >()) { + return SASS_MEMORY_NEW(Class_Selector, pstate, lexed); + } + else if (lex< id_name >()) { + return SASS_MEMORY_NEW(Id_Selector, pstate, lexed); + } + else if (lex< alternatives < variable, number, static_reference_combinator > >()) { + return SASS_MEMORY_NEW(Element_Selector, pstate, lexed); + } + else if (peek< pseudo_not >()) { + return parse_negated_selector(); + } + else if (peek< re_pseudo_selector >()) { + return parse_pseudo_selector(); + } + else if (peek< exactly<':'> >()) { + return parse_pseudo_selector(); + } + else if (lex < exactly<'['> >()) { + return parse_attribute_selector(); + } + else if (lex< placeholder >()) { + Placeholder_Selector_Ptr sel = SASS_MEMORY_NEW(Placeholder_Selector, pstate, lexed); + sel->media_block(last_media_block); + return sel; + } + else { + css_error("Invalid CSS", " after ", ": expected selector, was "); + } + // failed + return 0; + } + + Wrapped_Selector_Obj Parser::parse_negated_selector() + { + lex< pseudo_not >(); + std::string name(lexed); + ParserState nsource_position = pstate; + Selector_List_Obj negated = parse_selector_list(true); + if (!lex< exactly<')'> >()) { + error("negated selector is missing ')'"); + } + name.erase(name.size() - 1); + return SASS_MEMORY_NEW(Wrapped_Selector, nsource_position, name, negated); + } + + // a pseudo selector often starts with one or two colons + // it can contain more selectors inside parentheses + Simple_Selector_Obj Parser::parse_pseudo_selector() { + if (lex< sequence< + optional < pseudo_prefix >, + // we keep the space within the name, strange enough + // ToDo: refactor output to schedule the space for it + // or do we really want to keep the real white-space? + sequence< identifier, optional < block_comment >, exactly<'('> > + > >()) + { + + std::string name(lexed); + name.erase(name.size() - 1); + ParserState p = pstate; + + // specially parse static stuff + // ToDo: really everything static? + if (peek_css < + sequence < + alternatives < + static_value, + binomial + >, + optional_css_whitespace, + exactly<')'> + > + >() + ) { + lex_css< alternatives < static_value, binomial > >(); + String_Constant_Obj expr = SASS_MEMORY_NEW(String_Constant, pstate, lexed); + if (lex_css< exactly<')'> >()) { + expr->can_compress_whitespace(true); + return SASS_MEMORY_NEW(Pseudo_Selector, p, name, expr); + } + } + else if (Selector_List_Obj wrapped = parse_selector_list(true)) { + if (wrapped && lex_css< exactly<')'> >()) { + return SASS_MEMORY_NEW(Wrapped_Selector, p, name, wrapped); + } + } + + } + // EO if pseudo selector + + else if (lex < sequence< optional < pseudo_prefix >, identifier > >()) { + return SASS_MEMORY_NEW(Pseudo_Selector, pstate, lexed); + } + else if(lex < pseudo_prefix >()) { + css_error("Invalid CSS", " after ", ": expected pseudoclass or pseudoelement, was "); + } + + css_error("Invalid CSS", " after ", ": expected \")\", was "); + + // unreachable statement + return 0; + } + + const char* Parser::re_attr_sensitive_close(const char* src) + { + return alternatives < exactly<']'>, exactly<'/'> >(src); + } + + const char* Parser::re_attr_insensitive_close(const char* src) + { + return sequence < insensitive<'i'>, re_attr_sensitive_close >(src); + } + + Attribute_Selector_Obj Parser::parse_attribute_selector() + { + ParserState p = pstate; + if (!lex_css< attribute_name >()) error("invalid attribute name in attribute selector"); + std::string name(lexed); + if (lex_css< re_attr_sensitive_close >()) { + return SASS_MEMORY_NEW(Attribute_Selector, p, name, "", 0, 0); + } + else if (lex_css< re_attr_insensitive_close >()) { + char modifier = lexed.begin[0]; + return SASS_MEMORY_NEW(Attribute_Selector, p, name, "", 0, modifier); + } + if (!lex_css< alternatives< exact_match, class_match, dash_match, + prefix_match, suffix_match, substring_match > >()) { + error("invalid operator in attribute selector for " + name); + } + std::string matcher(lexed); + + String_Obj value = 0; + if (lex_css< identifier >()) { + value = SASS_MEMORY_NEW(String_Constant, p, lexed); + } + else if (lex_css< quoted_string >()) { + value = parse_interpolated_chunk(lexed, true); // needed! + } + else { + error("expected a string constant or identifier in attribute selector for " + name); + } + + if (lex_css< re_attr_sensitive_close >()) { + return SASS_MEMORY_NEW(Attribute_Selector, p, name, matcher, value, 0); + } + else if (lex_css< re_attr_insensitive_close >()) { + char modifier = lexed.begin[0]; + return SASS_MEMORY_NEW(Attribute_Selector, p, name, matcher, value, modifier); + } + error("unterminated attribute selector for " + name); + return NULL; // to satisfy compilers (error must not return) + } + + /* parse block comment and add to block */ + void Parser::parse_block_comments() + { + Block_Obj block = block_stack.back(); + + while (lex< block_comment >()) { + bool is_important = lexed.begin[2] == '!'; + // flag on second param is to skip loosely over comments + String_Obj contents = parse_interpolated_chunk(lexed, true, false); + block->append(SASS_MEMORY_NEW(Comment, pstate, contents, is_important)); + } + } + + Declaration_Obj Parser::parse_declaration() { + String_Obj prop; + bool is_custom_property = false; + if (lex< sequence< optional< exactly<'*'> >, identifier_schema > >()) { + const std::string property(lexed); + is_custom_property = property.compare(0, 2, "--") == 0; + prop = parse_identifier_schema(); + } + else if (lex< sequence< optional< exactly<'*'> >, identifier, zero_plus< block_comment > > >()) { + const std::string property(lexed); + is_custom_property = property.compare(0, 2, "--") == 0; + prop = SASS_MEMORY_NEW(String_Constant, pstate, lexed); + } + else { + css_error("Invalid CSS", " after ", ": expected \"}\", was "); + } + bool is_indented = true; + const std::string property(lexed); + if (!lex_css< one_plus< exactly<':'> > >()) error("property \"" + escape_string(property) + "\" must be followed by a ':'"); + if (!is_custom_property && match< sequence< optional_css_comments, exactly<';'> > >()) error("style declaration must contain a value"); + if (match< sequence< optional_css_comments, exactly<'{'> > >()) is_indented = false; // don't indent if value is empty + if (is_custom_property) { + return SASS_MEMORY_NEW(Declaration, prop->pstate(), prop, parse_css_variable_value(), false, true); + } + lex < css_comments >(false); + if (peek_css< static_value >()) { + return SASS_MEMORY_NEW(Declaration, prop->pstate(), prop, parse_static_value()/*, lex()*/); + } + else { + Expression_Obj value; + Lookahead lookahead = lookahead_for_value(position); + if (lookahead.found) { + if (lookahead.has_interpolants) { + value = parse_value_schema(lookahead.found); + } else { + value = parse_list(DELAYED); + } + } + else { + value = parse_list(DELAYED); + if (List_Ptr list = Cast(value)) { + if (!list->is_bracketed() && list->length() == 0 && !peek< exactly <'{'> >()) { + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + } + } + lex < css_comments >(false); + Declaration_Obj decl = SASS_MEMORY_NEW(Declaration, prop->pstate(), prop, value/*, lex()*/); + decl->is_indented(is_indented); + decl->update_pstate(pstate); + return decl; + } + } + + // parse +/- and return false if negative + // this is never hit via spec tests + bool Parser::parse_number_prefix() + { + bool positive = true; + while(true) { + if (lex < block_comment >()) continue; + if (lex < number_prefix >()) continue; + if (lex < exactly < '-' > >()) { + positive = !positive; + continue; + } + break; + } + return positive; + } + + Expression_Obj Parser::parse_map() + { + NESTING_GUARD(nestings); + Expression_Obj key = parse_list(); + List_Obj map = SASS_MEMORY_NEW(List, pstate, 0, SASS_HASH); + + // it's not a map so return the lexed value as a list value + if (!lex_css< exactly<':'> >()) + { return key; } + + List_Obj l = Cast(key); + if (l && l->separator() == SASS_COMMA) { + css_error("Invalid CSS", " after ", ": expected \")\", was "); + } + + Expression_Obj value = parse_space_list(); + + map->append(key); + map->append(value); + + while (lex_css< exactly<','> >()) + { + // allow trailing commas - #495 + if (peek_css< exactly<')'> >(position)) + { break; } + + key = parse_space_list(); + + if (!(lex< exactly<':'> >())) + { css_error("Invalid CSS", " after ", ": expected \":\", was "); } + + value = parse_space_list(); + + map->append(key); + map->append(value); + } + + ParserState ps = map->pstate(); + ps.offset = pstate - ps + pstate.offset; + map->pstate(ps); + + return map; + } + + Expression_Obj Parser::parse_bracket_list() + { + NESTING_GUARD(nestings); + // check if we have an empty list + // return the empty list as such + if (peek_css< list_terminator >(position)) + { + // return an empty list (nothing to delay) + return SASS_MEMORY_NEW(List, pstate, 0, SASS_SPACE, false, true); + } + + bool has_paren = peek_css< exactly<'('> >() != NULL; + + // now try to parse a space list + Expression_Obj list = parse_space_list(); + // if it's a singleton, return it (don't wrap it) + if (!peek_css< exactly<','> >(position)) { + List_Obj l = Cast(list); + if (!l || l->is_bracketed() || has_paren) { + List_Obj bracketed_list = SASS_MEMORY_NEW(List, pstate, 1, SASS_SPACE, false, true); + bracketed_list->append(list); + return bracketed_list; + } + l->is_bracketed(true); + return l; + } + + // if we got so far, we actually do have a comma list + List_Obj bracketed_list = SASS_MEMORY_NEW(List, pstate, 2, SASS_COMMA, false, true); + // wrap the first expression + bracketed_list->append(list); + + while (lex_css< exactly<','> >()) + { + // check for abort condition + if (peek_css< list_terminator >(position) + ) { break; } + // otherwise add another expression + bracketed_list->append(parse_space_list()); + } + // return the list + return bracketed_list; + } + + // parse list returns either a space separated list, + // a comma separated list or any bare expression found. + // so to speak: we unwrap items from lists if possible here! + Expression_Obj Parser::parse_list(bool delayed) + { + NESTING_GUARD(nestings); + return parse_comma_list(delayed); + } + + // will return singletons unwrapped + Expression_Obj Parser::parse_comma_list(bool delayed) + { + NESTING_GUARD(nestings); + // check if we have an empty list + // return the empty list as such + if (peek_css< list_terminator >(position)) + { + // return an empty list (nothing to delay) + return SASS_MEMORY_NEW(List, pstate, 0); + } + + // now try to parse a space list + Expression_Obj list = parse_space_list(); + // if it's a singleton, return it (don't wrap it) + if (!peek_css< exactly<','> >(position)) { + // set_delay doesn't apply to list children + // so this will only undelay single values + if (!delayed) list->set_delayed(false); + return list; + } + + // if we got so far, we actually do have a comma list + List_Obj comma_list = SASS_MEMORY_NEW(List, pstate, 2, SASS_COMMA); + // wrap the first expression + comma_list->append(list); + + while (lex_css< exactly<','> >()) + { + // check for abort condition + if (peek_css< list_terminator >(position) + ) { break; } + // otherwise add another expression + comma_list->append(parse_space_list()); + } + // return the list + return comma_list; + } + // EO parse_comma_list + + // will return singletons unwrapped + Expression_Obj Parser::parse_space_list() + { + NESTING_GUARD(nestings); + Expression_Obj disj1 = parse_disjunction(); + // if it's a singleton, return it (don't wrap it) + if (peek_css< space_list_terminator >(position) + ) { + return disj1; } + + List_Obj space_list = SASS_MEMORY_NEW(List, pstate, 2, SASS_SPACE); + space_list->append(disj1); + + while ( + !(peek_css< space_list_terminator >(position)) && + peek_css< optional_css_whitespace >() != end + ) { + // the space is parsed implicitly? + space_list->append(parse_disjunction()); + } + // return the list + return space_list; + } + // EO parse_space_list + + // parse logical OR operation + Expression_Obj Parser::parse_disjunction() + { + NESTING_GUARD(nestings); + advanceToNextToken(); + ParserState state(pstate); + // parse the left hand side conjunction + Expression_Obj conj = parse_conjunction(); + // parse multiple right hand sides + std::vector operands; + while (lex_css< kwd_or >()) + operands.push_back(parse_conjunction()); + // if it's a singleton, return it directly + if (operands.size() == 0) return conj; + // fold all operands into one binary expression + Expression_Obj ex = fold_operands(conj, operands, { Sass_OP::OR }); + state.offset = pstate - state + pstate.offset; + ex->pstate(state); + return ex; + } + // EO parse_disjunction + + // parse logical AND operation + Expression_Obj Parser::parse_conjunction() + { + NESTING_GUARD(nestings); + advanceToNextToken(); + ParserState state(pstate); + // parse the left hand side relation + Expression_Obj rel = parse_relation(); + // parse multiple right hand sides + std::vector operands; + while (lex_css< kwd_and >()) { + operands.push_back(parse_relation()); + } + // if it's a singleton, return it directly + if (operands.size() == 0) return rel; + // fold all operands into one binary expression + Expression_Obj ex = fold_operands(rel, operands, { Sass_OP::AND }); + state.offset = pstate - state + pstate.offset; + ex->pstate(state); + return ex; + } + // EO parse_conjunction + + // parse comparison operations + Expression_Obj Parser::parse_relation() + { + NESTING_GUARD(nestings); + advanceToNextToken(); + ParserState state(pstate); + // parse the left hand side expression + Expression_Obj lhs = parse_expression(); + std::vector operands; + std::vector operators; + // if it's a singleton, return it (don't wrap it) + while (peek< alternatives < + kwd_eq, + kwd_neq, + kwd_gte, + kwd_gt, + kwd_lte, + kwd_lt + > >(position)) + { + // is directly adjancent to expression? + bool left_ws = peek < css_comments >() != NULL; + // parse the operator + enum Sass_OP op + = lex() ? Sass_OP::EQ + : lex() ? Sass_OP::NEQ + : lex() ? Sass_OP::GTE + : lex() ? Sass_OP::LTE + : lex() ? Sass_OP::GT + : lex() ? Sass_OP::LT + // we checked the possibilities on top of fn + : Sass_OP::EQ; + // is directly adjacent to expression? + bool right_ws = peek < css_comments >() != NULL; + operators.push_back({ op, left_ws, right_ws }); + operands.push_back(parse_expression()); + } + // we are called recursively for list, so we first + // fold inner binary expression which has delayed + // correctly set to zero. After folding we also unwrap + // single nested items. So we cannot set delay on the + // returned result here, as we have lost nestings ... + Expression_Obj ex = fold_operands(lhs, operands, operators); + state.offset = pstate - state + pstate.offset; + ex->pstate(state); + return ex; + } + // parse_relation + + // parse expression valid for operations + // called from parse_relation + // called from parse_for_directive + // called from parse_media_expression + // parse addition and subtraction operations + Expression_Obj Parser::parse_expression() + { + NESTING_GUARD(nestings); + advanceToNextToken(); + ParserState state(pstate); + // parses multiple add and subtract operations + // NOTE: make sure that identifiers starting with + // NOTE: dashes do NOT count as subtract operation + Expression_Obj lhs = parse_operators(); + // if it's a singleton, return it (don't wrap it) + if (!(peek_css< exactly<'+'> >(position) || + // condition is a bit misterious, but some combinations should not be counted as operations + (peek< no_spaces >(position) && peek< sequence< negate< unsigned_number >, exactly<'-'>, negate< space > > >(position)) || + (peek< sequence< negate< unsigned_number >, exactly<'-'>, negate< unsigned_number > > >(position))) || + peek< sequence < zero_plus < exactly <'-' > >, identifier > >(position)) + { return lhs; } + + std::vector operands; + std::vector operators; + bool left_ws = peek < css_comments >() != NULL; + while ( + lex_css< exactly<'+'> >() || + + ( + ! peek_css< sequence < zero_plus < exactly <'-' > >, identifier > >(position) + && lex_css< sequence< negate< digit >, exactly<'-'> > >() + ) + + ) { + + bool right_ws = peek < css_comments >() != NULL; + operators.push_back({ lexed.to_string() == "+" ? Sass_OP::ADD : Sass_OP::SUB, left_ws, right_ws }); + operands.push_back(parse_operators()); + left_ws = peek < css_comments >() != NULL; + } + + if (operands.size() == 0) return lhs; + Expression_Obj ex = fold_operands(lhs, operands, operators); + state.offset = pstate - state + pstate.offset; + ex->pstate(state); + return ex; + } + + // parse addition and subtraction operations + Expression_Obj Parser::parse_operators() + { + NESTING_GUARD(nestings); + advanceToNextToken(); + ParserState state(pstate); + Expression_Obj factor = parse_factor(); + // if it's a singleton, return it (don't wrap it) + std::vector operands; // factors + std::vector operators; // ops + // lex operations to apply to lhs + const char* left_ws = peek < css_comments >(); + while (lex_css< class_char< static_ops > >()) { + const char* right_ws = peek < css_comments >(); + switch(*lexed.begin) { + case '*': operators.push_back({ Sass_OP::MUL, left_ws != 0, right_ws != 0 }); break; + case '/': operators.push_back({ Sass_OP::DIV, left_ws != 0, right_ws != 0 }); break; + case '%': operators.push_back({ Sass_OP::MOD, left_ws != 0, right_ws != 0 }); break; + default: throw std::runtime_error("unknown static op parsed"); + } + operands.push_back(parse_factor()); + left_ws = peek < css_comments >(); + } + // operands and operators to binary expression + Expression_Obj ex = fold_operands(factor, operands, operators); + state.offset = pstate - state + pstate.offset; + ex->pstate(state); + return ex; + } + // EO parse_operators + + + // called from parse_operators + // called from parse_value_schema + Expression_Obj Parser::parse_factor() + { + NESTING_GUARD(nestings); + lex < css_comments >(false); + if (lex_css< exactly<'('> >()) { + // parse_map may return a list + Expression_Obj value = parse_map(); + // lex the expected closing parenthesis + if (!lex_css< exactly<')'> >()) error("unclosed parenthesis"); + // expression can be evaluated + return value; + } + else if (lex_css< exactly<'['> >()) { + // explicit bracketed + Expression_Obj value = parse_bracket_list(); + // lex the expected closing square bracket + if (!lex_css< exactly<']'> >()) error("unclosed squared bracket"); + return value; + } + // string may be interpolated + // if (lex< quoted_string >()) { + // return &parse_string(); + // } + else if (peek< ie_property >()) { + return parse_ie_property(); + } + else if (peek< ie_keyword_arg >()) { + return parse_ie_keyword_arg(); + } + else if (peek< sequence < calc_fn_call, exactly <'('> > >()) { + return parse_calc_function(); + } + else if (lex < functional_schema >()) { + return parse_function_call_schema(); + } + else if (lex< identifier_schema >()) { + String_Obj string = parse_identifier_schema(); + if (String_Schema_Ptr schema = Cast(string)) { + if (lex < exactly < '(' > >()) { + schema->append(parse_list()); + lex < exactly < ')' > >(); + } + } + return string; + } + else if (peek< sequence< uri_prefix, W, real_uri_value > >()) { + return parse_url_function_string(); + } + else if (peek< re_functional >()) { + return parse_function_call(); + } + else if (lex< exactly<'+'> >()) { + Unary_Expression_Ptr ex = SASS_MEMORY_NEW(Unary_Expression, pstate, Unary_Expression::PLUS, parse_factor()); + if (ex && ex->operand()) ex->is_delayed(ex->operand()->is_delayed()); + return ex; + } + else if (lex< exactly<'-'> >()) { + Unary_Expression_Ptr ex = SASS_MEMORY_NEW(Unary_Expression, pstate, Unary_Expression::MINUS, parse_factor()); + if (ex && ex->operand()) ex->is_delayed(ex->operand()->is_delayed()); + return ex; + } + else if (lex< exactly<'/'> >()) { + Unary_Expression_Ptr ex = SASS_MEMORY_NEW(Unary_Expression, pstate, Unary_Expression::SLASH, parse_factor()); + if (ex && ex->operand()) ex->is_delayed(ex->operand()->is_delayed()); + return ex; + } + else if (lex< sequence< kwd_not > >()) { + Unary_Expression_Ptr ex = SASS_MEMORY_NEW(Unary_Expression, pstate, Unary_Expression::NOT, parse_factor()); + if (ex && ex->operand()) ex->is_delayed(ex->operand()->is_delayed()); + return ex; + } + // this whole branch is never hit via spec tests + else if (peek < sequence < one_plus < alternatives < css_whitespace, exactly<'-'>, exactly<'+'> > >, number > >()) { + if (parse_number_prefix()) return parse_value(); // prefix is positive + Unary_Expression_Ptr ex = SASS_MEMORY_NEW(Unary_Expression, pstate, Unary_Expression::MINUS, parse_value()); + if (ex->operand()) ex->is_delayed(ex->operand()->is_delayed()); + return ex; + } + else { + return parse_value(); + } + } + + bool number_has_zero(const std::string& parsed) + { + size_t L = parsed.length(); + return !( (L > 0 && parsed.substr(0, 1) == ".") || + (L > 1 && parsed.substr(0, 2) == "0.") || + (L > 1 && parsed.substr(0, 2) == "-.") || + (L > 2 && parsed.substr(0, 3) == "-0.") ); + } + + Number_Ptr Parser::lexed_number(const ParserState& pstate, const std::string& parsed) + { + Number_Ptr nr = SASS_MEMORY_NEW(Number, + pstate, + sass_strtod(parsed.c_str()), + "", + number_has_zero(parsed)); + nr->is_interpolant(false); + nr->is_delayed(true); + return nr; + } + + Number_Ptr Parser::lexed_percentage(const ParserState& pstate, const std::string& parsed) + { + Number_Ptr nr = SASS_MEMORY_NEW(Number, + pstate, + sass_strtod(parsed.c_str()), + "%", + true); + nr->is_interpolant(false); + nr->is_delayed(true); + return nr; + } + + Number_Ptr Parser::lexed_dimension(const ParserState& pstate, const std::string& parsed) + { + size_t L = parsed.length(); + size_t num_pos = parsed.find_first_not_of(" \n\r\t"); + if (num_pos == std::string::npos) num_pos = L; + size_t unit_pos = parsed.find_first_not_of("-+0123456789.", num_pos); + if (parsed[unit_pos] == 'e' && is_number(parsed[unit_pos+1]) ) { + unit_pos = parsed.find_first_not_of("-+0123456789.", ++ unit_pos); + } + if (unit_pos == std::string::npos) unit_pos = L; + const std::string& num = parsed.substr(num_pos, unit_pos - num_pos); + Number_Ptr nr = SASS_MEMORY_NEW(Number, + pstate, + sass_strtod(num.c_str()), + Token(number(parsed.c_str())), + number_has_zero(parsed)); + nr->is_interpolant(false); + nr->is_delayed(true); + return nr; + } + + Value_Ptr Parser::lexed_hex_color(const ParserState& pstate, const std::string& parsed) + { + Color_Ptr color = NULL; + if (parsed[0] != '#') { + return SASS_MEMORY_NEW(String_Quoted, pstate, parsed); + } + // chop off the '#' + std::string hext(parsed.substr(1)); + if (parsed.length() == 4) { + std::string r(2, parsed[1]); + std::string g(2, parsed[2]); + std::string b(2, parsed[3]); + color = SASS_MEMORY_NEW(Color, + pstate, + static_cast(strtol(r.c_str(), NULL, 16)), + static_cast(strtol(g.c_str(), NULL, 16)), + static_cast(strtol(b.c_str(), NULL, 16)), + 1, // alpha channel + parsed); + } + else if (parsed.length() == 5) { + std::string r(2, parsed[1]); + std::string g(2, parsed[2]); + std::string b(2, parsed[3]); + std::string a(2, parsed[4]); + color = SASS_MEMORY_NEW(Color, + pstate, + static_cast(strtol(r.c_str(), NULL, 16)), + static_cast(strtol(g.c_str(), NULL, 16)), + static_cast(strtol(b.c_str(), NULL, 16)), + static_cast(strtol(a.c_str(), NULL, 16)) / 255, + parsed); + } + else if (parsed.length() == 7) { + std::string r(parsed.substr(1,2)); + std::string g(parsed.substr(3,2)); + std::string b(parsed.substr(5,2)); + color = SASS_MEMORY_NEW(Color, + pstate, + static_cast(strtol(r.c_str(), NULL, 16)), + static_cast(strtol(g.c_str(), NULL, 16)), + static_cast(strtol(b.c_str(), NULL, 16)), + 1, // alpha channel + parsed); + } + else if (parsed.length() == 9) { + std::string r(parsed.substr(1,2)); + std::string g(parsed.substr(3,2)); + std::string b(parsed.substr(5,2)); + std::string a(parsed.substr(7,2)); + color = SASS_MEMORY_NEW(Color, + pstate, + static_cast(strtol(r.c_str(), NULL, 16)), + static_cast(strtol(g.c_str(), NULL, 16)), + static_cast(strtol(b.c_str(), NULL, 16)), + static_cast(strtol(a.c_str(), NULL, 16)) / 255, + parsed); + } + color->is_interpolant(false); + color->is_delayed(false); + return color; + } + + Value_Ptr Parser::color_or_string(const std::string& lexed) const + { + if (auto color = name_to_color(lexed)) { + auto c = SASS_MEMORY_NEW(Color, color); + c->is_delayed(true); + c->pstate(pstate); + c->disp(lexed); + return c; + } else { + return SASS_MEMORY_NEW(String_Constant, pstate, lexed); + } + } + + // parse one value for a list + Expression_Obj Parser::parse_value() + { + lex< css_comments >(false); + if (lex< ampersand >()) + { + if (match< ampersand >()) { + warning("In Sass, \"&&\" means two copies of the parent selector. You probably want to use \"and\" instead.", pstate); + } + return SASS_MEMORY_NEW(Parent_Selector, pstate); } + + if (lex< kwd_important >()) + { return SASS_MEMORY_NEW(String_Constant, pstate, "!important"); } + + // parse `10%4px` into separated items and not a schema + if (lex< sequence < percentage, lookahead < number > > >()) + { return lexed_percentage(lexed); } + + if (lex< sequence < number, lookahead< sequence < op, number > > > >()) + { return lexed_number(lexed); } + + // string may be interpolated + if (lex< sequence < quoted_string, lookahead < exactly <'-'> > > >()) + { return parse_string(); } + + if (const char* stop = peek< value_schema >()) + { return parse_value_schema(stop); } + + // string may be interpolated + if (lex< quoted_string >()) + { return parse_string(); } + + if (lex< kwd_true >()) + { return SASS_MEMORY_NEW(Boolean, pstate, true); } + + if (lex< kwd_false >()) + { return SASS_MEMORY_NEW(Boolean, pstate, false); } + + if (lex< kwd_null >()) + { return SASS_MEMORY_NEW(Null, pstate); } + + if (lex< identifier >()) { + return color_or_string(lexed); + } + + if (lex< percentage >()) + { return lexed_percentage(lexed); } + + // match hex number first because 0x000 looks like a number followed by an identifier + if (lex< sequence < alternatives< hex, hex0 >, negate < exactly<'-'> > > >()) + { return lexed_hex_color(lexed); } + + if (lex< hexa >()) + { return lexed_hex_color(lexed); } + + if (lex< sequence < exactly <'#'>, identifier > >()) + { return SASS_MEMORY_NEW(String_Quoted, pstate, lexed); } + + // also handle the 10em- foo special case + // alternatives < exactly < '.' >, .. > -- `1.5em-.75em` is split into a list, not a binary expression + if (lex< sequence< dimension, optional< sequence< exactly<'-'>, lookahead< alternatives < space > > > > > >()) + { return lexed_dimension(lexed); } + + if (lex< sequence< static_component, one_plus< strict_identifier > > >()) + { return SASS_MEMORY_NEW(String_Constant, pstate, lexed); } + + if (lex< number >()) + { return lexed_number(lexed); } + + if (lex< variable >()) + { return SASS_MEMORY_NEW(Variable, pstate, Util::normalize_underscores(lexed)); } + + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + + // unreachable statement + return 0; + } + + // this parses interpolation inside other strings + // means the result should later be quoted again + String_Obj Parser::parse_interpolated_chunk(Token chunk, bool constant, bool css) + { + const char* i = chunk.begin; + // see if there any interpolants + const char* p = constant ? find_first_in_interval< exactly >(i, chunk.end) : + find_first_in_interval< exactly, block_comment >(i, chunk.end); + + if (!p) { + String_Quoted_Ptr str_quoted = SASS_MEMORY_NEW(String_Quoted, pstate, std::string(i, chunk.end), 0, false, false, true, css); + if (!constant && str_quoted->quote_mark()) str_quoted->quote_mark('*'); + return str_quoted; + } + + String_Schema_Obj schema = SASS_MEMORY_NEW(String_Schema, pstate, 0, css); + schema->is_interpolant(true); + while (i < chunk.end) { + p = constant ? find_first_in_interval< exactly >(i, chunk.end) : + find_first_in_interval< exactly, block_comment >(i, chunk.end); + if (p) { + if (i < p) { + // accumulate the preceding segment if it's nonempty + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string(i, p), css)); + } + // we need to skip anything inside strings + // create a new target in parser/prelexer + if (peek < sequence < optional_spaces, exactly > >(p+2)) { position = p+2; + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + const char* j = skip_over_scopes< exactly, exactly >(p + 2, chunk.end); // find the closing brace + if (j) { --j; + // parse the interpolant and accumulate it + Expression_Obj interp_node = Parser::from_token(Token(p+2, j), ctx, traces, pstate, source).parse_list(); + interp_node->is_interpolant(true); + schema->append(interp_node); + i = j; + } + else { + // throw an error if the interpolant is unterminated + error("unterminated interpolant inside string constant " + chunk.to_string()); + } + } + else { // no interpolants left; add the last segment if nonempty + // check if we need quotes here (was not sure after merge) + if (i < chunk.end) schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string(i, chunk.end), css)); + break; + } + ++ i; + } + + return schema.detach(); + } + + String_Schema_Obj Parser::parse_css_variable_value(bool top_level) + { + String_Schema_Obj schema = SASS_MEMORY_NEW(String_Schema, pstate); + String_Schema_Obj tok; + if (!(tok = parse_css_variable_value_token(top_level))) { + return NULL; + } + + schema->concat(tok); + while ((tok = parse_css_variable_value_token(top_level))) { + schema->concat(tok); + } + + return schema.detach(); + } + + String_Schema_Obj Parser::parse_css_variable_value_token(bool top_level) + { + String_Schema_Obj schema = SASS_MEMORY_NEW(String_Schema, pstate); + if ( + (top_level && lex< css_variable_top_level_value >(false)) || + (!top_level && lex< css_variable_value >(false)) + ) { + Token str(lexed); + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, str)); + } + else if (Expression_Obj tok = lex_interpolation()) { + if (String_Schema_Ptr s = Cast(tok)) { + schema->concat(s); + } else { + schema->append(tok); + } + } + else if (lex< quoted_string >()) { + Expression_Obj tok = parse_string(); + if (String_Schema_Ptr s = Cast(tok)) { + schema->concat(s); + } else { + schema->append(tok); + } + } + else { + if (peek< alternatives< exactly<'('>, exactly<'['>, exactly<'{'> > >()) { + if (lex< exactly<'('> >()) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string("("))); + if (String_Schema_Obj tok = parse_css_variable_value(false)) schema->concat(tok); + if (!lex< exactly<')'> >()) css_error("Invalid CSS", " after ", ": expected \")\", was "); + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string(")"))); + } + else if (lex< exactly<'['> >()) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string("["))); + if (String_Schema_Obj tok = parse_css_variable_value(false)) schema->concat(tok); + if (!lex< exactly<']'> >()) css_error("Invalid CSS", " after ", ": expected \"]\", was "); + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string("]"))); + } + else if (lex< exactly<'{'> >()) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string("{"))); + if (String_Schema_Obj tok = parse_css_variable_value(false)) schema->concat(tok); + if (!lex< exactly<'}'> >()) css_error("Invalid CSS", " after ", ": expected \"}\", was "); + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string("}"))); + } + } + } + + return schema->length() > 0 ? schema.detach() : NULL; + } + + Value_Obj Parser::parse_static_value() + { + lex< static_value >(); + Token str(lexed); + // static values always have trailing white- + // space and end delimiter (\s*[;]$) included + --pstate.offset.column; + --after_token.column; + --str.end; + --position; + + return color_or_string(str.time_wspace());; + } + + String_Obj Parser::parse_string() + { + return parse_interpolated_chunk(Token(lexed)); + } + + String_Obj Parser::parse_ie_property() + { + lex< ie_property >(); + Token str(lexed); + const char* i = str.begin; + // see if there any interpolants + const char* p = find_first_in_interval< exactly, block_comment >(str.begin, str.end); + if (!p) { + return SASS_MEMORY_NEW(String_Quoted, pstate, std::string(str.begin, str.end)); + } + + String_Schema_Ptr schema = SASS_MEMORY_NEW(String_Schema, pstate); + while (i < str.end) { + p = find_first_in_interval< exactly, block_comment >(i, str.end); + if (p) { + if (i < p) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string(i, p))); // accumulate the preceding segment if it's nonempty + } + if (peek < sequence < optional_spaces, exactly > >(p+2)) { position = p+2; + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + const char* j = skip_over_scopes< exactly, exactly >(p+2, str.end); // find the closing brace + if (j) { + // parse the interpolant and accumulate it + Expression_Obj interp_node = Parser::from_token(Token(p+2, j), ctx, traces, pstate, source).parse_list(); + interp_node->is_interpolant(true); + schema->append(interp_node); + i = j; + } + else { + // throw an error if the interpolant is unterminated + error("unterminated interpolant inside IE function " + str.to_string()); + } + } + else { // no interpolants left; add the last segment if nonempty + if (i < str.end) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string(i, str.end))); + } + break; + } + } + return schema; + } + + String_Obj Parser::parse_ie_keyword_arg() + { + String_Schema_Ptr kwd_arg = SASS_MEMORY_NEW(String_Schema, pstate, 3); + if (lex< variable >()) { + kwd_arg->append(SASS_MEMORY_NEW(Variable, pstate, Util::normalize_underscores(lexed))); + } else { + lex< alternatives< identifier_schema, identifier > >(); + kwd_arg->append(SASS_MEMORY_NEW(String_Constant, pstate, lexed)); + } + lex< exactly<'='> >(); + kwd_arg->append(SASS_MEMORY_NEW(String_Constant, pstate, lexed)); + if (peek< variable >()) kwd_arg->append(parse_list()); + else if (lex< number >()) { + std::string parsed(lexed); + Util::normalize_decimals(parsed); + kwd_arg->append(lexed_number(parsed)); + } + else if (peek < ie_keyword_arg_value >()) { kwd_arg->append(parse_list()); } + return kwd_arg; + } + + String_Schema_Obj Parser::parse_value_schema(const char* stop) + { + // initialize the string schema object to add tokens + String_Schema_Obj schema = SASS_MEMORY_NEW(String_Schema, pstate); + + if (peek>()) { + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + + const char* e; + const char* ee = end; + end = stop; + size_t num_items = 0; + bool need_space = false; + while (position < stop) { + // parse space between tokens + if (lex< spaces >() && num_items) { + need_space = true; + } + if (need_space) { + need_space = false; + // schema->append(SASS_MEMORY_NEW(String_Constant, pstate, " ")); + } + if ((e = peek< re_functional >()) && e < stop) { + schema->append(parse_function_call()); + } + // lex an interpolant /#{...}/ + else if (lex< exactly < hash_lbrace > >()) { + // Try to lex static expression first + if (peek< exactly< rbrace > >()) { + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + Expression_Obj ex; + if (lex< re_static_expression >()) { + ex = SASS_MEMORY_NEW(String_Constant, pstate, lexed); + } else { + ex = parse_list(true); + } + ex->is_interpolant(true); + schema->append(ex); + if (!lex < exactly < rbrace > >()) { + css_error("Invalid CSS", " after ", ": expected \"}\", was "); + } + } + // lex some string constants or other valid token + // Note: [-+] chars are left over from i.e. `#{3}+3` + else if (lex< alternatives < exactly<'%'>, exactly < '-' >, exactly < '+' > > >()) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, lexed)); + } + // lex a quoted string + else if (lex< quoted_string >()) { + // need_space = true; + // if (schema->length()) schema->append(SASS_MEMORY_NEW(String_Constant, pstate, " ")); + // else need_space = true; + schema->append(parse_string()); + if ((*position == '"' || *position == '\'') || peek < alternatives < alpha > >()) { + // need_space = true; + } + if (peek < exactly < '-' > >()) break; + } + else if (lex< identifier >()) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, lexed)); + if ((*position == '"' || *position == '\'') || peek < alternatives < alpha > >()) { + // need_space = true; + } + } + // lex (normalized) variable + else if (lex< variable >()) { + std::string name(Util::normalize_underscores(lexed)); + schema->append(SASS_MEMORY_NEW(Variable, pstate, name)); + } + // lex percentage value + else if (lex< percentage >()) { + schema->append(lexed_percentage(lexed)); + } + // lex dimension value + else if (lex< dimension >()) { + schema->append(lexed_dimension(lexed)); + } + // lex number value + else if (lex< number >()) { + schema->append(lexed_number(lexed)); + } + // lex hex color value + else if (lex< sequence < hex, negate < exactly < '-' > > > >()) { + schema->append(lexed_hex_color(lexed)); + } + else if (lex< sequence < exactly <'#'>, identifier > >()) { + schema->append(SASS_MEMORY_NEW(String_Quoted, pstate, lexed)); + } + // lex a value in parentheses + else if (peek< parenthese_scope >()) { + schema->append(parse_factor()); + } + else { + break; + } + ++num_items; + } + if (position != stop) { + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, std::string(position, stop))); + position = stop; + } + end = ee; + return schema; + } + + // this parses interpolation outside other strings + // means the result must not be quoted again later + String_Obj Parser::parse_identifier_schema() + { + Token id(lexed); + const char* i = id.begin; + // see if there any interpolants + const char* p = find_first_in_interval< exactly, block_comment >(id.begin, id.end); + if (!p) { + return SASS_MEMORY_NEW(String_Constant, pstate, std::string(id.begin, id.end)); + } + + String_Schema_Obj schema = SASS_MEMORY_NEW(String_Schema, pstate); + while (i < id.end) { + p = find_first_in_interval< exactly, block_comment >(i, id.end); + if (p) { + if (i < p) { + // accumulate the preceding segment if it's nonempty + const char* o = position; position = i; + schema->append(parse_value_schema(p)); + position = o; + } + // we need to skip anything inside strings + // create a new target in parser/prelexer + if (peek < sequence < optional_spaces, exactly > >(p+2)) { position = p; + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); + } + const char* j = skip_over_scopes< exactly, exactly >(p+2, id.end); // find the closing brace + if (j) { + // parse the interpolant and accumulate it + Expression_Obj interp_node = Parser::from_token(Token(p+2, j), ctx, traces, pstate, source).parse_list(DELAYED); + interp_node->is_interpolant(true); + schema->append(interp_node); + // schema->has_interpolants(true); + i = j; + } + else { + // throw an error if the interpolant is unterminated + error("unterminated interpolant inside interpolated identifier " + id.to_string()); + } + } + else { // no interpolants left; add the last segment if nonempty + if (i < end) { + const char* o = position; position = i; + schema->append(parse_value_schema(id.end)); + position = o; + } + break; + } + } + return schema ? schema.detach() : 0; + } + + // calc functions should preserve arguments + Function_Call_Obj Parser::parse_calc_function() + { + lex< identifier >(); + std::string name(lexed); + ParserState call_pos = pstate; + lex< exactly<'('> >(); + ParserState arg_pos = pstate; + const char* arg_beg = position; + parse_list(); + const char* arg_end = position; + lex< skip_over_scopes < + exactly < '(' >, + exactly < ')' > + > >(); + + Argument_Obj arg = SASS_MEMORY_NEW(Argument, arg_pos, parse_interpolated_chunk(Token(arg_beg, arg_end))); + Arguments_Obj args = SASS_MEMORY_NEW(Arguments, arg_pos); + args->append(arg); + return SASS_MEMORY_NEW(Function_Call, call_pos, name, args); + } + + String_Obj Parser::parse_url_function_string() + { + std::string prefix(""); + if (lex< uri_prefix >()) { + prefix = std::string(lexed); + } + + lex < optional_spaces >(); + String_Obj url_string = parse_url_function_argument(); + + std::string suffix(""); + if (lex< real_uri_suffix >()) { + suffix = std::string(lexed); + } + + std::string uri(""); + if (url_string) { + uri = url_string->to_string({ NESTED, 5 }); + } + + if (String_Schema_Ptr schema = Cast(url_string)) { + String_Schema_Obj res = SASS_MEMORY_NEW(String_Schema, pstate); + res->append(SASS_MEMORY_NEW(String_Constant, pstate, prefix)); + res->append(schema); + res->append(SASS_MEMORY_NEW(String_Constant, pstate, suffix)); + return res; + } else { + std::string res = prefix + uri + suffix; + return SASS_MEMORY_NEW(String_Constant, pstate, res); + } + } + + String_Obj Parser::parse_url_function_argument() + { + const char* p = position; + + std::string uri(""); + if (lex< real_uri_value >(false)) { + uri = lexed.to_string(); + } + + if (peek< exactly< hash_lbrace > >()) { + const char* pp = position; + // TODO: error checking for unclosed interpolants + while (pp && peek< exactly< hash_lbrace > >(pp)) { + pp = sequence< interpolant, real_uri_value >(pp); + } + if (!pp) return 0; + position = pp; + return parse_interpolated_chunk(Token(p, position)); + } + else if (uri != "") { + std::string res = Util::rtrim(uri); + return SASS_MEMORY_NEW(String_Constant, pstate, res); + } + + return 0; + } + + Function_Call_Obj Parser::parse_function_call() + { + lex< identifier >(); + std::string name(lexed); + + if (Util::normalize_underscores(name) == "content-exists" && stack.back() != Scope::Mixin) + { error("Cannot call content-exists() except within a mixin."); } + + ParserState call_pos = pstate; + Arguments_Obj args = parse_arguments(); + return SASS_MEMORY_NEW(Function_Call, call_pos, name, args); + } + + Function_Call_Schema_Obj Parser::parse_function_call_schema() + { + String_Obj name = parse_identifier_schema(); + ParserState source_position_of_call = pstate; + Arguments_Obj args = parse_arguments(); + + return SASS_MEMORY_NEW(Function_Call_Schema, source_position_of_call, name, args); + } + + Content_Obj Parser::parse_content_directive() + { + return SASS_MEMORY_NEW(Content, pstate); + } + + If_Obj Parser::parse_if_directive(bool else_if) + { + stack.push_back(Scope::Control); + ParserState if_source_position = pstate; + bool root = block_stack.back()->is_root(); + Expression_Obj predicate = parse_list(); + Block_Obj block = parse_block(root); + Block_Obj alternative = NULL; + + // only throw away comment if we parse a case + // we want all other comments to be parsed + if (lex_css< elseif_directive >()) { + alternative = SASS_MEMORY_NEW(Block, pstate); + alternative->append(parse_if_directive(true)); + } + else if (lex_css< kwd_else_directive >()) { + alternative = parse_block(root); + } + stack.pop_back(); + return SASS_MEMORY_NEW(If, if_source_position, predicate, block, alternative); + } + + For_Obj Parser::parse_for_directive() + { + stack.push_back(Scope::Control); + ParserState for_source_position = pstate; + bool root = block_stack.back()->is_root(); + lex_variable(); + std::string var(Util::normalize_underscores(lexed)); + if (!lex< kwd_from >()) error("expected 'from' keyword in @for directive"); + Expression_Obj lower_bound = parse_expression(); + bool inclusive = false; + if (lex< kwd_through >()) inclusive = true; + else if (lex< kwd_to >()) inclusive = false; + else error("expected 'through' or 'to' keyword in @for directive"); + Expression_Obj upper_bound = parse_expression(); + Block_Obj body = parse_block(root); + stack.pop_back(); + return SASS_MEMORY_NEW(For, for_source_position, var, lower_bound, upper_bound, body, inclusive); + } + + // helper to parse a var token + Token Parser::lex_variable() + { + // peek for dollar sign first + if (!peek< exactly <'$'> >()) { + css_error("Invalid CSS", " after ", ": expected \"$\", was "); + } + // we expect a simple identifier as the call name + if (!lex< sequence < exactly <'$'>, identifier > >()) { + lex< exactly <'$'> >(); // move pstate and position up + css_error("Invalid CSS", " after ", ": expected identifier, was "); + } + // return object + return token; + } + // helper to parse identifier + Token Parser::lex_identifier() + { + // we expect a simple identifier as the call name + if (!lex< identifier >()) { // ToDo: pstate wrong? + css_error("Invalid CSS", " after ", ": expected identifier, was "); + } + // return object + return token; + } + + Each_Obj Parser::parse_each_directive() + { + stack.push_back(Scope::Control); + ParserState each_source_position = pstate; + bool root = block_stack.back()->is_root(); + std::vector vars; + lex_variable(); + vars.push_back(Util::normalize_underscores(lexed)); + while (lex< exactly<','> >()) { + if (!lex< variable >()) error("@each directive requires an iteration variable"); + vars.push_back(Util::normalize_underscores(lexed)); + } + if (!lex< kwd_in >()) error("expected 'in' keyword in @each directive"); + Expression_Obj list = parse_list(); + Block_Obj body = parse_block(root); + stack.pop_back(); + return SASS_MEMORY_NEW(Each, each_source_position, vars, list, body); + } + + // called after parsing `kwd_while_directive` + While_Obj Parser::parse_while_directive() + { + stack.push_back(Scope::Control); + bool root = block_stack.back()->is_root(); + // create the initial while call object + While_Obj call = SASS_MEMORY_NEW(While, pstate, 0, 0); + // parse mandatory predicate + Expression_Obj predicate = parse_list(); + List_Obj l = Cast(predicate); + if (!predicate || (l && !l->length())) { + css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was ", false); + } + call->predicate(predicate); + // parse mandatory block + call->block(parse_block(root)); + // return ast node + stack.pop_back(); + // return ast node + return call.detach(); + } + + // EO parse_while_directive + Media_Block_Obj Parser::parse_media_block() + { + stack.push_back(Scope::Media); + Media_Block_Obj media_block = SASS_MEMORY_NEW(Media_Block, pstate, 0, 0); + + media_block->media_queries(parse_media_queries()); + + Media_Block_Obj prev_media_block = last_media_block; + last_media_block = media_block; + media_block->block(parse_css_block()); + last_media_block = prev_media_block; + stack.pop_back(); + return media_block.detach(); + } + + List_Obj Parser::parse_media_queries() + { + advanceToNextToken(); + List_Obj queries = SASS_MEMORY_NEW(List, pstate, 0, SASS_COMMA); + if (!peek_css < exactly <'{'> >()) queries->append(parse_media_query()); + while (lex_css < exactly <','> >()) queries->append(parse_media_query()); + queries->update_pstate(pstate); + return queries.detach(); + } + + // Expression_Ptr Parser::parse_media_query() + Media_Query_Obj Parser::parse_media_query() + { + advanceToNextToken(); + Media_Query_Obj media_query = SASS_MEMORY_NEW(Media_Query, pstate); + if (lex < kwd_not >()) { media_query->is_negated(true); lex < css_comments >(false); } + else if (lex < kwd_only >()) { media_query->is_restricted(true); lex < css_comments >(false); } + + if (lex < identifier_schema >()) media_query->media_type(parse_identifier_schema()); + else if (lex < identifier >()) media_query->media_type(parse_interpolated_chunk(lexed)); + else media_query->append(parse_media_expression()); + + while (lex_css < kwd_and >()) media_query->append(parse_media_expression()); + if (lex < identifier_schema >()) { + String_Schema_Ptr schema = SASS_MEMORY_NEW(String_Schema, pstate); + schema->append(media_query->media_type()); + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, " ")); + schema->append(parse_identifier_schema()); + media_query->media_type(schema); + } + while (lex_css < kwd_and >()) media_query->append(parse_media_expression()); + + media_query->update_pstate(pstate); + + return media_query; + } + + Media_Query_Expression_Obj Parser::parse_media_expression() + { + if (lex < identifier_schema >()) { + String_Obj ss = parse_identifier_schema(); + return SASS_MEMORY_NEW(Media_Query_Expression, pstate, ss, 0, true); + } + if (!lex_css< exactly<'('> >()) { + error("media query expression must begin with '('"); + } + Expression_Obj feature; + if (peek_css< exactly<')'> >()) { + error("media feature required in media query expression"); + } + feature = parse_expression(); + Expression_Obj expression = 0; + if (lex_css< exactly<':'> >()) { + expression = parse_list(DELAYED); + } + if (!lex_css< exactly<')'> >()) { + error("unclosed parenthesis in media query expression"); + } + return SASS_MEMORY_NEW(Media_Query_Expression, feature->pstate(), feature, expression); + } + + // lexed after `kwd_supports_directive` + // these are very similar to media blocks + Supports_Block_Obj Parser::parse_supports_directive() + { + Supports_Condition_Obj cond = parse_supports_condition(); + if (!cond) { + css_error("Invalid CSS", " after ", ": expected @supports condition (e.g. (display: flexbox)), was ", false); + } + // create the ast node object for the support queries + Supports_Block_Obj query = SASS_MEMORY_NEW(Supports_Block, pstate, cond); + // additional block is mandatory + // parse inner block + query->block(parse_block()); + // return ast node + return query; + } + + // parse one query operation + // may encounter nested queries + Supports_Condition_Obj Parser::parse_supports_condition() + { + lex < css_whitespace >(); + Supports_Condition_Obj cond; + if ((cond = parse_supports_negation())) return cond; + if ((cond = parse_supports_operator())) return cond; + if ((cond = parse_supports_interpolation())) return cond; + return cond; + } + + Supports_Condition_Obj Parser::parse_supports_negation() + { + if (!lex < kwd_not >()) return 0; + Supports_Condition_Obj cond = parse_supports_condition_in_parens(); + return SASS_MEMORY_NEW(Supports_Negation, pstate, cond); + } + + Supports_Condition_Obj Parser::parse_supports_operator() + { + Supports_Condition_Obj cond = parse_supports_condition_in_parens(); + if (cond.isNull()) return 0; + + while (true) { + Supports_Operator::Operand op = Supports_Operator::OR; + if (lex < kwd_and >()) { op = Supports_Operator::AND; } + else if(!lex < kwd_or >()) { break; } + + lex < css_whitespace >(); + Supports_Condition_Obj right = parse_supports_condition_in_parens(); + + // Supports_Condition_Ptr cc = SASS_MEMORY_NEW(Supports_Condition, *static_cast(cond)); + cond = SASS_MEMORY_NEW(Supports_Operator, pstate, cond, right, op); + } + return cond; + } + + Supports_Condition_Obj Parser::parse_supports_interpolation() + { + if (!lex < interpolant >()) return 0; + + String_Obj interp = parse_interpolated_chunk(lexed); + if (!interp) return 0; + + return SASS_MEMORY_NEW(Supports_Interpolation, pstate, interp); + } + + // TODO: This needs some major work. Although feature conditions + // look like declarations their semantics differ significantly + Supports_Condition_Obj Parser::parse_supports_declaration() + { + Supports_Condition_Ptr cond; + // parse something declaration like + Expression_Obj feature = parse_expression(); + Expression_Obj expression = 0; + if (lex_css< exactly<':'> >()) { + expression = parse_list(DELAYED); + } + if (!feature || !expression) error("@supports condition expected declaration"); + cond = SASS_MEMORY_NEW(Supports_Declaration, + feature->pstate(), + feature, + expression); + // ToDo: maybe we need an additional error condition? + return cond; + } + + Supports_Condition_Obj Parser::parse_supports_condition_in_parens() + { + Supports_Condition_Obj interp = parse_supports_interpolation(); + if (interp != 0) return interp; + + if (!lex < exactly <'('> >()) return 0; + lex < css_whitespace >(); + + Supports_Condition_Obj cond = parse_supports_condition(); + if (cond != 0) { + if (!lex < exactly <')'> >()) error("unclosed parenthesis in @supports declaration"); + } else { + cond = parse_supports_declaration(); + if (!lex < exactly <')'> >()) error("unclosed parenthesis in @supports declaration"); + } + lex < css_whitespace >(); + return cond; + } + + At_Root_Block_Obj Parser::parse_at_root_block() + { + stack.push_back(Scope::AtRoot); + ParserState at_source_position = pstate; + Block_Obj body = 0; + At_Root_Query_Obj expr; + Lookahead lookahead_result; + if (lex_css< exactly<'('> >()) { + expr = parse_at_root_query(); + } + if (peek_css < exactly<'{'> >()) { + lex (); + body = parse_block(true); + } + else if ((lookahead_result = lookahead_for_selector(position)).found) { + Ruleset_Obj r = parse_ruleset(lookahead_result); + body = SASS_MEMORY_NEW(Block, r->pstate(), 1, true); + body->append(r); + } + At_Root_Block_Obj at_root = SASS_MEMORY_NEW(At_Root_Block, at_source_position, body); + if (!expr.isNull()) at_root->expression(expr); + stack.pop_back(); + return at_root; + } + + At_Root_Query_Obj Parser::parse_at_root_query() + { + if (peek< exactly<')'> >()) error("at-root feature required in at-root expression"); + + if (!peek< alternatives< kwd_with_directive, kwd_without_directive > >()) { + css_error("Invalid CSS", " after ", ": expected \"with\" or \"without\", was "); + } + + Expression_Obj feature = parse_list(); + if (!lex_css< exactly<':'> >()) error("style declaration must contain a value"); + Expression_Obj expression = parse_list(); + List_Obj value = SASS_MEMORY_NEW(List, feature->pstate(), 1); + + if (expression->concrete_type() == Expression::LIST) { + value = Cast(expression); + } + else value->append(expression); + + At_Root_Query_Obj cond = SASS_MEMORY_NEW(At_Root_Query, + value->pstate(), + feature, + value); + if (!lex_css< exactly<')'> >()) error("unclosed parenthesis in @at-root expression"); + return cond; + } + + Directive_Obj Parser::parse_special_directive() + { + std::string kwd(lexed); + + if (lexed == "@else") error("Invalid CSS: @else must come after @if"); + + // this whole branch is never hit via spec tests + + Directive_Ptr at_rule = SASS_MEMORY_NEW(Directive, pstate, kwd); + Lookahead lookahead = lookahead_for_include(position); + if (lookahead.found && !lookahead.has_interpolants) { + at_rule->selector(parse_selector_list(false)); + } + + lex < css_comments >(false); + + if (lex < static_property >()) { + at_rule->value(parse_interpolated_chunk(Token(lexed))); + } else if (!(peek < alternatives < exactly<'{'>, exactly<'}'>, exactly<';'> > >())) { + at_rule->value(parse_list()); + } + + lex < css_comments >(false); + + if (peek< exactly<'{'> >()) { + at_rule->block(parse_block()); + } + + return at_rule; + } + + // this whole branch is never hit via spec tests + Directive_Obj Parser::parse_prefixed_directive() + { + std::string kwd(lexed); + + if (lexed == "@else") error("Invalid CSS: @else must come after @if"); + + Directive_Obj at_rule = SASS_MEMORY_NEW(Directive, pstate, kwd); + Lookahead lookahead = lookahead_for_include(position); + if (lookahead.found && !lookahead.has_interpolants) { + at_rule->selector(parse_selector_list(false)); + } + + lex < css_comments >(false); + + if (lex < static_property >()) { + at_rule->value(parse_interpolated_chunk(Token(lexed))); + } else if (!(peek < alternatives < exactly<'{'>, exactly<'}'>, exactly<';'> > >())) { + at_rule->value(parse_list()); + } + + lex < css_comments >(false); + + if (peek< exactly<'{'> >()) { + at_rule->block(parse_block()); + } + + return at_rule; + } + + + Directive_Obj Parser::parse_directive() + { + Directive_Obj directive = SASS_MEMORY_NEW(Directive, pstate, lexed); + String_Schema_Obj val = parse_almost_any_value(); + // strip left and right if they are of type string + directive->value(val); + if (peek< exactly<'{'> >()) { + directive->block(parse_block()); + } + return directive; + } + + Expression_Obj Parser::lex_interpolation() + { + if (lex < interpolant >(true) != NULL) { + return parse_interpolated_chunk(lexed, true); + } + return 0; + } + + Expression_Obj Parser::lex_interp_uri() + { + // create a string schema by lexing optional interpolations + return lex_interp< re_string_uri_open, re_string_uri_close >(); + } + + Expression_Obj Parser::lex_interp_string() + { + Expression_Obj rv; + if ((rv = lex_interp< re_string_double_open, re_string_double_close >())) return rv; + if ((rv = lex_interp< re_string_single_open, re_string_single_close >())) return rv; + return rv; + } + + Expression_Obj Parser::lex_almost_any_value_chars() + { + const char* match = + lex < + one_plus < + alternatives < + sequence < + exactly <'\\'>, + any_char + >, + sequence < + negate < + sequence < + exactly < url_kwd >, + exactly <'('> + > + >, + neg_class_char < + almost_any_value_class + > + >, + sequence < + exactly <'/'>, + negate < + alternatives < + exactly <'/'>, + exactly <'*'> + > + > + >, + sequence < + exactly <'\\'>, + exactly <'#'>, + negate < + exactly <'{'> + > + >, + sequence < + exactly <'!'>, + negate < + alpha + > + > + > + > + >(false); + if (match) { + return SASS_MEMORY_NEW(String_Constant, pstate, lexed); + } + return NULL; + } + + Expression_Obj Parser::lex_almost_any_value_token() + { + Expression_Obj rv; + if (*position == 0) return 0; + if ((rv = lex_almost_any_value_chars())) return rv; + // if ((rv = lex_block_comment())) return rv; + // if ((rv = lex_single_line_comment())) return rv; + if ((rv = lex_interp_string())) return rv; + if ((rv = lex_interp_uri())) return rv; + if ((rv = lex_interpolation())) return rv; + if (lex< alternatives< hex, hex0 > >()) + { return lexed_hex_color(lexed); } + return rv; + } + + String_Schema_Obj Parser::parse_almost_any_value() + { + + String_Schema_Obj schema = SASS_MEMORY_NEW(String_Schema, pstate); + if (*position == 0) return 0; + lex < spaces >(false); + Expression_Obj token = lex_almost_any_value_token(); + if (!token) return 0; + schema->append(token); + if (*position == 0) { + schema->rtrim(); + return schema.detach(); + } + + while ((token = lex_almost_any_value_token())) { + schema->append(token); + } + + lex < css_whitespace >(); + + schema->rtrim(); + + return schema.detach(); + } + + Warning_Obj Parser::parse_warning() + { + if (stack.back() != Scope::Root && + stack.back() != Scope::Function && + stack.back() != Scope::Mixin && + stack.back() != Scope::Control && + stack.back() != Scope::Rules) { + error("Illegal nesting: Only properties may be nested beneath properties."); + } + return SASS_MEMORY_NEW(Warning, pstate, parse_list(DELAYED)); + } + + Error_Obj Parser::parse_error() + { + if (stack.back() != Scope::Root && + stack.back() != Scope::Function && + stack.back() != Scope::Mixin && + stack.back() != Scope::Control && + stack.back() != Scope::Rules) { + error("Illegal nesting: Only properties may be nested beneath properties."); + } + return SASS_MEMORY_NEW(Error, pstate, parse_list(DELAYED)); + } + + Debug_Obj Parser::parse_debug() + { + if (stack.back() != Scope::Root && + stack.back() != Scope::Function && + stack.back() != Scope::Mixin && + stack.back() != Scope::Control && + stack.back() != Scope::Rules) { + error("Illegal nesting: Only properties may be nested beneath properties."); + } + return SASS_MEMORY_NEW(Debug, pstate, parse_list(DELAYED)); + } + + Return_Obj Parser::parse_return_directive() + { + // check that we do not have an empty list (ToDo: check if we got all cases) + if (peek_css < alternatives < exactly < ';' >, exactly < '}' >, end_of_file > >()) + { css_error("Invalid CSS", " after ", ": expected expression (e.g. 1px, bold), was "); } + return SASS_MEMORY_NEW(Return, pstate, parse_list()); + } + + Lookahead Parser::lookahead_for_selector(const char* start) + { + // init result struct + Lookahead rv = Lookahead(); + // get start position + const char* p = start ? start : position; + // match in one big "regex" + rv.error = p; + if (const char* q = + peek < + re_selector_list + >(p) + ) { + bool could_be_property = peek< sequence< exactly<'-'>, exactly<'-'> > >(p) != 0; + bool could_be_escaped = false; + while (p < q) { + // did we have interpolations? + if (*p == '#' && *(p+1) == '{') { + rv.has_interpolants = true; + p = q; break; + } + // A property that's ambiguous with a nested selector is interpreted as a + // custom property. + if (*p == ':' && !could_be_escaped) { + rv.is_custom_property = could_be_property || p+1 == q || peek< space >(p+1); + } + could_be_escaped = *p == '\\'; + ++ p; + } + // store anyway } + + + // ToDo: remove + rv.error = q; + rv.position = q; + // check expected opening bracket + // only after successfull matching + if (peek < exactly<'{'> >(q)) rv.found = q; + // else if (peek < end_of_file >(q)) rv.found = q; + else if (peek < exactly<'('> >(q)) rv.found = q; + // else if (peek < exactly<';'> >(q)) rv.found = q; + // else if (peek < exactly<'}'> >(q)) rv.found = q; + if (rv.found || *p == 0) rv.error = 0; + } + + rv.parsable = ! rv.has_interpolants; + + // return result + return rv; + + } + // EO lookahead_for_selector + + // used in parse_block_nodes and parse_special_directive + // ToDo: actual usage is still not really clear to me? + Lookahead Parser::lookahead_for_include(const char* start) + { + // we actually just lookahead for a selector + Lookahead rv = lookahead_for_selector(start); + // but the "found" rules are different + if (const char* p = rv.position) { + // check for additional abort condition + if (peek < exactly<';'> >(p)) rv.found = p; + else if (peek < exactly<'}'> >(p)) rv.found = p; + } + // return result + return rv; + } + // EO lookahead_for_include + + // look ahead for a token with interpolation in it + // we mostly use the result if there is an interpolation + // everything that passes here gets parsed as one schema + // meaning it will not be parsed as a space separated list + Lookahead Parser::lookahead_for_value(const char* start) + { + // init result struct + Lookahead rv = Lookahead(); + // get start position + const char* p = start ? start : position; + // match in one big "regex" + if (const char* q = + peek < + non_greedy < + alternatives < + // consume whitespace + block_comment, // spaces, + // main tokens + sequence < + interpolant, + optional < + quoted_string + > + >, + identifier, + variable, + // issue #442 + sequence < + parenthese_scope, + interpolant, + optional < + quoted_string + > + > + >, + sequence < + // optional_spaces, + alternatives < + // end_of_file, + exactly<'{'>, + exactly<'}'>, + exactly<';'> + > + > + > + >(p) + ) { + if (p == q) return rv; + while (p < q) { + // did we have interpolations? + if (*p == '#' && *(p+1) == '{') { + rv.has_interpolants = true; + p = q; break; + } + ++ p; + } + // store anyway + // ToDo: remove + rv.position = q; + // check expected opening bracket + // only after successful matching + if (peek < exactly<'{'> >(q)) rv.found = q; + else if (peek < exactly<';'> >(q)) rv.found = q; + else if (peek < exactly<'}'> >(q)) rv.found = q; + } + + // return result + return rv; + } + // EO lookahead_for_value + + void Parser::read_bom() + { + size_t skip = 0; + std::string encoding; + bool utf_8 = false; + switch ((unsigned char) source[0]) { + case 0xEF: + skip = check_bom_chars(source, end, utf_8_bom, 3); + encoding = "UTF-8"; + utf_8 = true; + break; + case 0xFE: + skip = check_bom_chars(source, end, utf_16_bom_be, 2); + encoding = "UTF-16 (big endian)"; + break; + case 0xFF: + skip = check_bom_chars(source, end, utf_16_bom_le, 2); + skip += (skip ? check_bom_chars(source, end, utf_32_bom_le, 4) : 0); + encoding = (skip == 2 ? "UTF-16 (little endian)" : "UTF-32 (little endian)"); + break; + case 0x00: + skip = check_bom_chars(source, end, utf_32_bom_be, 4); + encoding = "UTF-32 (big endian)"; + break; + case 0x2B: + skip = check_bom_chars(source, end, utf_7_bom_1, 4) + | check_bom_chars(source, end, utf_7_bom_2, 4) + | check_bom_chars(source, end, utf_7_bom_3, 4) + | check_bom_chars(source, end, utf_7_bom_4, 4) + | check_bom_chars(source, end, utf_7_bom_5, 5); + encoding = "UTF-7"; + break; + case 0xF7: + skip = check_bom_chars(source, end, utf_1_bom, 3); + encoding = "UTF-1"; + break; + case 0xDD: + skip = check_bom_chars(source, end, utf_ebcdic_bom, 4); + encoding = "UTF-EBCDIC"; + break; + case 0x0E: + skip = check_bom_chars(source, end, scsu_bom, 3); + encoding = "SCSU"; + break; + case 0xFB: + skip = check_bom_chars(source, end, bocu_1_bom, 3); + encoding = "BOCU-1"; + break; + case 0x84: + skip = check_bom_chars(source, end, gb_18030_bom, 4); + encoding = "GB-18030"; + break; + default: break; + } + if (skip > 0 && !utf_8) error("only UTF-8 documents are currently supported; your document appears to be " + encoding); + position += skip; + } + + size_t check_bom_chars(const char* src, const char *end, const unsigned char* bom, size_t len) + { + size_t skip = 0; + if (src + len > end) return 0; + for (size_t i = 0; i < len; ++i, ++skip) { + if ((unsigned char) src[i] != bom[i]) return 0; + } + return skip; + } + + + Expression_Obj Parser::fold_operands(Expression_Obj base, std::vector& operands, Operand op) + { + for (size_t i = 0, S = operands.size(); i < S; ++i) { + base = SASS_MEMORY_NEW(Binary_Expression, base->pstate(), op, base, operands[i]); + } + return base; + } + + Expression_Obj Parser::fold_operands(Expression_Obj base, std::vector& operands, std::vector& ops, size_t i) + { + if (String_Schema_Ptr schema = Cast(base)) { + // return schema; + if (schema->has_interpolants()) { + if (i + 1 < operands.size() && ( + (ops[0].operand == Sass_OP::EQ) + || (ops[0].operand == Sass_OP::ADD) + || (ops[0].operand == Sass_OP::DIV) + || (ops[0].operand == Sass_OP::MUL) + || (ops[0].operand == Sass_OP::NEQ) + || (ops[0].operand == Sass_OP::LT) + || (ops[0].operand == Sass_OP::GT) + || (ops[0].operand == Sass_OP::LTE) + || (ops[0].operand == Sass_OP::GTE) + )) { + Expression_Obj rhs = fold_operands(operands[i], operands, ops, i + 1); + rhs = SASS_MEMORY_NEW(Binary_Expression, base->pstate(), ops[0], schema, rhs); + return rhs; + } + // return schema; + } + } + + for (size_t S = operands.size(); i < S; ++i) { + if (String_Schema_Ptr schema = Cast(operands[i])) { + if (schema->has_interpolants()) { + if (i + 1 < S) { + // this whole branch is never hit via spec tests + Expression_Obj rhs = fold_operands(operands[i+1], operands, ops, i + 2); + rhs = SASS_MEMORY_NEW(Binary_Expression, base->pstate(), ops[i], schema, rhs); + base = SASS_MEMORY_NEW(Binary_Expression, base->pstate(), ops[i], base, rhs); + return base; + } + base = SASS_MEMORY_NEW(Binary_Expression, base->pstate(), ops[i], base, operands[i]); + return base; + } else { + base = SASS_MEMORY_NEW(Binary_Expression, base->pstate(), ops[i], base, operands[i]); + } + } else { + base = SASS_MEMORY_NEW(Binary_Expression, base->pstate(), ops[i], base, operands[i]); + } + Binary_Expression_Ptr b = Cast(base.ptr()); + if (b && ops[i].operand == Sass_OP::DIV && b->left()->is_delayed() && b->right()->is_delayed()) { + base->is_delayed(true); + } + } + // nested binary expression are never to be delayed + if (Binary_Expression_Ptr b = Cast(base)) { + if (Cast(b->left())) base->set_delayed(false); + if (Cast(b->right())) base->set_delayed(false); + } + return base; + } + + void Parser::error(std::string msg, Position pos) + { + Position p(pos.line ? pos : before_token); + ParserState pstate(path, source, p, Offset(0, 0)); + traces.push_back(Backtrace(pstate)); + throw Exception::InvalidSass(pstate, traces, msg); + } + + void Parser::error(std::string msg) + { + error(msg, pstate); + } + + // print a css parsing error with actual context information from parsed source + void Parser::css_error(const std::string& msg, const std::string& prefix, const std::string& middle, const bool trim) + { + int max_len = 18; + const char* end = this->end; + while (*end != 0) ++ end; + const char* pos = peek < optional_spaces >(); + if (!pos) pos = position; + + const char* last_pos(pos); + if (last_pos > source) { + utf8::prior(last_pos, source); + } + // backup position to last significant char + while (trim && last_pos > source && last_pos < end) { + if (!Prelexer::is_space(*last_pos)) break; + utf8::prior(last_pos, source); + } + + bool ellipsis_left = false; + const char* pos_left(last_pos); + const char* end_left(last_pos); + + if (*pos_left) utf8::next(pos_left, end); + if (*end_left) utf8::next(end_left, end); + while (pos_left > source) { + if (utf8::distance(pos_left, end_left) >= max_len) { + utf8::prior(pos_left, source); + ellipsis_left = *(pos_left) != '\n' && + *(pos_left) != '\r'; + utf8::next(pos_left, end); + break; + } + + const char* prev = pos_left; + utf8::prior(prev, source); + if (*prev == '\r') break; + if (*prev == '\n') break; + pos_left = prev; + } + if (pos_left < source) { + pos_left = source; + } + + bool ellipsis_right = false; + const char* end_right(pos); + const char* pos_right(pos); + while (end_right < end) { + if (utf8::distance(pos_right, end_right) > max_len) { + ellipsis_left = *(pos_right) != '\n' && + *(pos_right) != '\r'; + break; + } + if (*end_right == '\r') break; + if (*end_right == '\n') break; + utf8::next(end_right, end); + } + // if (*end_right == 0) end_right ++; + + std::string left(pos_left, end_left); + std::string right(pos_right, end_right); + size_t left_subpos = left.size() > 15 ? left.size() - 15 : 0; + size_t right_subpos = right.size() > 15 ? right.size() - 15 : 0; + if (left_subpos && ellipsis_left) left = ellipsis + left.substr(left_subpos); + if (right_subpos && ellipsis_right) right = right.substr(right_subpos) + ellipsis; + // Hotfix when source is null, probably due to interpolation parsing!? + if (source == NULL || *source == 0) source = pstate.src; + // now pass new message to the more generic error function + error(msg + prefix + quote(left) + middle + quote(right)); + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/parser.hpp b/mybulma/node_modules/node-sass/src/libsass/src/parser.hpp new file mode 100644 index 0000000..d2a6ddc --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/parser.hpp @@ -0,0 +1,400 @@ +#ifndef SASS_PARSER_H +#define SASS_PARSER_H + +#include +#include + +#include "ast.hpp" +#include "position.hpp" +#include "context.hpp" +#include "position.hpp" +#include "prelexer.hpp" + +#ifndef MAX_NESTING +// Note that this limit is not an exact science +// it depends on various factors, which some are +// not under our control (compile time or even OS +// dependent settings on the available stack size) +// It should fix most common segfault cases though. +#define MAX_NESTING 512 +#endif + +struct Lookahead { + const char* found; + const char* error; + const char* position; + bool parsable; + bool has_interpolants; + bool is_custom_property; +}; + +namespace Sass { + + class Parser : public ParserState { + public: + + enum Scope { Root, Mixin, Function, Media, Control, Properties, Rules, AtRoot }; + + Context& ctx; + std::vector block_stack; + std::vector stack; + Media_Block_Ptr last_media_block; + const char* source; + const char* position; + const char* end; + Position before_token; + Position after_token; + ParserState pstate; + Backtraces traces; + size_t indentation; + size_t nestings; + + Token lexed; + + Parser(Context& ctx, const ParserState& pstate, Backtraces traces) + : ParserState(pstate), ctx(ctx), block_stack(), stack(0), last_media_block(), + source(0), position(0), end(0), before_token(pstate), after_token(pstate), + pstate(pstate), traces(traces), indentation(0), nestings(0) + { + stack.push_back(Scope::Root); + } + + // static Parser from_string(const std::string& src, Context& ctx, ParserState pstate = ParserState("[STRING]")); + static Parser from_c_str(const char* src, Context& ctx, Backtraces, ParserState pstate = ParserState("[CSTRING]"), const char* source = 0); + static Parser from_c_str(const char* beg, const char* end, Context& ctx, Backtraces, ParserState pstate = ParserState("[CSTRING]"), const char* source = 0); + static Parser from_token(Token t, Context& ctx, Backtraces, ParserState pstate = ParserState("[TOKEN]"), const char* source = 0); + // special static parsers to convert strings into certain selectors + static Selector_List_Obj parse_selector(const char* src, Context& ctx, Backtraces, ParserState pstate = ParserState("[SELECTOR]"), const char* source = 0); + +#ifdef __clang__ + + // lex and peak uses the template parameter to branch on the action, which + // triggers clangs tautological comparison on the single-comparison + // branches. This is not a bug, just a merging of behaviour into + // one function + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-compare" + +#endif + + + // skip current token and next whitespace + // moves ParserState right before next token + void advanceToNextToken(); + + bool peek_newline(const char* start = 0); + + // skip over spaces, tabs and line comments + template + const char* sneak(const char* start = 0) + { + using namespace Prelexer; + + // maybe use optional start position from arguments? + const char* it_position = start ? start : position; + + // skip white-space? + if (mx == spaces || + mx == no_spaces || + mx == css_comments || + mx == css_whitespace || + mx == optional_spaces || + mx == optional_css_comments || + mx == optional_css_whitespace + ) { + return it_position; + } + + // skip over spaces, tabs and sass line comments + const char* pos = optional_css_whitespace(it_position); + // always return a valid position + return pos ? pos : it_position; + + } + + // match will not skip over space, tabs and line comment + // return the position where the lexer match will occur + template + const char* match(const char* start = 0) + { + // match the given prelexer + return mx(position); + } + + // peek will only skip over space, tabs and line comment + // return the position where the lexer match will occur + template + const char* peek(const char* start = 0) + { + + // sneak up to the actual token we want to lex + // this should skip over white-space if desired + const char* it_before_token = sneak < mx >(start); + + // match the given prelexer + const char* match = mx(it_before_token); + + // check if match is in valid range + return match <= end ? match : 0; + + } + + // white-space handling is built into the lexer + // this way you do not need to parse it yourself + // some matchers don't accept certain white-space + // we do not support start arg, since we manipulate + // sourcemap offset and we modify the position pointer! + // lex will only skip over space, tabs and line comment + template + const char* lex(bool lazy = true, bool force = false) + { + + if (*position == 0) return 0; + + // position considered before lexed token + // we can skip whitespace or comments for + // lazy developers (but we need control) + const char* it_before_token = position; + + // sneak up to the actual token we want to lex + // this should skip over white-space if desired + if (lazy) it_before_token = sneak < mx >(position); + + // now call matcher to get position after token + const char* it_after_token = mx(it_before_token); + + // check if match is in valid range + if (it_after_token > end) return 0; + + // maybe we want to update the parser state anyway? + if (force == false) { + // assertion that we got a valid match + if (it_after_token == 0) return 0; + // assertion that we actually lexed something + if (it_after_token == it_before_token) return 0; + } + + // create new lexed token object (holds the parse results) + lexed = Token(position, it_before_token, it_after_token); + + // advance position (add whitespace before current token) + before_token = after_token.add(position, it_before_token); + + // update after_token position for current token + after_token.add(it_before_token, it_after_token); + + // ToDo: could probably do this incremetal on original object (API wants offset?) + pstate = ParserState(path, source, lexed, before_token, after_token - before_token); + + // advance internal char iterator + return position = it_after_token; + + } + + // lex_css skips over space, tabs, line and block comment + // all block comments will be consumed and thrown away + // source-map position will point to token after the comment + template + const char* lex_css() + { + // copy old token + Token prev = lexed; + // store previous pointer + const char* oldpos = position; + Position bt = before_token; + Position at = after_token; + ParserState op = pstate; + // throw away comments + // update srcmap position + lex < Prelexer::css_comments >(); + // now lex a new token + const char* pos = lex< mx >(); + // maybe restore prev state + if (pos == 0) { + pstate = op; + lexed = prev; + position = oldpos; + after_token = at; + before_token = bt; + } + // return match + return pos; + } + + // all block comments will be skipped and thrown away + template + const char* peek_css(const char* start = 0) + { + // now peek a token (skip comments first) + return peek< mx >(peek < Prelexer::css_comments >(start)); + } + +#ifdef __clang__ + +#pragma clang diagnostic pop + +#endif + + void error(std::string msg); + void error(std::string msg, Position pos); + // generate message with given and expected sample + // text before and in the middle are configurable + void css_error(const std::string& msg, + const std::string& prefix = " after ", + const std::string& middle = ", was: ", + const bool trim = true); + void read_bom(); + + Block_Obj parse(); + Import_Obj parse_import(); + Definition_Obj parse_definition(Definition::Type which_type); + Parameters_Obj parse_parameters(); + Parameter_Obj parse_parameter(); + Mixin_Call_Obj parse_include_directive(); + Arguments_Obj parse_arguments(); + Argument_Obj parse_argument(); + Assignment_Obj parse_assignment(); + Ruleset_Obj parse_ruleset(Lookahead lookahead); + Selector_List_Obj parse_selector_list(bool chroot); + Complex_Selector_Obj parse_complex_selector(bool chroot); + Selector_Schema_Obj parse_selector_schema(const char* end_of_selector, bool chroot); + Compound_Selector_Obj parse_compound_selector(); + Simple_Selector_Obj parse_simple_selector(); + Wrapped_Selector_Obj parse_negated_selector(); + Simple_Selector_Obj parse_pseudo_selector(); + Attribute_Selector_Obj parse_attribute_selector(); + Block_Obj parse_block(bool is_root = false); + Block_Obj parse_css_block(bool is_root = false); + bool parse_block_nodes(bool is_root = false); + bool parse_block_node(bool is_root = false); + + bool parse_number_prefix(); + Declaration_Obj parse_declaration(); + Expression_Obj parse_map(); + Expression_Obj parse_bracket_list(); + Expression_Obj parse_list(bool delayed = false); + Expression_Obj parse_comma_list(bool delayed = false); + Expression_Obj parse_space_list(); + Expression_Obj parse_disjunction(); + Expression_Obj parse_conjunction(); + Expression_Obj parse_relation(); + Expression_Obj parse_expression(); + Expression_Obj parse_operators(); + Expression_Obj parse_factor(); + Expression_Obj parse_value(); + Function_Call_Obj parse_calc_function(); + Function_Call_Obj parse_function_call(); + Function_Call_Schema_Obj parse_function_call_schema(); + String_Obj parse_url_function_string(); + String_Obj parse_url_function_argument(); + String_Obj parse_interpolated_chunk(Token, bool constant = false, bool css = true); + String_Obj parse_string(); + Value_Obj parse_static_value(); + String_Schema_Obj parse_css_variable_value(bool top_level = true); + String_Schema_Obj parse_css_variable_value_token(bool top_level = true); + String_Obj parse_ie_property(); + String_Obj parse_ie_keyword_arg(); + String_Schema_Obj parse_value_schema(const char* stop); + String_Obj parse_identifier_schema(); + If_Obj parse_if_directive(bool else_if = false); + For_Obj parse_for_directive(); + Each_Obj parse_each_directive(); + While_Obj parse_while_directive(); + Return_Obj parse_return_directive(); + Content_Obj parse_content_directive(); + void parse_charset_directive(); + Media_Block_Obj parse_media_block(); + List_Obj parse_media_queries(); + Media_Query_Obj parse_media_query(); + Media_Query_Expression_Obj parse_media_expression(); + Supports_Block_Obj parse_supports_directive(); + Supports_Condition_Obj parse_supports_condition(); + Supports_Condition_Obj parse_supports_negation(); + Supports_Condition_Obj parse_supports_operator(); + Supports_Condition_Obj parse_supports_interpolation(); + Supports_Condition_Obj parse_supports_declaration(); + Supports_Condition_Obj parse_supports_condition_in_parens(); + At_Root_Block_Obj parse_at_root_block(); + At_Root_Query_Obj parse_at_root_query(); + String_Schema_Obj parse_almost_any_value(); + Directive_Obj parse_special_directive(); + Directive_Obj parse_prefixed_directive(); + Directive_Obj parse_directive(); + Warning_Obj parse_warning(); + Error_Obj parse_error(); + Debug_Obj parse_debug(); + + Value_Ptr color_or_string(const std::string& lexed) const; + + // be more like ruby sass + Expression_Obj lex_almost_any_value_token(); + Expression_Obj lex_almost_any_value_chars(); + Expression_Obj lex_interp_string(); + Expression_Obj lex_interp_uri(); + Expression_Obj lex_interpolation(); + + // these will throw errors + Token lex_variable(); + Token lex_identifier(); + + void parse_block_comments(); + + Lookahead lookahead_for_value(const char* start = 0); + Lookahead lookahead_for_selector(const char* start = 0); + Lookahead lookahead_for_include(const char* start = 0); + + Expression_Obj fold_operands(Expression_Obj base, std::vector& operands, Operand op); + Expression_Obj fold_operands(Expression_Obj base, std::vector& operands, std::vector& ops, size_t i = 0); + + void throw_syntax_error(std::string message, size_t ln = 0); + void throw_read_error(std::string message, size_t ln = 0); + + + template + Expression_Obj lex_interp() + { + if (lex < open >(false)) { + String_Schema_Obj schema = SASS_MEMORY_NEW(String_Schema, pstate); + // std::cerr << "LEX [[" << std::string(lexed) << "]]\n"; + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, lexed)); + if (position[0] == '#' && position[1] == '{') { + Expression_Obj itpl = lex_interpolation(); + if (!itpl.isNull()) schema->append(itpl); + while (lex < close >(false)) { + // std::cerr << "LEX [[" << std::string(lexed) << "]]\n"; + schema->append(SASS_MEMORY_NEW(String_Constant, pstate, lexed)); + if (position[0] == '#' && position[1] == '{') { + Expression_Obj itpl = lex_interpolation(); + if (!itpl.isNull()) schema->append(itpl); + } else { + return schema; + } + } + } else { + return SASS_MEMORY_NEW(String_Constant, pstate, lexed); + } + } + return 0; + } + + public: + static Number_Ptr lexed_number(const ParserState& pstate, const std::string& parsed); + static Number_Ptr lexed_dimension(const ParserState& pstate, const std::string& parsed); + static Number_Ptr lexed_percentage(const ParserState& pstate, const std::string& parsed); + static Value_Ptr lexed_hex_color(const ParserState& pstate, const std::string& parsed); + private: + Number_Ptr lexed_number(const std::string& parsed) { return lexed_number(pstate, parsed); }; + Number_Ptr lexed_dimension(const std::string& parsed) { return lexed_dimension(pstate, parsed); }; + Number_Ptr lexed_percentage(const std::string& parsed) { return lexed_percentage(pstate, parsed); }; + Value_Ptr lexed_hex_color(const std::string& parsed) { return lexed_hex_color(pstate, parsed); }; + + static const char* re_attr_sensitive_close(const char* src); + static const char* re_attr_insensitive_close(const char* src); + + }; + + size_t check_bom_chars(const char* src, const char *end, const unsigned char* bom, size_t len); +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/paths.hpp b/mybulma/node_modules/node-sass/src/libsass/src/paths.hpp new file mode 100644 index 0000000..aabab94 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/paths.hpp @@ -0,0 +1,71 @@ +#ifndef SASS_PATHS_H +#define SASS_PATHS_H + +#include +#include +#include + + +template +std::string vector_to_string(std::vector v) +{ + std::stringstream buffer; + buffer << "["; + + if (!v.empty()) + { buffer << v[0]; } + else + { buffer << "]"; } + + if (v.size() == 1) + { buffer << "]"; } + else + { + for (size_t i = 1, S = v.size(); i < S; ++i) buffer << ", " << v[i]; + buffer << "]"; + } + + return buffer.str(); +} + +namespace Sass { + + + template + std::vector > paths(std::vector > strata, size_t from_end = 0) + { + if (strata.empty()) { + return std::vector >(); + } + + size_t end = strata.size() - from_end; + if (end <= 1) { + std::vector > starting_points; + starting_points.reserve(strata[0].size()); + for (size_t i = 0, S = strata[0].size(); i < S; ++i) { + std::vector starting_point; + starting_point.push_back(strata[0][i]); + starting_points.push_back(starting_point); + } + return starting_points; + } + + std::vector > up_to_here = paths(strata, from_end + 1); + std::vector here = strata[end-1]; + + std::vector > branches; + branches.reserve(up_to_here.size() * here.size()); + for (size_t i = 0, S1 = up_to_here.size(); i < S1; ++i) { + for (size_t j = 0, S2 = here.size(); j < S2; ++j) { + std::vector branch = up_to_here[i]; + branch.push_back(here[j]); + branches.push_back(branch); + } + } + + return branches; + } + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/plugins.cpp b/mybulma/node_modules/node-sass/src/libsass/src/plugins.cpp new file mode 100644 index 0000000..eecba78 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/plugins.cpp @@ -0,0 +1,184 @@ +#include "sass.hpp" +#include +#include "output.hpp" +#include "plugins.hpp" + +#ifdef _WIN32 +#include +#else +#include +#include +#include +#include +#endif + +namespace Sass { + + Plugins::Plugins(void) { } + Plugins::~Plugins(void) + { + for (auto function : functions) { + sass_delete_function(function); + } + for (auto importer : importers) { + sass_delete_importer(importer); + } + for (auto header : headers) { + sass_delete_importer(header); + } + } + + // check if plugin is compatible with this version + // plugins may be linked static against libsass + // we try to be compatible between major versions + inline bool compatibility(const char* their_version) + { +// const char* their_version = "3.1.2"; + // first check if anyone has an unknown version + const char* our_version = libsass_version(); + if (!strcmp(their_version, "[na]")) return false; + if (!strcmp(our_version, "[na]")) return false; + + // find the position of the second dot + size_t pos = std::string(our_version).find('.', 0); + if (pos != std::string::npos) pos = std::string(our_version).find('.', pos + 1); + + // if we do not have two dots we fallback to compare complete string + if (pos == std::string::npos) { return strcmp(their_version, our_version) ? 0 : 1; } + // otherwise only compare up to the second dot (major versions) + else { return strncmp(their_version, our_version, pos) ? 0 : 1; } + + } + + // load one specific plugin + bool Plugins::load_plugin (const std::string& path) + { + + typedef const char* (*__plugin_version__)(void); + typedef Sass_Function_List (*__plugin_load_fns__)(void); + typedef Sass_Importer_List (*__plugin_load_imps__)(void); + + if (LOAD_LIB(plugin, path)) + { + // try to load initial function to query libsass version suppor + if (LOAD_LIB_FN(__plugin_version__, plugin_version, "libsass_get_version")) + { + // get the libsass version of the plugin + if (!compatibility(plugin_version())) return false; + // try to get import address for "libsass_load_functions" + if (LOAD_LIB_FN(__plugin_load_fns__, plugin_load_functions, "libsass_load_functions")) + { + Sass_Function_List fns = plugin_load_functions(), _p = fns; + while (fns && *fns) { functions.push_back(*fns); ++ fns; } + sass_free_memory(_p); // only delete the container, items not yet + } + // try to get import address for "libsass_load_importers" + if (LOAD_LIB_FN(__plugin_load_imps__, plugin_load_importers, "libsass_load_importers")) + { + Sass_Importer_List imps = plugin_load_importers(), _p = imps; + while (imps && *imps) { importers.push_back(*imps); ++ imps; } + sass_free_memory(_p); // only delete the container, items not yet + } + // try to get import address for "libsass_load_headers" + if (LOAD_LIB_FN(__plugin_load_imps__, plugin_load_headers, "libsass_load_headers")) + { + Sass_Importer_List imps = plugin_load_headers(), _p = imps; + while (imps && *imps) { headers.push_back(*imps); ++ imps; } + sass_free_memory(_p); // only delete the container, items not yet + } + // success + return true; + } + else + { + // print debug message to stderr (should not happen) + std::cerr << "failed loading 'libsass_support' in <" << path << ">" << std::endl; + if (const char* dlsym_error = dlerror()) std::cerr << dlsym_error << std::endl; + CLOSE_LIB(plugin); + } + } + else + { + // print debug message to stderr (should not happen) + std::cerr << "failed loading plugin <" << path << ">" << std::endl; + if (const char* dlopen_error = dlerror()) std::cerr << dlopen_error << std::endl; + } + + return false; + + } + + size_t Plugins::load_plugins(const std::string& path) + { + + // count plugins + size_t loaded = 0; + + #ifdef _WIN32 + + try + { + + // use wchar (utf16) + WIN32_FIND_DATAW data; + // trailing slash is guaranteed + std::string globsrch(path + "*.dll"); + // convert to wide chars (utf16) for system call + std::wstring wglobsrch(UTF_8::convert_to_utf16(globsrch)); + HANDLE hFile = FindFirstFileW(wglobsrch.c_str(), &data); + // check if system called returned a result + // ToDo: maybe we should print a debug message + if (hFile == INVALID_HANDLE_VALUE) return -1; + + // read directory + while (true) + { + try + { + // the system will report the filenames with wide chars (utf16) + std::string entry = UTF_8::convert_from_utf16(data.cFileName); + // check if file ending matches exactly + if (!ends_with(entry, ".dll")) continue; + // load the plugin and increase counter + if (load_plugin(path + entry)) ++ loaded; + // check if there should be more entries + if (GetLastError() == ERROR_NO_MORE_FILES) break; + // load next entry (check for return type) + if (!FindNextFileW(hFile, &data)) break; + } + catch (...) + { + // report the error to the console (should not happen) + // seems like we got strange data from the system call? + std::cerr << "filename in plugin path has invalid utf8?" << std::endl; + } + } + } + catch (utf8::invalid_utf8) + { + // report the error to the console (should not happen) + // implementors should make sure to provide valid utf8 + std::cerr << "plugin path contains invalid utf8" << std::endl; + } + + #else + + DIR *dp; + struct dirent *dirp; + if((dp = opendir(path.c_str())) == NULL) return -1; + while ((dirp = readdir(dp)) != NULL) { + #if __APPLE__ + if (!ends_with(dirp->d_name, ".dylib")) continue; + #else + if (!ends_with(dirp->d_name, ".so")) continue; + #endif + if (load_plugin(path + dirp->d_name)) ++ loaded; + } + closedir(dp); + + #endif + return loaded; + + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/plugins.hpp b/mybulma/node_modules/node-sass/src/libsass/src/plugins.hpp new file mode 100644 index 0000000..fe4eed0 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/plugins.hpp @@ -0,0 +1,57 @@ +#ifndef SASS_PLUGINS_H +#define SASS_PLUGINS_H + +#include +#include +#include "utf8_string.hpp" +#include "sass/functions.h" + +#ifdef _WIN32 + + #define LOAD_LIB(var, path) HMODULE var = LoadLibraryW(UTF_8::convert_to_utf16(path).c_str()) + #define LOAD_LIB_WCHR(var, path_wide_str) HMODULE var = LoadLibraryW(path_wide_str.c_str()) + #define LOAD_LIB_FN(type, var, name) type var = (type) GetProcAddress(plugin, name) + #define CLOSE_LIB(var) FreeLibrary(var) + + #ifndef dlerror + #define dlerror() 0 + #endif + +#else + + #define LOAD_LIB(var, path) void* var = dlopen(path.c_str(), RTLD_LAZY) + #define LOAD_LIB_FN(type, var, name) type var = (type) dlsym(plugin, name) + #define CLOSE_LIB(var) dlclose(var) + +#endif + +namespace Sass { + + + class Plugins { + + public: // c-tor + Plugins(void); + ~Plugins(void); + + public: // methods + // load one specific plugin + bool load_plugin(const std::string& path); + // load all plugins from a directory + size_t load_plugins(const std::string& path); + + public: // public accessors + const std::vector get_headers(void) { return headers; } + const std::vector get_importers(void) { return importers; } + const std::vector get_functions(void) { return functions; } + + private: // private vars + std::vector headers; + std::vector importers; + std::vector functions; + + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/position.cpp b/mybulma/node_modules/node-sass/src/libsass/src/position.cpp new file mode 100644 index 0000000..312e04c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/position.cpp @@ -0,0 +1,181 @@ +#include "sass.hpp" +#include "position.hpp" + +namespace Sass { + + + Offset::Offset(const char chr) + : line(chr == '\n' ? 1 : 0), + column(chr == '\n' ? 0 : 1) + {} + + Offset::Offset(const char* string) + : line(0), column(0) + { + *this = inc(string, string + strlen(string)); + } + + Offset::Offset(const std::string& text) + : line(0), column(0) + { + *this = inc(text.c_str(), text.c_str() + text.size()); + } + + Offset::Offset(const size_t line, const size_t column) + : line(line), column(column) { } + + // init/create instance from const char substring + Offset Offset::init(const char* beg, const char* end) + { + Offset offset(0, 0); + if (end == 0) { + end += strlen(beg); + } + offset.add(beg, end); + return offset; + } + + // increase offset by given string (mostly called by lexer) + // increase line counter and count columns on the last line + Offset Offset::add(const char* begin, const char* end) + { + if (end == 0) return *this; + while (begin < end && *begin) { + if (*begin == '\n') { + ++ line; + // start new line + column = 0; + } else { + // do not count any utf8 continuation bytes + // https://stackoverflow.com/a/9356203/1550314 + // https://en.wikipedia.org/wiki/UTF-8#Description + unsigned char chr = *begin; + // skip over 10xxxxxx + // is 1st bit not set + if ((chr & 128) == 0) { + // regular ascii char + column += 1; + } + // is 2nd bit not set + else if ((chr & 64) == 0) { + // first utf8 byte + column += 1; + } + } + ++ begin; + } + return *this; + } + + // increase offset by given string (mostly called by lexer) + // increase line counter and count columns on the last line + Offset Offset::inc(const char* begin, const char* end) const + { + Offset offset(line, column); + offset.add(begin, end); + return offset; + } + + bool Offset::operator== (const Offset &pos) const + { + return line == pos.line && column == pos.column; + } + + bool Offset::operator!= (const Offset &pos) const + { + return line != pos.line || column != pos.column; + } + + void Offset::operator+= (const Offset &off) + { + *this = Offset(line + off.line, off.line > 0 ? off.column : column + off.column); + } + + Offset Offset::operator+ (const Offset &off) const + { + return Offset(line + off.line, off.line > 0 ? off.column : column + off.column); + } + + Offset Offset::operator- (const Offset &off) const + { + return Offset(line - off.line, off.line == line ? column - off.column : column); + } + + Position::Position(const size_t file) + : Offset(0, 0), file(file) { } + + Position::Position(const size_t file, const Offset& offset) + : Offset(offset), file(file) { } + + Position::Position(const size_t line, const size_t column) + : Offset(line, column), file(-1) { } + + Position::Position(const size_t file, const size_t line, const size_t column) + : Offset(line, column), file(file) { } + + + ParserState::ParserState(const char* path, const char* src, const size_t file) + : Position(file, 0, 0), path(path), src(src), offset(0, 0), token() { } + + ParserState::ParserState(const char* path, const char* src, const Position& position, Offset offset) + : Position(position), path(path), src(src), offset(offset), token() { } + + ParserState::ParserState(const char* path, const char* src, const Token& token, const Position& position, Offset offset) + : Position(position), path(path), src(src), offset(offset), token(token) { } + + Position Position::add(const char* begin, const char* end) + { + Offset::add(begin, end); + return *this; + } + + Position Position::inc(const char* begin, const char* end) const + { + Offset offset(line, column); + offset = offset.inc(begin, end); + return Position(file, offset); + } + + bool Position::operator== (const Position &pos) const + { + return file == pos.file && line == pos.line && column == pos.column; + } + + bool Position::operator!= (const Position &pos) const + { + return file == pos.file || line != pos.line || column != pos.column; + } + + void Position::operator+= (const Offset &off) + { + *this = Position(file, line + off.line, off.line > 0 ? off.column : column + off.column); + } + + const Position Position::operator+ (const Offset &off) const + { + return Position(file, line + off.line, off.line > 0 ? off.column : column + off.column); + } + + const Offset Position::operator- (const Offset &off) const + { + return Offset(line - off.line, off.line == line ? column - off.column : column); + } + + /* not used anymore - remove? + std::ostream& operator<<(std::ostream& strm, const Offset& off) + { + if (off.line == string::npos) strm << "-1:"; else strm << off.line << ":"; + if (off.column == string::npos) strm << "-1"; else strm << off.column; + return strm; + } */ + + /* not used anymore - remove? + std::ostream& operator<<(std::ostream& strm, const Position& pos) + { + if (pos.file != string::npos) strm << pos.file << ":"; + if (pos.line == string::npos) strm << "-1:"; else strm << pos.line << ":"; + if (pos.column == string::npos) strm << "-1"; else strm << pos.column; + return strm; + } */ + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/position.hpp b/mybulma/node_modules/node-sass/src/libsass/src/position.hpp new file mode 100644 index 0000000..923be3c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/position.hpp @@ -0,0 +1,124 @@ +#ifndef SASS_POSITION_H +#define SASS_POSITION_H + +#include +#include +// #include + +namespace Sass { + + + class Offset { + + public: // c-tor + Offset(const char chr); + Offset(const char* string); + Offset(const std::string& text); + Offset(const size_t line, const size_t column); + + // return new position, incremented by the given string + Offset add(const char* begin, const char* end); + Offset inc(const char* begin, const char* end) const; + + // init/create instance from const char substring + static Offset init(const char* beg, const char* end); + + public: // overload operators for position + void operator+= (const Offset &pos); + bool operator== (const Offset &pos) const; + bool operator!= (const Offset &pos) const; + Offset operator+ (const Offset &off) const; + Offset operator- (const Offset &off) const; + + public: // overload output stream operator + // friend std::ostream& operator<<(std::ostream& strm, const Offset& off); + + public: + Offset off() { return *this; } + + public: + size_t line; + size_t column; + + }; + + class Position : public Offset { + + public: // c-tor + Position(const size_t file); // line(0), column(0) + Position(const size_t file, const Offset& offset); + Position(const size_t line, const size_t column); // file(-1) + Position(const size_t file, const size_t line, const size_t column); + + public: // overload operators for position + void operator+= (const Offset &off); + bool operator== (const Position &pos) const; + bool operator!= (const Position &pos) const; + const Position operator+ (const Offset &off) const; + const Offset operator- (const Offset &off) const; + // return new position, incremented by the given string + Position add(const char* begin, const char* end); + Position inc(const char* begin, const char* end) const; + + public: // overload output stream operator + // friend std::ostream& operator<<(std::ostream& strm, const Position& pos); + + public: + size_t file; + + }; + + // Token type for representing lexed chunks of text + class Token { + public: + const char* prefix; + const char* begin; + const char* end; + + Token() + : prefix(0), begin(0), end(0) { } + Token(const char* b, const char* e) + : prefix(b), begin(b), end(e) { } + Token(const char* str) + : prefix(str), begin(str), end(str + strlen(str)) { } + Token(const char* p, const char* b, const char* e) + : prefix(p), begin(b), end(e) { } + + size_t length() const { return end - begin; } + std::string ws_before() const { return std::string(prefix, begin); } + const std::string to_string() const { return std::string(begin, end); } + std::string time_wspace() const { + std::string str(to_string()); + std::string whitespaces(" \t\f\v\n\r"); + return str.erase(str.find_last_not_of(whitespaces)+1); + } + + operator bool() { return begin && end && begin >= end; } + operator std::string() { return to_string(); } + + bool operator==(Token t) { return to_string() == t.to_string(); } + }; + + class ParserState : public Position { + + public: // c-tor + ParserState(const char* path, const char* src = 0, const size_t file = std::string::npos); + ParserState(const char* path, const char* src, const Position& position, Offset offset = Offset(0, 0)); + ParserState(const char* path, const char* src, const Token& token, const Position& position, Offset offset = Offset(0, 0)); + + public: // down casts + Offset off() { return *this; } + Position pos() { return *this; } + ParserState pstate() { return *this; } + + public: + const char* path; + const char* src; + Offset offset; + Token token; + + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/prelexer.cpp b/mybulma/node_modules/node-sass/src/libsass/src/prelexer.cpp new file mode 100644 index 0000000..a43b1ee --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/prelexer.cpp @@ -0,0 +1,1774 @@ +#include "sass.hpp" +#include +#include +#include +#include "util.hpp" +#include "position.hpp" +#include "prelexer.hpp" +#include "constants.hpp" + + +namespace Sass { + // using namespace Lexer; + using namespace Constants; + + namespace Prelexer { + + + /* + + def string_re(open, close) + /#{open}((?:\\.|\#(?!\{)|[^#{close}\\#])*)(#{close}|#\{)/m + end + end + + # A hash of regular expressions that are used for tokenizing strings. + # + # The key is a `[Symbol, Boolean]` pair. + # The symbol represents which style of quotation to use, + # while the boolean represents whether or not the string + # is following an interpolated segment. + STRING_REGULAR_EXPRESSIONS = { + :double => { + /#{open}((?:\\.|\#(?!\{)|[^#{close}\\#])*)(#{close}|#\{)/m + false => string_re('"', '"'), + true => string_re('', '"') + }, + :single => { + false => string_re("'", "'"), + true => string_re('', "'") + }, + :uri => { + false => /url\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + }, + # Defined in https://developer.mozilla.org/en/CSS/@-moz-document as a + # non-standard version of http://www.w3.org/TR/css3-conditional/ + :url_prefix => { + false => /url-prefix\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + }, + :domain => { + false => /domain\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + } + } + */ + + /* + /#{open} + ( + \\. + | + \# (?!\{) + | + [^#{close}\\#] + )* + (#{close}|#\{) + /m + false => string_re('"', '"'), + true => string_re('', '"') + */ + extern const char string_double_negates[] = "\"\\#"; + const char* re_string_double_close(const char* src) + { + return sequence < + // valid chars + zero_plus < + alternatives < + // escaped char + sequence < + exactly <'\\'>, + any_char + >, + // non interpolate hash + sequence < + exactly <'#'>, + negate < + exactly <'{'> + > + >, + // other valid chars + neg_class_char < + string_double_negates + > + > + >, + // quoted string closer + // or interpolate opening + alternatives < + exactly <'"'>, + lookahead < exactly< hash_lbrace > > + > + >(src); + } + + const char* re_string_double_open(const char* src) + { + return sequence < + // quoted string opener + exactly <'"'>, + // valid chars + zero_plus < + alternatives < + // escaped char + sequence < + exactly <'\\'>, + any_char + >, + // non interpolate hash + sequence < + exactly <'#'>, + negate < + exactly <'{'> + > + >, + // other valid chars + neg_class_char < + string_double_negates + > + > + >, + // quoted string closer + // or interpolate opening + alternatives < + exactly <'"'>, + lookahead < exactly< hash_lbrace > > + > + >(src); + } + + extern const char string_single_negates[] = "'\\#"; + const char* re_string_single_close(const char* src) + { + return sequence < + // valid chars + zero_plus < + alternatives < + // escaped char + sequence < + exactly <'\\'>, + any_char + >, + // non interpolate hash + sequence < + exactly <'#'>, + negate < + exactly <'{'> + > + >, + // other valid chars + neg_class_char < + string_single_negates + > + > + >, + // quoted string closer + // or interpolate opening + alternatives < + exactly <'\''>, + lookahead < exactly< hash_lbrace > > + > + >(src); + } + + const char* re_string_single_open(const char* src) + { + return sequence < + // quoted string opener + exactly <'\''>, + // valid chars + zero_plus < + alternatives < + // escaped char + sequence < + exactly <'\\'>, + any_char + >, + // non interpolate hash + sequence < + exactly <'#'>, + negate < + exactly <'{'> + > + >, + // other valid chars + neg_class_char < + string_single_negates + > + > + >, + // quoted string closer + // or interpolate opening + alternatives < + exactly <'\''>, + lookahead < exactly< hash_lbrace > > + > + >(src); + } + + /* + :uri => { + false => /url\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + }, + */ + const char* re_string_uri_close(const char* src) + { + return sequence < + non_greedy< + alternatives< + class_char< real_uri_chars >, + uri_character, + NONASCII, + ESCAPE + >, + alternatives< + sequence < optional < W >, exactly <')'> >, + lookahead < exactly< hash_lbrace > > + > + >, + optional < + sequence < optional < W >, exactly <')'> > + > + >(src); + } + + const char* re_string_uri_open(const char* src) + { + return sequence < + exactly <'u'>, + exactly <'r'>, + exactly <'l'>, + exactly <'('>, + W, + alternatives< + quoted_string, + non_greedy< + alternatives< + class_char< real_uri_chars >, + uri_character, + NONASCII, + ESCAPE + >, + alternatives< + sequence < W, exactly <')'> >, + exactly< hash_lbrace > + > + > + > + >(src); + } + + // Match a line comment (/.*?(?=\n|\r\n?|\Z)/. + const char* line_comment(const char* src) + { + return sequence< + exactly < + slash_slash + >, + non_greedy< + any_char, + end_of_line + > + >(src); + } + + // Match a block comment. + const char* block_comment(const char* src) + { + return sequence< + delimited_by< + slash_star, + star_slash, + false + > + >(src); + } + /* not use anymore - remove? + const char* block_comment_prefix(const char* src) { + return exactly(src); + } + // Match either comment. + const char* comment(const char* src) { + return line_comment(src); + } + */ + + // Match zero plus white-space or line_comments + const char* optional_css_whitespace(const char* src) { + return zero_plus< alternatives >(src); + } + const char* css_whitespace(const char* src) { + return one_plus< alternatives >(src); + } + // Match optional_css_whitepace plus block_comments + const char* optional_css_comments(const char* src) { + return zero_plus< alternatives >(src); + } + const char* css_comments(const char* src) { + return one_plus< alternatives >(src); + } + + // Match one backslash escaped char /\\./ + const char* escape_seq(const char* src) + { + return sequence< + exactly<'\\'>, + alternatives < + minmax_range< + 1, 3, xdigit + >, + any_char + >, + optional < + exactly <' '> + > + >(src); + } + + // Match identifier start + const char* identifier_alpha(const char* src) + { + return alternatives< + unicode_seq, + alpha, + unicode, + exactly<'-'>, + exactly<'_'>, + NONASCII, + ESCAPE, + escape_seq + >(src); + } + + // Match identifier after start + const char* identifier_alnum(const char* src) + { + return alternatives< + unicode_seq, + alnum, + unicode, + exactly<'-'>, + exactly<'_'>, + NONASCII, + ESCAPE, + escape_seq + >(src); + } + + // Match CSS identifiers. + const char* strict_identifier(const char* src) + { + return sequence< + one_plus < strict_identifier_alpha >, + zero_plus < strict_identifier_alnum > + // word_boundary not needed + >(src); + } + + // Match CSS identifiers. + const char* identifier(const char* src) + { + return sequence< + zero_plus< exactly<'-'> >, + one_plus < identifier_alpha >, + zero_plus < identifier_alnum > + // word_boundary not needed + >(src); + } + + const char* strict_identifier_alpha(const char* src) + { + return alternatives < + alpha, + unicode, + escape_seq, + exactly<'_'> + >(src); + } + + const char* strict_identifier_alnum(const char* src) + { + return alternatives < + alnum, + unicode, + escape_seq, + exactly<'_'> + >(src); + } + + // Match a single CSS unit + const char* one_unit(const char* src) + { + return sequence < + optional < exactly <'-'> >, + strict_identifier_alpha, + zero_plus < alternatives< + strict_identifier_alnum, + sequence < + one_plus < exactly<'-'> >, + strict_identifier_alpha + > + > > + >(src); + } + + // Match numerator/denominator CSS units + const char* multiple_units(const char* src) + { + return + sequence < + one_unit, + zero_plus < + sequence < + exactly <'*'>, + one_unit + > + > + >(src); + } + + // Match complex CSS unit identifiers + const char* unit_identifier(const char* src) + { + return sequence < + multiple_units, + optional < + sequence < + exactly <'/'>, + negate < sequence < + exactly < calc_fn_kwd >, + exactly < '(' > + > >, + multiple_units + > > + >(src); + } + + const char* identifier_alnums(const char* src) + { + return one_plus< identifier_alnum >(src); + } + + // Match number prefix ([\+\-]+) + const char* number_prefix(const char* src) { + return alternatives < + exactly < '+' >, + sequence < + exactly < '-' >, + optional_css_whitespace, + exactly< '-' > + > + >(src); + } + + // Match interpolant schemas + const char* identifier_schema(const char* src) { + + return sequence < + one_plus < + sequence < + zero_plus < + alternatives < + sequence < + optional < + exactly <'$'> + >, + identifier + >, + exactly <'-'> + > + >, + interpolant, + zero_plus < + alternatives < + digits, + sequence < + optional < + exactly <'$'> + >, + identifier + >, + quoted_string, + exactly<'-'> + > + > + > + >, + negate < + exactly<'%'> + > + > (src); + } + + // interpolants can be recursive/nested + const char* interpolant(const char* src) { + return recursive_scopes< exactly, exactly >(src); + } + + // $re_squote = /'(?:$re_itplnt|\\.|[^'])*'/ + const char* single_quoted_string(const char* src) { + // match a single quoted string, while skipping interpolants + return sequence < + exactly <'\''>, + zero_plus < + alternatives < + // skip escapes + sequence < + exactly < '\\' >, + re_linebreak + >, + escape_seq, + unicode_seq, + // skip interpolants + interpolant, + // skip non delimiters + any_char_but < '\'' > + > + >, + exactly <'\''> + >(src); + } + + // $re_dquote = /"(?:$re_itp|\\.|[^"])*"/ + const char* double_quoted_string(const char* src) { + // match a single quoted string, while skipping interpolants + return sequence < + exactly <'"'>, + zero_plus < + alternatives < + // skip escapes + sequence < + exactly < '\\' >, + re_linebreak + >, + escape_seq, + unicode_seq, + // skip interpolants + interpolant, + // skip non delimiters + any_char_but < '"' > + > + >, + exactly <'"'> + >(src); + } + + // $re_quoted = /(?:$re_squote|$re_dquote)/ + const char* quoted_string(const char* src) { + // match a quoted string, while skipping interpolants + return alternatives< + single_quoted_string, + double_quoted_string + >(src); + } + + const char* sass_value(const char* src) { + return alternatives < + quoted_string, + identifier, + percentage, + hex, + dimension, + number + >(src); + } + + // this is basically `one_plus < sass_value >` + // takes care to not parse invalid combinations + const char* value_combinations(const char* src) { + // `2px-2px` is invalid combo + bool was_number = false; + const char* pos; + while (src) { + if ((pos = alternatives < quoted_string, identifier, percentage, hex >(src))) { + was_number = false; + src = pos; + } else if (!was_number && !exactly<'+'>(src) && (pos = alternatives < dimension, number >(src))) { + was_number = true; + src = pos; + } else { + break; + } + } + return src; + } + + // must be at least one interpolant + // can be surrounded by sass values + // make sure to never parse (dim)(dim) + // since this wrongly consumes `2px-1px` + // `2px1px` is valid number (unit `px1px`) + const char* value_schema(const char* src) + { + return sequence < + one_plus < + sequence < + optional < value_combinations >, + interpolant, + optional < value_combinations > + > + > + >(src); + } + + // Match CSS '@' keywords. + const char* at_keyword(const char* src) { + return sequence, identifier>(src); + } + + /* + tok(%r{ + ( + \\. + | + (?!url\() + [^"'/\#!;\{\}] # " + | + /(?![\*\/]) + | + \#(?!\{) + | + !(?![a-z]) # TODO: never consume "!" when issue 1126 is fixed. + )+ + }xi) || tok(COMMENT) || tok(SINGLE_LINE_COMMENT) || interp_string || interp_uri || + interpolation(:warn_for_color) + */ + const char* re_almost_any_value_token(const char* src) { + + return alternatives < + one_plus < + alternatives < + sequence < + exactly <'\\'>, + any_char + >, + sequence < + negate < + uri_prefix + >, + neg_class_char < + almost_any_value_class + > + >, + sequence < + exactly <'/'>, + negate < + alternatives < + exactly <'/'>, + exactly <'*'> + > + > + >, + sequence < + exactly <'\\'>, + exactly <'#'>, + negate < + exactly <'{'> + > + >, + sequence < + exactly <'!'>, + negate < + alpha + > + > + > + >, + block_comment, + line_comment, + interpolant, + space, + sequence < + exactly<'u'>, + exactly<'r'>, + exactly<'l'>, + exactly<'('>, + zero_plus < + alternatives < + class_char< real_uri_chars >, + uri_character, + NONASCII, + ESCAPE + > + >, + // false => /url\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + // true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + exactly<')'> + > + >(src); + } + + /* + DIRECTIVES = Set[:mixin, :include, :function, :return, :debug, :warn, :for, + :each, :while, :if, :else, :extend, :import, :media, :charset, :content, + :_moz_document, :at_root, :error] + */ + const char* re_special_directive(const char* src) { + return alternatives < + word < mixin_kwd >, + word < include_kwd >, + word < function_kwd >, + word < return_kwd >, + word < debug_kwd >, + word < warn_kwd >, + word < for_kwd >, + word < each_kwd >, + word < while_kwd >, + word < if_kwd >, + word < else_kwd >, + word < extend_kwd >, + word < import_kwd >, + word < media_kwd >, + word < charset_kwd >, + word < content_kwd >, + // exactly < moz_document_kwd >, + word < at_root_kwd >, + word < error_kwd > + >(src); + } + + const char* re_prefixed_directive(const char* src) { + return sequence < + optional < + sequence < + exactly <'-'>, + one_plus < alnum >, + exactly <'-'> + > + >, + exactly < supports_kwd > + >(src); + } + + const char* re_reference_combinator(const char* src) { + return sequence < + optional < + sequence < + zero_plus < + exactly <'-'> + >, + identifier, + exactly <'|'> + > + >, + zero_plus < + exactly <'-'> + >, + identifier + >(src); + } + + const char* static_reference_combinator(const char* src) { + return sequence < + exactly <'/'>, + re_reference_combinator, + exactly <'/'> + >(src); + } + + const char* schema_reference_combinator(const char* src) { + return sequence < + exactly <'/'>, + optional < + sequence < + css_ip_identifier, + exactly <'|'> + > + >, + css_ip_identifier, + exactly <'/'> + > (src); + } + + const char* kwd_import(const char* src) { + return word(src); + } + + const char* kwd_at_root(const char* src) { + return word(src); + } + + const char* kwd_with_directive(const char* src) { + return word(src); + } + + const char* kwd_without_directive(const char* src) { + return word(src); + } + + const char* kwd_media(const char* src) { + return word(src); + } + + const char* kwd_supports_directive(const char* src) { + return word(src); + } + + const char* kwd_mixin(const char* src) { + return word(src); + } + + const char* kwd_function(const char* src) { + return word(src); + } + + const char* kwd_return_directive(const char* src) { + return word(src); + } + + const char* kwd_include_directive(const char* src) { + return word(src); + } + + const char* kwd_content_directive(const char* src) { + return word(src); + } + + const char* kwd_charset_directive(const char* src) { + return word(src); + } + + const char* kwd_extend(const char* src) { + return word(src); + } + + + const char* kwd_if_directive(const char* src) { + return word(src); + } + + const char* kwd_else_directive(const char* src) { + return word(src); + } + const char* elseif_directive(const char* src) { + return sequence< exactly< else_kwd >, + optional_css_comments, + word< if_after_else_kwd > >(src); + } + + const char* kwd_for_directive(const char* src) { + return word(src); + } + + const char* kwd_from(const char* src) { + return word(src); + } + + const char* kwd_to(const char* src) { + return word(src); + } + + const char* kwd_through(const char* src) { + return word(src); + } + + const char* kwd_each_directive(const char* src) { + return word(src); + } + + const char* kwd_in(const char* src) { + return word(src); + } + + const char* kwd_while_directive(const char* src) { + return word(src); + } + + const char* name(const char* src) { + return one_plus< alternatives< alnum, + exactly<'-'>, + exactly<'_'>, + escape_seq > >(src); + } + + const char* kwd_warn(const char* src) { + return word(src); + } + + const char* kwd_err(const char* src) { + return word(src); + } + + const char* kwd_dbg(const char* src) { + return word(src); + } + + /* not used anymore - remove? + const char* directive(const char* src) { + return sequence< exactly<'@'>, identifier >(src); + } */ + + const char* kwd_null(const char* src) { + return word(src); + } + + const char* css_identifier(const char* src) { + return sequence < + zero_plus < + exactly <'-'> + >, + identifier + >(src); + } + + const char* css_ip_identifier(const char* src) { + return sequence < + zero_plus < + exactly <'-'> + >, + alternatives < + identifier, + interpolant + > + >(src); + } + + // Match CSS type selectors + const char* namespace_prefix(const char* src) { + return sequence < + optional < + alternatives < + exactly <'*'>, + css_identifier + > + >, + exactly <'|'>, + negate < + exactly <'='> + > + >(src); + } + + // Match CSS type selectors + const char* namespace_schema(const char* src) { + return sequence < + optional < + alternatives < + exactly <'*'>, + css_ip_identifier + > + >, + exactly<'|'>, + negate < + exactly <'='> + > + >(src); + } + + const char* hyphens_and_identifier(const char* src) { + return sequence< zero_plus< exactly< '-' > >, identifier_alnums >(src); + } + const char* hyphens_and_name(const char* src) { + return sequence< zero_plus< exactly< '-' > >, name >(src); + } + const char* universal(const char* src) { + return sequence< optional, exactly<'*'> >(src); + } + // Match CSS id names. + const char* id_name(const char* src) { + return sequence, identifier_alnums >(src); + } + // Match CSS class names. + const char* class_name(const char* src) { + return sequence, identifier >(src); + } + // Attribute name in an attribute selector. + const char* attribute_name(const char* src) { + return alternatives< sequence< optional, identifier>, + identifier >(src); + } + // match placeholder selectors + const char* placeholder(const char* src) { + return sequence, identifier_alnums >(src); + } + // Match CSS numeric constants. + + const char* op(const char* src) { + return class_char(src); + } + const char* sign(const char* src) { + return class_char(src); + } + const char* unsigned_number(const char* src) { + return alternatives, + exactly<'.'>, + one_plus >, + digits>(src); + } + const char* number(const char* src) { + return sequence< + optional, + unsigned_number, + optional< + sequence< + exactly<'e'>, + optional, + unsigned_number + > + > + >(src); + } + const char* coefficient(const char* src) { + return alternatives< sequence< optional, digits >, + sign >(src); + } + const char* binomial(const char* src) { + return sequence < + optional < sign >, + optional < digits >, + exactly <'n'>, + zero_plus < sequence < + optional_css_whitespace, sign, + optional_css_whitespace, digits + > > + >(src); + } + const char* percentage(const char* src) { + return sequence< number, exactly<'%'> >(src); + } + const char* ampersand(const char* src) { + return exactly<'&'>(src); + } + + /* not used anymore - remove? + const char* em(const char* src) { + return sequence< number, exactly >(src); + } */ + const char* dimension(const char* src) { + return sequence(src); + } + const char* hex(const char* src) { + const char* p = sequence< exactly<'#'>, one_plus >(src); + ptrdiff_t len = p - src; + return (len != 4 && len != 7) ? 0 : p; + } + const char* hexa(const char* src) { + const char* p = sequence< exactly<'#'>, one_plus >(src); + ptrdiff_t len = p - src; + return (len != 5 && len != 9) ? 0 : p; + } + const char* hex0(const char* src) { + const char* p = sequence< exactly<'0'>, exactly<'x'>, one_plus >(src); + ptrdiff_t len = p - src; + return (len != 5 && len != 8) ? 0 : p; + } + + /* no longer used - remove? + const char* rgb_prefix(const char* src) { + return word(src); + }*/ + // Match CSS uri specifiers. + + const char* uri_prefix(const char* src) { + return sequence < + exactly < + url_kwd + >, + zero_plus < + sequence < + exactly <'-'>, + one_plus < + alpha + > + > + >, + exactly <'('> + >(src); + } + + // TODO: rename the following two functions + /* no longer used - remove? + const char* uri(const char* src) { + return sequence< exactly, + optional, + quoted_string, + optional, + exactly<')'> >(src); + }*/ + /* no longer used - remove? + const char* url_value(const char* src) { + return sequence< optional< sequence< identifier, exactly<':'> > >, // optional protocol + one_plus< sequence< zero_plus< exactly<'/'> >, filename > >, // one or more folders and/or trailing filename + optional< exactly<'/'> > >(src); + }*/ + /* no longer used - remove? + const char* url_schema(const char* src) { + return sequence< optional< sequence< identifier, exactly<':'> > >, // optional protocol + filename_schema >(src); // optional trailing slash + }*/ + // Match CSS "!important" keyword. + const char* kwd_important(const char* src) { + return sequence< exactly<'!'>, + optional_css_whitespace, + word >(src); + } + // Match CSS "!optional" keyword. + const char* kwd_optional(const char* src) { + return sequence< exactly<'!'>, + optional_css_whitespace, + word >(src); + } + // Match Sass "!default" keyword. + const char* default_flag(const char* src) { + return sequence< exactly<'!'>, + optional_css_whitespace, + word >(src); + } + // Match Sass "!global" keyword. + const char* global_flag(const char* src) { + return sequence< exactly<'!'>, + optional_css_whitespace, + word >(src); + } + // Match CSS pseudo-class/element prefixes. + const char* pseudo_prefix(const char* src) { + return sequence< exactly<':'>, optional< exactly<':'> > >(src); + } + // Match CSS function call openers. + const char* functional_schema(const char* src) { + return sequence < + one_plus < + sequence < + zero_plus < + alternatives < + identifier, + exactly <'-'> + > + >, + one_plus < + sequence < + interpolant, + alternatives < + digits, + identifier, + exactly<'+'>, + exactly<'-'> + > + > + > + > + >, + negate < + exactly <'%'> + >, + lookahead < + exactly <'('> + > + > (src); + } + + const char* re_nothing(const char* src) { + return src; + } + + const char* re_functional(const char* src) { + return sequence< identifier, optional < block_comment >, exactly<'('> >(src); + } + const char* re_pseudo_selector(const char* src) { + return sequence< identifier, optional < block_comment >, exactly<'('> >(src); + } + // Match the CSS negation pseudo-class. + const char* pseudo_not(const char* src) { + return word< pseudo_not_fn_kwd >(src); + } + // Match CSS 'odd' and 'even' keywords for functional pseudo-classes. + const char* even(const char* src) { + return word(src); + } + const char* odd(const char* src) { + return word(src); + } + // Match CSS attribute-matching operators. + const char* exact_match(const char* src) { return exactly<'='>(src); } + const char* class_match(const char* src) { return exactly(src); } + const char* dash_match(const char* src) { return exactly(src); } + const char* prefix_match(const char* src) { return exactly(src); } + const char* suffix_match(const char* src) { return exactly(src); } + const char* substring_match(const char* src) { return exactly(src); } + // Match CSS combinators. + /* not used anymore - remove? + const char* adjacent_to(const char* src) { + return sequence< optional_spaces, exactly<'+'> >(src); + } + const char* precedes(const char* src) { + return sequence< optional_spaces, exactly<'~'> >(src); + } + const char* parent_of(const char* src) { + return sequence< optional_spaces, exactly<'>'> >(src); + } + const char* ancestor_of(const char* src) { + return sequence< spaces, negate< exactly<'{'> > >(src); + }*/ + + // Match SCSS variable names. + const char* variable(const char* src) { + return sequence, identifier>(src); + } + + // parse `calc`, `-a-calc` and `--b-c-calc` + // but do not parse `foocalc` or `foo-calc` + const char* calc_fn_call(const char* src) { + return sequence < + optional < sequence < + hyphens, + one_plus < sequence < + strict_identifier, + hyphens + > > + > >, + exactly < calc_fn_kwd >, + word_boundary + >(src); + } + + // Match Sass boolean keywords. + const char* kwd_true(const char* src) { + return word(src); + } + const char* kwd_false(const char* src) { + return word(src); + } + const char* kwd_only(const char* src) { + return keyword < only_kwd >(src); + } + const char* kwd_and(const char* src) { + return keyword < and_kwd >(src); + } + const char* kwd_or(const char* src) { + return keyword < or_kwd >(src); + } + const char* kwd_not(const char* src) { + return keyword < not_kwd >(src); + } + const char* kwd_eq(const char* src) { + return exactly(src); + } + const char* kwd_neq(const char* src) { + return exactly(src); + } + const char* kwd_gt(const char* src) { + return exactly(src); + } + const char* kwd_gte(const char* src) { + return exactly(src); + } + const char* kwd_lt(const char* src) { + return exactly(src); + } + const char* kwd_lte(const char* src) { + return exactly(src); + } + + // match specific IE syntax + const char* ie_progid(const char* src) { + return sequence < + word, + exactly<':'>, + alternatives< identifier_schema, identifier >, + zero_plus< sequence< + exactly<'.'>, + alternatives< identifier_schema, identifier > + > >, + zero_plus < sequence< + exactly<'('>, + optional_css_whitespace, + optional < sequence< + alternatives< variable, identifier_schema, identifier >, + optional_css_whitespace, + exactly<'='>, + optional_css_whitespace, + alternatives< variable, identifier_schema, identifier, quoted_string, number, hex, hexa >, + zero_plus< sequence< + optional_css_whitespace, + exactly<','>, + optional_css_whitespace, + sequence< + alternatives< variable, identifier_schema, identifier >, + optional_css_whitespace, + exactly<'='>, + optional_css_whitespace, + alternatives< variable, identifier_schema, identifier, quoted_string, number, hex, hexa > + > + > > + > >, + optional_css_whitespace, + exactly<')'> + > > + >(src); + } + const char* ie_expression(const char* src) { + return sequence < word, exactly<'('>, skip_over_scopes< exactly<'('>, exactly<')'> > >(src); + } + const char* ie_property(const char* src) { + return alternatives < ie_expression, ie_progid >(src); + } + + // const char* ie_args(const char* src) { + // return sequence< alternatives< ie_keyword_arg, value_schema, quoted_string, interpolant, number, identifier, delimited_by< '(', ')', true> >, + // zero_plus< sequence< optional_css_whitespace, exactly<','>, optional_css_whitespace, alternatives< ie_keyword_arg, value_schema, quoted_string, interpolant, number, identifier, delimited_by<'(', ')', true> > > > >(src); + // } + + const char* ie_keyword_arg_property(const char* src) { + return alternatives < + variable, + identifier_schema, + identifier + >(src); + } + const char* ie_keyword_arg_value(const char* src) { + return alternatives < + variable, + identifier_schema, + identifier, + quoted_string, + number, + hex, + hexa, + sequence < + exactly < '(' >, + skip_over_scopes < + exactly < '(' >, + exactly < ')' > + > + > + >(src); + } + + const char* ie_keyword_arg(const char* src) { + return sequence < + ie_keyword_arg_property, + optional_css_whitespace, + exactly<'='>, + optional_css_whitespace, + ie_keyword_arg_value + >(src); + } + + // Path matching functions. + /* not used anymore - remove? + const char* folder(const char* src) { + return sequence< zero_plus< any_char_except<'/'> >, + exactly<'/'> >(src); + } + const char* folders(const char* src) { + return zero_plus< folder >(src); + }*/ + /* not used anymore - remove? + const char* chunk(const char* src) { + char inside_str = 0; + const char* p = src; + size_t depth = 0; + while (true) { + if (!*p) { + return 0; + } + else if (!inside_str && (*p == '"' || *p == '\'')) { + inside_str = *p; + } + else if (*p == inside_str && *(p-1) != '\\') { + inside_str = 0; + } + else if (*p == '(' && !inside_str) { + ++depth; + } + else if (*p == ')' && !inside_str) { + if (depth == 0) return p; + else --depth; + } + ++p; + } + // unreachable + return 0; + } + */ + + // follow the CSS spec more closely and see if this helps us scan URLs correctly + /* not used anymore - remove? + const char* NL(const char* src) { + return alternatives< exactly<'\n'>, + sequence< exactly<'\r'>, exactly<'\n'> >, + exactly<'\r'>, + exactly<'\f'> >(src); + }*/ + + const char* H(const char* src) { + return std::isxdigit(*src) ? src+1 : 0; + } + + const char* W(const char* src) { + return zero_plus< alternatives< + space, + exactly< '\t' >, + exactly< '\r' >, + exactly< '\n' >, + exactly< '\f' > + > >(src); + } + + const char* UUNICODE(const char* src) { + return sequence< exactly<'\\'>, + between, + optional< W > + >(src); + } + + const char* NONASCII(const char* src) { + return nonascii(src); + } + + const char* ESCAPE(const char* src) { + return alternatives< + UUNICODE, + sequence< + exactly<'\\'>, + alternatives< + NONASCII, + escapable_character + > + > + >(src); + } + + const char* list_terminator(const char* src) { + return alternatives < + exactly<';'>, + exactly<'}'>, + exactly<'{'>, + exactly<')'>, + exactly<']'>, + exactly<':'>, + end_of_file, + exactly, + default_flag, + global_flag + >(src); + }; + + const char* space_list_terminator(const char* src) { + return alternatives < + exactly<','>, + list_terminator + >(src); + }; + + + // const char* real_uri_prefix(const char* src) { + // return alternatives< + // exactly< url_kwd >, + // exactly< url_prefix_kwd > + // >(src); + // } + + const char* real_uri(const char* src) { + return sequence< + exactly< url_kwd >, + exactly< '(' >, + W, + real_uri_value, + exactly< ')' > + >(src); + } + + const char* real_uri_suffix(const char* src) { + return sequence< W, exactly< ')' > >(src); + } + + const char* real_uri_value(const char* src) { + return + sequence< + non_greedy< + alternatives< + class_char< real_uri_chars >, + uri_character, + NONASCII, + ESCAPE + >, + alternatives< + real_uri_suffix, + exactly< hash_lbrace > + > + > + > + (src); + } + + const char* static_string(const char* src) { + const char* pos = src; + const char * s = quoted_string(pos); + Token t(pos, s); + const unsigned int p = count_interval< interpolant >(t.begin, t.end); + return (p == 0) ? t.end : 0; + } + + const char* unicode_seq(const char* src) { + return sequence < + alternatives < + exactly< 'U' >, + exactly< 'u' > + >, + exactly< '+' >, + padded_token < + 6, xdigit, + exactly < '?' > + > + >(src); + } + + const char* static_component(const char* src) { + return alternatives< identifier, + static_string, + percentage, + hex, + hexa, + exactly<'|'>, + // exactly<'+'>, + sequence < number, unit_identifier >, + number, + sequence< exactly<'!'>, word > + >(src); + } + + const char* static_property(const char* src) { + return + sequence < + zero_plus< + sequence < + optional_css_comments, + alternatives < + exactly<','>, + exactly<'('>, + exactly<')'>, + kwd_optional, + quoted_string, + interpolant, + identifier, + percentage, + dimension, + variable, + alnum, + sequence < + exactly <'\\'>, + any_char + > + > + > + >, + lookahead < + sequence < + optional_css_comments, + alternatives < + exactly <';'>, + exactly <'}'>, + end_of_file + > + > + > + >(src); + } + + const char* static_value(const char* src) { + return sequence< sequence< + static_component, + zero_plus< identifier > + >, + zero_plus < sequence< + alternatives< + sequence< optional_spaces, alternatives< + exactly < '/' >, + exactly < ',' >, + exactly < ' ' > + >, optional_spaces >, + spaces + >, + static_component + > >, + zero_plus < spaces >, + alternatives< exactly<';'>, exactly<'}'> > + >(src); + } + + extern const char css_variable_url_negates[] = "()[]{}\"'#/"; + const char* css_variable_value(const char* src) { + return sequence< + alternatives< + sequence< + negate< exactly< url_fn_kwd > >, + one_plus< neg_class_char< css_variable_url_negates > > + >, + sequence< exactly<'#'>, negate< exactly<'{'> > >, + sequence< exactly<'/'>, negate< exactly<'*'> > >, + static_string, + real_uri, + block_comment + > + >(src); + } + + extern const char css_variable_url_top_level_negates[] = "()[]{}\"'#/;"; + const char* css_variable_top_level_value(const char* src) { + return sequence< + alternatives< + sequence< + negate< exactly< url_fn_kwd > >, + one_plus< neg_class_char< css_variable_url_top_level_negates > > + >, + sequence< exactly<'#'>, negate< exactly<'{'> > >, + sequence< exactly<'/'>, negate< exactly<'*'> > >, + static_string, + real_uri, + block_comment + > + >(src); + } + + const char* parenthese_scope(const char* src) { + return sequence < + exactly < '(' >, + skip_over_scopes < + exactly < '(' >, + exactly < ')' > + > + >(src); + } + + const char* re_selector_list(const char* src) { + return alternatives < + // partial bem selector + sequence < + ampersand, + one_plus < + exactly < '-' > + >, + word_boundary, + optional_spaces + >, + // main selector matching + one_plus < + alternatives < + // consume whitespace and comments + spaces, block_comment, line_comment, + // match `/deep/` selector (pass-trough) + // there is no functionality for it yet + schema_reference_combinator, + // match selector ops /[*&%,\[\]]/ + class_char < selector_lookahead_ops >, + // match selector combinators /[>+~]/ + class_char < selector_combinator_ops >, + // match pseudo selectors + sequence < + exactly <'('>, + optional_spaces, + optional , + optional_spaces, + exactly <')'> + >, + // match attribute compare operators + alternatives < + exact_match, class_match, dash_match, + prefix_match, suffix_match, substring_match + >, + // main selector match + sequence < + // allow namespace prefix + optional < namespace_schema >, + // modifiers prefixes + alternatives < + sequence < + exactly <'#'>, + // not for interpolation + negate < exactly <'{'> > + >, + // class match + exactly <'.'>, + // single or double colon + sequence < + optional < pseudo_prefix >, + // fix libsass issue 2376 + negate < uri_prefix > + > + >, + // accept hypens in token + one_plus < sequence < + // can start with hyphens + zero_plus < + sequence < + exactly <'-'>, + optional_spaces + > + >, + // now the main token + alternatives < + kwd_optional, + exactly <'*'>, + quoted_string, + interpolant, + identifier, + variable, + percentage, + binomial, + dimension, + alnum + > + > >, + // can also end with hyphens + zero_plus < exactly<'-'> > + > + > + > + >(src); + } + + const char* type_selector(const char* src) { + return sequence< optional, identifier>(src); + } + const char* re_type_selector(const char* src) { + return alternatives< type_selector, universal, dimension, percentage, number, identifier_alnums >(src); + } + const char* re_static_expression(const char* src) { + return sequence< number, optional_spaces, exactly<'/'>, optional_spaces, number >(src); + } + + // lexer special_fn: these functions cannot be overloaded + // (/((-[\w-]+-)?(calc|element)|expression|progid:[a-z\.]*)\(/i) + const char* re_special_fun(const char* src) { + + // match this first as we test prefix hyphens + if (const char* calc = calc_fn_call(src)) { + return calc; + } + + return sequence < + optional < + sequence < + exactly <'-'>, + one_plus < + alternatives < + alpha, + exactly <'+'>, + exactly <'-'> + > + > + > + >, + alternatives < + word < expression_kwd >, + sequence < + sequence < + exactly < progid_kwd >, + exactly <':'> + >, + zero_plus < + alternatives < + char_range <'a', 'z'>, + exactly <'.'> + > + > + > + > + >(src); + } + + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/prelexer.hpp b/mybulma/node_modules/node-sass/src/libsass/src/prelexer.hpp new file mode 100644 index 0000000..2d8f831 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/prelexer.hpp @@ -0,0 +1,484 @@ +#ifndef SASS_PRELEXER_H +#define SASS_PRELEXER_H + +#include +#include "lexer.hpp" + +namespace Sass { + // using namespace Lexer; + namespace Prelexer { + + //#################################### + // KEYWORD "REGEX" MATCHERS + //#################################### + + // Match Sass boolean keywords. + const char* kwd_true(const char* src); + const char* kwd_false(const char* src); + const char* kwd_only(const char* src); + const char* kwd_and(const char* src); + const char* kwd_or(const char* src); + const char* kwd_not(const char* src); + const char* kwd_eq(const char* src); + const char* kwd_neq(const char* src); + const char* kwd_gt(const char* src); + const char* kwd_gte(const char* src); + const char* kwd_lt(const char* src); + const char* kwd_lte(const char* src); + + // Match standard control chars + const char* kwd_at(const char* src); + const char* kwd_dot(const char* src); + const char* kwd_comma(const char* src); + const char* kwd_colon(const char* src); + const char* kwd_slash(const char* src); + const char* kwd_star(const char* src); + const char* kwd_plus(const char* src); + const char* kwd_minus(const char* src); + + //#################################### + // SPECIAL "REGEX" CONSTRUCTS + //#################################### + + // Match a sequence of characters delimited by the supplied chars. + template + const char* delimited_by(const char* src) { + src = exactly(src); + if (!src) return 0; + const char* stop; + while (true) { + if (!*src) return 0; + stop = exactly(src); + if (stop && (!esc || *(src - 1) != '\\')) return stop; + src = stop ? stop : src + 1; + } + } + + // skip to delimiter (mx) inside given range + // this will savely skip over all quoted strings + // recursive skip stuff delimited by start/stop + // first start/opener must be consumed already! + template + const char* skip_over_scopes(const char* src, const char* end) { + + size_t level = 0; + bool in_squote = false; + bool in_dquote = false; + // bool in_braces = false; + + while (*src) { + + // check for abort condition + if (end && src >= end) break; + + // has escaped sequence? + if (*src == '\\') { + ++ src; // skip this (and next) + } + else if (*src == '"') { + in_dquote = ! in_dquote; + } + else if (*src == '\'') { + in_squote = ! in_squote; + } + else if (in_dquote || in_squote) { + // take everything literally + } + + // find another opener inside? + else if (const char* pos = start(src)) { + ++ level; // increase counter + src = pos - 1; // advance position + } + + // look for the closer (maybe final, maybe not) + else if (const char* final = stop(src)) { + // only close one level? + if (level > 0) -- level; + // return position at end of stop + // delimiter may be multiple chars + else return final; + // advance position + src = final - 1; + } + + // next + ++ src; + } + + return 0; + } + + // skip to a skip delimited by parentheses + // uses smart `skip_over_scopes` internally + const char* parenthese_scope(const char* src); + + // skip to delimiter (mx) inside given range + // this will savely skip over all quoted strings + // recursive skip stuff delimited by start/stop + // first start/opener must be consumed already! + template + const char* skip_over_scopes(const char* src) { + return skip_over_scopes(src, 0); + } + + // Match a sequence of characters delimited by the supplied chars. + template + const char* recursive_scopes(const char* src) { + // parse opener + src = start(src); + // abort if not found + if (!src) return 0; + // parse the rest until final closer + return skip_over_scopes(src); + } + + // Match a sequence of characters delimited by the supplied strings. + template + const char* delimited_by(const char* src) { + src = exactly(src); + if (!src) return 0; + const char* stop; + while (true) { + if (!*src) return 0; + stop = exactly(src); + if (stop && (!esc || *(src - 1) != '\\')) return stop; + src = stop ? stop : src + 1; + } + } + + // Tries to match a certain number of times (between the supplied interval). + template + const char* between(const char* src) { + for (size_t i = 0; i < lo; ++i) { + src = mx(src); + if (!src) return 0; + } + for (size_t i = lo; i <= hi; ++i) { + const char* new_src = mx(src); + if (!new_src) return src; + src = new_src; + } + return src; + } + + // equivalent of STRING_REGULAR_EXPRESSIONS + const char* re_string_double_open(const char* src); + const char* re_string_double_close(const char* src); + const char* re_string_single_open(const char* src); + const char* re_string_single_close(const char* src); + const char* re_string_uri_open(const char* src); + const char* re_string_uri_close(const char* src); + + // Match a line comment. + const char* line_comment(const char* src); + + // Match a block comment. + const char* block_comment(const char* src); + // Match either. + const char* comment(const char* src); + // Match double- and single-quoted strings. + const char* double_quoted_string(const char* src); + const char* single_quoted_string(const char* src); + const char* quoted_string(const char* src); + // Match interpolants. + const char* interpolant(const char* src); + // Match number prefix ([\+\-]+) + const char* number_prefix(const char* src); + + // Match zero plus white-space or line_comments + const char* optional_css_whitespace(const char* src); + const char* css_whitespace(const char* src); + // Match optional_css_whitepace plus block_comments + const char* optional_css_comments(const char* src); + const char* css_comments(const char* src); + + // Match one backslash escaped char + const char* escape_seq(const char* src); + + // Match CSS css variables. + const char* custom_property_name(const char* src); + // Match a CSS identifier. + const char* identifier(const char* src); + const char* identifier_alpha(const char* src); + const char* identifier_alnum(const char* src); + const char* strict_identifier(const char* src); + const char* strict_identifier_alpha(const char* src); + const char* strict_identifier_alnum(const char* src); + // Match a CSS unit identifier. + const char* one_unit(const char* src); + const char* multiple_units(const char* src); + const char* unit_identifier(const char* src); + // const char* strict_identifier_alnums(const char* src); + // Match reference selector. + const char* re_reference_combinator(const char* src); + const char* static_reference_combinator(const char* src); + const char* schema_reference_combinator(const char* src); + + // Match interpolant schemas + const char* identifier_schema(const char* src); + const char* value_schema(const char* src); + const char* sass_value(const char* src); + // const char* filename(const char* src); + // const char* filename_schema(const char* src); + // const char* url_schema(const char* src); + // const char* url_value(const char* src); + const char* vendor_prefix(const char* src); + + const char* re_special_directive(const char* src); + const char* re_prefixed_directive(const char* src); + const char* re_almost_any_value_token(const char* src); + + // Match CSS '@' keywords. + const char* at_keyword(const char* src); + const char* kwd_import(const char* src); + const char* kwd_at_root(const char* src); + const char* kwd_with_directive(const char* src); + const char* kwd_without_directive(const char* src); + const char* kwd_media(const char* src); + const char* kwd_supports_directive(const char* src); + // const char* keyframes(const char* src); + // const char* keyf(const char* src); + const char* kwd_mixin(const char* src); + const char* kwd_function(const char* src); + const char* kwd_return_directive(const char* src); + const char* kwd_include_directive(const char* src); + const char* kwd_content_directive(const char* src); + const char* kwd_charset_directive(const char* src); + const char* kwd_extend(const char* src); + + const char* unicode_seq(const char* src); + + const char* kwd_if_directive(const char* src); + const char* kwd_else_directive(const char* src); + const char* elseif_directive(const char* src); + + const char* kwd_for_directive(const char* src); + const char* kwd_from(const char* src); + const char* kwd_to(const char* src); + const char* kwd_through(const char* src); + + const char* kwd_each_directive(const char* src); + const char* kwd_in(const char* src); + + const char* kwd_while_directive(const char* src); + + const char* re_nothing(const char* src); + + const char* re_special_fun(const char* src); + + const char* kwd_warn(const char* src); + const char* kwd_err(const char* src); + const char* kwd_dbg(const char* src); + + const char* kwd_null(const char* src); + + const char* re_selector_list(const char* src); + const char* re_type_selector(const char* src); + const char* re_static_expression(const char* src); + + // identifier that can start with hyphens + const char* css_identifier(const char* src); + const char* css_ip_identifier(const char* src); + + // Match CSS type selectors + const char* namespace_schema(const char* src); + const char* namespace_prefix(const char* src); + const char* type_selector(const char* src); + const char* hyphens_and_identifier(const char* src); + const char* hyphens_and_name(const char* src); + const char* universal(const char* src); + // Match CSS id names. + const char* id_name(const char* src); + // Match CSS class names. + const char* class_name(const char* src); + // Attribute name in an attribute selector + const char* attribute_name(const char* src); + // Match placeholder selectors. + const char* placeholder(const char* src); + // Match CSS numeric constants. + const char* op(const char* src); + const char* sign(const char* src); + const char* unsigned_number(const char* src); + const char* number(const char* src); + const char* coefficient(const char* src); + const char* binomial(const char* src); + const char* percentage(const char* src); + const char* ampersand(const char* src); + const char* dimension(const char* src); + const char* hex(const char* src); + const char* hexa(const char* src); + const char* hex0(const char* src); + // const char* rgb_prefix(const char* src); + // Match CSS uri specifiers. + const char* uri_prefix(const char* src); + // Match CSS "!important" keyword. + const char* kwd_important(const char* src); + // Match CSS "!optional" keyword. + const char* kwd_optional(const char* src); + // Match Sass "!default" keyword. + const char* default_flag(const char* src); + const char* global_flag(const char* src); + // Match CSS pseudo-class/element prefixes + const char* pseudo_prefix(const char* src); + // Match CSS function call openers. + const char* re_functional(const char* src); + const char* re_pseudo_selector(const char* src); + const char* functional_schema(const char* src); + const char* pseudo_not(const char* src); + // Match CSS 'odd' and 'even' keywords for functional pseudo-classes. + const char* even(const char* src); + const char* odd(const char* src); + // Match CSS attribute-matching operators. + const char* exact_match(const char* src); + const char* class_match(const char* src); + const char* dash_match(const char* src); + const char* prefix_match(const char* src); + const char* suffix_match(const char* src); + const char* substring_match(const char* src); + // Match CSS combinators. + // const char* adjacent_to(const char* src); + // const char* precedes(const char* src); + // const char* parent_of(const char* src); + // const char* ancestor_of(const char* src); + + // Match SCSS variable names. + const char* variable(const char* src); + const char* calc_fn_call(const char* src); + + // IE stuff + const char* ie_progid(const char* src); + const char* ie_expression(const char* src); + const char* ie_property(const char* src); + const char* ie_keyword_arg(const char* src); + const char* ie_keyword_arg_value(const char* src); + const char* ie_keyword_arg_property(const char* src); + + // characters that terminate parsing of a list + const char* list_terminator(const char* src); + const char* space_list_terminator(const char* src); + + // match url() + const char* H(const char* src); + const char* W(const char* src); + // `UNICODE` makes VS sad + const char* UUNICODE(const char* src); + const char* NONASCII(const char* src); + const char* ESCAPE(const char* src); + const char* real_uri(const char* src); + const char* real_uri_suffix(const char* src); + // const char* real_uri_prefix(const char* src); + const char* real_uri_value(const char* src); + + // Path matching functions. + // const char* folder(const char* src); + // const char* folders(const char* src); + + + const char* static_string(const char* src); + const char* static_component(const char* src); + const char* static_property(const char* src); + const char* static_value(const char* src); + + const char* css_variable_value(const char* src); + const char* css_variable_top_level_value(const char* src); + + // Utility functions for finding and counting characters in a string. + template + const char* find_first(const char* src) { + while (*src && *src != c) ++src; + return *src ? src : 0; + } + template + const char* find_first(const char* src) { + while (*src && !mx(src)) ++src; + return *src ? src : 0; + } + template + const char* find_first_in_interval(const char* beg, const char* end) { + bool esc = false; + while ((beg < end) && *beg) { + if (esc) esc = false; + else if (*beg == '\\') esc = true; + else if (mx(beg)) return beg; + ++beg; + } + return 0; + } + template + const char* find_first_in_interval(const char* beg, const char* end) { + bool esc = false; + while ((beg < end) && *beg) { + if (esc) esc = false; + else if (*beg == '\\') esc = true; + else if (const char* pos = skip(beg)) beg = pos; + else if (mx(beg)) return beg; + ++beg; + } + return 0; + } + template + unsigned int count_interval(const char* beg, const char* end) { + unsigned int counter = 0; + bool esc = false; + while (beg < end && *beg) { + const char* p; + if (esc) { + esc = false; + ++beg; + } else if (*beg == '\\') { + esc = true; + ++beg; + } else if ((p = mx(beg))) { + ++counter; + beg = p; + } + else { + ++beg; + } + } + return counter; + } + + template + const char* padded_token(const char* src) + { + size_t got = 0; + const char* pos = src; + while (got < size) { + if (!mx(pos)) break; + ++ pos; ++ got; + } + while (got < size) { + if (!pad(pos)) break; + ++ pos; ++ got; + } + return got ? pos : 0; + } + + template + const char* minmax_range(const char* src) + { + size_t got = 0; + const char* pos = src; + while (got < max) { + if (!mx(pos)) break; + ++ pos; ++ got; + } + if (got < min) return 0; + if (got > max) return 0; + return pos; + } + + template + const char* char_range(const char* src) + { + if (*src < min) return 0; + if (*src > max) return 0; + return src + 1; + } + + } +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.cpp b/mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.cpp new file mode 100644 index 0000000..15cddac --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.cpp @@ -0,0 +1,84 @@ +#include "sass.hpp" +#include "remove_placeholders.hpp" +#include "context.hpp" +#include "inspect.hpp" +#include + +namespace Sass { + + Remove_Placeholders::Remove_Placeholders() + { } + + void Remove_Placeholders::operator()(Block_Ptr b) { + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Ptr st = b->at(i); + st->perform(this); + } + } + + Selector_List_Ptr Remove_Placeholders::remove_placeholders(Selector_List_Ptr sl) + { + Selector_List_Ptr new_sl = SASS_MEMORY_NEW(Selector_List, sl->pstate()); + + for (size_t i = 0, L = sl->length(); i < L; ++i) { + if (!sl->at(i)->contains_placeholder()) { + new_sl->append(sl->at(i)); + } + } + + return new_sl; + + } + + + void Remove_Placeholders::operator()(Ruleset_Ptr r) { + // Create a new selector group without placeholders + Selector_List_Obj sl = Cast(r->selector()); + + if (sl) { + // Set the new placeholder selector list + r->selector(remove_placeholders(sl)); + // Remove placeholders in wrapped selectors + for (Complex_Selector_Obj cs : sl->elements()) { + while (cs) { + if (cs->head()) { + for (Simple_Selector_Obj& ss : cs->head()->elements()) { + if (Wrapped_Selector_Ptr ws = Cast(ss)) { + if (Selector_List_Ptr wsl = Cast(ws->selector())) { + Selector_List_Ptr clean = remove_placeholders(wsl); + // also clean superflous parent selectors + // probably not really the correct place + clean->remove_parent_selectors(); + ws->selector(clean); + } + } + } + } + cs = cs->tail(); + } + } + } + + // Iterate into child blocks + Block_Obj b = r->block(); + + for (size_t i = 0, L = b->length(); i < L; ++i) { + if (b->at(i)) { + Statement_Obj st = b->at(i); + st->perform(this); + } + } + } + + void Remove_Placeholders::operator()(Media_Block_Ptr m) { + operator()(m->block()); + } + void Remove_Placeholders::operator()(Supports_Block_Ptr m) { + operator()(m->block()); + } + + void Remove_Placeholders::operator()(Directive_Ptr a) { + if (a->block()) a->block()->perform(this); + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.hpp b/mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.hpp new file mode 100644 index 0000000..c13b631 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/remove_placeholders.hpp @@ -0,0 +1,35 @@ +#ifndef SASS_REMOVE_PLACEHOLDERS_H +#define SASS_REMOVE_PLACEHOLDERS_H + +#pragma once + +#include "ast.hpp" +#include "operation.hpp" + +namespace Sass { + + + class Remove_Placeholders : public Operation_CRTP { + + void fallback_impl(AST_Node_Ptr n) {} + + public: + Selector_List_Ptr remove_placeholders(Selector_List_Ptr); + + public: + Remove_Placeholders(); + ~Remove_Placeholders() { } + + void operator()(Block_Ptr); + void operator()(Ruleset_Ptr); + void operator()(Media_Block_Ptr); + void operator()(Supports_Block_Ptr); + void operator()(Directive_Ptr); + + template + void fallback(U x) { return fallback_impl(x); } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass.cpp b/mybulma/node_modules/node-sass/src/libsass/src/sass.cpp new file mode 100644 index 0000000..72edd7c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass.cpp @@ -0,0 +1,151 @@ +#include "sass.hpp" +#include +#include +#include +#include + +#include "sass.h" +#include "file.hpp" +#include "util.hpp" +#include "sass_context.hpp" +#include "sass_functions.hpp" + +namespace Sass { + + // helper to convert string list to vector + std::vector list2vec(struct string_list* cur) + { + std::vector list; + while (cur) { + list.push_back(cur->string); + cur = cur->next; + } + return list; + } + +} + +extern "C" { + using namespace Sass; + + // Allocate libsass heap memory + // Don't forget string termination! + void* ADDCALL sass_alloc_memory(size_t size) + { + void* ptr = malloc(size); + if (ptr == NULL) { + std::cerr << "Out of memory.\n"; + exit(EXIT_FAILURE); + } + return ptr; + } + + char* ADDCALL sass_copy_c_string(const char* str) + { + size_t len = strlen(str) + 1; + char* cpy = (char*) sass_alloc_memory(len); + std::memcpy(cpy, str, len); + return cpy; + } + + // Deallocate libsass heap memory + void ADDCALL sass_free_memory(void* ptr) + { + if (ptr) free (ptr); + } + + // caller must free the returned memory + char* ADDCALL sass_string_quote (const char *str, const char quote_mark) + { + std::string quoted = quote(str, quote_mark); + return sass_copy_c_string(quoted.c_str()); + } + + // caller must free the returned memory + char* ADDCALL sass_string_unquote (const char *str) + { + std::string unquoted = unquote(str); + return sass_copy_c_string(unquoted.c_str()); + } + + char* ADDCALL sass_compiler_find_include (const char* file, struct Sass_Compiler* compiler) + { + // get the last import entry to get current base directory + Sass_Import_Entry import = sass_compiler_get_last_import(compiler); + const std::vector& incs = compiler->cpp_ctx->include_paths; + // create the vector with paths to lookup + std::vector paths(1 + incs.size()); + paths.push_back(File::dir_name(import->abs_path)); + paths.insert( paths.end(), incs.begin(), incs.end() ); + // now resolve the file path relative to lookup paths + std::string resolved(File::find_include(file, paths)); + return sass_copy_c_string(resolved.c_str()); + } + + char* ADDCALL sass_compiler_find_file (const char* file, struct Sass_Compiler* compiler) + { + // get the last import entry to get current base directory + Sass_Import_Entry import = sass_compiler_get_last_import(compiler); + const std::vector& incs = compiler->cpp_ctx->include_paths; + // create the vector with paths to lookup + std::vector paths(1 + incs.size()); + paths.push_back(File::dir_name(import->abs_path)); + paths.insert( paths.end(), incs.begin(), incs.end() ); + // now resolve the file path relative to lookup paths + std::string resolved(File::find_file(file, paths)); + return sass_copy_c_string(resolved.c_str()); + } + + // Make sure to free the returned value! + // Incs array has to be null terminated! + // this has the original resolve logic for sass include + char* ADDCALL sass_find_include (const char* file, struct Sass_Options* opt) + { + std::vector vec(list2vec(opt->include_paths)); + std::string resolved(File::find_include(file, vec)); + return sass_copy_c_string(resolved.c_str()); + } + + // Make sure to free the returned value! + // Incs array has to be null terminated! + char* ADDCALL sass_find_file (const char* file, struct Sass_Options* opt) + { + std::vector vec(list2vec(opt->include_paths)); + std::string resolved(File::find_file(file, vec)); + return sass_copy_c_string(resolved.c_str()); + } + + // Get compiled libsass version + const char* ADDCALL libsass_version(void) + { + return LIBSASS_VERSION; + } + + // Get compiled libsass version + const char* ADDCALL libsass_language_version(void) + { + return LIBSASS_LANGUAGE_VERSION; + } + +} + +namespace Sass { + + // helper to aid dreaded MSVC debug mode + char* sass_copy_string(std::string str) + { + // In MSVC the following can lead to segfault: + // sass_copy_c_string(stream.str().c_str()); + // Reason is that the string returned by str() is disposed before + // sass_copy_c_string is invoked. The string is actually a stack + // object, so indeed nobody is holding on to it. So it seems + // perfectly fair to release it right away. So the const char* + // by c_str will point to invalid memory. I'm not sure if this is + // the behavior for all compiler, but I'm pretty sure we would + // have gotten more issues reported if that would be the case. + // Wrapping it in a functions seems the cleanest approach as the + // function must hold on to the stack variable until it's done. + return sass_copy_c_string(str.c_str()); + } + +} \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass.hpp b/mybulma/node_modules/node-sass/src/libsass/src/sass.hpp new file mode 100644 index 0000000..f055049 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass.hpp @@ -0,0 +1,139 @@ +// must be the first include in all compile units +#ifndef SASS_SASS_H +#define SASS_SASS_H + +// undefine extensions macro to tell sys includes +// that we do not want any macros to be exported +// mainly fixes an issue on SmartOS (SEC macro) +#undef __EXTENSIONS__ + +#ifdef _MSC_VER +#pragma warning(disable : 4005) +#endif + +// aplies to MSVC and MinGW +#ifdef _WIN32 +// we do not want the ERROR macro +# define NOGDI +// we do not want the min/max macro +# define NOMINMAX +// we do not want the IN/OUT macro +# define _NO_W32_PSEUDO_MODIFIERS +#endif + + +// should we be case insensitive +// when dealing with files or paths +#ifndef FS_CASE_SENSITIVE +# ifdef _WIN32 +# define FS_CASE_SENSITIVE 0 +# else +# define FS_CASE_SENSITIVE 1 +# endif +#endif + +// path separation char +#ifndef PATH_SEP +# ifdef _WIN32 +# define PATH_SEP ';' +# else +# define PATH_SEP ':' +# endif +#endif + + +// include C-API header +#include "sass/base.h" + +// For C++ helper +#include + +// output behaviours +namespace Sass { + + // create some C++ aliases for the most used options + const static Sass_Output_Style NESTED = SASS_STYLE_NESTED; + const static Sass_Output_Style COMPACT = SASS_STYLE_COMPACT; + const static Sass_Output_Style EXPANDED = SASS_STYLE_EXPANDED; + const static Sass_Output_Style COMPRESSED = SASS_STYLE_COMPRESSED; + // only used internal to trigger ruby inspect behavior + const static Sass_Output_Style INSPECT = SASS_STYLE_INSPECT; + const static Sass_Output_Style TO_SASS = SASS_STYLE_TO_SASS; + + // helper to aid dreaded MSVC debug mode + // see implementation for more details + char* sass_copy_string(std::string str); + +} + +// input behaviours +enum Sass_Input_Style { + SASS_CONTEXT_NULL, + SASS_CONTEXT_FILE, + SASS_CONTEXT_DATA, + SASS_CONTEXT_FOLDER +}; + +// simple linked list +struct string_list { + string_list* next; + char* string; +}; + +// sass config options structure +struct Sass_Inspect_Options { + + // Output style for the generated css code + // A value from above SASS_STYLE_* constants + enum Sass_Output_Style output_style; + + // Precision for fractional numbers + int precision; + + // Do not compress colors in selectors + bool in_selector; + + // initialization list (constructor with defaults) + Sass_Inspect_Options(Sass_Output_Style style = Sass::NESTED, + int precision = 5, bool in_selector = false) + : output_style(style), precision(precision), in_selector(in_selector) + { } + +}; + +// sass config options structure +struct Sass_Output_Options : Sass_Inspect_Options { + + // String to be used for indentation + const char* indent; + // String to be used to for line feeds + const char* linefeed; + + // Emit comments in the generated CSS indicating + // the corresponding source line. + bool source_comments; + + // initialization list (constructor with defaults) + Sass_Output_Options(struct Sass_Inspect_Options opt, + const char* indent = " ", + const char* linefeed = "\n", + bool source_comments = false) + : Sass_Inspect_Options(opt), + indent(indent), linefeed(linefeed), + source_comments(source_comments) + { } + + // initialization list (constructor with defaults) + Sass_Output_Options(Sass_Output_Style style = Sass::NESTED, + int precision = 5, + const char* indent = " ", + const char* linefeed = "\n", + bool source_comments = false) + : Sass_Inspect_Options(style, precision), + indent(indent), linefeed(linefeed), + source_comments(source_comments) + { } + +}; + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass2scss.cpp b/mybulma/node_modules/node-sass/src/libsass/src/sass2scss.cpp new file mode 100644 index 0000000..56333b3 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass2scss.cpp @@ -0,0 +1,864 @@ +/** + * sass2scss + * Licensed under the MIT License + * Copyright (c) Marcel Greter + */ + +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS +#define _CRT_NONSTDC_NO_DEPRECATE +#endif + +// include library +#include +#include +#include +#include +#include +#include +#include + +///* +// +// src comments: comments in sass syntax (staring with //) +// css comments: multiline comments in css syntax (starting with /*) +// +// KEEP_COMMENT: keep src comments in the resulting css code +// STRIP_COMMENT: strip out all comments (either src or css) +// CONVERT_COMMENT: convert all src comments to css comments +// +//*/ + +// our own header +#include "sass2scss.h" + +// add namespace for c++ +namespace Sass +{ + + // return the actual prettify value from options + #define PRETTIFY(converter) (converter.options - (converter.options & 248)) + // query the options integer to check if the option is enables + #define KEEP_COMMENT(converter) ((converter.options & SASS2SCSS_KEEP_COMMENT) == SASS2SCSS_KEEP_COMMENT) + #define STRIP_COMMENT(converter) ((converter.options & SASS2SCSS_STRIP_COMMENT) == SASS2SCSS_STRIP_COMMENT) + #define CONVERT_COMMENT(converter) ((converter.options & SASS2SCSS_CONVERT_COMMENT) == SASS2SCSS_CONVERT_COMMENT) + + // some makros to access the indentation stack + #define INDENT(converter) (converter.indents.top()) + + // some makros to query comment parser status + #define IS_PARSING(converter) (converter.comment == "") + #define IS_COMMENT(converter) (converter.comment != "") + #define IS_SRC_COMMENT(converter) (converter.comment == "//" && ! CONVERT_COMMENT(converter)) + #define IS_CSS_COMMENT(converter) (converter.comment == "/*" || (converter.comment == "//" && CONVERT_COMMENT(converter))) + + // pretty printer helper function + static std::string closer (const converter& converter) + { + return PRETTIFY(converter) == 0 ? " }" : + PRETTIFY(converter) <= 1 ? " }" : + "\n" + INDENT(converter) + "}"; + } + + // pretty printer helper function + static std::string opener (const converter& converter) + { + return PRETTIFY(converter) == 0 ? " { " : + PRETTIFY(converter) <= 2 ? " {" : + "\n" + INDENT(converter) + "{"; + } + + // check if the given string is a pseudo selector + // needed to differentiate from sass property syntax + static bool isPseudoSelector (std::string& sel) + { + + size_t len = sel.length(); + if (len < 1) return false; + size_t pos = sel.find_first_not_of("abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1); + if (pos != std::string::npos) sel.erase(pos, std::string::npos); + size_t i = sel.length(); + while (i -- > 0) { sel.at(i) = tolower(sel.at(i)); } + + // CSS Level 1 - Recommendation + if (sel == ":link") return true; + if (sel == ":visited") return true; + if (sel == ":active") return true; + + // CSS Level 2 (Revision 1) - Recommendation + if (sel == ":lang") return true; + if (sel == ":first-child") return true; + if (sel == ":hover") return true; + if (sel == ":focus") return true; + // disabled - also valid properties + // if (sel == ":left") return true; + // if (sel == ":right") return true; + if (sel == ":first") return true; + + // Selectors Level 3 - Recommendation + if (sel == ":target") return true; + if (sel == ":root") return true; + if (sel == ":nth-child") return true; + if (sel == ":nth-last-of-child") return true; + if (sel == ":nth-of-type") return true; + if (sel == ":nth-last-of-type") return true; + if (sel == ":last-child") return true; + if (sel == ":first-of-type") return true; + if (sel == ":last-of-type") return true; + if (sel == ":only-child") return true; + if (sel == ":only-of-type") return true; + if (sel == ":empty") return true; + if (sel == ":not") return true; + + // CSS Basic User Interface Module Level 3 - Working Draft + if (sel == ":default") return true; + if (sel == ":valid") return true; + if (sel == ":invalid") return true; + if (sel == ":in-range") return true; + if (sel == ":out-of-range") return true; + if (sel == ":required") return true; + if (sel == ":optional") return true; + if (sel == ":read-only") return true; + if (sel == ":read-write") return true; + if (sel == ":dir") return true; + if (sel == ":enabled") return true; + if (sel == ":disabled") return true; + if (sel == ":checked") return true; + if (sel == ":indeterminate") return true; + if (sel == ":nth-last-child") return true; + + // Selectors Level 4 - Working Draft + if (sel == ":any-link") return true; + if (sel == ":local-link") return true; + if (sel == ":scope") return true; + if (sel == ":active-drop-target") return true; + if (sel == ":valid-drop-target") return true; + if (sel == ":invalid-drop-target") return true; + if (sel == ":current") return true; + if (sel == ":past") return true; + if (sel == ":future") return true; + if (sel == ":placeholder-shown") return true; + if (sel == ":user-error") return true; + if (sel == ":blank") return true; + if (sel == ":nth-match") return true; + if (sel == ":nth-last-match") return true; + if (sel == ":nth-column") return true; + if (sel == ":nth-last-column") return true; + if (sel == ":matches") return true; + + // Fullscreen API - Living Standard + if (sel == ":fullscreen") return true; + + // not a pseudo selector + return false; + + } + + // check if there is some char data + // will ignore everything in comments + static bool hasCharData (std::string& sass) + { + + size_t col_pos = 0; + + while (true) + { + + // try to find some meaningfull char + col_pos = sass.find_first_not_of(" \t\n\v\f\r", col_pos); + + // there was no meaningfull char found + if (col_pos == std::string::npos) return false; + + // found a multiline comment opener + if (sass.substr(col_pos, 2) == "/*") + { + // find the multiline comment closer + col_pos = sass.find("*/", col_pos); + // maybe we did not find the closer here + if (col_pos == std::string::npos) return false; + // skip closer + col_pos += 2; + } + else + { + return true; + } + + } + + } + // EO hasCharData + + // find src comment opener + // correctly skips quoted strings + static size_t findCommentOpener (std::string& sass) + { + + size_t col_pos = 0; + bool apoed = false; + bool quoted = false; + bool comment = false; + size_t brackets = 0; + + while (col_pos != std::string::npos) + { + + // process all interesting chars + col_pos = sass.find_first_of("\"\'/\\*()", col_pos); + + // assertion for valid result + if (col_pos != std::string::npos) + { + char character = sass.at(col_pos); + + if (character == '(') + { + if (!quoted && !apoed) brackets ++; + } + else if (character == ')') + { + if (!quoted && !apoed) brackets --; + } + else if (character == '\"') + { + // invert quote bool + if (!apoed && !comment) quoted = !quoted; + } + else if (character == '\'') + { + // invert quote bool + if (!quoted && !comment) apoed = !apoed; + } + else if (col_pos > 0 && character == '/') + { + if (sass.at(col_pos - 1) == '*') + { + comment = false; + } + // next needs to be a slash too + else if (sass.at(col_pos - 1) == '/') + { + // only found if not in single or double quote, bracket or comment + if (!quoted && !apoed && !comment && brackets == 0) return col_pos - 1; + } + } + else if (character == '\\') + { + // skip next char if in quote + if (quoted || apoed) col_pos ++; + } + // this might be a comment opener + else if (col_pos > 0 && character == '*') + { + // opening a multiline comment + if (sass.at(col_pos - 1) == '/') + { + // we are now in a comment + if (!quoted && !apoed) comment = true; + } + } + + // skip char + col_pos ++; + + } + + } + // EO while + + return col_pos; + + } + // EO findCommentOpener + + // remove multiline comments from sass string + // correctly skips quoted strings + static std::string removeMultilineComment (std::string &sass) + { + + std::string clean = ""; + size_t col_pos = 0; + size_t open_pos = 0; + size_t close_pos = 0; + bool apoed = false; + bool quoted = false; + bool comment = false; + + // process sass til string end + while (col_pos != std::string::npos) + { + + // process all interesting chars + col_pos = sass.find_first_of("\"\'/\\*", col_pos); + + // assertion for valid result + if (col_pos != std::string::npos) + { + char character = sass.at(col_pos); + + // found quoted string delimiter + if (character == '\"') + { + if (!apoed && !comment) quoted = !quoted; + } + else if (character == '\'') + { + if (!quoted && !comment) apoed = !apoed; + } + // found possible comment closer + else if (character == '/') + { + // look back to see if it is actually a closer + if (comment && col_pos > 0 && sass.at(col_pos - 1) == '*') + { + close_pos = col_pos + 1; comment = false; + } + } + else if (character == '\\') + { + // skip escaped char + if (quoted || apoed) col_pos ++; + } + // this might be a comment opener + else if (character == '*') + { + // look back to see if it is actually an opener + if (!quoted && !apoed && col_pos > 0 && sass.at(col_pos - 1) == '/') + { + comment = true; open_pos = col_pos - 1; + clean += sass.substr(close_pos, open_pos - close_pos); + } + } + + // skip char + col_pos ++; + + } + + } + // EO while + + // add final parts (add half open comment text) + if (comment) clean += sass.substr(open_pos); + else clean += sass.substr(close_pos); + + // return string + return clean; + + } + // EO removeMultilineComment + + // right trim a given string + std::string rtrim(const std::string &sass) + { + std::string trimmed = sass; + size_t pos_ws = trimmed.find_last_not_of(" \t\n\v\f\r"); + if (pos_ws != std::string::npos) + { trimmed.erase(pos_ws + 1); } + else { trimmed.clear(); } + return trimmed; + } + // EO rtrim + + // flush whitespace and print additional text, but + // only print additional chars and buffer whitespace + std::string flush (std::string& sass, converter& converter) + { + + // return flushed + std::string scss = ""; + + // print whitespace buffer + scss += PRETTIFY(converter) > 0 ? + converter.whitespace : ""; + // reset whitespace buffer + converter.whitespace = ""; + + // remove possible newlines from string + size_t pos_right = sass.find_last_not_of("\n\r"); + if (pos_right == std::string::npos) return scss; + + // get the linefeeds from the string + std::string lfs = sass.substr(pos_right + 1); + sass = sass.substr(0, pos_right + 1); + + // find some source comment opener + size_t comment_pos = findCommentOpener(sass); + // check if there was a source comment + if (comment_pos != std::string::npos) + { + // convert comment (but only outside other coments) + if (CONVERT_COMMENT(converter) && !IS_COMMENT(converter)) + { + // convert to multiline comment + sass.at(comment_pos + 1) = '*'; + // add comment node to the whitespace + sass += " */"; + } + // not at line start + if (comment_pos > 0) + { + // also include whitespace before the actual comment opener + size_t ws_pos = sass.find_last_not_of(SASS2SCSS_FIND_WHITESPACE, comment_pos - 1); + comment_pos = ws_pos == std::string::npos ? 0 : ws_pos + 1; + } + if (!STRIP_COMMENT(converter)) + { + // add comment node to the whitespace + converter.whitespace += sass.substr(comment_pos); + } + else + { + // sass = removeMultilineComments(sass); + } + // update the actual sass code + sass = sass.substr(0, comment_pos); + } + + // add newline as getline discharged it + converter.whitespace += lfs + "\n"; + + // maybe remove any leading whitespace + if (PRETTIFY(converter) == 0) + { + // remove leading whitespace and update string + size_t pos_left = sass.find_first_not_of(SASS2SCSS_FIND_WHITESPACE); + if (pos_left != std::string::npos) sass = sass.substr(pos_left); + } + + // add flushed data + scss += sass; + + // return string + return scss; + + } + // EO flush + + // process a line of the sass text + std::string process (std::string& sass, converter& converter) + { + + // resulting string + std::string scss = ""; + + // strip multi line comments + if (STRIP_COMMENT(converter)) + { + sass = removeMultilineComment(sass); + } + + // right trim input + sass = rtrim(sass); + + // get postion of first meaningfull character in string + size_t pos_left = sass.find_first_not_of(SASS2SCSS_FIND_WHITESPACE); + + // special case for final run + if (converter.end_of_file) pos_left = 0; + + // maybe has only whitespace + if (pos_left == std::string::npos) + { + // just add complete whitespace + converter.whitespace += sass + "\n"; + } + // have meaningfull first char + else + { + + // extract and store indentation string + std::string indent = sass.substr(0, pos_left); + + // check if current line starts a comment + std::string open = sass.substr(pos_left, 2); + + // line has less or same indentation + // finalize previous open parser context + if (indent.length() <= INDENT(converter).length()) + { + + // close multilinie comment + if (IS_CSS_COMMENT(converter)) + { + // check if comments will be stripped anyway + if (!STRIP_COMMENT(converter)) scss += " */"; + } + // close src comment comment + else if (IS_SRC_COMMENT(converter)) + { + // add a newline to avoid closer on same line + // this would put the bracket in the comment node + // no longer needed since we parse them correctly + // if (KEEP_COMMENT(converter)) scss += "\n"; + } + // close css properties + else if (converter.property) + { + // add closer unless in concat mode + if (!converter.comma) + { + // if there was no colon we have a selector + // looks like there were no inner properties + if (converter.selector) scss += " {}"; + // add final semicolon + else if (!converter.semicolon) scss += ";"; + } + } + + // reset comment state + converter.comment = ""; + + } + + // make sure we close every "higher" block + while (indent.length() < INDENT(converter).length()) + { + // pop stacked context + converter.indents.pop(); + // print close bracket + if (IS_PARSING(converter)) + { scss += closer(converter); } + else { scss += " */"; } + // reset comment state + converter.comment = ""; + } + + // reset converter state + converter.selector = false; + + // looks like some undocumented behavior ... + // https://github.com/mgreter/sass2scss/issues/29 + if (sass.substr(pos_left, 1) == "\\") { + converter.selector = true; + sass[pos_left] = ' '; + } + + // check if we have sass property syntax + if (sass.substr(pos_left, 1) == ":" && sass.substr(pos_left, 2) != "::") + { + + // default to a selector + // change back if property found + converter.selector = true; + // get postion of first whitespace char + size_t pos_wspace = sass.find_first_of(SASS2SCSS_FIND_WHITESPACE, pos_left); + // assertion check for valid result + if (pos_wspace != std::string::npos) + { + // get the possible pseudo selector + std::string pseudo = sass.substr(pos_left, pos_wspace - pos_left); + // get position of the first real property value char + // pseudo selectors get this far, but have no actual value + size_t pos_value = sass.find_first_not_of(SASS2SCSS_FIND_WHITESPACE, pos_wspace); + // assertion check for valid result + if (pos_value != std::string::npos) + { + // only process if not (fallowed by a semicolon or is a pseudo selector) + if (!(sass.at(pos_value) == ':' || isPseudoSelector(pseudo))) + { + // create new string by interchanging the colon sign for property and value + sass = indent + sass.substr(pos_left + 1, pos_wspace - pos_left - 1) + ":" + sass.substr(pos_wspace); + // try to find a colon in the current line, but only ... + size_t pos_colon = sass.find_first_not_of(":", pos_left); + // assertion for valid result + if (pos_colon != std::string::npos) + { + // ... after the first word (skip begining colons) + pos_colon = sass.find_first_of(":", pos_colon); + // it is a selector if there was no colon found + converter.selector = pos_colon == std::string::npos; + } + } + } + } + + // check if we have a BEM property (one colon and no selector) + if (sass.substr(pos_left, 1) == ":" && converter.selector == true) { + size_t pos_wspace = sass.find_first_of(SASS2SCSS_FIND_WHITESPACE, pos_left); + sass = indent + sass.substr(pos_left + 1, pos_wspace) + ":"; + } + + } + + // terminate some statements immediately + else if ( + sass.substr(pos_left, 5) == "@warn" || + sass.substr(pos_left, 6) == "@debug" || + sass.substr(pos_left, 6) == "@error" || + sass.substr(pos_left, 8) == "@charset" || + sass.substr(pos_left, 10) == "@namespace" + ) { sass = indent + sass.substr(pos_left); } + // replace some specific sass shorthand directives (if not fallowed by a white space character) + else if (sass.substr(pos_left, 1) == "=") + { sass = indent + "@mixin " + sass.substr(pos_left + 1); } + else if (sass.substr(pos_left, 1) == "+") + { + // must be followed by a mixin call (no whitespace afterwards or at ending directly) + if (sass[pos_left+1] != 0 && sass[pos_left+1] != ' ' && sass[pos_left+1] != '\t') { + sass = indent + "@include " + sass.substr(pos_left + 1); + } + } + + // add quotes for import if needed + else if (sass.substr(pos_left, 7) == "@import") + { + // get positions for the actual import url + size_t pos_import = sass.find_first_of(SASS2SCSS_FIND_WHITESPACE, pos_left + 7); + size_t pos_quote = sass.find_first_not_of(SASS2SCSS_FIND_WHITESPACE, pos_import); + // leave proper urls untouched + if (sass.substr(pos_quote, 4) != "url(") + { + // check if the url appears to be already quoted + if (sass.substr(pos_quote, 1) != "\"" && sass.substr(pos_quote, 1) != "\'") + { + // get position of the last char on the line + size_t pos_end = sass.find_last_not_of(SASS2SCSS_FIND_WHITESPACE); + // assertion check for valid result + if (pos_end != std::string::npos) + { + // add quotes around the full line after the import statement + sass = sass.substr(0, pos_quote) + "\"" + sass.substr(pos_quote, pos_end - pos_quote + 1) + "\""; + } + } + } + + } + else if ( + sass.substr(pos_left, 7) != "@return" && + sass.substr(pos_left, 7) != "@extend" && + sass.substr(pos_left, 8) != "@include" && + sass.substr(pos_left, 8) != "@content" + ) { + + // probably a selector anyway + converter.selector = true; + // try to find first colon in the current line + size_t pos_colon = sass.find_first_of(":", pos_left); + // assertion that we have a colon + if (pos_colon != std::string::npos) + { + // it is not a selector if we have a space after a colon + if (sass[pos_colon+1] == ' ') converter.selector = false; + if (sass[pos_colon+1] == ' ') converter.selector = false; + } + + } + + // current line has more indentation + if (indent.length() >= INDENT(converter).length()) + { + // not in comment mode + if (IS_PARSING(converter)) + { + // has meaningfull chars + if (hasCharData(sass)) + { + // is probably a property + // also true for selectors + converter.property = true; + } + } + } + // current line has more indentation + if (indent.length() > INDENT(converter).length()) + { + // not in comment mode + if (IS_PARSING(converter)) + { + // had meaningfull chars + if (converter.property) + { + // print block opener + scss += opener(converter); + // push new stack context + converter.indents.push(""); + // store block indentation + INDENT(converter) = indent; + } + } + // is and will be a src comment + else if (!IS_CSS_COMMENT(converter)) + { + // scss does not allow multiline src comments + // therefore add forward slashes to all lines + sass.at(INDENT(converter).length()+0) = '/'; + // there is an edge case here if indentation + // is minimal (will overwrite the fist char) + sass.at(INDENT(converter).length()+1) = '/'; + // could code around that, but I dont' think + // this will ever be the cause for any trouble + } + } + + // line is opening a new comment + if (open == "/*" || open == "//") + { + // reset the property state + converter.property = false; + // close previous comment + if (IS_CSS_COMMENT(converter) && open != "") + { + if (!STRIP_COMMENT(converter) && !CONVERT_COMMENT(converter)) scss += " */"; + } + // force single line comments + // into a correct css comment + if (CONVERT_COMMENT(converter)) + { + if (IS_PARSING(converter)) + { sass.at(pos_left + 1) = '*'; } + } + // set comment flag + converter.comment = open; + + } + + // flush data only under certain conditions + if (!( + // strip css and src comments if option is set + (IS_COMMENT(converter) && STRIP_COMMENT(converter)) || + // strip src comment even if strip option is not set + // but only if the keep src comment option is not set + (IS_SRC_COMMENT(converter) && ! KEEP_COMMENT(converter)) + )) + { + // flush data and buffer whitespace + scss += flush(sass, converter); + } + + // get postion of last meaningfull char + size_t pos_right = sass.find_last_not_of(SASS2SCSS_FIND_WHITESPACE); + + // check for invalid result + if (pos_right != std::string::npos) + { + + // get the last meaningfull char + std::string close = sass.substr(pos_right, 1); + + // check if next line should be concatenated (list mode) + converter.comma = IS_PARSING(converter) && close == ","; + converter.semicolon = IS_PARSING(converter) && close == ";"; + + // check if we have more than + // one meaningfull char + if (pos_right > 0) + { + + // get the last two chars from string + std::string close = sass.substr(pos_right - 1, 2); + // update parser status for expicitly closed comment + if (close == "*/") converter.comment = ""; + + } + + } + // EO have meaningfull chars from end + + } + // EO have meaningfull chars from start + + // return scss + return scss; + + } + // EO process + + // read line with either CR, LF or CR LF format + // http://stackoverflow.com/a/6089413/1550314 + static std::istream& safeGetline(std::istream& is, std::string& t) + { + t.clear(); + + // The characters in the stream are read one-by-one using a std::streambuf. + // That is faster than reading them one-by-one using the std::istream. + // Code that uses streambuf this way must be guarded by a sentry object. + // The sentry object performs various tasks, + // such as thread synchronization and updating the stream state. + + std::istream::sentry se(is, true); + std::streambuf* sb = is.rdbuf(); + + for(;;) { + int c = sb->sbumpc(); + switch (c) { + case '\n': + return is; + case '\r': + if(sb->sgetc() == '\n') + sb->sbumpc(); + return is; + case EOF: + // Also handle the case when the last line has no line ending + if(t.empty()) + is.setstate(std::ios::eofbit); + return is; + default: + t += (char)c; + } + } + } + + // the main converter function for c++ + char* sass2scss (const std::string& sass, const int options) + { + + // local variables + std::string line; + std::string scss = ""; + std::stringstream stream(sass); + + // create converter variable + converter converter; + // initialise all options + converter.comma = false; + converter.property = false; + converter.selector = false; + converter.semicolon = false; + converter.end_of_file = false; + converter.comment = ""; + converter.whitespace = ""; + converter.indents.push(""); + converter.options = options; + + // read line by line and process them + while(safeGetline(stream, line) && !stream.eof()) + { scss += process(line, converter); } + + // create mutable string + std::string closer = ""; + // set the end of file flag + converter.end_of_file = true; + // process to close all open blocks + scss += process(closer, converter); + + // allocate new memory on the heap + // caller has to free it after use + char * cstr = (char*) malloc (scss.length() + 1); + // create a copy of the string + strcpy (cstr, scss.c_str()); + // return pointer + return &cstr[0]; + + } + // EO sass2scss + +} +// EO namespace + +// implement for c +extern "C" +{ + + char* ADDCALL sass2scss (const char* sass, const int options) + { + return Sass::sass2scss(sass, options); + } + + // Get compiled sass2scss version + const char* ADDCALL sass2scss_version(void) { + return SASS2SCSS_VERSION; + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_context.cpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_context.cpp new file mode 100644 index 0000000..afadc66 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_context.cpp @@ -0,0 +1,769 @@ +#include "sass.hpp" +#include +#include +#include +#include +#include + +#include "sass.h" +#include "ast.hpp" +#include "file.hpp" +#include "json.hpp" +#include "util.hpp" +#include "context.hpp" +#include "sass_context.hpp" +#include "sass_functions.hpp" +#include "ast_fwd_decl.hpp" +#include "error_handling.hpp" + +#define LFEED "\n" + +// C++ helper +namespace Sass { + // see sass_copy_c_string(std::string str) + static inline JsonNode* json_mkstream(const std::stringstream& stream) + { + // hold on to string on stack! + std::string str(stream.str()); + return json_mkstring(str.c_str()); + } + + static int handle_error(Sass_Context* c_ctx) { + try { + throw; + } + catch (Exception::Base& e) { + std::stringstream msg_stream; + std::string cwd(Sass::File::get_cwd()); + std::string msg_prefix(e.errtype()); + bool got_newline = false; + msg_stream << msg_prefix << ": "; + const char* msg = e.what(); + while (msg && *msg) { + if (*msg == '\r') { + got_newline = true; + } + else if (*msg == '\n') { + got_newline = true; + } + else if (got_newline) { + msg_stream << std::string(msg_prefix.size() + 2, ' '); + got_newline = false; + } + msg_stream << *msg; + ++msg; + } + if (!got_newline) msg_stream << "\n"; + + if (e.traces.empty()) { + // we normally should have some traces, still here as a fallback + std::string rel_path(Sass::File::abs2rel(e.pstate.path, cwd, cwd)); + msg_stream << std::string(msg_prefix.size() + 2, ' '); + msg_stream << " on line " << e.pstate.line + 1 << " of " << rel_path << "\n"; + } + else { + std::string rel_path(Sass::File::abs2rel(e.pstate.path, cwd, cwd)); + msg_stream << traces_to_string(e.traces, " "); + } + + // now create the code trace (ToDo: maybe have util functions?) + if (e.pstate.line != std::string::npos && e.pstate.column != std::string::npos) { + size_t lines = e.pstate.line; + const char* line_beg = e.pstate.src; + // scan through src until target line + // move line_beg pointer to line start + while (line_beg && *line_beg && lines != 0) { + if (*line_beg == '\n') --lines; + utf8::unchecked::next(line_beg); + } + const char* line_end = line_beg; + // move line_end before next newline character + while (line_end && *line_end && *line_end != '\n') { + if (*line_end == '\n') break; + if (*line_end == '\r') break; + utf8::unchecked::next(line_end); + } + if (line_end && *line_end != 0) ++ line_end; + size_t line_len = line_end - line_beg; + size_t move_in = 0; size_t shorten = 0; + size_t left_chars = 42; size_t max_chars = 76; + // reported excerpt should not exceed `max_chars` chars + if (e.pstate.column > line_len) left_chars = e.pstate.column; + if (e.pstate.column > left_chars) move_in = e.pstate.column - left_chars; + if (line_len > max_chars + move_in) shorten = line_len - move_in - max_chars; + utf8::advance(line_beg, move_in, line_end); + utf8::retreat(line_end, shorten, line_beg); + std::string sanitized; std::string marker(e.pstate.column - move_in, '-'); + utf8::replace_invalid(line_beg, line_end, std::back_inserter(sanitized)); + msg_stream << ">> " << sanitized << "\n"; + msg_stream << " " << marker << "^\n"; + } + + JsonNode* json_err = json_mkobject(); + json_append_member(json_err, "status", json_mknumber(1)); + json_append_member(json_err, "file", json_mkstring(e.pstate.path)); + json_append_member(json_err, "line", json_mknumber((double)(e.pstate.line + 1))); + json_append_member(json_err, "column", json_mknumber((double)(e.pstate.column + 1))); + json_append_member(json_err, "message", json_mkstring(e.what())); + json_append_member(json_err, "formatted", json_mkstream(msg_stream)); + try { c_ctx->error_json = json_stringify(json_err, " "); } + catch (...) {} + c_ctx->error_message = sass_copy_string(msg_stream.str()); + c_ctx->error_text = sass_copy_c_string(e.what()); + c_ctx->error_status = 1; + c_ctx->error_file = sass_copy_c_string(e.pstate.path); + c_ctx->error_line = e.pstate.line + 1; + c_ctx->error_column = e.pstate.column + 1; + c_ctx->error_src = e.pstate.src; + c_ctx->output_string = 0; + c_ctx->source_map_string = 0; + json_delete(json_err); + } + catch (std::bad_alloc& ba) { + std::stringstream msg_stream; + JsonNode* json_err = json_mkobject(); + msg_stream << "Unable to allocate memory: " << ba.what() << std::endl; + json_append_member(json_err, "status", json_mknumber(2)); + json_append_member(json_err, "message", json_mkstring(ba.what())); + json_append_member(json_err, "formatted", json_mkstream(msg_stream)); + try { c_ctx->error_json = json_stringify(json_err, " "); } + catch (...) {} + c_ctx->error_message = sass_copy_string(msg_stream.str()); + c_ctx->error_text = sass_copy_c_string(ba.what()); + c_ctx->error_status = 2; + c_ctx->output_string = 0; + c_ctx->source_map_string = 0; + json_delete(json_err); + } + catch (std::exception& e) { + std::stringstream msg_stream; + JsonNode* json_err = json_mkobject(); + msg_stream << "Internal Error: " << e.what() << std::endl; + json_append_member(json_err, "status", json_mknumber(3)); + json_append_member(json_err, "message", json_mkstring(e.what())); + json_append_member(json_err, "formatted", json_mkstream(msg_stream)); + try { c_ctx->error_json = json_stringify(json_err, " "); } + catch (...) {} + c_ctx->error_message = sass_copy_string(msg_stream.str()); + c_ctx->error_text = sass_copy_c_string(e.what()); + c_ctx->error_status = 3; + c_ctx->output_string = 0; + c_ctx->source_map_string = 0; + json_delete(json_err); + } + catch (std::string& e) { + std::stringstream msg_stream; + JsonNode* json_err = json_mkobject(); + msg_stream << "Internal Error: " << e << std::endl; + json_append_member(json_err, "status", json_mknumber(4)); + json_append_member(json_err, "message", json_mkstring(e.c_str())); + json_append_member(json_err, "formatted", json_mkstream(msg_stream)); + try { c_ctx->error_json = json_stringify(json_err, " "); } + catch (...) {} + c_ctx->error_message = sass_copy_string(msg_stream.str()); + c_ctx->error_text = sass_copy_c_string(e.c_str()); + c_ctx->error_status = 4; + c_ctx->output_string = 0; + c_ctx->source_map_string = 0; + json_delete(json_err); + } + catch (const char* e) { + std::stringstream msg_stream; + JsonNode* json_err = json_mkobject(); + msg_stream << "Internal Error: " << e << std::endl; + json_append_member(json_err, "status", json_mknumber(4)); + json_append_member(json_err, "message", json_mkstring(e)); + json_append_member(json_err, "formatted", json_mkstream(msg_stream)); + try { c_ctx->error_json = json_stringify(json_err, " "); } + catch (...) {} + c_ctx->error_message = sass_copy_string(msg_stream.str()); + c_ctx->error_text = sass_copy_c_string(e); + c_ctx->error_status = 4; + c_ctx->output_string = 0; + c_ctx->source_map_string = 0; + json_delete(json_err); + } + catch (...) { + std::stringstream msg_stream; + JsonNode* json_err = json_mkobject(); + msg_stream << "Unknown error occurred" << std::endl; + json_append_member(json_err, "status", json_mknumber(5)); + json_append_member(json_err, "message", json_mkstring("unknown")); + try { c_ctx->error_json = json_stringify(json_err, " "); } + catch (...) {} + c_ctx->error_message = sass_copy_string(msg_stream.str()); + c_ctx->error_text = sass_copy_c_string("unknown"); + c_ctx->error_status = 5; + c_ctx->output_string = 0; + c_ctx->source_map_string = 0; + json_delete(json_err); + } + return c_ctx->error_status; + } + + // allow one error handler to throw another error + // this can happen with invalid utf8 and json lib + static int handle_errors(Sass_Context* c_ctx) { + try { return handle_error(c_ctx); } + catch (...) { return handle_error(c_ctx); } + } + + static Block_Obj sass_parse_block(Sass_Compiler* compiler) throw() + { + + // assert valid pointer + if (compiler == 0) return 0; + // The cpp context must be set by now + Context* cpp_ctx = compiler->cpp_ctx; + Sass_Context* c_ctx = compiler->c_ctx; + // We will take care to wire up the rest + compiler->cpp_ctx->c_compiler = compiler; + compiler->state = SASS_COMPILER_PARSED; + + try { + + // get input/output path from options + std::string input_path = safe_str(c_ctx->input_path); + std::string output_path = safe_str(c_ctx->output_path); + + // maybe skip some entries of included files + // we do not include stdin for data contexts + bool skip = c_ctx->type == SASS_CONTEXT_DATA; + + // dispatch parse call + Block_Obj root(cpp_ctx->parse()); + // abort on errors + if (!root) return 0; + + // skip all prefixed files? (ToDo: check srcmap) + // IMO source-maps should point to headers already + // therefore don't skip it for now. re-enable or + // remove completely once this is tested + size_t headers = cpp_ctx->head_imports; + + // copy the included files on to the context (dont forget to free later) + if (copy_strings(cpp_ctx->get_included_files(skip, headers), &c_ctx->included_files) == NULL) + throw(std::bad_alloc()); + + // return parsed block + return root; + + } + // pass errors to generic error handler + catch (...) { handle_errors(c_ctx); } + + // error + return 0; + + } + +} + +extern "C" { + using namespace Sass; + + static void sass_clear_options (struct Sass_Options* options); + static void sass_reset_options (struct Sass_Options* options); + static void copy_options(struct Sass_Options* to, struct Sass_Options* from) { + // do not overwrite ourself + if (to == from) return; + // free assigned memory + sass_clear_options(to); + // move memory + *to = *from; + // Reset pointers on source + sass_reset_options(from); + } + + #define IMPLEMENT_SASS_OPTION_ACCESSOR(type, option) \ + type ADDCALL sass_option_get_##option (struct Sass_Options* options) { return options->option; } \ + void ADDCALL sass_option_set_##option (struct Sass_Options* options, type option) { options->option = option; } + #define IMPLEMENT_SASS_OPTION_STRING_GETTER(type, option, def) \ + type ADDCALL sass_option_get_##option (struct Sass_Options* options) { return safe_str(options->option, def); } + #define IMPLEMENT_SASS_OPTION_STRING_SETTER(type, option, def) \ + void ADDCALL sass_option_set_##option (struct Sass_Options* options, type option) \ + { free(options->option); options->option = option || def ? sass_copy_c_string(option ? option : def) : 0; } + #define IMPLEMENT_SASS_OPTION_STRING_ACCESSOR(type, option, def) \ + IMPLEMENT_SASS_OPTION_STRING_GETTER(type, option, def) \ + IMPLEMENT_SASS_OPTION_STRING_SETTER(type, option, def) + + #define IMPLEMENT_SASS_CONTEXT_GETTER(type, option) \ + type ADDCALL sass_context_get_##option (struct Sass_Context* ctx) { return ctx->option; } + #define IMPLEMENT_SASS_CONTEXT_TAKER(type, option) \ + type sass_context_take_##option (struct Sass_Context* ctx) \ + { type foo = ctx->option; ctx->option = 0; return foo; } + + + // generic compilation function (not exported, use file/data compile instead) + static Sass_Compiler* sass_prepare_context (Sass_Context* c_ctx, Context* cpp_ctx) throw() + { + try { + // register our custom functions + if (c_ctx->c_functions) { + auto this_func_data = c_ctx->c_functions; + while (this_func_data && *this_func_data) { + cpp_ctx->add_c_function(*this_func_data); + ++this_func_data; + } + } + + // register our custom headers + if (c_ctx->c_headers) { + auto this_head_data = c_ctx->c_headers; + while (this_head_data && *this_head_data) { + cpp_ctx->add_c_header(*this_head_data); + ++this_head_data; + } + } + + // register our custom importers + if (c_ctx->c_importers) { + auto this_imp_data = c_ctx->c_importers; + while (this_imp_data && *this_imp_data) { + cpp_ctx->add_c_importer(*this_imp_data); + ++this_imp_data; + } + } + + // reset error status + c_ctx->error_json = 0; + c_ctx->error_text = 0; + c_ctx->error_message = 0; + c_ctx->error_status = 0; + // reset error position + c_ctx->error_src = 0; + c_ctx->error_file = 0; + c_ctx->error_line = std::string::npos; + c_ctx->error_column = std::string::npos; + + // allocate a new compiler instance + void* ctxmem = calloc(1, sizeof(struct Sass_Compiler)); + if (ctxmem == 0) { std::cerr << "Error allocating memory for context" << std::endl; return 0; } + Sass_Compiler* compiler = (struct Sass_Compiler*) ctxmem; + compiler->state = SASS_COMPILER_CREATED; + + // store in sass compiler + compiler->c_ctx = c_ctx; + compiler->cpp_ctx = cpp_ctx; + cpp_ctx->c_compiler = compiler; + + // use to parse block + return compiler; + + } + // pass errors to generic error handler + catch (...) { handle_errors(c_ctx); } + + // error + return 0; + + } + + // generic compilation function (not exported, use file/data compile instead) + static int sass_compile_context (Sass_Context* c_ctx, Context* cpp_ctx) + { + + // prepare sass compiler with context and options + Sass_Compiler* compiler = sass_prepare_context(c_ctx, cpp_ctx); + + try { + // call each compiler step + sass_compiler_parse(compiler); + sass_compiler_execute(compiler); + } + // pass errors to generic error handler + catch (...) { handle_errors(c_ctx); } + + sass_delete_compiler(compiler); + + return c_ctx->error_status; + } + + inline void init_options (struct Sass_Options* options) + { + options->precision = 5; + options->indent = " "; + options->linefeed = LFEED; + } + + Sass_Options* ADDCALL sass_make_options (void) + { + struct Sass_Options* options = (struct Sass_Options*) calloc(1, sizeof(struct Sass_Options)); + if (options == 0) { std::cerr << "Error allocating memory for options" << std::endl; return 0; } + init_options(options); + return options; + } + + Sass_File_Context* ADDCALL sass_make_file_context(const char* input_path) + { + SharedObj::setTaint(true); // needed for static colors + struct Sass_File_Context* ctx = (struct Sass_File_Context*) calloc(1, sizeof(struct Sass_File_Context)); + if (ctx == 0) { std::cerr << "Error allocating memory for file context" << std::endl; return 0; } + ctx->type = SASS_CONTEXT_FILE; + init_options(ctx); + try { + if (input_path == 0) { throw(std::runtime_error("File context created without an input path")); } + if (*input_path == 0) { throw(std::runtime_error("File context created with empty input path")); } + sass_option_set_input_path(ctx, input_path); + } catch (...) { + handle_errors(ctx); + } + return ctx; + } + + Sass_Data_Context* ADDCALL sass_make_data_context(char* source_string) + { + struct Sass_Data_Context* ctx = (struct Sass_Data_Context*) calloc(1, sizeof(struct Sass_Data_Context)); + if (ctx == 0) { std::cerr << "Error allocating memory for data context" << std::endl; return 0; } + ctx->type = SASS_CONTEXT_DATA; + init_options(ctx); + try { + if (source_string == 0) { throw(std::runtime_error("Data context created without a source string")); } + if (*source_string == 0) { throw(std::runtime_error("Data context created with empty source string")); } + ctx->source_string = source_string; + } catch (...) { + handle_errors(ctx); + } + return ctx; + } + + struct Sass_Compiler* ADDCALL sass_make_data_compiler (struct Sass_Data_Context* data_ctx) + { + if (data_ctx == 0) return 0; + Context* cpp_ctx = new Data_Context(*data_ctx); + return sass_prepare_context(data_ctx, cpp_ctx); + } + + struct Sass_Compiler* ADDCALL sass_make_file_compiler (struct Sass_File_Context* file_ctx) + { + if (file_ctx == 0) return 0; + Context* cpp_ctx = new File_Context(*file_ctx); + return sass_prepare_context(file_ctx, cpp_ctx); + } + + int ADDCALL sass_compile_data_context(Sass_Data_Context* data_ctx) + { + if (data_ctx == 0) return 1; + if (data_ctx->error_status) + return data_ctx->error_status; + try { + if (data_ctx->source_string == 0) { throw(std::runtime_error("Data context has no source string")); } + // empty source string is a valid case, even if not really usefull (different than with file context) + // if (*data_ctx->source_string == 0) { throw(std::runtime_error("Data context has empty source string")); } + } + catch (...) { return handle_errors(data_ctx) | 1; } + Context* cpp_ctx = new Data_Context(*data_ctx); + return sass_compile_context(data_ctx, cpp_ctx); + } + + int ADDCALL sass_compile_file_context(Sass_File_Context* file_ctx) + { + if (file_ctx == 0) return 1; + if (file_ctx->error_status) + return file_ctx->error_status; + try { + if (file_ctx->input_path == 0) { throw(std::runtime_error("File context has no input path")); } + if (*file_ctx->input_path == 0) { throw(std::runtime_error("File context has empty input path")); } + } + catch (...) { return handle_errors(file_ctx) | 1; } + Context* cpp_ctx = new File_Context(*file_ctx); + return sass_compile_context(file_ctx, cpp_ctx); + } + + int ADDCALL sass_compiler_parse(struct Sass_Compiler* compiler) + { + if (compiler == 0) return 1; + if (compiler->state == SASS_COMPILER_PARSED) return 0; + if (compiler->state != SASS_COMPILER_CREATED) return -1; + if (compiler->c_ctx == NULL) return 1; + if (compiler->cpp_ctx == NULL) return 1; + if (compiler->c_ctx->error_status) + return compiler->c_ctx->error_status; + // parse the context we have set up (file or data) + compiler->root = sass_parse_block(compiler); + // success + return 0; + } + + int ADDCALL sass_compiler_execute(struct Sass_Compiler* compiler) + { + if (compiler == 0) return 1; + if (compiler->state == SASS_COMPILER_EXECUTED) return 0; + if (compiler->state != SASS_COMPILER_PARSED) return -1; + if (compiler->c_ctx == NULL) return 1; + if (compiler->cpp_ctx == NULL) return 1; + if (compiler->root.isNull()) return 1; + if (compiler->c_ctx->error_status) + return compiler->c_ctx->error_status; + compiler->state = SASS_COMPILER_EXECUTED; + Context* cpp_ctx = compiler->cpp_ctx; + Block_Obj root = compiler->root; + // compile the parsed root block + try { compiler->c_ctx->output_string = cpp_ctx->render(root); } + // pass catched errors to generic error handler + catch (...) { return handle_errors(compiler->c_ctx) | 1; } + // generate source map json and store on context + compiler->c_ctx->source_map_string = cpp_ctx->render_srcmap(); + // success + return 0; + } + + // helper function, not exported, only accessible locally + static void sass_reset_options (struct Sass_Options* options) + { + // free pointer before + // or copy/move them + options->input_path = 0; + options->output_path = 0; + options->plugin_path = 0; + options->include_path = 0; + options->source_map_file = 0; + options->source_map_root = 0; + options->c_functions = 0; + options->c_importers = 0; + options->c_headers = 0; + options->plugin_paths = 0; + options->include_paths = 0; + } + + // helper function, not exported, only accessible locally + static void sass_clear_options (struct Sass_Options* options) + { + if (options == 0) return; + // Deallocate custom functions, headers and importes + sass_delete_function_list(options->c_functions); + sass_delete_importer_list(options->c_importers); + sass_delete_importer_list(options->c_headers); + // Deallocate inc paths + if (options->plugin_paths) { + struct string_list* cur; + struct string_list* next; + cur = options->plugin_paths; + while (cur) { + next = cur->next; + free(cur->string); + free(cur); + cur = next; + } + } + // Deallocate inc paths + if (options->include_paths) { + struct string_list* cur; + struct string_list* next; + cur = options->include_paths; + while (cur) { + next = cur->next; + free(cur->string); + free(cur); + cur = next; + } + } + // Free options strings + free(options->input_path); + free(options->output_path); + free(options->plugin_path); + free(options->include_path); + free(options->source_map_file); + free(options->source_map_root); + // Reset our pointers + options->input_path = 0; + options->output_path = 0; + options->plugin_path = 0; + options->include_path = 0; + options->source_map_file = 0; + options->source_map_root = 0; + options->c_functions = 0; + options->c_importers = 0; + options->c_headers = 0; + options->plugin_paths = 0; + options->include_paths = 0; + } + + // helper function, not exported, only accessible locally + // sass_free_context is also defined in old sass_interface + static void sass_clear_context (struct Sass_Context* ctx) + { + if (ctx == 0) return; + // release the allocated memory (mostly via sass_copy_c_string) + if (ctx->output_string) free(ctx->output_string); + if (ctx->source_map_string) free(ctx->source_map_string); + if (ctx->error_message) free(ctx->error_message); + if (ctx->error_text) free(ctx->error_text); + if (ctx->error_json) free(ctx->error_json); + if (ctx->error_file) free(ctx->error_file); + free_string_array(ctx->included_files); + // play safe and reset properties + ctx->output_string = 0; + ctx->source_map_string = 0; + ctx->error_message = 0; + ctx->error_text = 0; + ctx->error_json = 0; + ctx->error_file = 0; + ctx->included_files = 0; + // debug leaked memory + #ifdef DEBUG_SHARED_PTR + SharedObj::dumpMemLeaks(); + #endif + // now clear the options + sass_clear_options(ctx); + } + + void ADDCALL sass_delete_compiler (struct Sass_Compiler* compiler) + { + if (compiler == 0) { + return; + } + Context* cpp_ctx = compiler->cpp_ctx; + if (cpp_ctx) delete(cpp_ctx); + compiler->cpp_ctx = NULL; + compiler->c_ctx = NULL; + compiler->root = NULL; + free(compiler); + } + + void ADDCALL sass_delete_options (struct Sass_Options* options) + { + sass_clear_options(options); free(options); + } + + // Deallocate all associated memory with file context + void ADDCALL sass_delete_file_context (struct Sass_File_Context* ctx) + { + // clear the context and free it + sass_clear_context(ctx); free(ctx); + } + // Deallocate all associated memory with data context + void ADDCALL sass_delete_data_context (struct Sass_Data_Context* ctx) + { + // clean the source string if it was not passed + // we reset this member once we start parsing + if (ctx->source_string) free(ctx->source_string); + // clear the context and free it + sass_clear_context(ctx); free(ctx); + } + + // Getters for sass context from specific implementations + struct Sass_Context* ADDCALL sass_file_context_get_context(struct Sass_File_Context* ctx) { return ctx; } + struct Sass_Context* ADDCALL sass_data_context_get_context(struct Sass_Data_Context* ctx) { return ctx; } + + // Getters for context options from Sass_Context + struct Sass_Options* ADDCALL sass_context_get_options(struct Sass_Context* ctx) { return ctx; } + struct Sass_Options* ADDCALL sass_file_context_get_options(struct Sass_File_Context* ctx) { return ctx; } + struct Sass_Options* ADDCALL sass_data_context_get_options(struct Sass_Data_Context* ctx) { return ctx; } + void ADDCALL sass_file_context_set_options (struct Sass_File_Context* ctx, struct Sass_Options* opt) { copy_options(ctx, opt); } + void ADDCALL sass_data_context_set_options (struct Sass_Data_Context* ctx, struct Sass_Options* opt) { copy_options(ctx, opt); } + + // Getters for Sass_Compiler options (get conected sass context) + enum Sass_Compiler_State ADDCALL sass_compiler_get_state(struct Sass_Compiler* compiler) { return compiler->state; } + struct Sass_Context* ADDCALL sass_compiler_get_context(struct Sass_Compiler* compiler) { return compiler->c_ctx; } + struct Sass_Options* ADDCALL sass_compiler_get_options(struct Sass_Compiler* compiler) { return compiler->c_ctx; } + // Getters for Sass_Compiler options (query import stack) + size_t ADDCALL sass_compiler_get_import_stack_size(struct Sass_Compiler* compiler) { return compiler->cpp_ctx->import_stack.size(); } + Sass_Import_Entry ADDCALL sass_compiler_get_last_import(struct Sass_Compiler* compiler) { return compiler->cpp_ctx->import_stack.back(); } + Sass_Import_Entry ADDCALL sass_compiler_get_import_entry(struct Sass_Compiler* compiler, size_t idx) { return compiler->cpp_ctx->import_stack[idx]; } + // Getters for Sass_Compiler options (query function stack) + size_t ADDCALL sass_compiler_get_callee_stack_size(struct Sass_Compiler* compiler) { return compiler->cpp_ctx->callee_stack.size(); } + Sass_Callee_Entry ADDCALL sass_compiler_get_last_callee(struct Sass_Compiler* compiler) { return &compiler->cpp_ctx->callee_stack.back(); } + Sass_Callee_Entry ADDCALL sass_compiler_get_callee_entry(struct Sass_Compiler* compiler, size_t idx) { return &compiler->cpp_ctx->callee_stack[idx]; } + + // Calculate the size of the stored null terminated array + size_t ADDCALL sass_context_get_included_files_size (struct Sass_Context* ctx) + { size_t l = 0; auto i = ctx->included_files; while (i && *i) { ++i; ++l; } return l; } + + // Create getter and setters for options + IMPLEMENT_SASS_OPTION_ACCESSOR(int, precision); + IMPLEMENT_SASS_OPTION_ACCESSOR(enum Sass_Output_Style, output_style); + IMPLEMENT_SASS_OPTION_ACCESSOR(bool, source_comments); + IMPLEMENT_SASS_OPTION_ACCESSOR(bool, source_map_embed); + IMPLEMENT_SASS_OPTION_ACCESSOR(bool, source_map_contents); + IMPLEMENT_SASS_OPTION_ACCESSOR(bool, source_map_file_urls); + IMPLEMENT_SASS_OPTION_ACCESSOR(bool, omit_source_map_url); + IMPLEMENT_SASS_OPTION_ACCESSOR(bool, is_indented_syntax_src); + IMPLEMENT_SASS_OPTION_ACCESSOR(Sass_Function_List, c_functions); + IMPLEMENT_SASS_OPTION_ACCESSOR(Sass_Importer_List, c_importers); + IMPLEMENT_SASS_OPTION_ACCESSOR(Sass_Importer_List, c_headers); + IMPLEMENT_SASS_OPTION_ACCESSOR(const char*, indent); + IMPLEMENT_SASS_OPTION_ACCESSOR(const char*, linefeed); + IMPLEMENT_SASS_OPTION_STRING_SETTER(const char*, plugin_path, 0); + IMPLEMENT_SASS_OPTION_STRING_SETTER(const char*, include_path, 0); + IMPLEMENT_SASS_OPTION_STRING_ACCESSOR(const char*, input_path, 0); + IMPLEMENT_SASS_OPTION_STRING_ACCESSOR(const char*, output_path, 0); + IMPLEMENT_SASS_OPTION_STRING_ACCESSOR(const char*, source_map_file, 0); + IMPLEMENT_SASS_OPTION_STRING_ACCESSOR(const char*, source_map_root, 0); + + // Create getter and setters for context + IMPLEMENT_SASS_CONTEXT_GETTER(int, error_status); + IMPLEMENT_SASS_CONTEXT_GETTER(const char*, error_json); + IMPLEMENT_SASS_CONTEXT_GETTER(const char*, error_message); + IMPLEMENT_SASS_CONTEXT_GETTER(const char*, error_text); + IMPLEMENT_SASS_CONTEXT_GETTER(const char*, error_file); + IMPLEMENT_SASS_CONTEXT_GETTER(size_t, error_line); + IMPLEMENT_SASS_CONTEXT_GETTER(size_t, error_column); + IMPLEMENT_SASS_CONTEXT_GETTER(const char*, error_src); + IMPLEMENT_SASS_CONTEXT_GETTER(const char*, output_string); + IMPLEMENT_SASS_CONTEXT_GETTER(const char*, source_map_string); + IMPLEMENT_SASS_CONTEXT_GETTER(char**, included_files); + + // Take ownership of memory (value on context is set to 0) + IMPLEMENT_SASS_CONTEXT_TAKER(char*, error_json); + IMPLEMENT_SASS_CONTEXT_TAKER(char*, error_message); + IMPLEMENT_SASS_CONTEXT_TAKER(char*, error_text); + IMPLEMENT_SASS_CONTEXT_TAKER(char*, error_file); + IMPLEMENT_SASS_CONTEXT_TAKER(char*, output_string); + IMPLEMENT_SASS_CONTEXT_TAKER(char*, source_map_string); + IMPLEMENT_SASS_CONTEXT_TAKER(char**, included_files); + + // Push function for include paths (no manipulation support for now) + void ADDCALL sass_option_push_include_path(struct Sass_Options* options, const char* path) + { + + struct string_list* include_path = (struct string_list*) calloc(1, sizeof(struct string_list)); + if (include_path == 0) return; + include_path->string = path ? sass_copy_c_string(path) : 0; + struct string_list* last = options->include_paths; + if (!options->include_paths) { + options->include_paths = include_path; + } else { + while (last->next) + last = last->next; + last->next = include_path; + } + + } + + // Push function for include paths (no manipulation support for now) + size_t ADDCALL sass_option_get_include_path_size(struct Sass_Options* options) + { + size_t len = 0; + struct string_list* cur = options->include_paths; + while (cur) { len ++; cur = cur->next; } + return len; + } + + // Push function for include paths (no manipulation support for now) + const char* ADDCALL sass_option_get_include_path(struct Sass_Options* options, size_t i) + { + struct string_list* cur = options->include_paths; + while (i) { i--; cur = cur->next; } + return cur->string; + } + + // Push function for plugin paths (no manipulation support for now) + void ADDCALL sass_option_push_plugin_path(struct Sass_Options* options, const char* path) + { + + struct string_list* plugin_path = (struct string_list*) calloc(1, sizeof(struct string_list)); + if (plugin_path == 0) return; + plugin_path->string = path ? sass_copy_c_string(path) : 0; + struct string_list* last = options->plugin_paths; + if (!options->plugin_paths) { + options->plugin_paths = plugin_path; + } else { + while (last->next) + last = last->next; + last->next = plugin_path; + } + + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_context.hpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_context.hpp new file mode 100644 index 0000000..8ae1fb1 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_context.hpp @@ -0,0 +1,129 @@ +#ifndef SASS_SASS_CONTEXT_H +#define SASS_SASS_CONTEXT_H + +#include "sass/base.h" +#include "sass/context.h" +#include "ast_fwd_decl.hpp" + +// sass config options structure +struct Sass_Options : Sass_Output_Options { + + // embed sourceMappingUrl as data uri + bool source_map_embed; + + // embed include contents in maps + bool source_map_contents; + + // create file urls for sources + bool source_map_file_urls; + + // Disable sourceMappingUrl in css output + bool omit_source_map_url; + + // Treat source_string as sass (as opposed to scss) + bool is_indented_syntax_src; + + // The input path is used for source map + // generation. It can be used to define + // something with string compilation or to + // overload the input file path. It is + // set to "stdin" for data contexts and + // to the input file on file contexts. + char* input_path; + + // The output path is used for source map + // generation. LibSass will not write to + // this file, it is just used to create + // information in source-maps etc. + char* output_path; + + // Colon-separated list of paths + // Semicolon-separated on Windows + // Maybe use array interface instead? + char* include_path; + char* plugin_path; + + // Include paths (linked string list) + struct string_list* include_paths; + // Plugin paths (linked string list) + struct string_list* plugin_paths; + + // Path to source map file + // Enables source map generation + // Used to create sourceMappingUrl + char* source_map_file; + + // Directly inserted in source maps + char* source_map_root; + + // Custom functions that can be called from sccs code + Sass_Function_List c_functions; + + // List of custom importers + Sass_Importer_List c_importers; + + // List of custom headers + Sass_Importer_List c_headers; + +}; + + +// base for all contexts +struct Sass_Context : Sass_Options +{ + + // store context type info + enum Sass_Input_Style type; + + // generated output data + char* output_string; + + // generated source map json + char* source_map_string; + + // error status + int error_status; + char* error_json; + char* error_text; + char* error_message; + // error position + char* error_file; + size_t error_line; + size_t error_column; + const char* error_src; + + // report imported files + char** included_files; + +}; + +// struct for file compilation +struct Sass_File_Context : Sass_Context { + + // no additional fields required + // input_path is already on options + +}; + +// struct for data compilation +struct Sass_Data_Context : Sass_Context { + + // provided source string + char* source_string; + char* srcmap_string; + +}; + +// link c and cpp context +struct Sass_Compiler { + // progress status + Sass_Compiler_State state; + // original c context + Sass_Context* c_ctx; + // Sass::Context + Sass::Context* cpp_ctx; + // Sass::Block + Sass::Block_Obj root; +}; + +#endif \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_functions.cpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_functions.cpp new file mode 100644 index 0000000..bfbf258 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_functions.cpp @@ -0,0 +1,207 @@ +#include "sass.hpp" +#include +#include "util.hpp" +#include "context.hpp" +#include "values.hpp" +#include "sass/functions.h" +#include "sass_functions.hpp" + +extern "C" { + using namespace Sass; + + Sass_Function_List ADDCALL sass_make_function_list(size_t length) + { + return (Sass_Function_List) calloc(length + 1, sizeof(Sass_Function_Entry)); + } + + Sass_Function_Entry ADDCALL sass_make_function(const char* signature, Sass_Function_Fn function, void* cookie) + { + Sass_Function_Entry cb = (Sass_Function_Entry) calloc(1, sizeof(Sass_Function)); + if (cb == 0) return 0; + cb->signature = sass_copy_c_string(signature); + cb->function = function; + cb->cookie = cookie; + return cb; + } + + void ADDCALL sass_delete_function(Sass_Function_Entry entry) + { + free(entry->signature); + free(entry); + } + + // Deallocator for the allocated memory + void ADDCALL sass_delete_function_list(Sass_Function_List list) + { + Sass_Function_List it = list; + if (list == 0) return; + while(*list) { + sass_delete_function(*list); + ++list; + } + free(it); + } + + // Setters and getters for callbacks on function lists + Sass_Function_Entry ADDCALL sass_function_get_list_entry(Sass_Function_List list, size_t pos) { return list[pos]; } + void sass_function_set_list_entry(Sass_Function_List list, size_t pos, Sass_Function_Entry cb) { list[pos] = cb; } + + const char* ADDCALL sass_function_get_signature(Sass_Function_Entry cb) { return cb->signature; } + Sass_Function_Fn ADDCALL sass_function_get_function(Sass_Function_Entry cb) { return cb->function; } + void* ADDCALL sass_function_get_cookie(Sass_Function_Entry cb) { return cb->cookie; } + + Sass_Importer_Entry ADDCALL sass_make_importer(Sass_Importer_Fn importer, double priority, void* cookie) + { + Sass_Importer_Entry cb = (Sass_Importer_Entry) calloc(1, sizeof(Sass_Importer)); + if (cb == 0) return 0; + cb->importer = importer; + cb->priority = priority; + cb->cookie = cookie; + return cb; + } + + Sass_Importer_Fn ADDCALL sass_importer_get_function(Sass_Importer_Entry cb) { return cb->importer; } + double ADDCALL sass_importer_get_priority (Sass_Importer_Entry cb) { return cb->priority; } + void* ADDCALL sass_importer_get_cookie(Sass_Importer_Entry cb) { return cb->cookie; } + + // Just in case we have some stray import structs + void ADDCALL sass_delete_importer (Sass_Importer_Entry cb) + { + free(cb); + } + + // Creator for sass custom importer function list + Sass_Importer_List ADDCALL sass_make_importer_list(size_t length) + { + return (Sass_Importer_List) calloc(length + 1, sizeof(Sass_Importer_Entry)); + } + + // Deallocator for the allocated memory + void ADDCALL sass_delete_importer_list(Sass_Importer_List list) + { + Sass_Importer_List it = list; + if (list == 0) return; + while(*list) { + sass_delete_importer(*list); + ++list; + } + free(it); + } + + Sass_Importer_Entry ADDCALL sass_importer_get_list_entry(Sass_Importer_List list, size_t idx) { return list[idx]; } + void ADDCALL sass_importer_set_list_entry(Sass_Importer_List list, size_t idx, Sass_Importer_Entry cb) { list[idx] = cb; } + + // Creator for sass custom importer return argument list + Sass_Import_List ADDCALL sass_make_import_list(size_t length) + { + return (Sass_Import**) calloc(length + 1, sizeof(Sass_Import*)); + } + + // Creator for a single import entry returned by the custom importer inside the list + // We take ownership of the memory for source and srcmap (freed when context is destroyd) + Sass_Import_Entry ADDCALL sass_make_import(const char* imp_path, const char* abs_path, char* source, char* srcmap) + { + Sass_Import* v = (Sass_Import*) calloc(1, sizeof(Sass_Import)); + if (v == 0) return 0; + v->imp_path = imp_path ? sass_copy_c_string(imp_path) : 0; + v->abs_path = abs_path ? sass_copy_c_string(abs_path) : 0; + v->source = source; + v->srcmap = srcmap; + v->error = 0; + v->line = -1; + v->column = -1; + return v; + } + + // Older style, but somehow still valid - keep around or deprecate? + Sass_Import_Entry ADDCALL sass_make_import_entry(const char* path, char* source, char* srcmap) + { + return sass_make_import(path, path, source, srcmap); + } + + // Upgrade a normal import entry to throw an error (original path can be re-used by error reporting) + Sass_Import_Entry ADDCALL sass_import_set_error(Sass_Import_Entry import, const char* error, size_t line, size_t col) + { + if (import == 0) return 0; + if (import->error) free(import->error); + import->error = error ? sass_copy_c_string(error) : 0; + import->line = line ? line : -1; + import->column = col ? col : -1; + return import; + } + + // Setters and getters for entries on the import list + void ADDCALL sass_import_set_list_entry(Sass_Import_List list, size_t idx, Sass_Import_Entry entry) { list[idx] = entry; } + Sass_Import_Entry ADDCALL sass_import_get_list_entry(Sass_Import_List list, size_t idx) { return list[idx]; } + + // Deallocator for the allocated memory + void ADDCALL sass_delete_import_list(Sass_Import_List list) + { + Sass_Import_List it = list; + if (list == 0) return; + while(*list) { + sass_delete_import(*list); + ++list; + } + free(it); + } + + // Just in case we have some stray import structs + void ADDCALL sass_delete_import(Sass_Import_Entry import) + { + free(import->imp_path); + free(import->abs_path); + free(import->source); + free(import->srcmap); + free(import->error); + free(import); + } + + // Getter for callee entry + const char* ADDCALL sass_callee_get_name(Sass_Callee_Entry entry) { return entry->name; } + const char* ADDCALL sass_callee_get_path(Sass_Callee_Entry entry) { return entry->path; } + size_t ADDCALL sass_callee_get_line(Sass_Callee_Entry entry) { return entry->line; } + size_t ADDCALL sass_callee_get_column(Sass_Callee_Entry entry) { return entry->column; } + enum Sass_Callee_Type ADDCALL sass_callee_get_type(Sass_Callee_Entry entry) { return entry->type; } + Sass_Env_Frame ADDCALL sass_callee_get_env (Sass_Callee_Entry entry) { return &entry->env; } + + // Getters and Setters for environments (lexical, local and global) + union Sass_Value* ADDCALL sass_env_get_lexical (Sass_Env_Frame env, const char* name) { + Expression_Ptr ex = Cast((*env->frame)[name]); + return ex != NULL ? ast_node_to_sass_value(ex) : NULL; + } + void ADDCALL sass_env_set_lexical (Sass_Env_Frame env, const char* name, union Sass_Value* val) { + (*env->frame)[name] = sass_value_to_ast_node(val); + } + union Sass_Value* ADDCALL sass_env_get_local (Sass_Env_Frame env, const char* name) { + Expression_Ptr ex = Cast(env->frame->get_local(name)); + return ex != NULL ? ast_node_to_sass_value(ex) : NULL; + } + void ADDCALL sass_env_set_local (Sass_Env_Frame env, const char* name, union Sass_Value* val) { + env->frame->set_local(name, sass_value_to_ast_node(val)); + } + union Sass_Value* ADDCALL sass_env_get_global (Sass_Env_Frame env, const char* name) { + Expression_Ptr ex = Cast(env->frame->get_global(name)); + return ex != NULL ? ast_node_to_sass_value(ex) : NULL; + } + void ADDCALL sass_env_set_global (Sass_Env_Frame env, const char* name, union Sass_Value* val) { + env->frame->set_global(name, sass_value_to_ast_node(val)); + } + + // Getter for import entry + const char* ADDCALL sass_import_get_imp_path(Sass_Import_Entry entry) { return entry->imp_path; } + const char* ADDCALL sass_import_get_abs_path(Sass_Import_Entry entry) { return entry->abs_path; } + const char* ADDCALL sass_import_get_source(Sass_Import_Entry entry) { return entry->source; } + const char* ADDCALL sass_import_get_srcmap(Sass_Import_Entry entry) { return entry->srcmap; } + + // Getter for import error entry + size_t ADDCALL sass_import_get_error_line(Sass_Import_Entry entry) { return entry->line; } + size_t ADDCALL sass_import_get_error_column(Sass_Import_Entry entry) { return entry->column; } + const char* ADDCALL sass_import_get_error_message(Sass_Import_Entry entry) { return entry->error; } + + // Explicit functions to take ownership of the memory + // Resets our own property since we do not know if it is still alive + char* ADDCALL sass_import_take_source(Sass_Import_Entry entry) { char* ptr = entry->source; entry->source = 0; return ptr; } + char* ADDCALL sass_import_take_srcmap(Sass_Import_Entry entry) { char* ptr = entry->srcmap; entry->srcmap = 0; return ptr; } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_functions.hpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_functions.hpp new file mode 100644 index 0000000..3b646d6 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_functions.hpp @@ -0,0 +1,50 @@ +#ifndef SASS_SASS_FUNCTIONS_H +#define SASS_SASS_FUNCTIONS_H + +#include "sass.h" +#include "environment.hpp" +#include "functions.hpp" + +// Struct to hold custom function callback +struct Sass_Function { + char* signature; + Sass_Function_Fn function; + void* cookie; +}; + +// External import entry +struct Sass_Import { + char* imp_path; // path as found in the import statement + char *abs_path; // path after importer has resolved it + char* source; + char* srcmap; + // error handling + char* error; + size_t line; + size_t column; +}; + +// External environments +struct Sass_Env { + // links to parent frames + Sass::Env* frame; +}; + +// External call entry +struct Sass_Callee { + const char* name; + const char* path; + size_t line; + size_t column; + enum Sass_Callee_Type type; + struct Sass_Env env; +}; + +// Struct to hold importer callback +struct Sass_Importer { + Sass_Importer_Fn importer; + double priority; + void* cookie; +}; + +#endif \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_util.cpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_util.cpp new file mode 100644 index 0000000..3aef2bc --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_util.cpp @@ -0,0 +1,149 @@ +#include "sass.hpp" +#include "node.hpp" + +namespace Sass { + + + /* + # This is the equivalent of ruby's Sass::Util.paths. + # + # Return an array of all possible paths through the given arrays. + # + # @param arrs [NodeCollection>] + # @return [NodeCollection>] + # + # @example + # paths([[1, 2], [3, 4], [5]]) #=> + # # [[1, 3, 5], + # # [2, 3, 5], + # # [1, 4, 5], + # # [2, 4, 5]] + + The following is the modified version of the ruby code that was more portable to C++. You + should be able to drop it into ruby 3.2.19 and get the same results from ruby sass. + + def paths(arrs) + // I changed the inject and maps to an iterative approach to make it easier to implement in C++ + loopStart = [[]] + + for arr in arrs do + permutations = [] + for e in arr do + for path in loopStart do + permutations.push(path + [e]) + end + end + loopStart = permutations + end + end + */ + Node paths(const Node& arrs) { + + Node loopStart = Node::createCollection(); + loopStart.collection()->push_back(Node::createCollection()); + + for (NodeDeque::iterator arrsIter = arrs.collection()->begin(), arrsEndIter = arrs.collection()->end(); + arrsIter != arrsEndIter; ++arrsIter) { + + Node& arr = *arrsIter; + + Node permutations = Node::createCollection(); + + for (NodeDeque::iterator arrIter = arr.collection()->begin(), arrIterEnd = arr.collection()->end(); + arrIter != arrIterEnd; ++arrIter) { + + Node& e = *arrIter; + + for (NodeDeque::iterator loopStartIter = loopStart.collection()->begin(), loopStartIterEnd = loopStart.collection()->end(); + loopStartIter != loopStartIterEnd; ++loopStartIter) { + + Node& path = *loopStartIter; + + Node newPermutation = Node::createCollection(); + newPermutation.got_line_feed = arr.got_line_feed; + newPermutation.plus(path); + newPermutation.collection()->push_back(e); + + permutations.collection()->push_back(newPermutation); + } + } + + loopStart = permutations; + } + + return loopStart; + } + + + /* + This is the equivalent of ruby sass' Sass::Util.flatten and [].flatten. + Sass::Util.flatten requires the number of levels to flatten, while + [].flatten doesn't and will flatten the entire array. This function + supports both. + + # Flattens the first `n` nested arrays. If n == -1, all arrays will be flattened + # + # @param arr [NodeCollection] The array to flatten + # @param n [int] The number of levels to flatten + # @return [NodeCollection] The flattened array + + The following is the modified version of the ruby code that was more portable to C++. You + should be able to drop it into ruby 3.2.19 and get the same results from ruby sass. + + def flatten(arr, n = -1) + if n != -1 and n == 0 then + return arr + end + + flattened = [] + + for e in arr do + if e.is_a?(Array) then + flattened.concat(flatten(e, n - 1)) + else + flattened << e + end + end + + return flattened + end + */ + Node flatten(Node& arr, int n) { + if (n != -1 && n == 0) { + return arr; + } + + Node flattened = Node::createCollection(); + if (arr.got_line_feed) flattened.got_line_feed = true; + + for (NodeDeque::iterator iter = arr.collection()->begin(), iterEnd = arr.collection()->end(); + iter != iterEnd; iter++) { + Node& e = *iter; + + // e has the lf set + if (e.isCollection()) { + + // e.collection().got_line_feed = e.got_line_feed; + Node recurseFlattened = flatten(e, n - 1); + + if(e.got_line_feed) { + flattened.got_line_feed = e.got_line_feed; + recurseFlattened.got_line_feed = e.got_line_feed; + } + + for(auto i : (*recurseFlattened.collection())) { + if (recurseFlattened.got_line_feed) { + + i.got_line_feed = true; + } + flattened.collection()->push_back(i); + } + + } else { + flattened.collection()->push_back(e); + } + } + + return flattened; + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_util.hpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_util.hpp new file mode 100644 index 0000000..816da5f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_util.hpp @@ -0,0 +1,256 @@ +#ifndef SASS_SASS_UTIL_H +#define SASS_SASS_UTIL_H + +#include "ast.hpp" +#include "node.hpp" +#include "debug.hpp" + +namespace Sass { + + + + + /* + This is for ports of functions in the Sass:Util module. + */ + + + /* + # Return a Node collection of all possible paths through the given Node collection of Node collections. + # + # @param arrs [NodeCollection>] + # @return [NodeCollection>] + # + # @example + # paths([[1, 2], [3, 4], [5]]) #=> + # # [[1, 3, 5], + # # [2, 3, 5], + # # [1, 4, 5], + # # [2, 4, 5]] + */ + Node paths(const Node& arrs); + + + /* + This class is a default implementation of a Node comparator that can be passed to the lcs function below. + It uses operator== for equality comparision. It then returns one if the Nodes are equal. + */ + class DefaultLcsComparator { + public: + bool operator()(const Node& one, const Node& two, Node& out) const { + // TODO: Is this the correct C++ interpretation? + // block ||= proc {|a, b| a == b && a} + if (one == two) { + out = one; + return true; + } + + return false; + } + }; + + + typedef std::vector > LCSTable; + + + /* + This is the equivalent of ruby's Sass::Util.lcs_backtrace. + + # Computes a single longest common subsequence for arrays x and y. + # Algorithm from http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Reading_out_an_LCS + */ + template + Node lcs_backtrace(const LCSTable& c, const Node& x, const Node& y, int i, int j, const ComparatorType& comparator) { + DEBUG_PRINTLN(LCS, "LCSBACK: X=" << x << " Y=" << y << " I=" << i << " J=" << j) + + if (i == 0 || j == 0) { + DEBUG_PRINTLN(LCS, "RETURNING EMPTY") + return Node::createCollection(); + } + + NodeDeque& xChildren = *(x.collection()); + NodeDeque& yChildren = *(y.collection()); + + Node compareOut = Node::createNil(); + if (comparator(xChildren[i], yChildren[j], compareOut)) { + DEBUG_PRINTLN(LCS, "RETURNING AFTER ELEM COMPARE") + Node result = lcs_backtrace(c, x, y, i - 1, j - 1, comparator); + result.collection()->push_back(compareOut); + return result; + } + + if (c[i][j - 1] > c[i - 1][j]) { + DEBUG_PRINTLN(LCS, "RETURNING AFTER TABLE COMPARE") + return lcs_backtrace(c, x, y, i, j - 1, comparator); + } + + DEBUG_PRINTLN(LCS, "FINAL RETURN") + return lcs_backtrace(c, x, y, i - 1, j, comparator); + } + + + /* + This is the equivalent of ruby's Sass::Util.lcs_table. + + # Calculates the memoization table for the Least Common Subsequence algorithm. + # Algorithm from http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Computing_the_length_of_the_LCS + */ + template + void lcs_table(const Node& x, const Node& y, const ComparatorType& comparator, LCSTable& out) { + DEBUG_PRINTLN(LCS, "LCSTABLE: X=" << x << " Y=" << y) + + NodeDeque& xChildren = *(x.collection()); + NodeDeque& yChildren = *(y.collection()); + + LCSTable c(xChildren.size(), std::vector(yChildren.size())); + + // These shouldn't be necessary since the vector will be initialized to 0 already. + // x.size.times {|i| c[i][0] = 0} + // y.size.times {|j| c[0][j] = 0} + + for (size_t i = 1; i < xChildren.size(); i++) { + for (size_t j = 1; j < yChildren.size(); j++) { + Node compareOut = Node::createNil(); + + if (comparator(xChildren[i], yChildren[j], compareOut)) { + c[i][j] = c[i - 1][j - 1] + 1; + } else { + c[i][j] = std::max(c[i][j - 1], c[i - 1][j]); + } + } + } + + out = c; + } + + + /* + This is the equivalent of ruby's Sass::Util.lcs. + + # Computes a single longest common subsequence for `x` and `y`. + # If there are more than one longest common subsequences, + # the one returned is that which starts first in `x`. + + # @param x [NodeCollection] + # @param y [NodeCollection] + # @comparator An equality check between elements of `x` and `y`. + # @return [NodeCollection] The LCS + + http://en.wikipedia.org/wiki/Longest_common_subsequence_problem + */ + template + Node lcs(Node& x, Node& y, const ComparatorType& comparator) { + DEBUG_PRINTLN(LCS, "LCS: X=" << x << " Y=" << y) + + Node newX = Node::createCollection(); + newX.collection()->push_back(Node::createNil()); + newX.plus(x); + + Node newY = Node::createCollection(); + newY.collection()->push_back(Node::createNil()); + newY.plus(y); + + LCSTable table; + lcs_table(newX, newY, comparator, table); + + return lcs_backtrace(table, newX, newY, static_cast(newX.collection()->size()) - 1, static_cast(newY.collection()->size()) - 1, comparator); + } + + + /* + This is the equivalent of ruby sass' Sass::Util.flatten and [].flatten. + Sass::Util.flatten requires the number of levels to flatten, while + [].flatten doesn't and will flatten the entire array. This function + supports both. + + # Flattens the first `n` nested arrays. If n == -1, all arrays will be flattened + # + # @param arr [NodeCollection] The array to flatten + # @param n [int] The number of levels to flatten + # @return [NodeCollection] The flattened array + */ + Node flatten(Node& arr, int n = -1); + + + /* + This is the equivalent of ruby's Sass::Util.group_by_to_a. + + # Performs the equivalent of `enum.group_by.to_a`, but with a guaranteed + # order. Unlike [#hash_to_a], the resulting order isn't sorted key order; + # instead, it's the same order as `#group_by` has under Ruby 1.9 (key + # appearance order). + # + # @param enum [Enumerable] + # @return [Array<[Object, Array]>] An array of pairs. + + TODO: update @param and @return once I know what those are. + + The following is the modified version of the ruby code that was more portable to C++. You + should be able to drop it into ruby 3.2.19 and get the same results from ruby sass. + + def group_by_to_a(enum, &block) + order = {} + + arr = [] + + grouped = {} + + for e in enum do + key = block[e] + unless order.include?(key) + order[key] = order.size + end + + if not grouped.has_key?(key) then + grouped[key] = [e] + else + grouped[key].push(e) + end + end + + grouped.each do |key, vals| + arr[order[key]] = [key, vals] + end + + arr + end + + */ + template + void group_by_to_a(std::vector& enumeration, KeyFunctorType& keyFunc, std::vector > >& arr /*out*/) { + + std::map order; + + std::map > grouped; + + for (typename std::vector::iterator enumIter = enumeration.begin(), enumIterEnd = enumeration.end(); enumIter != enumIterEnd; enumIter++) { + EnumType& e = *enumIter; + + KeyType key = keyFunc(e); + + if (grouped.find(key->hash()) == grouped.end()) { + order.insert(std::make_pair((unsigned int)order.size(), key)); + + std::vector newCollection; + newCollection.push_back(e); + grouped.insert(std::make_pair(key->hash(), newCollection)); + } else { + std::vector& collection = grouped.at(key->hash()); + collection.push_back(e); + } + } + + for (unsigned int index = 0; index < order.size(); index++) { + KeyType& key = order.at(index); + std::vector& values = grouped.at(key->hash()); + + std::pair > grouping = std::make_pair(key, values); + + arr.push_back(grouping); + } + } + + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_values.cpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_values.cpp new file mode 100644 index 0000000..34c591a --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_values.cpp @@ -0,0 +1,357 @@ +#include "sass.hpp" +#include +#include +#include "util.hpp" +#include "eval.hpp" +#include "values.hpp" +#include "operators.hpp" +#include "sass/values.h" +#include "sass_values.hpp" + +extern "C" { + using namespace Sass; + + // Return the sass tag for a generic sass value + enum Sass_Tag ADDCALL sass_value_get_tag(const union Sass_Value* v) { return v->unknown.tag; } + + // Check value for specified type + bool ADDCALL sass_value_is_null(const union Sass_Value* v) { return v->unknown.tag == SASS_NULL; } + bool ADDCALL sass_value_is_number(const union Sass_Value* v) { return v->unknown.tag == SASS_NUMBER; } + bool ADDCALL sass_value_is_string(const union Sass_Value* v) { return v->unknown.tag == SASS_STRING; } + bool ADDCALL sass_value_is_boolean(const union Sass_Value* v) { return v->unknown.tag == SASS_BOOLEAN; } + bool ADDCALL sass_value_is_color(const union Sass_Value* v) { return v->unknown.tag == SASS_COLOR; } + bool ADDCALL sass_value_is_list(const union Sass_Value* v) { return v->unknown.tag == SASS_LIST; } + bool ADDCALL sass_value_is_map(const union Sass_Value* v) { return v->unknown.tag == SASS_MAP; } + bool ADDCALL sass_value_is_error(const union Sass_Value* v) { return v->unknown.tag == SASS_ERROR; } + bool ADDCALL sass_value_is_warning(const union Sass_Value* v) { return v->unknown.tag == SASS_WARNING; } + + // Getters and setters for Sass_Number + double ADDCALL sass_number_get_value(const union Sass_Value* v) { return v->number.value; } + void ADDCALL sass_number_set_value(union Sass_Value* v, double value) { v->number.value = value; } + const char* ADDCALL sass_number_get_unit(const union Sass_Value* v) { return v->number.unit; } + void ADDCALL sass_number_set_unit(union Sass_Value* v, char* unit) { v->number.unit = unit; } + + // Getters and setters for Sass_String + const char* ADDCALL sass_string_get_value(const union Sass_Value* v) { return v->string.value; } + void ADDCALL sass_string_set_value(union Sass_Value* v, char* value) { v->string.value = value; } + bool ADDCALL sass_string_is_quoted(const union Sass_Value* v) { return v->string.quoted; } + void ADDCALL sass_string_set_quoted(union Sass_Value* v, bool quoted) { v->string.quoted = quoted; } + + // Getters and setters for Sass_Boolean + bool ADDCALL sass_boolean_get_value(const union Sass_Value* v) { return v->boolean.value; } + void ADDCALL sass_boolean_set_value(union Sass_Value* v, bool value) { v->boolean.value = value; } + + // Getters and setters for Sass_Color + double ADDCALL sass_color_get_r(const union Sass_Value* v) { return v->color.r; } + void ADDCALL sass_color_set_r(union Sass_Value* v, double r) { v->color.r = r; } + double ADDCALL sass_color_get_g(const union Sass_Value* v) { return v->color.g; } + void ADDCALL sass_color_set_g(union Sass_Value* v, double g) { v->color.g = g; } + double ADDCALL sass_color_get_b(const union Sass_Value* v) { return v->color.b; } + void ADDCALL sass_color_set_b(union Sass_Value* v, double b) { v->color.b = b; } + double ADDCALL sass_color_get_a(const union Sass_Value* v) { return v->color.a; } + void ADDCALL sass_color_set_a(union Sass_Value* v, double a) { v->color.a = a; } + + // Getters and setters for Sass_List + size_t ADDCALL sass_list_get_length(const union Sass_Value* v) { return v->list.length; } + enum Sass_Separator ADDCALL sass_list_get_separator(const union Sass_Value* v) { return v->list.separator; } + void ADDCALL sass_list_set_separator(union Sass_Value* v, enum Sass_Separator separator) { v->list.separator = separator; } + bool ADDCALL sass_list_get_is_bracketed(const union Sass_Value* v) { return v->list.is_bracketed; } + void ADDCALL sass_list_set_is_bracketed(union Sass_Value* v, bool is_bracketed) { v->list.is_bracketed = is_bracketed; } + // Getters and setters for Sass_List values + union Sass_Value* ADDCALL sass_list_get_value(const union Sass_Value* v, size_t i) { return v->list.values[i]; } + void ADDCALL sass_list_set_value(union Sass_Value* v, size_t i, union Sass_Value* value) { v->list.values[i] = value; } + + // Getters and setters for Sass_Map + size_t ADDCALL sass_map_get_length(const union Sass_Value* v) { return v->map.length; } + // Getters and setters for Sass_List keys and values + union Sass_Value* ADDCALL sass_map_get_key(const union Sass_Value* v, size_t i) { return v->map.pairs[i].key; } + union Sass_Value* ADDCALL sass_map_get_value(const union Sass_Value* v, size_t i) { return v->map.pairs[i].value; } + void ADDCALL sass_map_set_key(union Sass_Value* v, size_t i, union Sass_Value* key) { v->map.pairs[i].key = key; } + void ADDCALL sass_map_set_value(union Sass_Value* v, size_t i, union Sass_Value* val) { v->map.pairs[i].value = val; } + + // Getters and setters for Sass_Error + char* ADDCALL sass_error_get_message(const union Sass_Value* v) { return v->error.message; }; + void ADDCALL sass_error_set_message(union Sass_Value* v, char* msg) { v->error.message = msg; }; + + // Getters and setters for Sass_Warning + char* ADDCALL sass_warning_get_message(const union Sass_Value* v) { return v->warning.message; }; + void ADDCALL sass_warning_set_message(union Sass_Value* v, char* msg) { v->warning.message = msg; }; + + // Creator functions for all value types + + union Sass_Value* ADDCALL sass_make_boolean(bool val) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->boolean.tag = SASS_BOOLEAN; + v->boolean.value = val; + return v; + } + + union Sass_Value* ADDCALL sass_make_number(double val, const char* unit) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->number.tag = SASS_NUMBER; + v->number.value = val; + v->number.unit = unit ? sass_copy_c_string(unit) : 0; + if (v->number.unit == 0) { free(v); return 0; } + return v; + } + + union Sass_Value* ADDCALL sass_make_color(double r, double g, double b, double a) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->color.tag = SASS_COLOR; + v->color.r = r; + v->color.g = g; + v->color.b = b; + v->color.a = a; + return v; + } + + union Sass_Value* ADDCALL sass_make_string(const char* val) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->string.quoted = false; + v->string.tag = SASS_STRING; + v->string.value = val ? sass_copy_c_string(val) : 0; + if (v->string.value == 0) { free(v); return 0; } + return v; + } + + union Sass_Value* ADDCALL sass_make_qstring(const char* val) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->string.quoted = true; + v->string.tag = SASS_STRING; + v->string.value = val ? sass_copy_c_string(val) : 0; + if (v->string.value == 0) { free(v); return 0; } + return v; + } + + union Sass_Value* ADDCALL sass_make_list(size_t len, enum Sass_Separator sep, bool is_bracketed) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->list.tag = SASS_LIST; + v->list.length = len; + v->list.separator = sep; + v->list.is_bracketed = is_bracketed; + v->list.values = (union Sass_Value**) calloc(len, sizeof(union Sass_Value*)); + if (v->list.values == 0) { free(v); return 0; } + return v; + } + + union Sass_Value* ADDCALL sass_make_map(size_t len) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->map.tag = SASS_MAP; + v->map.length = len; + v->map.pairs = (struct Sass_MapPair*) calloc(len, sizeof(struct Sass_MapPair)); + if (v->map.pairs == 0) { free(v); return 0; } + return v; + } + + union Sass_Value* ADDCALL sass_make_null(void) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->null.tag = SASS_NULL; + return v; + } + + union Sass_Value* ADDCALL sass_make_error(const char* msg) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->error.tag = SASS_ERROR; + v->error.message = msg ? sass_copy_c_string(msg) : 0; + if (v->error.message == 0) { free(v); return 0; } + return v; + } + + union Sass_Value* ADDCALL sass_make_warning(const char* msg) + { + union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value)); + if (v == 0) return 0; + v->warning.tag = SASS_WARNING; + v->warning.message = msg ? sass_copy_c_string(msg) : 0; + if (v->warning.message == 0) { free(v); return 0; } + return v; + } + + // will free all associated sass values + void ADDCALL sass_delete_value(union Sass_Value* val) { + + size_t i; + if (val == 0) return; + switch(val->unknown.tag) { + case SASS_NULL: { + } break; + case SASS_BOOLEAN: { + } break; + case SASS_NUMBER: { + free(val->number.unit); + } break; + case SASS_COLOR: { + } break; + case SASS_STRING: { + free(val->string.value); + } break; + case SASS_LIST: { + for (i=0; ilist.length; i++) { + sass_delete_value(val->list.values[i]); + } + free(val->list.values); + } break; + case SASS_MAP: { + for (i=0; imap.length; i++) { + sass_delete_value(val->map.pairs[i].key); + sass_delete_value(val->map.pairs[i].value); + } + free(val->map.pairs); + } break; + case SASS_ERROR: { + free(val->error.message); + } break; + case SASS_WARNING: { + free(val->error.message); + } break; + default: break; + } + + free(val); + + } + + // Make a deep cloned copy of the given sass value + union Sass_Value* ADDCALL sass_clone_value (const union Sass_Value* val) + { + + size_t i; + if (val == 0) return 0; + switch(val->unknown.tag) { + case SASS_NULL: { + return sass_make_null(); + } + case SASS_BOOLEAN: { + return sass_make_boolean(val->boolean.value); + } + case SASS_NUMBER: { + return sass_make_number(val->number.value, val->number.unit); + } + case SASS_COLOR: { + return sass_make_color(val->color.r, val->color.g, val->color.b, val->color.a); + } + case SASS_STRING: { + return sass_string_is_quoted(val) ? sass_make_qstring(val->string.value) : sass_make_string(val->string.value); + } + case SASS_LIST: { + union Sass_Value* list = sass_make_list(val->list.length, val->list.separator, val->list.is_bracketed); + for (i = 0; i < list->list.length; i++) { + list->list.values[i] = sass_clone_value(val->list.values[i]); + } + return list; + } + case SASS_MAP: { + union Sass_Value* map = sass_make_map(val->map.length); + for (i = 0; i < val->map.length; i++) { + map->map.pairs[i].key = sass_clone_value(val->map.pairs[i].key); + map->map.pairs[i].value = sass_clone_value(val->map.pairs[i].value); + } + return map; + } + case SASS_ERROR: { + return sass_make_error(val->error.message); + } + case SASS_WARNING: { + return sass_make_warning(val->warning.message); + } + default: break; + } + + return 0; + + } + + union Sass_Value* ADDCALL sass_value_stringify (const union Sass_Value* v, bool compressed, int precision) + { + Value_Obj val = sass_value_to_ast_node(v); + Sass_Inspect_Options options(compressed ? COMPRESSED : NESTED, precision); + std::string str(val->to_string(options)); + return sass_make_qstring(str.c_str()); + } + + union Sass_Value* ADDCALL sass_value_op (enum Sass_OP op, const union Sass_Value* a, const union Sass_Value* b) + { + + Sass::Value_Ptr rv; + + try { + + Value_Obj lhs = sass_value_to_ast_node(a); + Value_Obj rhs = sass_value_to_ast_node(b); + struct Sass_Inspect_Options options(NESTED, 5); + + // see if it's a relational expression + switch(op) { + case Sass_OP::EQ: return sass_make_boolean(Operators::eq(lhs, rhs)); + case Sass_OP::NEQ: return sass_make_boolean(Operators::neq(lhs, rhs)); + case Sass_OP::GT: return sass_make_boolean(Operators::gt(lhs, rhs)); + case Sass_OP::GTE: return sass_make_boolean(Operators::gte(lhs, rhs)); + case Sass_OP::LT: return sass_make_boolean(Operators::lt(lhs, rhs)); + case Sass_OP::LTE: return sass_make_boolean(Operators::lte(lhs, rhs)); + case Sass_OP::AND: return ast_node_to_sass_value(lhs->is_false() ? lhs : rhs); + case Sass_OP::OR: return ast_node_to_sass_value(lhs->is_false() ? rhs : lhs); + default: break; + } + + if (sass_value_is_number(a) && sass_value_is_number(b)) { + Number_Ptr_Const l_n = Cast(lhs); + Number_Ptr_Const r_n = Cast(rhs); + rv = Operators::op_numbers(op, *l_n, *r_n, options, l_n->pstate()); + } + else if (sass_value_is_number(a) && sass_value_is_color(a)) { + Number_Ptr_Const l_n = Cast(lhs); + Color_Ptr_Const r_c = Cast(rhs); + rv = Operators::op_number_color(op, *l_n, *r_c, options, l_n->pstate()); + } + else if (sass_value_is_color(a) && sass_value_is_number(b)) { + Color_Ptr_Const l_c = Cast(lhs); + Number_Ptr_Const r_n = Cast(rhs); + rv = Operators::op_color_number(op, *l_c, *r_n, options, l_c->pstate()); + } + else if (sass_value_is_color(a) && sass_value_is_color(b)) { + Color_Ptr_Const l_c = Cast(lhs); + Color_Ptr_Const r_c = Cast(rhs); + rv = Operators::op_colors(op, *l_c, *r_c, options, l_c->pstate()); + } + else /* convert other stuff to string and apply operation */ { + Value_Ptr l_v = Cast(lhs); + Value_Ptr r_v = Cast(rhs); + rv = Operators::op_strings(op, *l_v, *r_v, options, l_v->pstate()); + } + + // ToDo: maybe we should should return null value? + if (!rv) return sass_make_error("invalid return value"); + + // convert result back to ast node + return ast_node_to_sass_value(rv); + + } + + // simply pass the error message back to the caller for now + catch (Exception::InvalidSass& e) { return sass_make_error(e.what()); } + catch (std::bad_alloc&) { return sass_make_error("memory exhausted"); } + catch (std::exception& e) { return sass_make_error(e.what()); } + catch (std::string& e) { return sass_make_error(e.c_str()); } + catch (const char* e) { return sass_make_error(e); } + catch (...) { return sass_make_error("unknown"); } + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/sass_values.hpp b/mybulma/node_modules/node-sass/src/libsass/src/sass_values.hpp new file mode 100644 index 0000000..9aa5cdb --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/sass_values.hpp @@ -0,0 +1,82 @@ +#ifndef SASS_SASS_VALUES_H +#define SASS_SASS_VALUES_H + +#include "sass.h" + +struct Sass_Unknown { + enum Sass_Tag tag; +}; + +struct Sass_Boolean { + enum Sass_Tag tag; + bool value; +}; + +struct Sass_Number { + enum Sass_Tag tag; + double value; + char* unit; +}; + +struct Sass_Color { + enum Sass_Tag tag; + double r; + double g; + double b; + double a; +}; + +struct Sass_String { + enum Sass_Tag tag; + bool quoted; + char* value; +}; + +struct Sass_List { + enum Sass_Tag tag; + enum Sass_Separator separator; + bool is_bracketed; + size_t length; + // null terminated "array" + union Sass_Value** values; +}; + +struct Sass_Map { + enum Sass_Tag tag; + size_t length; + struct Sass_MapPair* pairs; +}; + +struct Sass_Null { + enum Sass_Tag tag; +}; + +struct Sass_Error { + enum Sass_Tag tag; + char* message; +}; + +struct Sass_Warning { + enum Sass_Tag tag; + char* message; +}; + +union Sass_Value { + struct Sass_Unknown unknown; + struct Sass_Boolean boolean; + struct Sass_Number number; + struct Sass_Color color; + struct Sass_String string; + struct Sass_List list; + struct Sass_Map map; + struct Sass_Null null; + struct Sass_Error error; + struct Sass_Warning warning; +}; + +struct Sass_MapPair { + union Sass_Value* key; + union Sass_Value* value; +}; + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/source_map.cpp b/mybulma/node_modules/node-sass/src/libsass/src/source_map.cpp new file mode 100644 index 0000000..c171a3f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/source_map.cpp @@ -0,0 +1,195 @@ +#include "sass.hpp" +#include +#include +#include +#include + +#include "ast.hpp" +#include "json.hpp" +#include "context.hpp" +#include "position.hpp" +#include "source_map.hpp" + +namespace Sass { + SourceMap::SourceMap() : current_position(0, 0, 0), file("stdin") { } + SourceMap::SourceMap(const std::string& file) : current_position(0, 0, 0), file(file) { } + + std::string SourceMap::render_srcmap(Context &ctx) { + + const bool include_sources = ctx.c_options.source_map_contents; + const std::vector links = ctx.srcmap_links; + const std::vector& sources(ctx.resources); + + JsonNode* json_srcmap = json_mkobject(); + + json_append_member(json_srcmap, "version", json_mknumber(3)); + + const char *file_name = file.c_str(); + JsonNode *json_file_name = json_mkstring(file_name); + json_append_member(json_srcmap, "file", json_file_name); + + // pass-through sourceRoot option + if (!ctx.source_map_root.empty()) { + JsonNode* root = json_mkstring(ctx.source_map_root.c_str()); + json_append_member(json_srcmap, "sourceRoot", root); + } + + JsonNode *json_sources = json_mkarray(); + for (size_t i = 0; i < source_index.size(); ++i) { + std::string source(links[source_index[i]]); + if (ctx.c_options.source_map_file_urls) { + source = File::rel2abs(source); + // check for windows abs path + if (source[0] == '/') { + // ends up with three slashes + source = "file://" + source; + } else { + // needs an additional slash + source = "file:///" + source; + } + } + const char* source_name = source.c_str(); + JsonNode *json_source_name = json_mkstring(source_name); + json_append_element(json_sources, json_source_name); + } + json_append_member(json_srcmap, "sources", json_sources); + + if (include_sources && source_index.size()) { + JsonNode *json_contents = json_mkarray(); + for (size_t i = 0; i < source_index.size(); ++i) { + const Resource& resource(sources[source_index[i]]); + JsonNode *json_content = json_mkstring(resource.contents); + json_append_element(json_contents, json_content); + } + json_append_member(json_srcmap, "sourcesContent", json_contents); + } + + JsonNode *json_names = json_mkarray(); + // so far we have no implementation for names + // no problem as we do not alter any identifiers + json_append_member(json_srcmap, "names", json_names); + + std::string mappings = serialize_mappings(); + JsonNode *json_mappings = json_mkstring(mappings.c_str()); + json_append_member(json_srcmap, "mappings", json_mappings); + + char *str = json_stringify(json_srcmap, "\t"); + std::string result = std::string(str); + free(str); + json_delete(json_srcmap); + return result; + } + + std::string SourceMap::serialize_mappings() { + std::string result = ""; + + size_t previous_generated_line = 0; + size_t previous_generated_column = 0; + size_t previous_original_line = 0; + size_t previous_original_column = 0; + size_t previous_original_file = 0; + for (size_t i = 0; i < mappings.size(); ++i) { + const size_t generated_line = mappings[i].generated_position.line; + const size_t generated_column = mappings[i].generated_position.column; + const size_t original_line = mappings[i].original_position.line; + const size_t original_column = mappings[i].original_position.column; + const size_t original_file = mappings[i].original_position.file; + + if (generated_line != previous_generated_line) { + previous_generated_column = 0; + if (generated_line > previous_generated_line) { + result += std::string(generated_line - previous_generated_line, ';'); + previous_generated_line = generated_line; + } + } + else if (i > 0) { + result += ","; + } + + // generated column + result += base64vlq.encode(static_cast(generated_column) - static_cast(previous_generated_column)); + previous_generated_column = generated_column; + // file + result += base64vlq.encode(static_cast(original_file) - static_cast(previous_original_file)); + previous_original_file = original_file; + // source line + result += base64vlq.encode(static_cast(original_line) - static_cast(previous_original_line)); + previous_original_line = original_line; + // source column + result += base64vlq.encode(static_cast(original_column) - static_cast(previous_original_column)); + previous_original_column = original_column; + } + + return result; + } + + void SourceMap::prepend(const OutputBuffer& out) + { + Offset size(out.smap.current_position); + for (Mapping mapping : out.smap.mappings) { + if (mapping.generated_position.line > size.line) { + throw(std::runtime_error("prepend sourcemap has illegal line")); + } + if (mapping.generated_position.line == size.line) { + if (mapping.generated_position.column > size.column) { + throw(std::runtime_error("prepend sourcemap has illegal column")); + } + } + } + // adjust the buffer offset + prepend(Offset(out.buffer)); + // now add the new mappings + VECTOR_UNSHIFT(mappings, out.smap.mappings); + } + + void SourceMap::append(const OutputBuffer& out) + { + append(Offset(out.buffer)); + } + + void SourceMap::prepend(const Offset& offset) + { + if (offset.line != 0 || offset.column != 0) { + for (Mapping& mapping : mappings) { + // move stuff on the first old line + if (mapping.generated_position.line == 0) { + mapping.generated_position.column += offset.column; + } + // make place for the new lines + mapping.generated_position.line += offset.line; + } + } + if (current_position.line == 0) { + current_position.column += offset.column; + } + current_position.line += offset.line; + } + + void SourceMap::append(const Offset& offset) + { + current_position += offset; + } + + void SourceMap::add_open_mapping(const AST_Node_Ptr node) + { + mappings.push_back(Mapping(node->pstate(), current_position)); + } + + void SourceMap::add_close_mapping(const AST_Node_Ptr node) + { + mappings.push_back(Mapping(node->pstate() + node->pstate().offset, current_position)); + } + + ParserState SourceMap::remap(const ParserState& pstate) { + for (size_t i = 0; i < mappings.size(); ++i) { + if ( + mappings[i].generated_position.file == pstate.file && + mappings[i].generated_position.line == pstate.line && + mappings[i].generated_position.column == pstate.column + ) return ParserState(pstate.path, pstate.src, mappings[i].original_position, pstate.offset); + } + return ParserState(pstate.path, pstate.src, Position(-1, -1, -1), Offset(0, 0)); + + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/source_map.hpp b/mybulma/node_modules/node-sass/src/libsass/src/source_map.hpp new file mode 100644 index 0000000..0778564 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/source_map.hpp @@ -0,0 +1,62 @@ +#ifndef SASS_SOURCE_MAP_H +#define SASS_SOURCE_MAP_H + +#include +#include + +#include "ast_fwd_decl.hpp" +#include "base64vlq.hpp" +#include "position.hpp" +#include "mapping.hpp" + +#define VECTOR_PUSH(vec, ins) vec.insert(vec.end(), ins.begin(), ins.end()) +#define VECTOR_UNSHIFT(vec, ins) vec.insert(vec.begin(), ins.begin(), ins.end()) + +namespace Sass { + + class Context; + class OutputBuffer; + + class SourceMap { + + public: + std::vector source_index; + SourceMap(); + SourceMap(const std::string& file); + + void append(const Offset& offset); + void prepend(const Offset& offset); + void append(const OutputBuffer& out); + void prepend(const OutputBuffer& out); + void add_open_mapping(const AST_Node_Ptr node); + void add_close_mapping(const AST_Node_Ptr node); + + std::string render_srcmap(Context &ctx); + ParserState remap(const ParserState& pstate); + + private: + + std::string serialize_mappings(); + + std::vector mappings; + Position current_position; +public: + std::string file; +private: + Base64VLQ base64vlq; + }; + + class OutputBuffer { + public: + OutputBuffer(void) + : buffer(""), + smap() + { } + public: + std::string buffer; + SourceMap smap; + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/subset_map.cpp b/mybulma/node_modules/node-sass/src/libsass/src/subset_map.cpp new file mode 100644 index 0000000..24513e4 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/subset_map.cpp @@ -0,0 +1,55 @@ +#include "sass.hpp" +#include "ast.hpp" +#include "subset_map.hpp" + +namespace Sass { + + void Subset_Map::put(const Compound_Selector_Obj& sel, const SubSetMapPair& value) + { + if (sel->empty()) throw std::runtime_error("internal error: subset map keys may not be empty"); + size_t index = values_.size(); + values_.push_back(value); + for (size_t i = 0, S = sel->length(); i < S; ++i) + { + hash_[(*sel)[i]].push_back(std::make_pair(sel, index)); + } + } + + std::vector Subset_Map::get_kv(const Compound_Selector_Obj& sel) + { + SimpleSelectorDict dict(sel->begin(), sel->end()); // XXX Set + std::vector indices; + for (size_t i = 0, S = sel->length(); i < S; ++i) { + if (!hash_.count((*sel)[i])) { + continue; + } + const std::vector >& subsets = hash_[(*sel)[i]]; + for (const std::pair& item : subsets) { + bool include = true; + for (const Simple_Selector_Obj& it : item.first->elements()) { + auto found = dict.find(it); + if (found == dict.end()) { + include = false; + break; + } + } + if (include) indices.push_back(item.second); + } + } + sort(indices.begin(), indices.end()); + std::vector::iterator indices_end = unique(indices.begin(), indices.end()); + indices.resize(distance(indices.begin(), indices_end)); + + std::vector results; + for (size_t i = 0, S = indices.size(); i < S; ++i) { + results.push_back(values_[indices[i]]); + } + return results; + } + + std::vector Subset_Map::get_v(const Compound_Selector_Obj& sel) + { + return get_kv(sel); + } + +} \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/src/subset_map.hpp b/mybulma/node_modules/node-sass/src/libsass/src/subset_map.hpp new file mode 100644 index 0000000..5c091e6 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/subset_map.hpp @@ -0,0 +1,76 @@ +#ifndef SASS_SUBSET_MAP_H +#define SASS_SUBSET_MAP_H + +#include +#include +#include +#include +#include + +#include "ast_fwd_decl.hpp" + + +// #include +// #include +// template +// std::string vector_to_string(std::vector v) +// { +// std::stringstream buffer; +// buffer << "["; + +// if (!v.empty()) +// { buffer << v[0]; } +// else +// { buffer << "]"; } + +// if (v.size() == 1) +// { buffer << "]"; } +// else +// { +// for (size_t i = 1, S = v.size(); i < S; ++i) buffer << ", " << v[i]; +// buffer << "]"; +// } + +// return buffer.str(); +// } + +// template +// std::string set_to_string(set v) +// { +// std::stringstream buffer; +// buffer << "["; +// typename std::set::iterator i = v.begin(); +// if (!v.empty()) +// { buffer << *i; } +// else +// { buffer << "]"; } + +// if (v.size() == 1) +// { buffer << "]"; } +// else +// { +// for (++i; i != v.end(); ++i) buffer << ", " << *i; +// buffer << "]"; +// } + +// return buffer.str(); +// } + +namespace Sass { + + class Subset_Map { + private: + std::vector values_; + std::map >, OrderNodes > hash_; + public: + void put(const Compound_Selector_Obj& sel, const SubSetMapPair& value); + std::vector get_kv(const Compound_Selector_Obj& s); + std::vector get_v(const Compound_Selector_Obj& s); + bool empty() { return values_.empty(); } + void clear() { values_.clear(); hash_.clear(); } + const std::vector values(void) { return values_; } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/support/libsass.pc.in b/mybulma/node_modules/node-sass/src/libsass/src/support/libsass.pc.in new file mode 100644 index 0000000..d201bfa --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/support/libsass.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libsass +URL: https://github.com/sass/libsass +Description: A C implementation of a Sass compiler +Version: @VERSION@ +Libs: -L${libdir} -lsass +Cflags: -I${includedir} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/to_c.cpp b/mybulma/node_modules/node-sass/src/libsass/src/to_c.cpp new file mode 100644 index 0000000..8a6ea8d --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/to_c.cpp @@ -0,0 +1,74 @@ +#include "sass.hpp" +#include "to_c.hpp" +#include "ast.hpp" + +namespace Sass { + + union Sass_Value* To_C::fallback_impl(AST_Node_Ptr n) + { return sass_make_error("unknown type for C-API"); } + + union Sass_Value* To_C::operator()(Boolean_Ptr b) + { return sass_make_boolean(b->value()); } + + union Sass_Value* To_C::operator()(Number_Ptr n) + { return sass_make_number(n->value(), n->unit().c_str()); } + + union Sass_Value* To_C::operator()(Custom_Warning_Ptr w) + { return sass_make_warning(w->message().c_str()); } + + union Sass_Value* To_C::operator()(Custom_Error_Ptr e) + { return sass_make_error(e->message().c_str()); } + + union Sass_Value* To_C::operator()(Color_Ptr c) + { return sass_make_color(c->r(), c->g(), c->b(), c->a()); } + + union Sass_Value* To_C::operator()(String_Constant_Ptr s) + { + if (s->quote_mark()) { + return sass_make_qstring(s->value().c_str()); + } else { + return sass_make_string(s->value().c_str()); + } + } + + union Sass_Value* To_C::operator()(String_Quoted_Ptr s) + { return sass_make_qstring(s->value().c_str()); } + + union Sass_Value* To_C::operator()(List_Ptr l) + { + union Sass_Value* v = sass_make_list(l->length(), l->separator(), l->is_bracketed()); + for (size_t i = 0, L = l->length(); i < L; ++i) { + sass_list_set_value(v, i, (*l)[i]->perform(this)); + } + return v; + } + + union Sass_Value* To_C::operator()(Map_Ptr m) + { + union Sass_Value* v = sass_make_map(m->length()); + int i = 0; + for (auto key : m->keys()) { + sass_map_set_key(v, i, key->perform(this)); + sass_map_set_value(v, i, m->at(key)->perform(this)); + i++; + } + return v; + } + + union Sass_Value* To_C::operator()(Arguments_Ptr a) + { + union Sass_Value* v = sass_make_list(a->length(), SASS_COMMA, false); + for (size_t i = 0, L = a->length(); i < L; ++i) { + sass_list_set_value(v, i, (*a)[i]->perform(this)); + } + return v; + } + + union Sass_Value* To_C::operator()(Argument_Ptr a) + { return a->value()->perform(this); } + + // not strictly necessary because of the fallback + union Sass_Value* To_C::operator()(Null_Ptr n) + { return sass_make_null(); } + +}; diff --git a/mybulma/node_modules/node-sass/src/libsass/src/to_c.hpp b/mybulma/node_modules/node-sass/src/libsass/src/to_c.hpp new file mode 100644 index 0000000..a5331e3 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/to_c.hpp @@ -0,0 +1,39 @@ +#ifndef SASS_TO_C_H +#define SASS_TO_C_H + +#include "ast_fwd_decl.hpp" +#include "operation.hpp" +#include "sass/values.h" + +namespace Sass { + + class To_C : public Operation_CRTP { + // override this to define a catch-all + union Sass_Value* fallback_impl(AST_Node_Ptr n); + + public: + + To_C() { } + ~To_C() { } + + union Sass_Value* operator()(Boolean_Ptr); + union Sass_Value* operator()(Number_Ptr); + union Sass_Value* operator()(Color_Ptr); + union Sass_Value* operator()(String_Constant_Ptr); + union Sass_Value* operator()(String_Quoted_Ptr); + union Sass_Value* operator()(Custom_Warning_Ptr); + union Sass_Value* operator()(Custom_Error_Ptr); + union Sass_Value* operator()(List_Ptr); + union Sass_Value* operator()(Map_Ptr); + union Sass_Value* operator()(Null_Ptr); + union Sass_Value* operator()(Arguments_Ptr); + union Sass_Value* operator()(Argument_Ptr); + + // dispatch to fallback implementation + union Sass_Value* fallback(AST_Node_Ptr x) + { return fallback_impl(x); } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/to_value.cpp b/mybulma/node_modules/node-sass/src/libsass/src/to_value.cpp new file mode 100644 index 0000000..3912c55 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/to_value.cpp @@ -0,0 +1,112 @@ +#include "sass.hpp" +#include "ast.hpp" +#include "to_value.hpp" + +namespace Sass { + + Value_Ptr To_Value::fallback_impl(AST_Node_Ptr n) + { + // throw a runtime error if this happens + // we want a well defined set of possible nodes + throw std::runtime_error("invalid node for to_value"); + } + + // Custom_Error is a valid value + Value_Ptr To_Value::operator()(Custom_Error_Ptr e) + { + return e; + } + + // Custom_Warning is a valid value + Value_Ptr To_Value::operator()(Custom_Warning_Ptr w) + { + return w; + } + + // Boolean is a valid value + Value_Ptr To_Value::operator()(Boolean_Ptr b) + { + return b; + } + + // Number is a valid value + Value_Ptr To_Value::operator()(Number_Ptr n) + { + return n; + } + + // Color is a valid value + Value_Ptr To_Value::operator()(Color_Ptr c) + { + return c; + } + + // String_Constant is a valid value + Value_Ptr To_Value::operator()(String_Constant_Ptr s) + { + return s; + } + + // String_Quoted is a valid value + Value_Ptr To_Value::operator()(String_Quoted_Ptr s) + { + return s; + } + + // List is a valid value + Value_Ptr To_Value::operator()(List_Ptr l) + { + List_Obj ll = SASS_MEMORY_NEW(List, + l->pstate(), + l->length(), + l->separator(), + l->is_arglist(), + l->is_bracketed()); + for (size_t i = 0, L = l->length(); i < L; ++i) { + ll->append((*l)[i]->perform(this)); + } + return ll.detach(); + } + + // Map is a valid value + Value_Ptr To_Value::operator()(Map_Ptr m) + { + return m; + } + + // Null is a valid value + Value_Ptr To_Value::operator()(Null_Ptr n) + { + return n; + } + + // Function is a valid value + Value_Ptr To_Value::operator()(Function_Ptr n) + { + return n; + } + + // Argument returns its value + Value_Ptr To_Value::operator()(Argument_Ptr arg) + { + if (!arg->name().empty()) return 0; + return arg->value()->perform(this); + } + + // Selector_List is converted to a string + Value_Ptr To_Value::operator()(Selector_List_Ptr s) + { + return SASS_MEMORY_NEW(String_Quoted, + s->pstate(), + s->to_string(ctx.c_options)); + } + + // Binary_Expression is converted to a string + Value_Ptr To_Value::operator()(Binary_Expression_Ptr s) + { + return SASS_MEMORY_NEW(String_Quoted, + s->pstate(), + s->to_string(ctx.c_options)); + } + +}; diff --git a/mybulma/node_modules/node-sass/src/libsass/src/to_value.hpp b/mybulma/node_modules/node-sass/src/libsass/src/to_value.hpp new file mode 100644 index 0000000..8f64128 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/to_value.hpp @@ -0,0 +1,50 @@ +#ifndef SASS_TO_VALUE_H +#define SASS_TO_VALUE_H + +#include "operation.hpp" +#include "sass/values.h" +#include "ast_fwd_decl.hpp" + +namespace Sass { + + class To_Value : public Operation_CRTP { + + Value_Ptr fallback_impl(AST_Node_Ptr n); + + private: + + Context& ctx; + + public: + + To_Value(Context& ctx) + : ctx(ctx) + { } + ~To_Value() { } + using Operation::operator(); + + Value_Ptr operator()(Argument_Ptr); + Value_Ptr operator()(Boolean_Ptr); + Value_Ptr operator()(Number_Ptr); + Value_Ptr operator()(Color_Ptr); + Value_Ptr operator()(String_Constant_Ptr); + Value_Ptr operator()(String_Quoted_Ptr); + Value_Ptr operator()(Custom_Warning_Ptr); + Value_Ptr operator()(Custom_Error_Ptr); + Value_Ptr operator()(List_Ptr); + Value_Ptr operator()(Map_Ptr); + Value_Ptr operator()(Null_Ptr); + Value_Ptr operator()(Function_Ptr); + + // convert to string via `To_String` + Value_Ptr operator()(Selector_List_Ptr); + Value_Ptr operator()(Binary_Expression_Ptr); + + // fallback throws error + template + Value_Ptr fallback(U x) { return fallback_impl(x); } + }; + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/units.cpp b/mybulma/node_modules/node-sass/src/libsass/src/units.cpp new file mode 100644 index 0000000..779f1d2 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/units.cpp @@ -0,0 +1,501 @@ +#include "sass.hpp" +#include +#include "units.hpp" +#include "error_handling.hpp" + +namespace Sass { + + /* the conversion matrix can be readed the following way */ + /* if you go down, the factor is for the numerator (multiply) */ + /* if you go right, the factor is for the denominator (divide) */ + /* and yes, we actually use both, not sure why, but why not!? */ + + const double size_conversion_factors[6][6] = + { + /* in cm pc mm pt px */ + /* in */ { 1, 2.54, 6, 25.4, 72, 96, }, + /* cm */ { 1.0/2.54, 1, 6.0/2.54, 10, 72.0/2.54, 96.0/2.54 }, + /* pc */ { 1.0/6.0, 2.54/6.0, 1, 25.4/6.0, 72.0/6.0, 96.0/6.0 }, + /* mm */ { 1.0/25.4, 1.0/10.0, 6.0/25.4, 1, 72.0/25.4, 96.0/25.4 }, + /* pt */ { 1.0/72.0, 2.54/72.0, 6.0/72.0, 25.4/72.0, 1, 96.0/72.0 }, + /* px */ { 1.0/96.0, 2.54/96.0, 6.0/96.0, 25.4/96.0, 72.0/96.0, 1, } + }; + + const double angle_conversion_factors[4][4] = + { + /* deg grad rad turn */ + /* deg */ { 1, 40.0/36.0, PI/180.0, 1.0/360.0 }, + /* grad */ { 36.0/40.0, 1, PI/200.0, 1.0/400.0 }, + /* rad */ { 180.0/PI, 200.0/PI, 1, 0.5/PI }, + /* turn */ { 360.0, 400.0, 2.0*PI, 1 } + }; + + const double time_conversion_factors[2][2] = + { + /* s ms */ + /* s */ { 1, 1000.0 }, + /* ms */ { 1/1000.0, 1 } + }; + const double frequency_conversion_factors[2][2] = + { + /* Hz kHz */ + /* Hz */ { 1, 1/1000.0 }, + /* kHz */ { 1000.0, 1 } + }; + const double resolution_conversion_factors[3][3] = + { + /* dpi dpcm dppx */ + /* dpi */ { 1, 1/2.54, 1/96.0 }, + /* dpcm */ { 2.54, 1, 2.54/96 }, + /* dppx */ { 96, 96/2.54, 1 } + }; + + UnitClass get_unit_type(UnitType unit) + { + switch (unit & 0xFF00) + { + case UnitClass::LENGTH: return UnitClass::LENGTH; + case UnitClass::ANGLE: return UnitClass::ANGLE; + case UnitClass::TIME: return UnitClass::TIME; + case UnitClass::FREQUENCY: return UnitClass::FREQUENCY; + case UnitClass::RESOLUTION: return UnitClass::RESOLUTION; + default: return UnitClass::INCOMMENSURABLE; + } + }; + + std::string get_unit_class(UnitType unit) + { + switch (unit & 0xFF00) + { + case UnitClass::LENGTH: return "LENGTH"; + case UnitClass::ANGLE: return "ANGLE"; + case UnitClass::TIME: return "TIME"; + case UnitClass::FREQUENCY: return "FREQUENCY"; + case UnitClass::RESOLUTION: return "RESOLUTION"; + default: return "INCOMMENSURABLE"; + } + }; + + UnitType get_main_unit(const UnitClass unit) + { + switch (unit) + { + case UnitClass::LENGTH: return UnitType::PX; + case UnitClass::ANGLE: return UnitType::DEG; + case UnitClass::TIME: return UnitType::SEC; + case UnitClass::FREQUENCY: return UnitType::HERTZ; + case UnitClass::RESOLUTION: return UnitType::DPI; + default: return UnitType::UNKNOWN; + } + }; + + UnitType string_to_unit(const std::string& s) + { + // size units + if (s == "px") return UnitType::PX; + else if (s == "pt") return UnitType::PT; + else if (s == "pc") return UnitType::PC; + else if (s == "mm") return UnitType::MM; + else if (s == "cm") return UnitType::CM; + else if (s == "in") return UnitType::IN; + // angle units + else if (s == "deg") return UnitType::DEG; + else if (s == "grad") return UnitType::GRAD; + else if (s == "rad") return UnitType::RAD; + else if (s == "turn") return UnitType::TURN; + // time units + else if (s == "s") return UnitType::SEC; + else if (s == "ms") return UnitType::MSEC; + // frequency units + else if (s == "Hz") return UnitType::HERTZ; + else if (s == "kHz") return UnitType::KHERTZ; + // resolutions units + else if (s == "dpi") return UnitType::DPI; + else if (s == "dpcm") return UnitType::DPCM; + else if (s == "dppx") return UnitType::DPPX; + // for unknown units + else return UnitType::UNKNOWN; + } + + const char* unit_to_string(UnitType unit) + { + switch (unit) { + // size units + case UnitType::PX: return "px"; + case UnitType::PT: return "pt"; + case UnitType::PC: return "pc"; + case UnitType::MM: return "mm"; + case UnitType::CM: return "cm"; + case UnitType::IN: return "in"; + // angle units + case UnitType::DEG: return "deg"; + case UnitType::GRAD: return "grad"; + case UnitType::RAD: return "rad"; + case UnitType::TURN: return "turn"; + // time units + case UnitType::SEC: return "s"; + case UnitType::MSEC: return "ms"; + // frequency units + case UnitType::HERTZ: return "Hz"; + case UnitType::KHERTZ: return "kHz"; + // resolutions units + case UnitType::DPI: return "dpi"; + case UnitType::DPCM: return "dpcm"; + case UnitType::DPPX: return "dppx"; + // for unknown units + default: return ""; + } + } + + std::string unit_to_class(const std::string& s) + { + if (s == "px") return "LENGTH"; + else if (s == "pt") return "LENGTH"; + else if (s == "pc") return "LENGTH"; + else if (s == "mm") return "LENGTH"; + else if (s == "cm") return "LENGTH"; + else if (s == "in") return "LENGTH"; + // angle units + else if (s == "deg") return "ANGLE"; + else if (s == "grad") return "ANGLE"; + else if (s == "rad") return "ANGLE"; + else if (s == "turn") return "ANGLE"; + // time units + else if (s == "s") return "TIME"; + else if (s == "ms") return "TIME"; + // frequency units + else if (s == "Hz") return "FREQUENCY"; + else if (s == "kHz") return "FREQUENCY"; + // resolutions units + else if (s == "dpi") return "RESOLUTION"; + else if (s == "dpcm") return "RESOLUTION"; + else if (s == "dppx") return "RESOLUTION"; + // for unknown units + return "CUSTOM:" + s; + } + + // throws incompatibleUnits exceptions + double conversion_factor(const std::string& s1, const std::string& s2) + { + // assert for same units + if (s1 == s2) return 1; + // get unit enum from string + UnitType u1 = string_to_unit(s1); + UnitType u2 = string_to_unit(s2); + // query unit group types + UnitClass t1 = get_unit_type(u1); + UnitClass t2 = get_unit_type(u2); + // return the conversion factor + return conversion_factor(u1, u2, t1, t2); + } + + // throws incompatibleUnits exceptions + double conversion_factor(UnitType u1, UnitType u2, UnitClass t1, UnitClass t2) + { + // can't convert between groups + if (t1 != t2) return 0; + // get absolute offset + // used for array acces + size_t i1 = u1 - t1; + size_t i2 = u2 - t2; + // process known units + switch (t1) { + case LENGTH: + return size_conversion_factors[i1][i2]; + case ANGLE: + return angle_conversion_factors[i1][i2]; + case TIME: + return time_conversion_factors[i1][i2]; + case FREQUENCY: + return frequency_conversion_factors[i1][i2]; + case RESOLUTION: + return resolution_conversion_factors[i1][i2]; + case INCOMMENSURABLE: + return 0; + } + // fallback + return 0; + } + + double convert_units(const std::string& lhs, const std::string& rhs, int& lhsexp, int& rhsexp) + { + double f = 0; + // do not convert same ones + if (lhs == rhs) return 0; + // skip already canceled out unit + if (lhsexp == 0) return 0; + if (rhsexp == 0) return 0; + // check if it can be converted + UnitType ulhs = string_to_unit(lhs); + UnitType urhs = string_to_unit(rhs); + // skip units we cannot convert + if (ulhs == UNKNOWN) return 0; + if (urhs == UNKNOWN) return 0; + // query unit group types + UnitClass clhs = get_unit_type(ulhs); + UnitClass crhs = get_unit_type(urhs); + // skip units we cannot convert + if (clhs != crhs) return 0; + // if right denominator is bigger than lhs, we want to keep it in rhs unit + if (rhsexp < 0 && lhsexp > 0 && - rhsexp > lhsexp) { + // get the conversion factor for units + f = conversion_factor(urhs, ulhs, clhs, crhs); + // left hand side has been consumned + f = std::pow(f, lhsexp); + rhsexp += lhsexp; + lhsexp = 0; + } + else { + // get the conversion factor for units + f = conversion_factor(ulhs, urhs, clhs, crhs); + // right hand side has been consumned + f = std::pow(f, rhsexp); + lhsexp += rhsexp; + rhsexp = 0; + } + return f; + } + + bool Units::operator< (const Units& rhs) const + { + return (numerators < rhs.numerators) && + (denominators < rhs.denominators); + } + bool Units::operator== (const Units& rhs) const + { + return (numerators == rhs.numerators) && + (denominators == rhs.denominators); + } + + double Units::normalize() + { + + size_t iL = numerators.size(); + size_t nL = denominators.size(); + + // the final conversion factor + double factor = 1; + + for (size_t i = 0; i < iL; i++) { + std::string &lhs = numerators[i]; + UnitType ulhs = string_to_unit(lhs); + if (ulhs == UNKNOWN) continue; + UnitClass clhs = get_unit_type(ulhs); + UnitType umain = get_main_unit(clhs); + if (ulhs == umain) continue; + double f(conversion_factor(umain, ulhs, clhs, clhs)); + if (f == 0) throw std::runtime_error("INVALID"); + numerators[i] = unit_to_string(umain); + factor /= f; + } + + for (size_t n = 0; n < nL; n++) { + std::string &rhs = denominators[n]; + UnitType urhs = string_to_unit(rhs); + if (urhs == UNKNOWN) continue; + UnitClass crhs = get_unit_type(urhs); + UnitType umain = get_main_unit(crhs); + if (urhs == umain) continue; + double f(conversion_factor(umain, urhs, crhs, crhs)); + if (f == 0) throw std::runtime_error("INVALID"); + denominators[n] = unit_to_string(umain); + factor /= f; + } + + std::sort (numerators.begin(), numerators.end()); + std::sort (denominators.begin(), denominators.end()); + + // return for conversion + return factor; + } + + double Units::reduce() + { + + size_t iL = numerators.size(); + size_t nL = denominators.size(); + + // have less than two units? + if (iL + nL < 2) return 1; + + // first make sure same units cancel each other out + // it seems that a map table will fit nicely to do this + // we basically construct exponents for each unit + // has the advantage that they will be pre-sorted + std::map exponents; + + // initialize by summing up occurences in unit vectors + // this will already cancel out equivalent units (e.q. px/px) + for (size_t i = 0; i < iL; i ++) exponents[numerators[i]] += 1; + for (size_t n = 0; n < nL; n ++) exponents[denominators[n]] -= 1; + + // the final conversion factor + double factor = 1; + + // convert between compatible units + for (size_t i = 0; i < iL; i++) { + for (size_t n = 0; n < nL; n++) { + std::string &lhs = numerators[i], &rhs = denominators[n]; + int &lhsexp = exponents[lhs], &rhsexp = exponents[rhs]; + double f(convert_units(lhs, rhs, lhsexp, rhsexp)); + if (f == 0) continue; + factor /= f; + } + } + + // now we can build up the new unit arrays + numerators.clear(); + denominators.clear(); + + // recreate sorted units vectors + for (auto exp : exponents) { + int &exponent = exp.second; + while (exponent > 0 && exponent --) + numerators.push_back(exp.first); + while (exponent < 0 && exponent ++) + denominators.push_back(exp.first); + } + + // return for conversion + return factor; + + } + + std::string Units::unit() const + { + std::string u; + size_t iL = numerators.size(); + size_t nL = denominators.size(); + for (size_t i = 0; i < iL; i += 1) { + if (i) u += '*'; + u += numerators[i]; + } + if (nL != 0) u += '/'; + for (size_t n = 0; n < nL; n += 1) { + if (n) u += '*'; + u += denominators[n]; + } + return u; + } + + bool Units::is_unitless() const + { + return numerators.empty() && + denominators.empty(); + } + + bool Units::is_valid_css_unit() const + { + return numerators.size() <= 1 && + denominators.size() == 0; + } + + // this does not cover all cases (multiple prefered units) + double Units::convert_factor(const Units& r) const + { + + std::vector miss_nums(0); + std::vector miss_dens(0); + // create copy since we need these for state keeping + std::vector r_nums(r.numerators); + std::vector r_dens(r.denominators); + + auto l_num_it = numerators.begin(); + auto l_num_end = numerators.end(); + + bool l_unitless = is_unitless(); + auto r_unitless = r.is_unitless(); + + // overall conversion + double factor = 1; + + // process all left numerators + while (l_num_it != l_num_end) + { + // get and increment afterwards + const std::string l_num = *(l_num_it ++); + + auto r_num_it = r_nums.begin(), r_num_end = r_nums.end(); + + bool found = false; + // search for compatible numerator + while (r_num_it != r_num_end) + { + // get and increment afterwards + const std::string r_num = *(r_num_it); + // get possible conversion factor for units + double conversion = conversion_factor(l_num, r_num); + // skip incompatible numerator + if (conversion == 0) { + ++ r_num_it; + continue; + } + // apply to global factor + factor *= conversion; + // remove item from vector + r_nums.erase(r_num_it); + // found numerator + found = true; + break; + } + // maybe we did not find any + // left numerator is leftover + if (!found) miss_nums.push_back(l_num); + } + + auto l_den_it = denominators.begin(); + auto l_den_end = denominators.end(); + + // process all left denominators + while (l_den_it != l_den_end) + { + // get and increment afterwards + const std::string l_den = *(l_den_it ++); + + auto r_den_it = r_dens.begin(); + auto r_den_end = r_dens.end(); + + bool found = false; + // search for compatible denominator + while (r_den_it != r_den_end) + { + // get and increment afterwards + const std::string r_den = *(r_den_it); + // get possible converstion factor for units + double conversion = conversion_factor(l_den, r_den); + // skip incompatible denominator + if (conversion == 0) { + ++ r_den_it; + continue; + } + // apply to global factor + factor /= conversion; + // remove item from vector + r_dens.erase(r_den_it); + // found denominator + found = true; + break; + } + // maybe we did not find any + // left denominator is leftover + if (!found) miss_dens.push_back(l_den); + } + + // check left-overs (ToDo: might cancel out?) + if (miss_nums.size() > 0 && !r_unitless) { + throw Exception::IncompatibleUnits(r, *this); + } + else if (miss_dens.size() > 0 && !r_unitless) { + throw Exception::IncompatibleUnits(r, *this); + } + else if (r_nums.size() > 0 && !l_unitless) { + throw Exception::IncompatibleUnits(r, *this); + } + else if (r_dens.size() > 0 && !l_unitless) { + throw Exception::IncompatibleUnits(r, *this); + } + + return factor; + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/units.hpp b/mybulma/node_modules/node-sass/src/libsass/src/units.hpp new file mode 100644 index 0000000..306f534 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/units.hpp @@ -0,0 +1,109 @@ +#ifndef SASS_UNITS_H +#define SASS_UNITS_H + +#include +#include +#include +#include + +namespace Sass { + + const double PI = std::acos(-1); + + enum UnitClass { + LENGTH = 0x000, + ANGLE = 0x100, + TIME = 0x200, + FREQUENCY = 0x300, + RESOLUTION = 0x400, + INCOMMENSURABLE = 0x500 + }; + + enum UnitType { + + // size units + IN = UnitClass::LENGTH, + CM, + PC, + MM, + PT, + PX, + + // angle units + DEG = ANGLE, + GRAD, + RAD, + TURN, + + // time units + SEC = TIME, + MSEC, + + // frequency units + HERTZ = FREQUENCY, + KHERTZ, + + // resolutions units + DPI = RESOLUTION, + DPCM, + DPPX, + + // for unknown units + UNKNOWN = INCOMMENSURABLE + + }; + + class Units { + public: + std::vector numerators; + std::vector denominators; + public: + // default constructor + Units() : + numerators(), + denominators() + { } + // copy constructor + Units(const Units* ptr) : + numerators(ptr->numerators), + denominators(ptr->denominators) + { } + // convert to string + std::string unit() const; + // get if units are empty + bool is_unitless() const; + // return if valid for css + bool is_valid_css_unit() const; + // reduce units for output + // returns conversion factor + double reduce(); + // normalize units for compare + // returns conversion factor + double normalize(); + // compare operations + bool operator< (const Units& rhs) const; + bool operator== (const Units& rhs) const; + // factor to convert into given units + double convert_factor(const Units&) const; + }; + + extern const double size_conversion_factors[6][6]; + extern const double angle_conversion_factors[4][4]; + extern const double time_conversion_factors[2][2]; + extern const double frequency_conversion_factors[2][2]; + extern const double resolution_conversion_factors[3][3]; + + UnitType get_main_unit(const UnitClass unit); + enum Sass::UnitType string_to_unit(const std::string&); + const char* unit_to_string(Sass::UnitType unit); + enum Sass::UnitClass get_unit_type(Sass::UnitType unit); + std::string get_unit_class(Sass::UnitType unit); + std::string unit_to_class(const std::string&); + // throws incompatibleUnits exceptions + double conversion_factor(const std::string&, const std::string&); + double conversion_factor(UnitType, UnitType, UnitClass, UnitClass); + double convert_units(const std::string&, const std::string&, int&, int&); + +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/utf8.h b/mybulma/node_modules/node-sass/src/libsass/src/utf8.h new file mode 100644 index 0000000..82b13f5 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/utf8.h @@ -0,0 +1,34 @@ +// Copyright 2006 Nemanja Trifunovic + +/* +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + + +#ifndef UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731 + +#include "utf8/checked.h" +#include "utf8/unchecked.h" + +#endif // header guard diff --git a/mybulma/node_modules/node-sass/src/libsass/src/utf8/checked.h b/mybulma/node_modules/node-sass/src/libsass/src/utf8/checked.h new file mode 100644 index 0000000..693aee9 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/utf8/checked.h @@ -0,0 +1,334 @@ +// Copyright 2006 Nemanja Trifunovic + +/* +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + + +#ifndef UTF8_FOR_CPP_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 + +#include "core.h" +#include + +namespace utf8 +{ + // Base for the exceptions that may be thrown from the library + class exception : public ::std::exception { + }; + + // Exceptions that may be thrown from the library functions. + class invalid_code_point : public exception { + uint32_t cp; + public: + invalid_code_point(uint32_t cp) : cp(cp) {} + virtual const char* what() const throw() { return "Invalid code point"; } + uint32_t code_point() const {return cp;} + }; + + class invalid_utf8 : public exception { + uint8_t u8; + public: + invalid_utf8 (uint8_t u) : u8(u) {} + virtual const char* what() const throw() { return "Invalid UTF-8"; } + uint8_t utf8_octet() const {return u8;} + }; + + class invalid_utf16 : public exception { + uint16_t u16; + public: + invalid_utf16 (uint16_t u) : u16(u) {} + virtual const char* what() const throw() { return "Invalid UTF-16"; } + uint16_t utf16_word() const {return u16;} + }; + + class not_enough_room : public exception { + public: + virtual const char* what() const throw() { return "Not enough space"; } + }; + + /// The library API - functions intended to be called by the users + + template + octet_iterator append(uint32_t cp, octet_iterator result) + { + if (!utf8::internal::is_code_point_valid(cp)) + throw invalid_code_point(cp); + + if (cp < 0x80) // one octet + *(result++) = static_cast(cp); + else if (cp < 0x800) { // two octets + *(result++) = static_cast((cp >> 6) | 0xc0); + *(result++) = static_cast((cp & 0x3f) | 0x80); + } + else if (cp < 0x10000) { // three octets + *(result++) = static_cast((cp >> 12) | 0xe0); + *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); + *(result++) = static_cast((cp & 0x3f) | 0x80); + } + else { // four octets + *(result++) = static_cast((cp >> 18) | 0xf0); + *(result++) = static_cast(((cp >> 12) & 0x3f) | 0x80); + *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); + *(result++) = static_cast((cp & 0x3f) | 0x80); + } + return result; + } + + template + output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out, uint32_t replacement) + { + while (start != end) { + octet_iterator sequence_start = start; + internal::utf_error err_code = utf8::internal::validate_next(start, end); + switch (err_code) { + case internal::UTF8_OK : + for (octet_iterator it = sequence_start; it != start; ++it) + *out++ = *it; + break; + case internal::NOT_ENOUGH_ROOM: + throw not_enough_room(); + case internal::INVALID_LEAD: + out = utf8::append (replacement, out); + ++start; + break; + case internal::INCOMPLETE_SEQUENCE: + case internal::OVERLONG_SEQUENCE: + case internal::INVALID_CODE_POINT: + out = utf8::append (replacement, out); + ++start; + // just one replacement mark for the sequence + while (start != end && utf8::internal::is_trail(*start)) + ++start; + break; + } + } + return out; + } + + template + inline output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out) + { + static const uint32_t replacement_marker = utf8::internal::mask16(0xfffd); + return utf8::replace_invalid(start, end, out, replacement_marker); + } + + template + uint32_t next(octet_iterator& it, octet_iterator end) + { + uint32_t cp = 0; + internal::utf_error err_code = utf8::internal::validate_next(it, end, cp); + switch (err_code) { + case internal::UTF8_OK : + break; + case internal::NOT_ENOUGH_ROOM : + throw not_enough_room(); + case internal::INVALID_LEAD : + case internal::INCOMPLETE_SEQUENCE : + case internal::OVERLONG_SEQUENCE : + throw invalid_utf8(*it); + case internal::INVALID_CODE_POINT : + throw invalid_code_point(cp); + } + return cp; + } + + template + uint32_t peek_next(octet_iterator it, octet_iterator end) + { + return utf8::next(it, end); + } + + template + uint32_t prior(octet_iterator& it, octet_iterator start) + { + // can't do much if it == start + if (it == start) + throw not_enough_room(); + + octet_iterator end = it; + // Go back until we hit either a lead octet or start + while (utf8::internal::is_trail(*(--it))) + if (it == start) + throw invalid_utf8(*it); // error - no lead byte in the sequence + return utf8::peek_next(it, end); + } + + /// Deprecated in versions that include "prior" + template + uint32_t previous(octet_iterator& it, octet_iterator pass_start) + { + octet_iterator end = it; + while (utf8::internal::is_trail(*(--it))) + if (it == pass_start) + throw invalid_utf8(*it); // error - no lead byte in the sequence + octet_iterator temp = it; + return utf8::next(temp, end); + } + + template + void advance (octet_iterator& it, distance_type n, octet_iterator end) + { + for (distance_type i = 0; i < n; ++i) + utf8::next(it, end); + } + + template + void retreat (octet_iterator& it, distance_type n, octet_iterator start) + { + for (distance_type i = 0; i < n; ++i) + utf8::prior(it, start); + } + + template + typename std::iterator_traits::difference_type + distance (octet_iterator first, octet_iterator last) + { + typename std::iterator_traits::difference_type dist; + for (dist = 0; first < last; ++dist) + utf8::next(first, last); + return dist; + } + + template + octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result) + { + while (start != end) { + uint32_t cp = utf8::internal::mask16(*start++); + // Take care of surrogate pairs first + if (utf8::internal::is_lead_surrogate(cp)) { + if (start != end) { + uint32_t trail_surrogate = utf8::internal::mask16(*start++); + if (utf8::internal::is_trail_surrogate(trail_surrogate)) + cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET; + else + throw invalid_utf16(static_cast(trail_surrogate)); + } + else + throw invalid_utf16(static_cast(cp)); + + } + // Lone trail surrogate + else if (utf8::internal::is_trail_surrogate(cp)) + throw invalid_utf16(static_cast(cp)); + + result = utf8::append(cp, result); + } + return result; + } + + template + u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result) + { + while (start != end) { + uint32_t cp = utf8::next(start, end); + if (cp > 0xffff) { //make a surrogate pair + *result++ = static_cast((cp >> 10) + internal::LEAD_OFFSET); + *result++ = static_cast((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN); + } + else + *result++ = static_cast(cp); + } + return result; + } + + template + octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result) + { + while (start != end) + result = utf8::append(*(start++), result); + + return result; + } + + template + u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result) + { + while (start != end) + (*result++) = utf8::next(start, end); + + return result; + } + + // The iterator class + template + class iterator : public std::iterator { + octet_iterator it; + octet_iterator range_start; + octet_iterator range_end; + public: + iterator () {} + explicit iterator (const octet_iterator& octet_it, + const octet_iterator& range_start, + const octet_iterator& range_end) : + it(octet_it), range_start(range_start), range_end(range_end) + { + if (it < range_start || it > range_end) + throw std::out_of_range("Invalid utf-8 iterator position"); + } + // the default "big three" are OK + octet_iterator base () const { return it; } + uint32_t operator * () const + { + octet_iterator temp = it; + return utf8::next(temp, range_end); + } + bool operator == (const iterator& rhs) const + { + if (range_start != rhs.range_start || range_end != rhs.range_end) + throw std::logic_error("Comparing utf-8 iterators defined with different ranges"); + return (it == rhs.it); + } + bool operator != (const iterator& rhs) const + { + return !(operator == (rhs)); + } + iterator& operator ++ () + { + utf8::next(it, range_end); + return *this; + } + iterator operator ++ (int) + { + iterator temp = *this; + utf8::next(it, range_end); + return temp; + } + iterator& operator -- () + { + utf8::prior(it, range_start); + return *this; + } + iterator operator -- (int) + { + iterator temp = *this; + utf8::prior(it, range_start); + return temp; + } + }; // class iterator + +} // namespace utf8 + +#endif //header guard + + diff --git a/mybulma/node_modules/node-sass/src/libsass/src/utf8/core.h b/mybulma/node_modules/node-sass/src/libsass/src/utf8/core.h new file mode 100644 index 0000000..f85081f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/utf8/core.h @@ -0,0 +1,329 @@ +// Copyright 2006 Nemanja Trifunovic + +/* +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + + +#ifndef UTF8_FOR_CPP_CORE_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_CORE_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 + +#include + +namespace utf8 +{ + // The typedefs for 8-bit, 16-bit and 32-bit unsigned integers + // You may need to change them to match your system. + // These typedefs have the same names as ones from cstdint, or boost/cstdint + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + +// Helper code - not intended to be directly called by the library users. May be changed at any time +namespace internal +{ + // Unicode constants + // Leading (high) surrogates: 0xd800 - 0xdbff + // Trailing (low) surrogates: 0xdc00 - 0xdfff + const uint16_t LEAD_SURROGATE_MIN = 0xd800u; + const uint16_t LEAD_SURROGATE_MAX = 0xdbffu; + const uint16_t TRAIL_SURROGATE_MIN = 0xdc00u; + const uint16_t TRAIL_SURROGATE_MAX = 0xdfffu; + const uint16_t LEAD_OFFSET = LEAD_SURROGATE_MIN - (0x10000 >> 10); + const uint32_t SURROGATE_OFFSET = 0x10000u - (LEAD_SURROGATE_MIN << 10) - TRAIL_SURROGATE_MIN; + + // Maximum valid value for a Unicode code point + const uint32_t CODE_POINT_MAX = 0x0010ffffu; + + template + inline uint8_t mask8(octet_type oc) + { + return static_cast(0xff & oc); + } + template + inline uint16_t mask16(u16_type oc) + { + return static_cast(0xffff & oc); + } + template + inline bool is_trail(octet_type oc) + { + return ((utf8::internal::mask8(oc) >> 6) == 0x2); + } + + template + inline bool is_lead_surrogate(u16 cp) + { + return (cp >= LEAD_SURROGATE_MIN && cp <= LEAD_SURROGATE_MAX); + } + + template + inline bool is_trail_surrogate(u16 cp) + { + return (cp >= TRAIL_SURROGATE_MIN && cp <= TRAIL_SURROGATE_MAX); + } + + template + inline bool is_surrogate(u16 cp) + { + return (cp >= LEAD_SURROGATE_MIN && cp <= TRAIL_SURROGATE_MAX); + } + + template + inline bool is_code_point_valid(u32 cp) + { + return (cp <= CODE_POINT_MAX && !utf8::internal::is_surrogate(cp)); + } + + template + inline typename std::iterator_traits::difference_type + sequence_length(octet_iterator lead_it) + { + uint8_t lead = utf8::internal::mask8(*lead_it); + if (lead < 0x80) + return 1; + else if ((lead >> 5) == 0x6) + return 2; + else if ((lead >> 4) == 0xe) + return 3; + else if ((lead >> 3) == 0x1e) + return 4; + else + return 0; + } + + template + inline bool is_overlong_sequence(uint32_t cp, octet_difference_type length) + { + if (cp < 0x80) { + if (length != 1) + return true; + } + else if (cp < 0x800) { + if (length != 2) + return true; + } + else if (cp < 0x10000) { + if (length != 3) + return true; + } + + return false; + } + + enum utf_error {UTF8_OK, NOT_ENOUGH_ROOM, INVALID_LEAD, INCOMPLETE_SEQUENCE, OVERLONG_SEQUENCE, INVALID_CODE_POINT}; + + /// Helper for get_sequence_x + template + utf_error increase_safely(octet_iterator& it, octet_iterator end) + { + if (++it == end) + return NOT_ENOUGH_ROOM; + + if (!utf8::internal::is_trail(*it)) + return INCOMPLETE_SEQUENCE; + + return UTF8_OK; + } + + #define UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(IT, END) {utf_error ret = increase_safely(IT, END); if (ret != UTF8_OK) return ret;} + + /// get_sequence_x functions decode utf-8 sequences of the length x + template + utf_error get_sequence_1(octet_iterator& it, octet_iterator end, uint32_t& code_point) + { + if (it == end) + return NOT_ENOUGH_ROOM; + + code_point = utf8::internal::mask8(*it); + + return UTF8_OK; + } + + template + utf_error get_sequence_2(octet_iterator& it, octet_iterator end, uint32_t& code_point) + { + if (it == end) + return NOT_ENOUGH_ROOM; + + code_point = utf8::internal::mask8(*it); + + UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) + + code_point = ((code_point << 6) & 0x7ff) + ((*it) & 0x3f); + + return UTF8_OK; + } + + template + utf_error get_sequence_3(octet_iterator& it, octet_iterator end, uint32_t& code_point) + { + if (it == end) + return NOT_ENOUGH_ROOM; + + code_point = utf8::internal::mask8(*it); + + UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) + + code_point = ((code_point << 12) & 0xffff) + ((utf8::internal::mask8(*it) << 6) & 0xfff); + + UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) + + code_point += (*it) & 0x3f; + + return UTF8_OK; + } + + template + utf_error get_sequence_4(octet_iterator& it, octet_iterator end, uint32_t& code_point) + { + if (it == end) + return NOT_ENOUGH_ROOM; + + code_point = utf8::internal::mask8(*it); + + UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) + + code_point = ((code_point << 18) & 0x1fffff) + ((utf8::internal::mask8(*it) << 12) & 0x3ffff); + + UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) + + code_point += (utf8::internal::mask8(*it) << 6) & 0xfff; + + UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) + + code_point += (*it) & 0x3f; + + return UTF8_OK; + } + + #undef UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR + + template + utf_error validate_next(octet_iterator& it, octet_iterator end, uint32_t& code_point) + { + // Save the original value of it so we can go back in case of failure + // Of course, it does not make much sense with i.e. stream iterators + octet_iterator original_it = it; + + uint32_t cp = 0; + // Determine the sequence length based on the lead octet + typedef typename std::iterator_traits::difference_type octet_difference_type; + const octet_difference_type length = utf8::internal::sequence_length(it); + + // Get trail octets and calculate the code point + utf_error err = UTF8_OK; + switch (length) { + case 0: + return INVALID_LEAD; + case 1: + err = utf8::internal::get_sequence_1(it, end, cp); + break; + case 2: + err = utf8::internal::get_sequence_2(it, end, cp); + break; + case 3: + err = utf8::internal::get_sequence_3(it, end, cp); + break; + case 4: + err = utf8::internal::get_sequence_4(it, end, cp); + break; + } + + if (err == UTF8_OK) { + // Decoding succeeded. Now, security checks... + if (utf8::internal::is_code_point_valid(cp)) { + if (!utf8::internal::is_overlong_sequence(cp, length)){ + // Passed! Return here. + code_point = cp; + ++it; + return UTF8_OK; + } + else + err = OVERLONG_SEQUENCE; + } + else + err = INVALID_CODE_POINT; + } + + // Failure branch - restore the original value of the iterator + it = original_it; + return err; + } + + template + inline utf_error validate_next(octet_iterator& it, octet_iterator end) { + uint32_t ignored; + return utf8::internal::validate_next(it, end, ignored); + } + +} // namespace internal + + /// The library API - functions intended to be called by the users + + // Byte order mark + const uint8_t bom[] = {0xef, 0xbb, 0xbf}; + + template + octet_iterator find_invalid(octet_iterator start, octet_iterator end) + { + octet_iterator result = start; + while (result != end) { + utf8::internal::utf_error err_code = utf8::internal::validate_next(result, end); + if (err_code != internal::UTF8_OK) + return result; + } + return result; + } + + template + inline bool is_valid(octet_iterator start, octet_iterator end) + { + return (utf8::find_invalid(start, end) == end); + } + + template + inline bool starts_with_bom (octet_iterator it, octet_iterator end) + { + return ( + ((it != end) && (utf8::internal::mask8(*it++)) == bom[0]) && + ((it != end) && (utf8::internal::mask8(*it++)) == bom[1]) && + ((it != end) && (utf8::internal::mask8(*it)) == bom[2]) + ); + } + + //Deprecated in release 2.3 + template + inline bool is_bom (octet_iterator it) + { + return ( + (utf8::internal::mask8(*it++)) == bom[0] && + (utf8::internal::mask8(*it++)) == bom[1] && + (utf8::internal::mask8(*it)) == bom[2] + ); + } +} // namespace utf8 + +#endif // header guard + + diff --git a/mybulma/node_modules/node-sass/src/libsass/src/utf8/unchecked.h b/mybulma/node_modules/node-sass/src/libsass/src/utf8/unchecked.h new file mode 100644 index 0000000..01bdd07 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/utf8/unchecked.h @@ -0,0 +1,235 @@ +// Copyright 2006 Nemanja Trifunovic + +/* +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + + +#ifndef UTF8_FOR_CPP_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 + +#include "core.h" + +namespace utf8 +{ + namespace unchecked + { + template + octet_iterator append(uint32_t cp, octet_iterator result) + { + if (cp < 0x80) // one octet + *(result++) = static_cast(cp); + else if (cp < 0x800) { // two octets + *(result++) = static_cast((cp >> 6) | 0xc0); + *(result++) = static_cast((cp & 0x3f) | 0x80); + } + else if (cp < 0x10000) { // three octets + *(result++) = static_cast((cp >> 12) | 0xe0); + *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); + *(result++) = static_cast((cp & 0x3f) | 0x80); + } + else { // four octets + *(result++) = static_cast((cp >> 18) | 0xf0); + *(result++) = static_cast(((cp >> 12) & 0x3f)| 0x80); + *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); + *(result++) = static_cast((cp & 0x3f) | 0x80); + } + return result; + } + + template + uint32_t next(octet_iterator& it) + { + uint32_t cp = utf8::internal::mask8(*it); + typename std::iterator_traits::difference_type length = utf8::internal::sequence_length(it); + switch (length) { + case 1: + break; + case 2: + it++; + cp = ((cp << 6) & 0x7ff) + ((*it) & 0x3f); + break; + case 3: + ++it; + cp = ((cp << 12) & 0xffff) + ((utf8::internal::mask8(*it) << 6) & 0xfff); + ++it; + cp += (*it) & 0x3f; + break; + case 4: + ++it; + cp = ((cp << 18) & 0x1fffff) + ((utf8::internal::mask8(*it) << 12) & 0x3ffff); + ++it; + cp += (utf8::internal::mask8(*it) << 6) & 0xfff; + ++it; + cp += (*it) & 0x3f; + break; + } + ++it; + return cp; + } + + template + uint32_t peek_next(octet_iterator it) + { + return utf8::unchecked::next(it); + } + + template + uint32_t prior(octet_iterator& it) + { + while (utf8::internal::is_trail(*(--it))) ; + octet_iterator temp = it; + return utf8::unchecked::next(temp); + } + + // Deprecated in versions that include prior, but only for the sake of consistency (see utf8::previous) + template + inline uint32_t previous(octet_iterator& it) + { + return utf8::unchecked::prior(it); + } + + template + void advance (octet_iterator& it, distance_type n) + { + for (distance_type i = 0; i < n; ++i) + utf8::unchecked::next(it); + } + + template + void retreat (octet_iterator& it, distance_type n) + { + for (distance_type i = 0; i < n; ++i) + utf8::unchecked::prior(it); + } + + template + typename std::iterator_traits::difference_type + distance (octet_iterator first, octet_iterator last) + { + typename std::iterator_traits::difference_type dist; + for (dist = 0; first < last; ++dist) + utf8::unchecked::next(first); + return dist; + } + + template + octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result) + { + while (start != end) { + uint32_t cp = utf8::internal::mask16(*start++); + // Take care of surrogate pairs first + if (utf8::internal::is_lead_surrogate(cp)) { + uint32_t trail_surrogate = utf8::internal::mask16(*start++); + cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET; + } + result = utf8::unchecked::append(cp, result); + } + return result; + } + + template + u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result) + { + while (start < end) { + uint32_t cp = utf8::unchecked::next(start); + if (cp > 0xffff) { //make a surrogate pair + *result++ = static_cast((cp >> 10) + internal::LEAD_OFFSET); + *result++ = static_cast((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN); + } + else + *result++ = static_cast(cp); + } + return result; + } + + template + octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result) + { + while (start != end) + result = utf8::unchecked::append(*(start++), result); + + return result; + } + + template + u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result) + { + while (start < end) + (*result++) = utf8::unchecked::next(start); + + return result; + } + + // The iterator class + template + class iterator : public std::iterator { + octet_iterator it; + public: + iterator () {} + explicit iterator (const octet_iterator& octet_it): it(octet_it) {} + // the default "big three" are OK + octet_iterator base () const { return it; } + uint32_t operator * () const + { + octet_iterator temp = it; + return utf8::unchecked::next(temp); + } + bool operator == (const iterator& rhs) const + { + return (it == rhs.it); + } + bool operator != (const iterator& rhs) const + { + return !(operator == (rhs)); + } + iterator& operator ++ () + { + ::std::advance(it, utf8::internal::sequence_length(it)); + return *this; + } + iterator operator ++ (int) + { + iterator temp = *this; + ::std::advance(it, utf8::internal::sequence_length(it)); + return temp; + } + iterator& operator -- () + { + utf8::unchecked::prior(it); + return *this; + } + iterator operator -- (int) + { + iterator temp = *this; + utf8::unchecked::prior(it); + return temp; + } + }; // class iterator + + } // namespace utf8::unchecked +} // namespace utf8 + + +#endif // header guard + diff --git a/mybulma/node_modules/node-sass/src/libsass/src/utf8_string.cpp b/mybulma/node_modules/node-sass/src/libsass/src/utf8_string.cpp new file mode 100644 index 0000000..1942552 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/utf8_string.cpp @@ -0,0 +1,102 @@ +#include "sass.hpp" +#include +#include +#include +#include + +#include "utf8.h" + +namespace Sass { + namespace UTF_8 { + using std::string; + + // naming conventions: + // offset: raw byte offset (0 based) + // position: code point offset (0 based) + // index: code point offset (1 based or negative) + + // function that will count the number of code points (utf-8 characters) from the given beginning to the given end + size_t code_point_count(const string& str, size_t start, size_t end) { + return utf8::distance(str.begin() + start, str.begin() + end); + } + + size_t code_point_count(const string& str) { + return utf8::distance(str.begin(), str.end()); + } + + // function that will return the byte offset at a code point position + size_t offset_at_position(const string& str, size_t position) { + string::const_iterator it = str.begin(); + utf8::advance(it, position, str.end()); + return std::distance(str.begin(), it); + } + + // function that returns number of bytes in a character at offset + size_t code_point_size_at_offset(const string& str, size_t offset) { + // get iterator from string and forward by offset + string::const_iterator stop = str.begin() + offset; + // check if beyond boundary + if (stop == str.end()) return 0; + // advance by one code point + utf8::advance(stop, 1, str.end()); + // calculate offset for code point + return stop - str.begin() - offset; + } + + // function that will return a normalized index, given a crazy one + size_t normalize_index(int index, size_t len) { + long signed_len = static_cast(len); + // assuming the index is 1-based + // we are returning a 0-based index + if (index > 0 && index <= signed_len) { + // positive and within string length + return index-1; + } + else if (index > signed_len) { + // positive and past string length + return len; + } + else if (index == 0) { + return 0; + } + else if (std::abs((double)index) <= signed_len) { + // negative and within string length + return index + signed_len; + } + else { + // negative and past string length + return 0; + } + } + + #ifdef _WIN32 + + // utf16 functions + using std::wstring; + + // convert from utf16/wide string to utf8 string + string convert_from_utf16(const wstring& utf16) + { + string utf8; + // pre-allocate expected memory + utf8.reserve(sizeof(utf16)/2); + utf8::utf16to8(utf16.begin(), utf16.end(), + back_inserter(utf8)); + return utf8; + } + + // convert from utf8 string to utf16/wide string + wstring convert_to_utf16(const string& utf8) + { + wstring utf16; + // pre-allocate expected memory + utf16.reserve(code_point_count(utf8)*2); + utf8::utf8to16(utf8.begin(), utf8.end(), + back_inserter(utf16)); + return utf16; + } + + #endif + + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/utf8_string.hpp b/mybulma/node_modules/node-sass/src/libsass/src/utf8_string.hpp new file mode 100644 index 0000000..5e879be --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/utf8_string.hpp @@ -0,0 +1,37 @@ +#ifndef SASS_UTF8_STRING_H +#define SASS_UTF8_STRING_H + +#include +#include "utf8.h" + +namespace Sass { + namespace UTF_8 { + + // naming conventions: + // offset: raw byte offset (0 based) + // position: code point offset (0 based) + // index: code point offset (1 based or negative) + + // function that will count the number of code points (utf-8 characters) from the beginning to the given end + size_t code_point_count(const std::string& str, size_t start, size_t end); + size_t code_point_count(const std::string& str); + + // function that will return the byte offset of a code point in a + size_t offset_at_position(const std::string& str, size_t position); + + // function that returns number of bytes in a character in a string + size_t code_point_size_at_offset(const std::string& str, size_t offset); + + // function that will return a normalized index, given a crazy one + size_t normalize_index(int index, size_t len); + + #ifdef _WIN32 + // functions to handle unicode paths on windows + std::string convert_from_utf16(const std::wstring& wstr); + std::wstring convert_to_utf16(const std::string& str); + #endif + + } +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/util.cpp b/mybulma/node_modules/node-sass/src/libsass/src/util.cpp new file mode 100644 index 0000000..60f69ab --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/util.cpp @@ -0,0 +1,733 @@ +#include "sass.hpp" +#include "sass.h" +#include "ast.hpp" +#include "util.hpp" +#include "lexer.hpp" +#include "prelexer.hpp" +#include "constants.hpp" +#include "utf8/checked.h" + +#include +#include +#if defined(_MSC_VER) && _MSC_VER >= 1800 && _MSC_VER < 1900 && defined(_M_X64) +#include +#endif + +namespace Sass { + + double round(double val, size_t precision) + { + // Disable FMA3-optimized implementation when compiling with VS2013 for x64 targets + // See https://github.com/sass/node-sass/issues/1854 for details + // FIXME: Remove this workaround when we switch to VS2015+ + #if defined(_MSC_VER) && _MSC_VER >= 1800 && _MSC_VER < 1900 && defined(_M_X64) + static std::once_flag flag; + std::call_once(flag, []() { _set_FMA3_enable(0); }); + #endif + + // https://github.com/sass/sass/commit/4e3e1d5684cc29073a507578fc977434ff488c93 + if (fmod(val, 1) - 0.5 > - std::pow(0.1, precision + 1)) return std::ceil(val); + else if (fmod(val, 1) - 0.5 > std::pow(0.1, precision)) return std::floor(val); + // work around some compiler issue + // cygwin has it not defined in std + using namespace std; + return ::round(val); + } + + /* Locale unspecific atof function. */ + double sass_strtod(const char *str) + { + char separator = *(localeconv()->decimal_point); + if(separator != '.'){ + // The current locale specifies another + // separator. convert the separator to the + // one understood by the locale if needed + const char *found = strchr(str, '.'); + if(found != NULL){ + // substitution is required. perform the substitution on a copy + // of the string. This is slower but it is thread safe. + char *copy = sass_copy_c_string(str); + *(copy + (found - str)) = separator; + double res = strtod(copy, NULL); + free(copy); + return res; + } + } + + return strtod(str, NULL); + } + + // helper for safe access to c_ctx + const char* safe_str (const char* str, const char* alt) { + return str == NULL ? alt : str; + } + + void free_string_array(char ** arr) { + if(!arr) + return; + + char **it = arr; + while (it && (*it)) { + free(*it); + ++it; + } + + free(arr); + } + + char **copy_strings(const std::vector& strings, char*** array, int skip) { + int num = static_cast(strings.size()) - skip; + char** arr = (char**) calloc(num + 1, sizeof(char*)); + if (arr == 0) + return *array = (char **)NULL; + + for(int i = 0; i < num; i++) { + arr[i] = (char*) malloc(sizeof(char) * (strings[i + skip].size() + 1)); + if (arr[i] == 0) { + free_string_array(arr); + return *array = (char **)NULL; + } + std::copy(strings[i + skip].begin(), strings[i + skip].end(), arr[i]); + arr[i][strings[i + skip].size()] = '\0'; + } + + arr[num] = 0; + return *array = arr; + } + + // read css string (handle multiline DELIM) + std::string read_css_string(const std::string& str, bool css) + { + if (!css) return str; + std::string out(""); + bool esc = false; + for (auto i : str) { + if (i == '\\') { + esc = ! esc; + } else if (esc && i == '\r') { + continue; + } else if (esc && i == '\n') { + out.resize (out.size () - 1); + esc = false; + continue; + } else { + esc = false; + } + out.push_back(i); + } + // happens when parsing does not correctly skip + // over escaped sequences for ie. interpolations + // one example: foo\#{interpolate} + // if (esc) out += '\\'; + return out; + } + + // double escape all escape sequences + // keep unescaped quotes and backslashes + std::string evacuate_escapes(const std::string& str) + { + std::string out(""); + bool esc = false; + for (auto i : str) { + if (i == '\\' && !esc) { + out += '\\'; + out += '\\'; + esc = true; + } else if (esc && i == '"') { + out += '\\'; + out += i; + esc = false; + } else if (esc && i == '\'') { + out += '\\'; + out += i; + esc = false; + } else if (esc && i == '\\') { + out += '\\'; + out += i; + esc = false; + } else { + esc = false; + out += i; + } + } + // happens when parsing does not correctly skip + // over escaped sequences for ie. interpolations + // one example: foo\#{interpolate} + // if (esc) out += '\\'; + return out; + } + + // bell characters are replaced with spaces + void newline_to_space(std::string& str) + { + std::replace(str.begin(), str.end(), '\n', ' '); + } + + // bell characters are replaced with spaces + // also eats spaces after line-feeds (ltrim) + std::string string_to_output(const std::string& str) + { + std::string out(""); + bool lf = false; + for (auto i : str) { + if (i == '\n') { + out += ' '; + lf = true; + } else if (!(lf && isspace(i))) { + out += i; + lf = false; + } + } + return out; + } + + std::string escape_string(const std::string& str) + { + std::string out(""); + for (auto i : str) { + if (i == '\n') { + out += "\\n"; + } else if (i == '\r') { + out += "\\r"; + } else if (i == '\t') { + out += "\\t"; + } else { + out += i; + } + } + return out; + } + + std::string comment_to_string(const std::string& text) + { + std::string str = ""; + size_t has = 0; + char prev = 0; + bool clean = false; + for (auto i : text) { + if (clean) { + if (i == '\n') { has = 0; } + else if (i == '\r') { has = 0; } + else if (i == '\t') { ++ has; } + else if (i == ' ') { ++ has; } + else if (i == '*') {} + else { + clean = false; + str += ' '; + if (prev == '*' && i == '/') str += "*/"; + else str += i; + } + } else if (i == '\n') { + clean = true; + } else if (i == '\r') { + clean = true; + } else { + str += i; + } + prev = i; + } + if (has) return str; + else return text; + } + + // find best quote_mark by detecting if the string contains any single + // or double quotes. When a single quote is found, we not we want a double + // quote as quote_mark. Otherwise we check if the string cotains any double + // quotes, which will trigger the use of single quotes as best quote_mark. + char detect_best_quotemark(const char* s, char qm) + { + // ensure valid fallback quote_mark + char quote_mark = qm && qm != '*' ? qm : '"'; + while (*s) { + // force double quotes as soon + // as one single quote is found + if (*s == '\'') { return '"'; } + // a single does not force quote_mark + // maybe we see a double quote later + else if (*s == '"') { quote_mark = '\''; } + ++ s; + } + return quote_mark; + } + + std::string read_hex_escapes(const std::string& s) + { + + std::string result; + bool skipped = false; + + for (size_t i = 0, L = s.length(); i < L; ++i) { + + // implement the same strange ruby sass behavior + // an escape sequence can also mean a unicode char + if (s[i] == '\\' && !skipped) { + + // remember + skipped = true; + + // escape length + size_t len = 1; + + // parse as many sequence chars as possible + // ToDo: Check if ruby aborts after possible max + while (i + len < L && s[i + len] && isxdigit(s[i + len])) ++ len; + + if (len > 1) { + + // convert the extracted hex string to code point value + // ToDo: Maybe we could do this without creating a substring + uint32_t cp = strtol(s.substr (i + 1, len - 1).c_str(), NULL, 16); + + if (s[i + len] == ' ') ++ len; + + // assert invalid code points + if (cp == 0) cp = 0xFFFD; + // replace bell character + // if (cp == '\n') cp = 32; + + // use a very simple approach to convert via utf8 lib + // maybe there is a more elegant way; maybe we shoud + // convert the whole output from string to a stream!? + // allocate memory for utf8 char and convert to utf8 + unsigned char u[5] = {0,0,0,0,0}; utf8::append(cp, u); + for(size_t m = 0; m < 5 && u[m]; m++) result.push_back(u[m]); + + // skip some more chars? + i += len - 1; skipped = false; + + } + + else { + + skipped = false; + + result.push_back(s[i]); + + } + + } + + else { + + result.push_back(s[i]); + + } + + } + + return result; + + } + + std::string unquote(const std::string& s, char* qd, bool keep_utf8_sequences, bool strict) + { + + // not enough room for quotes + // no possibility to unquote + if (s.length() < 2) return s; + + char q; + bool skipped = false; + + // this is no guarantee that the unquoting will work + // what about whitespace before/after the quote_mark? + if (*s.begin() == '"' && *s.rbegin() == '"') q = '"'; + else if (*s.begin() == '\'' && *s.rbegin() == '\'') q = '\''; + else return s; + + std::string unq; + unq.reserve(s.length()-2); + + for (size_t i = 1, L = s.length() - 1; i < L; ++i) { + + // implement the same strange ruby sass behavior + // an escape sequence can also mean a unicode char + if (s[i] == '\\' && !skipped) { + // remember + skipped = true; + + // skip it + // ++ i; + + // if (i == L) break; + + // escape length + size_t len = 1; + + // parse as many sequence chars as possible + // ToDo: Check if ruby aborts after possible max + while (i + len < L && s[i + len] && isxdigit(s[i + len])) ++ len; + + // hex string? + if (keep_utf8_sequences) { + unq.push_back(s[i]); + } else if (len > 1) { + + // convert the extracted hex string to code point value + // ToDo: Maybe we could do this without creating a substring + uint32_t cp = strtol(s.substr (i + 1, len - 1).c_str(), NULL, 16); + + if (s[i + len] == ' ') ++ len; + + // assert invalid code points + if (cp == 0) cp = 0xFFFD; + // replace bell character + // if (cp == '\n') cp = 32; + + // use a very simple approach to convert via utf8 lib + // maybe there is a more elegant way; maybe we shoud + // convert the whole output from string to a stream!? + // allocate memory for utf8 char and convert to utf8 + unsigned char u[5] = {0,0,0,0,0}; utf8::append(cp, u); + for(size_t m = 0; m < 5 && u[m]; m++) unq.push_back(u[m]); + + // skip some more chars? + i += len - 1; skipped = false; + + } + + + } + // check for unexpected delimiter + // be strict and throw error back + // else if (!skipped && q == s[i]) { + // // don't be that strict + // return s; + // // this basically always means an internal error and not users fault + // error("Unescaped delimiter in string to unquote found. [" + s + "]", ParserState("[UNQUOTE]")); + // } + else { + if (strict && !skipped) { + if (s[i] == q) return s; + } + skipped = false; + unq.push_back(s[i]); + } + + } + if (skipped) { return s; } + if (qd) *qd = q; + return unq; + + } + + std::string quote(const std::string& s, char q) + { + + // autodetect with fallback to given quote + q = detect_best_quotemark(s.c_str(), q); + + // return an empty quoted string + if (s.empty()) return std::string(2, q ? q : '"'); + + std::string quoted; + quoted.reserve(s.length()+2); + quoted.push_back(q); + + const char* it = s.c_str(); + const char* end = it + strlen(it) + 1; + while (*it && it < end) { + const char* now = it; + + if (*it == q) { + quoted.push_back('\\'); + } else if (*it == '\\') { + quoted.push_back('\\'); + } + + int cp = utf8::next(it, end); + + // in case of \r, check if the next in sequence + // is \n and then advance the iterator and skip \r + if (cp == '\r' && it < end && utf8::peek_next(it, end) == '\n') { + cp = utf8::next(it, end); + } + + if (cp == '\n') { + quoted.push_back('\\'); + quoted.push_back('a'); + // we hope we can remove this flag once we figure out + // why ruby sass has these different output behaviors + // gsub(/\n(?![a-fA-F0-9\s])/, "\\a").gsub("\n", "\\a ") + using namespace Prelexer; + if (alternatives < + Prelexer::char_range<'a', 'f'>, + Prelexer::char_range<'A', 'F'>, + Prelexer::char_range<'0', '9'>, + space + >(it) != NULL) { + quoted.push_back(' '); + } + } else if (cp < 127) { + quoted.push_back((char) cp); + } else { + while (now < it) { + quoted.push_back(*now); + ++ now; + } + } + } + + quoted.push_back(q); + return quoted; + } + + bool is_hex_doublet(double n) + { + return n == 0x00 || n == 0x11 || n == 0x22 || n == 0x33 || + n == 0x44 || n == 0x55 || n == 0x66 || n == 0x77 || + n == 0x88 || n == 0x99 || n == 0xAA || n == 0xBB || + n == 0xCC || n == 0xDD || n == 0xEE || n == 0xFF ; + } + + bool is_color_doublet(double r, double g, double b) + { + return is_hex_doublet(r) && is_hex_doublet(g) && is_hex_doublet(b); + } + + bool peek_linefeed(const char* start) + { + using namespace Prelexer; + using namespace Constants; + return sequence < + zero_plus < + alternatives < + exactly <' '>, + exactly <'\t'>, + line_comment, + block_comment, + delimited_by < + slash_star, + star_slash, + false + > + > + >, + re_linebreak + >(start) != 0; + } + + namespace Util { + using std::string; + + std::string rtrim(const std::string &str) { + std::string trimmed = str; + size_t pos_ws = trimmed.find_last_not_of(" \t\n\v\f\r"); + if (pos_ws != std::string::npos) + { trimmed.erase(pos_ws + 1); } + else { trimmed.clear(); } + return trimmed; + } + + std::string normalize_underscores(const std::string& str) { + std::string normalized = str; + for(size_t i = 0, L = normalized.length(); i < L; ++i) { + if(normalized[i] == '_') { + normalized[i] = '-'; + } + } + return normalized; + } + + std::string normalize_decimals(const std::string& str) { + std::string prefix = "0"; + std::string normalized = str; + + return normalized[0] == '.' ? normalized.insert(0, prefix) : normalized; + } + + bool isPrintable(Ruleset_Ptr r, Sass_Output_Style style) { + if (r == NULL) { + return false; + } + + Block_Obj b = r->block(); + + Selector_List_Ptr sl = Cast(r->selector()); + bool hasSelectors = sl ? sl->length() > 0 : false; + + if (!hasSelectors) { + return false; + } + + bool hasDeclarations = false; + bool hasPrintableChildBlocks = false; + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + if (Cast(stm)) { + return true; + } else if (Declaration_Ptr d = Cast(stm)) { + return isPrintable(d, style); + } else if (Has_Block_Ptr p = Cast(stm)) { + Block_Obj pChildBlock = p->block(); + if (isPrintable(pChildBlock, style)) { + hasPrintableChildBlocks = true; + } + } else if (Comment_Ptr c = Cast(stm)) { + // keep for uncompressed + if (style != COMPRESSED) { + hasDeclarations = true; + } + // output style compressed + if (c->is_important()) { + hasDeclarations = c->is_important(); + } + } else { + hasDeclarations = true; + } + + if (hasDeclarations || hasPrintableChildBlocks) { + return true; + } + } + + return false; + } + + bool isPrintable(String_Constant_Ptr s, Sass_Output_Style style) + { + return ! s->value().empty(); + } + + bool isPrintable(String_Quoted_Ptr s, Sass_Output_Style style) + { + return true; + } + + bool isPrintable(Declaration_Ptr d, Sass_Output_Style style) + { + Expression_Obj val = d->value(); + if (String_Quoted_Obj sq = Cast(val)) return isPrintable(sq.ptr(), style); + if (String_Constant_Obj sc = Cast(val)) return isPrintable(sc.ptr(), style); + return true; + } + + bool isPrintable(Supports_Block_Ptr f, Sass_Output_Style style) { + if (f == NULL) { + return false; + } + + Block_Obj b = f->block(); + + bool hasDeclarations = false; + bool hasPrintableChildBlocks = false; + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + if (Cast(stm) || Cast(stm)) { + hasDeclarations = true; + } + else if (Has_Block_Ptr b = Cast(stm)) { + Block_Obj pChildBlock = b->block(); + if (!b->is_invisible()) { + if (isPrintable(pChildBlock, style)) { + hasPrintableChildBlocks = true; + } + } + } + + if (hasDeclarations || hasPrintableChildBlocks) { + return true; + } + } + + return false; + } + + bool isPrintable(Media_Block_Ptr m, Sass_Output_Style style) + { + if (m == 0) return false; + Block_Obj b = m->block(); + if (b == 0) return false; + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + if (Cast(stm)) return true; + else if (Cast(stm)) return true; + else if (Comment_Ptr c = Cast(stm)) { + if (isPrintable(c, style)) { + return true; + } + } + else if (Ruleset_Ptr r = Cast(stm)) { + if (isPrintable(r, style)) { + return true; + } + } + else if (Supports_Block_Ptr f = Cast(stm)) { + if (isPrintable(f, style)) { + return true; + } + } + else if (Media_Block_Ptr mb = Cast(stm)) { + if (isPrintable(mb, style)) { + return true; + } + } + else if (Has_Block_Ptr b = Cast(stm)) { + if (isPrintable(b->block(), style)) { + return true; + } + } + } + return false; + } + + bool isPrintable(Comment_Ptr c, Sass_Output_Style style) + { + // keep for uncompressed + if (style != COMPRESSED) { + return true; + } + // output style compressed + if (c->is_important()) { + return true; + } + // not printable + return false; + }; + + bool isPrintable(Block_Obj b, Sass_Output_Style style) { + if (!b) { + return false; + } + + for (size_t i = 0, L = b->length(); i < L; ++i) { + Statement_Obj stm = b->at(i); + if (Cast(stm) || Cast(stm)) { + return true; + } + else if (Comment_Ptr c = Cast(stm)) { + if (isPrintable(c, style)) { + return true; + } + } + else if (Ruleset_Ptr r = Cast(stm)) { + if (isPrintable(r, style)) { + return true; + } + } + else if (Supports_Block_Ptr f = Cast(stm)) { + if (isPrintable(f, style)) { + return true; + } + } + else if (Media_Block_Ptr m = Cast(stm)) { + if (isPrintable(m, style)) { + return true; + } + } + else if (Has_Block_Ptr b = Cast(stm)) { + if (isPrintable(b->block(), style)) { + return true; + } + } + } + + return false; + } + + bool isAscii(const char chr) { + return unsigned(chr) < 128; + } + + } +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/util.hpp b/mybulma/node_modules/node-sass/src/libsass/src/util.hpp new file mode 100644 index 0000000..f23475f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/util.hpp @@ -0,0 +1,56 @@ +#ifndef SASS_UTIL_H +#define SASS_UTIL_H + +#include +#include +#include +#include "sass.hpp" +#include "sass/base.h" +#include "ast_fwd_decl.hpp" + +#define SASS_ASSERT(cond, msg) assert(cond && msg) + +namespace Sass { + + double round(double val, size_t precision = 0); + double sass_strtod(const char* str); + const char* safe_str(const char *, const char* = ""); + void free_string_array(char **); + char **copy_strings(const std::vector&, char ***, int = 0); + std::string read_css_string(const std::string& str, bool css = true); + std::string evacuate_escapes(const std::string& str); + std::string string_to_output(const std::string& str); + std::string comment_to_string(const std::string& text); + std::string read_hex_escapes(const std::string& str); + std::string escape_string(const std::string& str); + void newline_to_space(std::string& str); + + std::string quote(const std::string&, char q = 0); + std::string unquote(const std::string&, char* q = 0, bool keep_utf8_sequences = false, bool strict = true); + char detect_best_quotemark(const char* s, char qm = '"'); + + bool is_hex_doublet(double n); + bool is_color_doublet(double r, double g, double b); + + bool peek_linefeed(const char* start); + + namespace Util { + + std::string rtrim(const std::string& str); + + std::string normalize_underscores(const std::string& str); + std::string normalize_decimals(const std::string& str); + + bool isPrintable(Ruleset_Ptr r, Sass_Output_Style style = NESTED); + bool isPrintable(Supports_Block_Ptr r, Sass_Output_Style style = NESTED); + bool isPrintable(Media_Block_Ptr r, Sass_Output_Style style = NESTED); + bool isPrintable(Comment_Ptr b, Sass_Output_Style style = NESTED); + bool isPrintable(Block_Obj b, Sass_Output_Style style = NESTED); + bool isPrintable(String_Constant_Ptr s, Sass_Output_Style style = NESTED); + bool isPrintable(String_Quoted_Ptr s, Sass_Output_Style style = NESTED); + bool isPrintable(Declaration_Ptr d, Sass_Output_Style style = NESTED); + bool isAscii(const char chr); + + } +} +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/src/values.cpp b/mybulma/node_modules/node-sass/src/libsass/src/values.cpp new file mode 100644 index 0000000..0f2fd48 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/values.cpp @@ -0,0 +1,131 @@ +#include "sass.hpp" +#include "sass.h" +#include "values.hpp" + +#include + +namespace Sass { + + // convert value from C++ side to C-API + union Sass_Value* ast_node_to_sass_value (const Expression_Ptr val) + { + if (val->concrete_type() == Expression::NUMBER) + { + Number_Ptr_Const res = Cast(val); + return sass_make_number(res->value(), res->unit().c_str()); + } + else if (val->concrete_type() == Expression::COLOR) + { + Color_Ptr_Const col = Cast(val); + return sass_make_color(col->r(), col->g(), col->b(), col->a()); + } + else if (val->concrete_type() == Expression::LIST) + { + List_Ptr_Const l = Cast(val); + union Sass_Value* list = sass_make_list(l->size(), l->separator(), l->is_bracketed()); + for (size_t i = 0, L = l->length(); i < L; ++i) { + Expression_Obj obj = l->at(i); + auto val = ast_node_to_sass_value(obj); + sass_list_set_value(list, i, val); + } + return list; + } + else if (val->concrete_type() == Expression::MAP) + { + Map_Ptr_Const m = Cast(val); + union Sass_Value* map = sass_make_map(m->length()); + size_t i = 0; for (Expression_Obj key : m->keys()) { + sass_map_set_key(map, i, ast_node_to_sass_value(key)); + sass_map_set_value(map, i, ast_node_to_sass_value(m->at(key))); + ++ i; + } + return map; + } + else if (val->concrete_type() == Expression::NULL_VAL) + { + return sass_make_null(); + } + else if (val->concrete_type() == Expression::BOOLEAN) + { + Boolean_Ptr_Const res = Cast(val); + return sass_make_boolean(res->value()); + } + else if (val->concrete_type() == Expression::STRING) + { + if (String_Quoted_Ptr_Const qstr = Cast(val)) + { + return sass_make_qstring(qstr->value().c_str()); + } + else if (String_Constant_Ptr_Const cstr = Cast(val)) + { + return sass_make_string(cstr->value().c_str()); + } + } + return sass_make_error("unknown sass value type"); + } + + // convert value from C-API to C++ side + Value_Ptr sass_value_to_ast_node (const union Sass_Value* val) + { + switch (sass_value_get_tag(val)) { + case SASS_NUMBER: + return SASS_MEMORY_NEW(Number, + ParserState("[C-VALUE]"), + sass_number_get_value(val), + sass_number_get_unit(val)); + case SASS_BOOLEAN: + return SASS_MEMORY_NEW(Boolean, + ParserState("[C-VALUE]"), + sass_boolean_get_value(val)); + case SASS_COLOR: + return SASS_MEMORY_NEW(Color, + ParserState("[C-VALUE]"), + sass_color_get_r(val), + sass_color_get_g(val), + sass_color_get_b(val), + sass_color_get_a(val)); + case SASS_STRING: + if (sass_string_is_quoted(val)) { + return SASS_MEMORY_NEW(String_Quoted, + ParserState("[C-VALUE]"), + sass_string_get_value(val)); + } + return SASS_MEMORY_NEW(String_Constant, + ParserState("[C-VALUE]"), + sass_string_get_value(val)); + case SASS_LIST: { + List_Ptr l = SASS_MEMORY_NEW(List, + ParserState("[C-VALUE]"), + sass_list_get_length(val), + sass_list_get_separator(val)); + for (size_t i = 0, L = sass_list_get_length(val); i < L; ++i) { + l->append(sass_value_to_ast_node(sass_list_get_value(val, i))); + } + l->is_bracketed(sass_list_get_is_bracketed(val)); + return l; + } + case SASS_MAP: { + Map_Ptr m = SASS_MEMORY_NEW(Map, ParserState("[C-VALUE]")); + for (size_t i = 0, L = sass_map_get_length(val); i < L; ++i) { + *m << std::make_pair( + sass_value_to_ast_node(sass_map_get_key(val, i)), + sass_value_to_ast_node(sass_map_get_value(val, i))); + } + return m; + } + case SASS_NULL: + return SASS_MEMORY_NEW(Null, ParserState("[C-VALUE]")); + case SASS_ERROR: + return SASS_MEMORY_NEW(Custom_Error, + ParserState("[C-VALUE]"), + sass_error_get_message(val)); + case SASS_WARNING: + return SASS_MEMORY_NEW(Custom_Warning, + ParserState("[C-VALUE]"), + sass_warning_get_message(val)); + default: break; + } + return 0; + } + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/src/values.hpp b/mybulma/node_modules/node-sass/src/libsass/src/values.hpp new file mode 100644 index 0000000..f78ca12 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/src/values.hpp @@ -0,0 +1,12 @@ +#ifndef SASS_VALUES_H +#define SASS_VALUES_H + +#include "ast.hpp" + +namespace Sass { + + union Sass_Value* ast_node_to_sass_value (const Expression_Ptr val); + Value_Ptr sass_value_to_ast_node (const union Sass_Value* val); + +} +#endif diff --git a/mybulma/node_modules/node-sass/src/libsass/test/test_node.cpp b/mybulma/node_modules/node-sass/src/libsass/test/test_node.cpp new file mode 100644 index 0000000..905dc18 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/test/test_node.cpp @@ -0,0 +1,94 @@ +#include +#include + +#include "node.hpp" +#include "parser.hpp" + + +#define STATIC_ARRAY_SIZE(array) (sizeof((array))/sizeof((array[0]))) + + +namespace Sass { + + Context ctx = Context::Data(); + + const char* const ROUNDTRIP_TESTS[] = { + NULL, + "~", + "CMPD", + "~ CMPD", + "CMPD >", + "> > CMPD", + "CMPD ~ ~", + "> + CMPD1.CMPD2 > ~", + "> + CMPD1.CMPD2 CMPD3.CMPD4 > ~", + "+ CMPD1 CMPD2 ~ CMPD3 + CMPD4 > CMPD5 > ~" + }; + + + + static Complex_Selector* createComplexSelector(std::string src) { + std::string temp(src); + temp += ";"; + return (*Parser::from_c_str(temp.c_str(), ctx, "", Position()).parse_selector_list())[0]; + } + + + void roundtripTest(const char* toTest) { + + // Create the initial selector + + Complex_Selector* pOrigSelector = NULL; + if (toTest) { + pOrigSelector = createComplexSelector(toTest); + } + + std::string expected(pOrigSelector ? pOrigSelector->to_string() : "NULL"); + + + // Roundtrip the selector into a node and back + + Node node = complexSelectorToNode(pOrigSelector, ctx); + + std::stringstream nodeStringStream; + nodeStringStream << node; + std::string nodeString = nodeStringStream.str(); + cout << "ASNODE: " << node << endl; + + Complex_Selector* pNewSelector = nodeToComplexSelector(node, ctx); + + // Show the result + + std::string result(pNewSelector ? pNewSelector->to_string() : "NULL"); + + cout << "SELECTOR: " << expected << endl; + cout << "NEW SELECTOR: " << result << endl; + + + // Test that they are equal using the equality operator + + assert( (!pOrigSelector && !pNewSelector ) || (pOrigSelector && pNewSelector) ); + if (pOrigSelector) { + assert( *pOrigSelector == *pNewSelector ); + } + + + // Test that they are equal by comparing the string versions of the selectors + + assert(expected == result); + + } + + + int main() { + for (int index = 0; index < STATIC_ARRAY_SIZE(ROUNDTRIP_TESTS); index++) { + const char* const toTest = ROUNDTRIP_TESTS[index]; + cout << "\nINPUT STRING: " << (toTest ? toTest : "NULL") << endl; + roundtripTest(toTest); + } + + cout << "\nTesting Done.\n"; + } + + +} diff --git a/mybulma/node_modules/node-sass/src/libsass/test/test_paths.cpp b/mybulma/node_modules/node-sass/src/libsass/test/test_paths.cpp new file mode 100644 index 0000000..bfcf8ec --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/test/test_paths.cpp @@ -0,0 +1,28 @@ +#include +#include "../paths.hpp" + +using namespace Sass; + +template +std::vector& operator<<(std::vector& v, const T& e) +{ + v.push_back(e); + return v; +} + +int main() +{ + std::vector v1, v2, v3; + v1 << 1 << 2; + v2 << 3; + v3 << 4 << 5 << 6; + + std::vector > ss; + ss << v1 << v2 << v3; + + std::vector > ps = paths(ss); + for (size_t i = 0, S = ps.size(); i < S; ++i) { + std::cout << vector_to_string(ps[i]) << std::endl; + } + return 0; +} diff --git a/mybulma/node_modules/node-sass/src/libsass/test/test_selector_difference.cpp b/mybulma/node_modules/node-sass/src/libsass/test/test_selector_difference.cpp new file mode 100644 index 0000000..e2880c0 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/test/test_selector_difference.cpp @@ -0,0 +1,25 @@ +#include "../ast.hpp" +#include "../context.hpp" +#include "../parser.hpp" +#include +#include + +using namespace Sass; + +Context ctx = Context::Data(); + +Compound_Selector* selector(std::string src) +{ return Parser::from_c_str(src.c_str(), ctx, "", Position()).parse_compound_selector(); } + +void diff(std::string s, std::string t) +{ + std::cout << s << " - " << t << " = " << selector(s + ";")->minus(selector(t + ";"), ctx)->to_string() << std::endl; +} + +int main() +{ + diff(".a.b.c", ".c.b"); + diff(".a.b.c", ".fludge.b"); + + return 0; +} diff --git a/mybulma/node_modules/node-sass/src/libsass/test/test_specificity.cpp b/mybulma/node_modules/node-sass/src/libsass/test/test_specificity.cpp new file mode 100644 index 0000000..ba9bbfc --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/test/test_specificity.cpp @@ -0,0 +1,25 @@ +#include "../ast.hpp" +#include "../context.hpp" +#include "../parser.hpp" +#include +#include + +using namespace Sass; + +Context ctx = Context::Data(); + +Selector* selector(std::string src) +{ return Parser::from_c_str(src.c_str(), ctx, "", Position()).parse_selector_list(); } + +void spec(std::string sel) +{ std::cout << sel << "\t::\t" << selector(sel + ";")->specificity() << std::endl; } + +int main() +{ + spec("foo bar hux"); + spec(".foo .bar hux"); + spec("#foo .bar[hux='mux']"); + spec("a b c d e f"); + + return 0; +} diff --git a/mybulma/node_modules/node-sass/src/libsass/test/test_subset_map.cpp b/mybulma/node_modules/node-sass/src/libsass/test/test_subset_map.cpp new file mode 100644 index 0000000..3794514 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/test/test_subset_map.cpp @@ -0,0 +1,472 @@ +#include +#include +#include +#include "../subset_map.hpp" + +Subset_Map ssm; + +string toString(std::vector v); +string toString(std::vector>> v); +void assertEqual(string std::sExpected, std::string sResult); + +void setup() { + ssm.clear(); + + //@ssm[Set[1, 2]] = "Foo" + std::vector s1; + s1.push_back("1"); + s1.push_back("2"); + ssm.put(s1, "Foo"); + + //@ssm[Set["fizz", "fazz"]] = "Bar" + std::vector s2; + s2.push_back("fizz"); + s2.push_back("fazz"); + ssm.put(s2, "Bar"); + + //@ssm[Set[:foo, :bar]] = "Baz" + std::vector s3; + s3.push_back(":foo"); + s3.push_back(":bar"); + ssm.put(s3, "Baz"); + + //@ssm[Set[:foo, :bar, :baz]] = "Bang" + std::vector s4; + s4.push_back(":foo"); + s4.push_back(":bar"); + s4.push_back(":baz"); + ssm.put(s4, "Bang"); + + //@ssm[Set[:bip, :bop, :blip]] = "Qux" + std::vector s5; + s5.push_back(":bip"); + s5.push_back(":bop"); + s5.push_back(":blip"); + ssm.put(s5, "Qux"); + + //@ssm[Set[:bip, :bop]] = "Thram" + std::vector s6; + s6.push_back(":bip"); + s6.push_back(":bop"); + ssm.put(s6, "Thram"); +} + +void testEqualKeys() { + std::cout << "testEqualKeys" << std::endl; + + //assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[1, 2]) + std::vector k1; + k1.push_back("1"); + k1.push_back("2"); + assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1))); + + //assert_equal [["Bar", Set["fizz", "fazz"]]], @ssm.get(Set["fizz", "fazz"]) + std::vector k2; + k2.push_back("fizz"); + k2.push_back("fazz"); + assertEqual("[[Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2))); + + std::cout << std::endl; +} + +void testSubsetKeys() { + std::cout << "testSubsetKeys" << std::endl; + + //assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[1, 2, "fuzz"]) + std::vector k1; + k1.push_back("1"); + k1.push_back("2"); + k1.push_back("fuzz"); + assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1))); + + //assert_equal [["Bar", Set["fizz", "fazz"]]], @ssm.get(Set["fizz", "fazz", 3]) + std::vector k2; + k2.push_back("fizz"); + k2.push_back("fazz"); + k2.push_back("3"); + assertEqual("[[Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2))); + + std::cout << std::endl; +} + +void testSupersetKeys() { + std::cout << "testSupersetKeys" << std::endl; + + //assert_equal [], @ssm.get(Set[1]) + std::vector k1; + k1.push_back("1"); + assertEqual("[]", toString(ssm.get_kv(k1))); + + //assert_equal [], @ssm.get(Set[2]) + std::vector k2; + k2.push_back("2"); + assertEqual("[]", toString(ssm.get_kv(k2))); + + //assert_equal [], @ssm.get(Set["fizz"]) + std::vector k3; + k3.push_back("fizz"); + assertEqual("[]", toString(ssm.get_kv(k3))); + + //assert_equal [], @ssm.get(Set["fazz"]) + std::vector k4; + k4.push_back("fazz"); + assertEqual("[]", toString(ssm.get_kv(k4))); + + std::cout << std::endl; +} + +void testDisjointKeys() { + std::cout << "testDisjointKeys" << std::endl; + + //assert_equal [], @ssm.get(Set[3, 4]) + std::vector k1; + k1.push_back("3"); + k1.push_back("4"); + assertEqual("[]", toString(ssm.get_kv(k1))); + + //assert_equal [], @ssm.get(Set["fuzz", "frizz"]) + std::vector k2; + k2.push_back("fuzz"); + k2.push_back("frizz"); + assertEqual("[]", toString(ssm.get_kv(k2))); + + //assert_equal [], @ssm.get(Set["gran", 15]) + std::vector k3; + k3.push_back("gran"); + k3.push_back("15"); + assertEqual("[]", toString(ssm.get_kv(k3))); + + std::cout << std::endl; +} + +void testSemiDisjointKeys() { + std::cout << "testSemiDisjointKeys" << std::endl; + + //assert_equal [], @ssm.get(Set[2, 3]) + std::vector k1; + k1.push_back("2"); + k1.push_back("3"); + assertEqual("[]", toString(ssm.get_kv(k1))); + + //assert_equal [], @ssm.get(Set["fizz", "fuzz"]) + std::vector k2; + k2.push_back("fizz"); + k2.push_back("fuzz"); + assertEqual("[]", toString(ssm.get_kv(k2))); + + //assert_equal [], @ssm.get(Set[1, "fazz"]) + std::vector k3; + k3.push_back("1"); + k3.push_back("fazz"); + assertEqual("[]", toString(ssm.get_kv(k3))); + + std::cout << std::endl; +} + +void testEmptyKeySet() { + std::cout << "testEmptyKeySet" << std::endl; + + //assert_raises(ArgumentError) {@ssm[Set[]] = "Fail"} + std::vector s1; + try { + ssm.put(s1, "Fail"); + } + catch (const char* &e) { + assertEqual("internal error: subset map keys may not be empty", e); + } +} + +void testEmptyKeyGet() { + std::cout << "testEmptyKeyGet" << std::endl; + + //assert_equal [], @ssm.get(Set[]) + std::vector k1; + assertEqual("[]", toString(ssm.get_kv(k1))); + + std::cout << std::endl; +} +void testMultipleSubsets() { + std::cout << "testMultipleSubsets" << std::endl; + + //assert_equal [["Foo", Set[1, 2]], ["Bar", Set["fizz", "fazz"]]], @ssm.get(Set[1, 2, "fizz", "fazz"]) + std::vector k1; + k1.push_back("1"); + k1.push_back("2"); + k1.push_back("fizz"); + k1.push_back("fazz"); + assertEqual("[[Foo, Set[1, 2]], [Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k1))); + + //assert_equal [["Foo", Set[1, 2]], ["Bar", Set["fizz", "fazz"]]], @ssm.get(Set[1, 2, 3, "fizz", "fazz", "fuzz"]) + std::vector k2; + k2.push_back("1"); + k2.push_back("2"); + k2.push_back("3"); + k2.push_back("fizz"); + k2.push_back("fazz"); + k2.push_back("fuzz"); + assertEqual("[[Foo, Set[1, 2]], [Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2))); + + //assert_equal [["Baz", Set[:foo, :bar]]], @ssm.get(Set[:foo, :bar]) + std::vector k3; + k3.push_back(":foo"); + k3.push_back(":bar"); + assertEqual("[[Baz, Set[:foo, :bar]]]", toString(ssm.get_kv(k3))); + + //assert_equal [["Baz", Set[:foo, :bar]], ["Bang", Set[:foo, :bar, :baz]]], @ssm.get(Set[:foo, :bar, :baz]) + std::vector k4; + k4.push_back(":foo"); + k4.push_back(":bar"); + k4.push_back(":baz"); + assertEqual("[[Baz, Set[:foo, :bar]], [Bang, Set[:foo, :bar, :baz]]]", toString(ssm.get_kv(k4))); + + std::cout << std::endl; +} +void testBracketBracket() { + std::cout << "testBracketBracket" << std::endl; + + //assert_equal ["Foo"], @ssm[Set[1, 2, "fuzz"]] + std::vector k1; + k1.push_back("1"); + k1.push_back("2"); + k1.push_back("fuzz"); + assertEqual("[Foo]", toString(ssm.get_v(k1))); + + //assert_equal ["Baz", "Bang"], @ssm[Set[:foo, :bar, :baz]] + std::vector k2; + k2.push_back(":foo"); + k2.push_back(":bar"); + k2.push_back(":baz"); + assertEqual("[Baz, Bang]", toString(ssm.get_v(k2))); + + std::cout << std::endl; +} + +void testKeyOrder() { + std::cout << "testEqualKeys" << std::endl; + + //assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[2, 1]) + std::vector k1; + k1.push_back("2"); + k1.push_back("1"); + assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1))); + + std::cout << std::endl; +} + +void testOrderPreserved() { + std::cout << "testOrderPreserved" << std::endl; + //@ssm[Set[10, 11, 12]] = 1 + std::vector s1; + s1.push_back("10"); + s1.push_back("11"); + s1.push_back("12"); + ssm.put(s1, "1"); + + //@ssm[Set[10, 11]] = 2 + std::vector s2; + s2.push_back("10"); + s2.push_back("11"); + ssm.put(s2, "2"); + + //@ssm[Set[11]] = 3 + std::vector s3; + s3.push_back("11"); + ssm.put(s3, "3"); + + //@ssm[Set[11, 12]] = 4 + std::vector s4; + s4.push_back("11"); + s4.push_back("12"); + ssm.put(s4, "4"); + + //@ssm[Set[9, 10, 11, 12, 13]] = 5 + std::vector s5; + s5.push_back("9"); + s5.push_back("10"); + s5.push_back("11"); + s5.push_back("12"); + s5.push_back("13"); + ssm.put(s5, "5"); + + //@ssm[Set[10, 13]] = 6 + std::vector s6; + s6.push_back("10"); + s6.push_back("13"); + ssm.put(s6, "6"); + + //assert_equal([[1, Set[10, 11, 12]], [2, Set[10, 11]], [3, Set[11]], [4, Set[11, 12]], [5, Set[9, 10, 11, 12, 13]], [6, Set[10, 13]]], @ssm.get(Set[9, 10, 11, 12, 13])) + std::vector k1; + k1.push_back("9"); + k1.push_back("10"); + k1.push_back("11"); + k1.push_back("12"); + k1.push_back("13"); + assertEqual("[[1, Set[10, 11, 12]], [2, Set[10, 11]], [3, Set[11]], [4, Set[11, 12]], [5, Set[9, 10, 11, 12, 13]], [6, Set[10, 13]]]", toString(ssm.get_kv(k1))); + + std::cout << std::endl; +} +void testMultipleEqualValues() { + std::cout << "testMultipleEqualValues" << std::endl; + //@ssm[Set[11, 12]] = 1 + std::vector s1; + s1.push_back("11"); + s1.push_back("12"); + ssm.put(s1, "1"); + + //@ssm[Set[12, 13]] = 2 + std::vector s2; + s2.push_back("12"); + s2.push_back("13"); + ssm.put(s2, "2"); + + //@ssm[Set[13, 14]] = 1 + std::vector s3; + s3.push_back("13"); + s3.push_back("14"); + ssm.put(s3, "1"); + + //@ssm[Set[14, 15]] = 1 + std::vector s4; + s4.push_back("14"); + s4.push_back("15"); + ssm.put(s4, "1"); + + //assert_equal([[1, Set[11, 12]], [2, Set[12, 13]], [1, Set[13, 14]], [1, Set[14, 15]]], @ssm.get(Set[11, 12, 13, 14, 15])) + std::vector k1; + k1.push_back("11"); + k1.push_back("12"); + k1.push_back("13"); + k1.push_back("14"); + k1.push_back("15"); + assertEqual("[[1, Set[11, 12]], [2, Set[12, 13]], [1, Set[13, 14]], [1, Set[14, 15]]]", toString(ssm.get_kv(k1))); + + std::cout << std::endl; +} + +int main() +{ + std::vector s1; + s1.push_back("1"); + s1.push_back("2"); + + std::vector s2; + s2.push_back("2"); + s2.push_back("3"); + + std::vector s3; + s3.push_back("3"); + s3.push_back("4"); + + ssm.put(s1, "value1"); + ssm.put(s2, "value2"); + ssm.put(s3, "value3"); + + std::vector s4; + s4.push_back("1"); + s4.push_back("2"); + s4.push_back("3"); + + std::vector > > fetched(ssm.get_kv(s4)); + + std::cout << "PRINTING RESULTS:" << std::endl; + for (size_t i = 0, S = fetched.size(); i < S; ++i) { + std::cout << fetched[i].first << std::endl; + } + + Subset_Map ssm2; + ssm2.put(s1, "foo"); + ssm2.put(s2, "bar"); + ssm2.put(s4, "hux"); + + std::vector > > fetched2(ssm2.get_kv(s4)); + + std::cout << std::endl << "PRINTING RESULTS:" << std::endl; + for (size_t i = 0, S = fetched2.size(); i < S; ++i) { + std::cout << fetched2[i].first << std::endl; + } + + std::cout << "TRYING ON A SELECTOR-LIKE OBJECT" << std::endl; + + Subset_Map sel_ssm; + std::vector target; + target.push_back("desk"); + target.push_back(".wood"); + + std::vector actual; + actual.push_back("desk"); + actual.push_back(".wood"); + actual.push_back(".mine"); + + sel_ssm.put(target, "has-aquarium"); + std::vector > > fetched3(sel_ssm.get_kv(actual)); + std::cout << "RESULTS:" << std::endl; + for (size_t i = 0, S = fetched3.size(); i < S; ++i) { + std::cout << fetched3[i].first << std::endl; + } + + std::cout << std::endl; + + // BEGIN PORTED RUBY TESTS FROM /test/sass/util/subset_map_test.rb + + setup(); + testEqualKeys(); + testSubsetKeys(); + testSupersetKeys(); + testDisjointKeys(); + testSemiDisjointKeys(); + testEmptyKeySet(); + testEmptyKeyGet(); + testMultipleSubsets(); + testBracketBracket(); + testKeyOrder(); + + setup(); + testOrderPreserved(); + + setup(); + testMultipleEqualValues(); + + return 0; +} + +string toString(std::vector>> v) +{ + std::stringstream buffer; + buffer << "["; + for (size_t i = 0, S = v.size(); i < S; ++i) { + buffer << "[" << v[i].first; + buffer << ", Set["; + for (size_t j = 0, S = v[i].second.size(); j < S; ++j) { + buffer << v[i].second[j]; + if (j < S-1) { + buffer << ", "; + } + } + buffer << "]]"; + if (i < S-1) { + buffer << ", "; + } + } + buffer << "]"; + return buffer.str(); +} + +string toString(std::vector v) +{ + std::stringstream buffer; + buffer << "["; + for (size_t i = 0, S = v.size(); i < S; ++i) { + buffer << v[i]; + if (i < S-1) { + buffer << ", "; + } + } + buffer << "]"; + return buffer.str(); +} + +void assertEqual(string sExpected, string sResult) { + std::cout << "Expected: " << sExpected << std::endl; + std::cout << "Result: " << sResult << std::endl; + assert(sExpected == sResult); +} diff --git a/mybulma/node_modules/node-sass/src/libsass/test/test_superselector.cpp b/mybulma/node_modules/node-sass/src/libsass/test/test_superselector.cpp new file mode 100644 index 0000000..bf21c7c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/test/test_superselector.cpp @@ -0,0 +1,69 @@ +#include "../ast.hpp" +#include "../context.hpp" +#include "../parser.hpp" +#include + +using namespace Sass; + +Context ctx = Context(Context::Data()); + +Compound_Selector* compound_selector(std::string src) +{ return Parser::from_c_str(src.c_str(), ctx, "", Position()).parse_compound_selector(); } + +Complex_Selector* complex_selector(std::string src) +{ return Parser::from_c_str(src.c_str(), ctx, "", Position()).parse_complex_selector(false); } + +void check_compound(std::string s1, std::string s2) +{ + std::cout << "Is " + << s1 + << " a superselector of " + << s2 + << "?\t" + << compound_selector(s1 + ";")->is_superselector_of(compound_selector(s2 + ";")) + << std::endl; +} + +void check_complex(std::string s1, std::string s2) +{ + std::cout << "Is " + << s1 + << " a superselector of " + << s2 + << "?\t" + << complex_selector(s1 + ";")->is_superselector_of(complex_selector(s2 + ";")) + << std::endl; +} + +int main() +{ + check_compound(".foo", ".foo.bar"); + check_compound(".foo.bar", ".foo"); + check_compound(".foo.bar", "div.foo"); + check_compound(".foo", "div.foo"); + check_compound("div.foo", ".foo"); + check_compound("div.foo", "div.bar.foo"); + check_compound("p.foo", "div.bar.foo"); + check_compound(".hux", ".mumble"); + + std::cout << std::endl; + + check_complex(".foo ~ .bar", ".foo + .bar"); + check_complex(".foo .bar", ".foo + .bar"); + check_complex(".foo .bar", ".foo > .bar"); + check_complex(".foo .bar > .hux", ".foo.a .bar.b > .hux"); + check_complex(".foo ~ .bar .hux", ".foo.a + .bar.b > .hux"); + check_complex(".foo", ".bar .foo"); + check_complex(".foo", ".foo.a"); + check_complex(".foo.bar", ".foo"); + check_complex(".foo .bar .hux", ".bar .hux"); + check_complex(".foo ~ .bar .hux.x", ".foo.a + .bar.b > .hux.y"); + check_complex(".foo ~ .bar .hux", ".foo.a + .bar.b > .mumble"); + check_complex(".foo + .bar", ".foo ~ .bar"); + check_complex("a c e", "a b c d e"); + check_complex("c a e", "a b c d e"); + + return 0; +} + + diff --git a/mybulma/node_modules/node-sass/src/libsass/test/test_unification.cpp b/mybulma/node_modules/node-sass/src/libsass/test/test_unification.cpp new file mode 100644 index 0000000..5c663ee --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/test/test_unification.cpp @@ -0,0 +1,31 @@ +#include "../ast.hpp" +#include "../context.hpp" +#include "../parser.hpp" +#include + +using namespace Sass; + +Context ctx = Context(Context::Data()); + +Compound_Selector* selector(std::string src) +{ return Parser::from_c_str(src.c_str(), ctx, "", Position()).parse_compound_selector(); } + +void unify(std::string lhs, std::string rhs) +{ + Compound_Selector* unified = selector(lhs + ";")->unify_with(selector(rhs + ";"), ctx); + std::cout << lhs << " UNIFIED WITH " << rhs << " =\t" << (unified ? unified->to_string() : "NOTHING") << std::endl; +} + +int main() +{ + unify(".foo", ".foo.bar"); + unify("div:nth-of-type(odd)", "div:first-child"); + unify("div", "span:whatever"); + unify("div", "span"); + unify("foo:bar::after", "foo:bar::first-letter"); + unify(".foo#bar.hux", ".hux.foo#bar"); + unify(".foo#bar.hux", ".hux.foo#baz"); + unify("*:blah:fudge", "p:fudge:blah"); + + return 0; +} diff --git a/mybulma/node_modules/node-sass/src/libsass/version.sh b/mybulma/node_modules/node-sass/src/libsass/version.sh new file mode 100644 index 0000000..281de74 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/version.sh @@ -0,0 +1,10 @@ +if test "x$LIBSASS_VERSION" = "x"; then + LIBSASS_VERSION=`git describe --abbrev=4 --dirty --always --tags 2>/dev/null` +fi +if test "x$LIBSASS_VERSION" = "x"; then + LIBSASS_VERSION=`cat VERSION 2>/dev/null` +fi +if test "x$LIBSASS_VERSION" = "x"; then + LIBSASS_VERSION="[na]" +fi +echo $LIBSASS_VERSION diff --git a/mybulma/node_modules/node-sass/src/libsass/win/libsass.sln b/mybulma/node_modules/node-sass/src/libsass/win/libsass.sln new file mode 100644 index 0000000..2a55ad8 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/win/libsass.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsass", "libsass.vcxproj", "{E4030474-AFC9-4CC6-BEB6-D846F631502B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".SolutionItems", ".SolutionItems", "{33318C77-2391-4399-8118-C109155A4A75}" + ProjectSection(SolutionItems) = preProject + ..\.editorconfig = ..\.editorconfig + ..\.gitattributes = ..\.gitattributes + ..\.gitignore = ..\.gitignore + ..\.travis.yml = ..\.travis.yml + ..\appveyor.yml = ..\appveyor.yml + ..\Readme.md = ..\Readme.md + ..\res\resource.rc = ..\res\resource.rc + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|Win64 = Debug|Win64 + Release|Win32 = Release|Win32 + Release|Win64 = Release|Win64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Debug|Win32.ActiveCfg = Debug|Win32 + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Debug|Win32.Build.0 = Debug|Win32 + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Debug|Win64.ActiveCfg = Debug|x64 + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Debug|Win64.Build.0 = Debug|x64 + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Release|Win32.ActiveCfg = Release|Win32 + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Release|Win32.Build.0 = Release|Win32 + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Release|Win64.ActiveCfg = Release|x64 + {E4030474-AFC9-4CC6-BEB6-D846F631502B}.Release|Win64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/mybulma/node_modules/node-sass/src/libsass/win/libsass.sln.DotSettings b/mybulma/node_modules/node-sass/src/libsass/win/libsass.sln.DotSettings new file mode 100644 index 0000000..405024e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/win/libsass.sln.DotSettings @@ -0,0 +1,9 @@ + + ExplicitlyExcluded + ExplicitlyExcluded + ExplicitlyExcluded + ExplicitlyExcluded + ExplicitlyExcluded + ExplicitlyExcluded + ExplicitlyExcluded + ExplicitlyExcluded \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/src/libsass/win/libsass.targets b/mybulma/node_modules/node-sass/src/libsass/win/libsass.targets new file mode 100644 index 0000000..c1c7d45 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/win/libsass.targets @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj b/mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj new file mode 100644 index 0000000..8cfd61f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj @@ -0,0 +1,188 @@ + + + + [NA] + ..\src + ..\src + ..\include + + + + + + + + + + %(PreprocessorDefinitions);LIBSASS_VERSION="$(LIBSASS_VERSION)"; + + + + + + + + + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + + {E4030474-AFC9-4CC6-BEB6-D846F631502B} + Win32Proj + libsass + + + libsass + Unicode + + + DynamicLibrary + ADD_EXPORTS;$(PreprocessorDefinitions); + + + StaticLibrary + + + v120 + + + v140 + + + true + + + true + + + false + true + + + false + true + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)bin\Debug\ + $(SolutionDir)bin\Debug\obj\ + + + true + $(SolutionDir)bin\Debug\ + $(SolutionDir)bin\Debug\obj\ + + + false + $(SolutionDir)bin\ + $(SolutionDir)bin\obj\ + + + false + $(SolutionDir)bin\ + $(SolutionDir)bin\obj\ + + + + ..\include;%(AdditionalIncludeDirectories) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;$(PreprocessorDefinitions); + + + Console + true + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;$(PreprocessorDefinitions); + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;_LIB;$(PreprocessorDefinitions); + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;_LIB;$(PreprocessorDefinitions); + + + Console + true + true + true + + + + + + + diff --git a/mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj.filters b/mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj.filters new file mode 100644 index 0000000..980f00f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/libsass/win/libsass.vcxproj.filters @@ -0,0 +1,357 @@ + + + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {bb9c270d-e9f5-49bf-afda-771a1a4bb5b7} + h;hh;hpp;hxx;hm;in;inl;inc;xsd + + + + + Include Headers + + + Include Headers + + + Include Headers + + + Include Headers + + + Include Headers + + + Include Headers + + + Include Headers + + + Include Headers + + + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Source Files + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + diff --git a/mybulma/node_modules/node-sass/src/sass_context_wrapper.cpp b/mybulma/node_modules/node-sass/src/sass_context_wrapper.cpp new file mode 100644 index 0000000..aa25c79 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_context_wrapper.cpp @@ -0,0 +1,67 @@ +#include "sass_context_wrapper.h" + +extern "C" { + using namespace std; + + void compile_it(uv_work_t* req) { + sass_context_wrapper* ctx_w = (sass_context_wrapper*)req->data; + + if (ctx_w->dctx) { + compile_data(ctx_w->dctx); + } + else if (ctx_w->fctx) { + compile_file(ctx_w->fctx); + } + } + + void compile_data(struct Sass_Data_Context* dctx) { + sass_compile_data_context(dctx); + } + + void compile_file(struct Sass_File_Context* fctx) { + sass_compile_file_context(fctx); + } + + sass_context_wrapper* sass_make_context_wrapper() { + return (sass_context_wrapper*)calloc(1, sizeof(sass_context_wrapper)); + } + + void sass_free_context_wrapper(sass_context_wrapper* ctx_w) { + if (ctx_w->dctx) { + sass_delete_data_context(ctx_w->dctx); + } + else if (ctx_w->fctx) { + sass_delete_file_context(ctx_w->fctx); + } + if (ctx_w->async_resource) { + delete ctx_w->async_resource; + } + + delete ctx_w->error_callback; + delete ctx_w->success_callback; + + ctx_w->result.Reset(); + + free(ctx_w->include_path); + free(ctx_w->linefeed); + free(ctx_w->out_file); + free(ctx_w->source_map); + free(ctx_w->source_map_root); + free(ctx_w->indent); + + std::vector::iterator imp_it = ctx_w->importer_bridges.begin(); + while (imp_it != ctx_w->importer_bridges.end()) { + CustomImporterBridge* p = *imp_it; + imp_it = ctx_w->importer_bridges.erase(imp_it); + delete p; + } + std::vector::iterator func_it = ctx_w->function_bridges.begin(); + while (func_it != ctx_w->function_bridges.end()) { + CustomFunctionBridge* p = *func_it; + func_it = ctx_w->function_bridges.erase(func_it); + delete p; + } + + free(ctx_w); + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_context_wrapper.h b/mybulma/node_modules/node-sass/src/sass_context_wrapper.h new file mode 100644 index 0000000..4aa3568 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_context_wrapper.h @@ -0,0 +1,57 @@ +#ifndef SASS_CONTEXT_WRAPPER +#define SASS_CONTEXT_WRAPPER + +#include +#include +#include +#include +#include +#include "custom_function_bridge.h" +#include "custom_importer_bridge.h" + +#ifdef __cplusplus +extern "C" { +#endif + + void compile_data(struct Sass_Data_Context* dctx); + void compile_file(struct Sass_File_Context* fctx); + void compile_it(uv_work_t* req); + + struct sass_context_wrapper { + // binding related + bool is_sync; + void* cookie; + char* file; + char* include_path; + char* out_file; + char* source_map; + char* source_map_root; + char* linefeed; + char* indent; + + // libsass related + Sass_Data_Context* dctx; + Sass_File_Context* fctx; + + // libuv related + uv_async_t async; + uv_work_t request; + + // v8 and nan related + Nan::Persistent result; + Nan::AsyncResource* async_resource; + Nan::Callback* error_callback; + Nan::Callback* success_callback; + + std::vector function_bridges; + std::vector importer_bridges; + }; + + struct sass_context_wrapper* sass_make_context_wrapper(void); + void sass_free_context_wrapper(struct sass_context_wrapper*); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/boolean.cpp b/mybulma/node_modules/node-sass/src/sass_types/boolean.cpp new file mode 100644 index 0000000..2d47932 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/boolean.cpp @@ -0,0 +1,73 @@ +#include +#include "boolean.h" + +namespace SassTypes +{ + Nan::Persistent Boolean::constructor; + bool Boolean::constructor_locked = false; + + Boolean::Boolean(bool _value) { + value = sass_make_boolean(_value); + } + + Boolean& Boolean::get_singleton(bool v) { + static Boolean instance_false(false), instance_true(true); + return v ? instance_true : instance_false; + } + + v8::Local Boolean::get_constructor() { + Nan::EscapableHandleScope scope; + v8::Local conslocal; + if (constructor.IsEmpty()) { + v8::Local tpl = Nan::New(New); + + tpl->SetClassName(Nan::New("SassBoolean").ToLocalChecked()); + tpl->InstanceTemplate()->SetInternalFieldCount(1); + Nan::SetPrototypeTemplate(tpl, "getValue", Nan::New(GetValue)); + + conslocal = Nan::GetFunction(tpl).ToLocalChecked(); + constructor.Reset(conslocal); + + get_singleton(false).js_object.Reset(Nan::NewInstance(conslocal).ToLocalChecked()); + Nan::SetInternalFieldPointer(Nan::New(get_singleton(false).js_object), 0, &get_singleton(false)); + Nan::Set(conslocal, Nan::New("FALSE").ToLocalChecked(), Nan::New(get_singleton(false).js_object)); + + get_singleton(true).js_object.Reset(Nan::NewInstance(conslocal).ToLocalChecked()); + Nan::SetInternalFieldPointer(Nan::New(get_singleton(true).js_object), 0, &get_singleton(true)); + Nan::Set(conslocal, Nan::New("TRUE").ToLocalChecked(), Nan::New(get_singleton(true).js_object)); + + constructor_locked = true; + } else { + conslocal = Nan::New(constructor); + } + + return scope.Escape(conslocal); + } + + v8::Local Boolean::get_js_object() { + return Nan::New(this->js_object); + } + + v8::Local Boolean::get_js_boolean() { + return sass_boolean_get_value(this->value) ? Nan::True() : Nan::False(); + } + + NAN_METHOD(Boolean::New) { + if (info.IsConstructCall()) { + if (constructor_locked) { + return Nan::ThrowTypeError("Cannot instantiate SassBoolean"); + } + } + else { + if (info.Length() != 1 || !info[0]->IsBoolean()) { + return Nan::ThrowTypeError("Expected one boolean argument"); + } + + info.GetReturnValue().Set(get_singleton(Nan::To(info[0]).FromJust()).get_js_object()); + } + } + + NAN_METHOD(Boolean::GetValue) { + info.GetReturnValue().Set(Boolean::Unwrap(info.This())->get_js_boolean()); + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/boolean.h b/mybulma/node_modules/node-sass/src/sass_types/boolean.h new file mode 100644 index 0000000..721a41c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/boolean.h @@ -0,0 +1,31 @@ +#ifndef SASS_TYPES_BOOLEAN_H +#define SASS_TYPES_BOOLEAN_H + +#include +#include "value.h" +#include "sass_value_wrapper.h" + +namespace SassTypes +{ + class Boolean : public SassTypes::Value { + public: + static Boolean& get_singleton(bool); + static v8::Local get_constructor(); + + v8::Local get_js_object(); + + static NAN_METHOD(New); + static NAN_METHOD(GetValue); + + private: + Boolean(bool); + + Nan::Persistent js_object; + + static Nan::Persistent constructor; + static bool constructor_locked; + v8::Local get_js_boolean(); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/color.cpp b/mybulma/node_modules/node-sass/src/sass_types/color.cpp new file mode 100644 index 0000000..40358a2 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/color.cpp @@ -0,0 +1,127 @@ +#include +#include "color.h" + +namespace SassTypes +{ + Color::Color(Sass_Value* v) : SassValueWrapper(v) {} + + Sass_Value* Color::construct(const std::vector> raw_val, Sass_Value **out) { + double a = 1.0, r = 0, g = 0, b = 0; + unsigned argb; + + switch (raw_val.size()) { + case 1: + if (!raw_val[0]->IsNumber()) { + return fail("Only argument should be an integer.", out); + } + + argb = Nan::To(raw_val[0]).FromJust(); + a = (double)((argb >> 030) & 0xff) / 0xff; + r = (double)((argb >> 020) & 0xff); + g = (double)((argb >> 010) & 0xff); + b = (double)(argb & 0xff); + break; + + case 4: + if (!raw_val[3]->IsNumber()) { + return fail("Constructor arguments should be numbers exclusively.", out); + } + + a = Nan::To(raw_val[3]).FromJust(); + NODE_SASS_FALLTHROUGH; + + case 3: + if (!raw_val[0]->IsNumber() || !raw_val[1]->IsNumber() || !raw_val[2]->IsNumber()) { + return fail("Constructor arguments should be numbers exclusively.", out); + } + + r = Nan::To(raw_val[0]).FromJust(); + g = Nan::To(raw_val[1]).FromJust(); + b = Nan::To(raw_val[2]).FromJust(); + break; + + case 0: + break; + + default: + return fail("Constructor should be invoked with either 0, 1, 3 or 4 arguments.", out); + } + + return *out = sass_make_color(r, g, b, a); + } + + void Color::initPrototype(v8::Local proto) { + Nan::SetPrototypeMethod(proto, "getR", GetR); + Nan::SetPrototypeMethod(proto, "getG", GetG); + Nan::SetPrototypeMethod(proto, "getB", GetB); + Nan::SetPrototypeMethod(proto, "getA", GetA); + Nan::SetPrototypeMethod(proto, "setR", SetR); + Nan::SetPrototypeMethod(proto, "setG", SetG); + Nan::SetPrototypeMethod(proto, "setB", SetB); + Nan::SetPrototypeMethod(proto, "setA", SetA); + } + + NAN_METHOD(Color::GetR) { + info.GetReturnValue().Set(sass_color_get_r(Color::Unwrap(info.This())->value)); + } + + NAN_METHOD(Color::GetG) { + info.GetReturnValue().Set(sass_color_get_g(Color::Unwrap(info.This())->value)); + } + + NAN_METHOD(Color::GetB) { + info.GetReturnValue().Set(sass_color_get_b(Color::Unwrap(info.This())->value)); + } + + NAN_METHOD(Color::GetA) { + info.GetReturnValue().Set(sass_color_get_a(Color::Unwrap(info.This())->value)); + } + + NAN_METHOD(Color::SetR) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied value should be a number"); + } + + sass_color_set_r(Color::Unwrap(info.This())->value, Nan::To(info[0]).FromJust()); + } + + NAN_METHOD(Color::SetG) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied value should be a number"); + } + + sass_color_set_g(Color::Unwrap(info.This())->value, Nan::To(info[0]).FromJust()); + } + + NAN_METHOD(Color::SetB) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied value should be a number"); + } + + sass_color_set_b(Color::Unwrap(info.This())->value, Nan::To(info[0]).FromJust()); + } + + NAN_METHOD(Color::SetA) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied value should be a number"); + } + + sass_color_set_a(Color::Unwrap(info.This())->value, Nan::To(info[0]).FromJust()); + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/color.h b/mybulma/node_modules/node-sass/src/sass_types/color.h new file mode 100644 index 0000000..1bf9043 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/color.h @@ -0,0 +1,34 @@ +#ifndef SASS_TYPES_COLOR_H +#define SASS_TYPES_COLOR_H + +#include +#include "sass_value_wrapper.h" + +#if defined(__GNUC__) && __GNUC__ >= 7 +#define NODE_SASS_FALLTHROUGH __attribute__ ((fallthrough)) +#else +#define NODE_SASS_FALLTHROUGH +#endif + +namespace SassTypes +{ + class Color : public SassValueWrapper { + public: + Color(Sass_Value*); + static char const* get_constructor_name() { return "SassColor"; } + static Sass_Value* construct(const std::vector>, Sass_Value **); + + static void initPrototype(v8::Local); + + static NAN_METHOD(GetR); + static NAN_METHOD(GetG); + static NAN_METHOD(GetB); + static NAN_METHOD(GetA); + static NAN_METHOD(SetR); + static NAN_METHOD(SetG); + static NAN_METHOD(SetB); + static NAN_METHOD(SetA); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/error.cpp b/mybulma/node_modules/node-sass/src/sass_types/error.cpp new file mode 100644 index 0000000..03c6307 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/error.cpp @@ -0,0 +1,24 @@ +#include +#include "error.h" +#include "../create_string.h" + +namespace SassTypes +{ + Error::Error(Sass_Value* v) : SassValueWrapper(v) {} + + Sass_Value* Error::construct(const std::vector> raw_val, Sass_Value **out) { + char const* value = ""; + + if (raw_val.size() >= 1) { + if (!raw_val[0]->IsString()) { + return fail("Argument should be a string.", out); + } + + value = create_string(raw_val[0]); + } + + return *out = sass_make_error(value); + } + + void Error::initPrototype(v8::Local) {} +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/error.h b/mybulma/node_modules/node-sass/src/sass_types/error.h new file mode 100644 index 0000000..01786fd --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/error.h @@ -0,0 +1,19 @@ +#ifndef SASS_TYPES_ERROR_H +#define SASS_TYPES_ERROR_H + +#include +#include "sass_value_wrapper.h" + +namespace SassTypes +{ + class Error : public SassValueWrapper { + public: + Error(Sass_Value*); + static char const* get_constructor_name() { return "SassError"; } + static Sass_Value* construct(const std::vector>, Sass_Value **); + + static void initPrototype(v8::Local); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/factory.cpp b/mybulma/node_modules/node-sass/src/sass_types/factory.cpp new file mode 100644 index 0000000..c650710 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/factory.cpp @@ -0,0 +1,72 @@ +#include +#include "factory.h" +#include "value.h" +#include "number.h" +#include "string.h" +#include "color.h" +#include "boolean.h" +#include "list.h" +#include "map.h" +#include "null.h" +#include "error.h" + +namespace SassTypes +{ + SassTypes::Value* Factory::create(Sass_Value* v) { + switch (sass_value_get_tag(v)) { + case SASS_NUMBER: + return new Number(v); + + case SASS_STRING: + return new String(v); + + case SASS_COLOR: + return new Color(v); + + case SASS_BOOLEAN: + return &Boolean::get_singleton(sass_boolean_get_value(v)); + + case SASS_LIST: + return new List(v); + + case SASS_MAP: + return new Map(v); + + case SASS_NULL: + return &Null::get_singleton(); + + case SASS_ERROR: + return new Error(v); + + default: + const char *msg = "Unknown type encountered."; + Nan::ThrowTypeError(msg); + return new Error(sass_make_error(msg)); + } + } + + NAN_MODULE_INIT(Factory::initExports) { + Nan::HandleScope scope; + v8::Local types = Nan::New(); + + Nan::Set(types, Nan::New("Number").ToLocalChecked(), Number::get_constructor()); + Nan::Set(types, Nan::New("String").ToLocalChecked(), String::get_constructor()); + Nan::Set(types, Nan::New("Color").ToLocalChecked(), Color::get_constructor()); + Nan::Set(types, Nan::New("Boolean").ToLocalChecked(), Boolean::get_constructor()); + Nan::Set(types, Nan::New("List").ToLocalChecked(), List::get_constructor()); + Nan::Set(types, Nan::New("Map").ToLocalChecked(), Map::get_constructor()); + Nan::Set(types, Nan::New("Null").ToLocalChecked(), Null::get_constructor()); + Nan::Set(types, Nan::New("Error").ToLocalChecked(), Error::get_constructor()); + Nan::Set(target, Nan::New("types").ToLocalChecked(), types); + } + + Value* Factory::unwrap(v8::Local obj) { + if (obj->IsObject()) { + v8::Local v8_obj = obj.As(); + if (v8_obj->InternalFieldCount() == 1) { + return SassTypes::Value::Unwrap(v8_obj); + } + } + return NULL; + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/factory.h b/mybulma/node_modules/node-sass/src/sass_types/factory.h new file mode 100644 index 0000000..27b7e3f --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/factory.h @@ -0,0 +1,20 @@ +#ifndef SASS_TYPES_FACTORY_H +#define SASS_TYPES_FACTORY_H + +#include +#include +#include "value.h" + +namespace SassTypes +{ + // This is the guru that knows everything about instantiating the right subclass of SassTypes::Value + // to wrap a given Sass_Value object. + class Factory { + public: + static NAN_MODULE_INIT(initExports); + static Value* create(Sass_Value*); + static Value* unwrap(v8::Local); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/list.cpp b/mybulma/node_modules/node-sass/src/sass_types/list.cpp new file mode 100644 index 0000000..4c946ec --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/list.cpp @@ -0,0 +1,101 @@ +#include +#include "list.h" + +namespace SassTypes +{ + List::List(Sass_Value* v) : SassValueWrapper(v) {} + + Sass_Value* List::construct(const std::vector> raw_val, Sass_Value **out) { + size_t length = 0; + bool comma = true; + bool is_bracketed = false; + + if (raw_val.size() >= 1) { + if (!raw_val[0]->IsNumber()) { + return fail("First argument should be an integer.", out); + } + + length = Nan::To(raw_val[0]).FromJust(); + + if (raw_val.size() >= 2) { + if (!raw_val[1]->IsBoolean()) { + return fail("Second argument should be a boolean.", out); + } + + comma = Nan::To(raw_val[1]).FromJust(); + } + } + + return *out = sass_make_list(length, comma ? SASS_COMMA : SASS_SPACE, is_bracketed); + } + + void List::initPrototype(v8::Local proto) { + Nan::SetPrototypeMethod(proto, "getLength", GetLength); + Nan::SetPrototypeMethod(proto, "getSeparator", GetSeparator); + Nan::SetPrototypeMethod(proto, "setSeparator", SetSeparator); + Nan::SetPrototypeMethod(proto, "getValue", GetValue); + Nan::SetPrototypeMethod(proto, "setValue", SetValue); + } + + NAN_METHOD(List::GetValue) { + + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied index should be an integer"); + } + + Sass_Value* list = List::Unwrap(info.This())->value; + size_t index = Nan::To(info[0]).FromJust(); + + + if (index >= sass_list_get_length(list)) { + return Nan::ThrowRangeError(Nan::New("Out of bound index").ToLocalChecked()); + } + + info.GetReturnValue().Set(Factory::create(sass_list_get_value(list, Nan::To(info[0]).FromJust()))->get_js_object()); + } + + NAN_METHOD(List::SetValue) { + if (info.Length() != 2) { + return Nan::ThrowTypeError("Expected two arguments"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied index should be an integer"); + } + + if (!info[1]->IsObject()) { + return Nan::ThrowTypeError("Supplied value should be a SassValue object"); + } + + Value* sass_value = Factory::unwrap(info[1]); + if (sass_value) { + sass_list_set_value(List::Unwrap(info.This())->value, Nan::To(info[0]).FromJust(), sass_value->get_sass_value()); + } else { + Nan::ThrowTypeError("A SassValue is expected as the list item"); + } + } + + NAN_METHOD(List::GetSeparator) { + info.GetReturnValue().Set(sass_list_get_separator(List::Unwrap(info.This())->value) == SASS_COMMA); + } + + NAN_METHOD(List::SetSeparator) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsBoolean()) { + return Nan::ThrowTypeError("Supplied value should be a boolean"); + } + + sass_list_set_separator(List::Unwrap(info.This())->value, Nan::To(info[0]).FromJust() ? SASS_COMMA : SASS_SPACE); + } + + NAN_METHOD(List::GetLength) { + info.GetReturnValue().Set(Nan::New(sass_list_get_length(List::Unwrap(info.This())->value))); + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/list.h b/mybulma/node_modules/node-sass/src/sass_types/list.h new file mode 100644 index 0000000..c43b754 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/list.h @@ -0,0 +1,25 @@ +#ifndef SASS_TYPES_LIST_H +#define SASS_TYPES_LIST_H + +#include +#include "sass_value_wrapper.h" + +namespace SassTypes +{ + class List : public SassValueWrapper { + public: + List(Sass_Value*); + static char const* get_constructor_name() { return "SassList"; } + static Sass_Value* construct(const std::vector>, Sass_Value **); + + static void initPrototype(v8::Local); + + static NAN_METHOD(GetValue); + static NAN_METHOD(SetValue); + static NAN_METHOD(GetSeparator); + static NAN_METHOD(SetSeparator); + static NAN_METHOD(GetLength); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/map.cpp b/mybulma/node_modules/node-sass/src/sass_types/map.cpp new file mode 100644 index 0000000..ae4a260 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/map.cpp @@ -0,0 +1,118 @@ +#include +#include "map.h" + +namespace SassTypes +{ + Map::Map(Sass_Value* v) : SassValueWrapper(v) {} + + Sass_Value* Map::construct(const std::vector> raw_val, Sass_Value **out) { + size_t length = 0; + + if (raw_val.size() >= 1) { + if (!raw_val[0]->IsNumber()) { + return fail("First argument should be an integer.", out); + } + + length = Nan::To(raw_val[0]).FromJust(); + } + + return *out = sass_make_map(length); + } + + void Map::initPrototype(v8::Local proto) { + Nan::SetPrototypeMethod(proto, "getLength", GetLength); + Nan::SetPrototypeMethod(proto, "getKey", GetKey); + Nan::SetPrototypeMethod(proto, "setKey", SetKey); + Nan::SetPrototypeMethod(proto, "getValue", GetValue); + Nan::SetPrototypeMethod(proto, "setValue", SetValue); + } + + NAN_METHOD(Map::GetValue) { + + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied index should be an integer"); + } + + Sass_Value* map = Map::Unwrap(info.This())->value; + size_t index = Nan::To(info[0]).FromJust(); + + + if (index >= sass_map_get_length(map)) { + return Nan::ThrowRangeError(Nan::New("Out of bound index").ToLocalChecked()); + } + + info.GetReturnValue().Set(Factory::create(sass_map_get_value(map, Nan::To(info[0]).FromJust()))->get_js_object()); + } + + NAN_METHOD(Map::SetValue) { + if (info.Length() != 2) { + return Nan::ThrowTypeError("Expected two arguments"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied index should be an integer"); + } + + if (!info[1]->IsObject()) { + return Nan::ThrowTypeError("Supplied value should be a SassValue object"); + } + + Value* sass_value = Factory::unwrap(info[1]); + if (sass_value) { + sass_map_set_value(Map::Unwrap(info.This())->value, Nan::To(info[0]).FromJust(), sass_value->get_sass_value()); + } else { + Nan::ThrowTypeError("A SassValue is expected as a map value"); + } + } + + NAN_METHOD(Map::GetKey) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied index should be an integer"); + } + + Sass_Value* map = Map::Unwrap(info.This())->value; + size_t index = Nan::To(info[0]).FromJust(); + + + if (index >= sass_map_get_length(map)) { + return Nan::ThrowRangeError(Nan::New("Out of bound index").ToLocalChecked()); + } + + SassTypes::Value* obj = Factory::create(sass_map_get_key(map, Nan::To(info[0]).FromJust())); + v8::Local js_obj = obj->get_js_object(); + info.GetReturnValue().Set(js_obj); + } + + NAN_METHOD(Map::SetKey) { + if (info.Length() != 2) { + return Nan::ThrowTypeError("Expected two arguments"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied index should be an integer"); + } + + if (!info[1]->IsObject()) { + return Nan::ThrowTypeError("Supplied value should be a SassValue object"); + } + + Value* sass_value = Factory::unwrap(info[1]); + if (sass_value) { + sass_map_set_key(Map::Unwrap(info.This())->value, Nan::To(info[0]).FromJust(), sass_value->get_sass_value()); + } else { + Nan::ThrowTypeError("A SassValue is expected as a map key"); + } + } + + NAN_METHOD(Map::GetLength) { + info.GetReturnValue().Set(Nan::New(sass_map_get_length(Map::Unwrap(info.This())->value))); + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/map.h b/mybulma/node_modules/node-sass/src/sass_types/map.h new file mode 100644 index 0000000..832585d --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/map.h @@ -0,0 +1,25 @@ +#ifndef SASS_TYPES_MAP_H +#define SASS_TYPES_MAP_H + +#include +#include "sass_value_wrapper.h" + +namespace SassTypes +{ + class Map : public SassValueWrapper { + public: + Map(Sass_Value*); + static char const* get_constructor_name() { return "SassMap"; } + static Sass_Value* construct(const std::vector>, Sass_Value **); + + static void initPrototype(v8::Local); + + static NAN_METHOD(GetValue); + static NAN_METHOD(SetValue); + static NAN_METHOD(GetKey); + static NAN_METHOD(SetKey); + static NAN_METHOD(GetLength); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/null.cpp b/mybulma/node_modules/node-sass/src/sass_types/null.cpp new file mode 100644 index 0000000..69f4c21 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/null.cpp @@ -0,0 +1,57 @@ +#include +#include "null.h" + +namespace SassTypes +{ + Nan::Persistent Null::constructor; + bool Null::constructor_locked = false; + + Null::Null() { + value = sass_make_null(); + } + + Null& Null::get_singleton() { + static Null singleton_instance; + return singleton_instance; + } + + v8::Local Null::get_constructor() { + Nan::EscapableHandleScope scope; + v8::Local conslocal; + if (constructor.IsEmpty()) { + v8::Local tpl = Nan::New(New); + + tpl->SetClassName(Nan::New("SassNull").ToLocalChecked()); + tpl->InstanceTemplate()->SetInternalFieldCount(1); + + conslocal = Nan::GetFunction(tpl).ToLocalChecked(); + constructor.Reset(conslocal); + + get_singleton().js_object.Reset(Nan::NewInstance(conslocal).ToLocalChecked()); + Nan::SetInternalFieldPointer(Nan::New(get_singleton().js_object), 0, &get_singleton()); + Nan::Set(conslocal, Nan::New("NULL").ToLocalChecked(), Nan::New(get_singleton().js_object)); + + constructor_locked = true; + } else { + conslocal = Nan::New(constructor); + } + + return scope.Escape(conslocal); + } + + v8::Local Null::get_js_object() { + return Nan::New(this->js_object); + } + + NAN_METHOD(Null::New) { + + if (info.IsConstructCall()) { + if (constructor_locked) { + return Nan::ThrowTypeError("Cannot instantiate SassNull"); + } + } + else { + info.GetReturnValue().Set(get_singleton().get_js_object()); + } + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/null.h b/mybulma/node_modules/node-sass/src/sass_types/null.h new file mode 100644 index 0000000..15b64ba --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/null.h @@ -0,0 +1,29 @@ +#ifndef SASS_TYPES_NULL_H +#define SASS_TYPES_NULL_H + +#include +#include "value.h" + +namespace SassTypes +{ + class Null : public SassTypes::Value { + public: + static Null& get_singleton(); + static v8::Local get_constructor(); + + Sass_Value* get_sass_value(); + v8::Local get_js_object(); + + static NAN_METHOD(New); + + private: + Null(); + + Nan::Persistent js_object; + + static Nan::Persistent constructor; + static bool constructor_locked; + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/number.cpp b/mybulma/node_modules/node-sass/src/sass_types/number.cpp new file mode 100644 index 0000000..d8d303e --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/number.cpp @@ -0,0 +1,75 @@ +#include +#include "number.h" +#include "../create_string.h" + +namespace SassTypes +{ + Number::Number(Sass_Value* v) : SassValueWrapper(v) {} + + Sass_Value* Number::construct(const std::vector> raw_val, Sass_Value **out) { + double value = 0; + char const* unit = ""; + + if (raw_val.size() >= 1) { + if (!raw_val[0]->IsNumber()) { + return fail("First argument should be a number.", out); + } + + value = Nan::To(raw_val[0]).FromJust(); + + if (raw_val.size() >= 2) { + if (!raw_val[1]->IsString()) { + return fail("Second argument should be a string.", out); + } + + unit = create_string(raw_val[1]); + *out = sass_make_number(value, unit); + delete unit; + return *out; + + } + } + + return *out = sass_make_number(value, unit); + } + + void Number::initPrototype(v8::Local proto) { + Nan::SetPrototypeMethod(proto, "getValue", GetValue); + Nan::SetPrototypeMethod(proto, "getUnit", GetUnit); + Nan::SetPrototypeMethod(proto, "setValue", SetValue); + Nan::SetPrototypeMethod(proto, "setUnit", SetUnit); + } + + NAN_METHOD(Number::GetValue) { + info.GetReturnValue().Set(Nan::New(sass_number_get_value(Number::Unwrap(info.This())->value))); + } + + NAN_METHOD(Number::GetUnit) { + info.GetReturnValue().Set(Nan::New(sass_number_get_unit(Number::Unwrap(info.This())->value)).ToLocalChecked()); + } + + NAN_METHOD(Number::SetValue) { + + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsNumber()) { + return Nan::ThrowTypeError("Supplied value should be a number"); + } + + sass_number_set_value(Number::Unwrap(info.This())->value, Nan::To(info[0]).FromJust()); + } + + NAN_METHOD(Number::SetUnit) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsString()) { + return Nan::ThrowTypeError("Supplied value should be a string"); + } + + sass_number_set_unit(Number::Unwrap(info.This())->value, create_string(info[0])); + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/number.h b/mybulma/node_modules/node-sass/src/sass_types/number.h new file mode 100644 index 0000000..48a0236 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/number.h @@ -0,0 +1,25 @@ +#ifndef SASS_TYPES_NUMBER_H +#define SASS_TYPES_NUMBER_H + +#include +#include "sass_value_wrapper.h" + +namespace SassTypes +{ + + class Number : public SassValueWrapper { + public: + Number(Sass_Value*); + static char const* get_constructor_name() { return "SassNumber"; } + static Sass_Value* construct(const std::vector>, Sass_Value **out); + + static void initPrototype(v8::Local); + + static NAN_METHOD(GetValue); + static NAN_METHOD(GetUnit); + static NAN_METHOD(SetValue); + static NAN_METHOD(SetUnit); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/sass_value_wrapper.h b/mybulma/node_modules/node-sass/src/sass_types/sass_value_wrapper.h new file mode 100644 index 0000000..52a3511 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/sass_value_wrapper.h @@ -0,0 +1,101 @@ +#ifndef SASS_TYPES_SASS_VALUE_WRAPPER_H +#define SASS_TYPES_SASS_VALUE_WRAPPER_H + +#include +#include +#include +#include "value.h" +#include "factory.h" + +namespace SassTypes +{ + // Include this in any SassTypes::Value subclasses to handle all the heavy lifting of constructing JS + // objects and wrapping sass values inside them + template + /* class SassValueWrapper : public SassTypes::Value { */ + class SassValueWrapper : public SassTypes::Value { + public: + static char const* get_constructor_name() { return "SassValue"; } + + SassValueWrapper(Sass_Value* v) : Value(v) { } + v8::Local get_js_object(); + + static v8::Local get_constructor(); + static v8::Local get_constructor_template(); + static NAN_METHOD(New); + static Sass_Value *fail(const char *, Sass_Value **); + + /* private: */ + static Nan::Persistent constructor; + }; + + template + Nan::Persistent SassValueWrapper::constructor; + + template + v8::Local SassValueWrapper::get_js_object() { + if (this->persistent().IsEmpty()) { + v8::Local wrapper = Nan::NewInstance(T::get_constructor()).ToLocalChecked(); + this->Wrap(wrapper); + } + + return this->handle(); + } + + template + v8::Local SassValueWrapper::get_constructor_template() { + Nan::EscapableHandleScope scope; + v8::Local tpl = Nan::New(New); + tpl->SetClassName(Nan::New(T::get_constructor_name()).ToLocalChecked()); + tpl->InstanceTemplate()->SetInternalFieldCount(1); + T::initPrototype(tpl); + + return scope.Escape(tpl); + } + + template + v8::Local SassValueWrapper::get_constructor() { + if (constructor.IsEmpty()) { + constructor.Reset(Nan::GetFunction(T::get_constructor_template()).ToLocalChecked()); + } + + return Nan::New(constructor); + } + + template + NAN_METHOD(SassValueWrapper::New) { + std::vector> localArgs(info.Length()); + + for (auto i = 0; i < info.Length(); ++i) { + localArgs[i] = info[i]; + } + if (info.IsConstructCall()) { + Sass_Value* value; + if (T::construct(localArgs, &value) != NULL) { + T* obj = new T(value); + sass_delete_value(value); + + obj->Wrap(info.This()); + info.GetReturnValue().Set(info.This()); + } else { + return Nan::ThrowError(Nan::New(sass_error_get_message(value)).ToLocalChecked()); + } + } else { + v8::Local cons = T::get_constructor(); + v8::Local inst; + if (Nan::NewInstance(cons, info.Length(), &localArgs[0]).ToLocal(&inst)) { + info.GetReturnValue().Set(inst); + } else { + info.GetReturnValue().Set(Nan::Undefined()); + } + } + } + + template + Sass_Value *SassValueWrapper::fail(const char *reason, Sass_Value **out) { + *out = sass_make_error(reason); + return NULL; + } +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/string.cpp b/mybulma/node_modules/node-sass/src/sass_types/string.cpp new file mode 100644 index 0000000..c6f2c48 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/string.cpp @@ -0,0 +1,48 @@ +#include +#include "string.h" +#include "../create_string.h" + +namespace SassTypes +{ + String::String(Sass_Value* v) : SassValueWrapper(v) {} + + Sass_Value* String::construct(const std::vector> raw_val, Sass_Value **out) { + char const* value = ""; + + if (raw_val.size() >= 1) { + if (!raw_val[0]->IsString()) { + return fail("Argument should be a string.", out); + } + + value = create_string(raw_val[0]); + *out = sass_make_string(value); + delete value; + return *out; + + } else { + return *out = sass_make_string(value); + } + + } + + void String::initPrototype(v8::Local proto) { + Nan::SetPrototypeMethod(proto, "getValue", GetValue); + Nan::SetPrototypeMethod(proto, "setValue", SetValue); + } + + NAN_METHOD(String::GetValue) { + info.GetReturnValue().Set(Nan::New(sass_string_get_value(String::Unwrap(info.This())->value)).ToLocalChecked()); + } + + NAN_METHOD(String::SetValue) { + if (info.Length() != 1) { + return Nan::ThrowTypeError("Expected just one argument"); + } + + if (!info[0]->IsString()) { + return Nan::ThrowTypeError("Supplied value should be a string"); + } + + sass_string_set_value(String::Unwrap(info.This())->value, create_string(info[0])); + } +} diff --git a/mybulma/node_modules/node-sass/src/sass_types/string.h b/mybulma/node_modules/node-sass/src/sass_types/string.h new file mode 100644 index 0000000..2e72c82 --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/string.h @@ -0,0 +1,22 @@ +#ifndef SASS_TYPES_STRING_H +#define SASS_TYPES_STRING_H + +#include +#include "sass_value_wrapper.h" + +namespace SassTypes +{ + class String : public SassValueWrapper { + public: + String(Sass_Value*); + static char const* get_constructor_name() { return "SassString"; } + static Sass_Value* construct(const std::vector>, Sass_Value **); + + static void initPrototype(v8::Local); + + static NAN_METHOD(GetValue); + static NAN_METHOD(SetValue); + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/src/sass_types/value.h b/mybulma/node_modules/node-sass/src/sass_types/value.h new file mode 100644 index 0000000..fa4703c --- /dev/null +++ b/mybulma/node_modules/node-sass/src/sass_types/value.h @@ -0,0 +1,42 @@ +#ifndef SASS_TYPES_VALUE_H +#define SASS_TYPES_VALUE_H + +#include +#include + +namespace SassTypes +{ + // This is the interface that all sass values must comply with + class Value : public Nan::ObjectWrap { + + public: + virtual v8::Local get_js_object() =0; + + Value() { + + } + + Sass_Value* get_sass_value() { + return sass_clone_value(this->value); + } + + protected: + + Sass_Value* value; + + Value(Sass_Value* v) { + this->value = sass_clone_value(v); + } + + ~Value() { + sass_delete_value(this->value); + } + + static Sass_Value* fail(const char *reason, Sass_Value **out) { + *out = sass_make_error(reason); + return NULL; + } + }; +} + +#endif diff --git a/mybulma/node_modules/node-sass/test/api.js b/mybulma/node_modules/node-sass/test/api.js new file mode 100644 index 0000000..164a1c7 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/api.js @@ -0,0 +1,2035 @@ +/*eslint new-cap: ["error", {"capIsNewExceptions": ["Color"]}]*/ + +var assert = require('assert').strict, + fs = require('fs'), + path = require('path'), + read = fs.readFileSync, + sassPath = process.env.NODESASS_COV + ? require.resolve('../lib-cov') + : require.resolve('../lib'), + sass = require(sassPath), + fixture = path.join.bind(null, __dirname, 'fixtures'), + resolveFixture = path.resolve.bind(null, __dirname, 'fixtures'); + +describe('api', function() { + + describe('.render(options, callback)', function() { + + beforeEach(function() { + delete process.env.SASS_PATH; + }); + + it('should compile sass to css with file', function(done) { + var expected = read(fixture('simple/expected.css'), 'utf8').trim(); + + sass.render({ + file: fixture('simple/index.scss') + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should compile sass to css with outFile set to absolute url', function(done) { + sass.render({ + file: fixture('simple/index.scss'), + sourceMap: true, + outFile: fixture('simple/index-test.css') + }, function(error, result) { + assert.strictEqual(JSON.parse(result.map).file, 'index-test.css'); + done(); + }); + }); + + it('should compile sass to css with outFile set to relative url', function(done) { + sass.render({ + file: fixture('simple/index.scss'), + sourceMap: true, + outFile: './index-test.css' + }, function(error, result) { + assert.strictEqual(JSON.parse(result.map).file, 'index-test.css'); + done(); + }); + }); + + it('should compile sass to css with outFile and sourceMap set to relative url', function(done) { + sass.render({ + file: fixture('simple/index.scss'), + sourceMap: './deep/nested/index.map', + outFile: './index-test.css' + }, function(error, result) { + assert.strictEqual(JSON.parse(result.map).file, '../../index-test.css'); + done(); + }); + }); + + it('should not generate source map when not requested', function(done) { + sass.render({ + file: fixture('simple/index.scss'), + sourceMap: false + }, function(error, result) { + assert.strictEqual(Object.prototype.hasOwnProperty.call(result, 'map'), false, 'result has a map property'); + done(); + }); + }); + + it('should not generate source map without outFile and no explicit path given', function(done) { + sass.render({ + file: fixture('simple/index.scss'), + sourceMap: true + }, function(error, result) { + assert.strictEqual(Object.prototype.hasOwnProperty.call(result, 'map'), false, 'result has a map property'); + done(); + }); + }); + + it('should compile generate map with sourceMapRoot pass-through option', function(done) { + sass.render({ + file: fixture('simple/index.scss'), + sourceMap: './deep/nested/index.map', + sourceMapRoot: 'http://test.com/', + outFile: './index-test.css' + }, function(error, result) { + assert.strictEqual(JSON.parse(result.map).sourceRoot, 'http://test.com/'); + done(); + }); + }); + + it('should compile sass to css with data', function(done) { + var src = read(fixture('simple/index.scss'), 'utf8'); + var expected = read(fixture('simple/expected.css'), 'utf8').trim(); + + sass.render({ + data: src + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should compile sass to css using indented syntax', function(done) { + var src = read(fixture('indent/index.sass'), 'utf8'); + var expected = read(fixture('indent/expected.css'), 'utf8').trim(); + + sass.render({ + data: src, + indentedSyntax: true + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should NOT compile empty data string', function(done) { + sass.render({ + data: '' + }, function(error) { + assert.strictEqual(error.message, 'No input specified: provide a file name or a source string to process'); + done(); + }); + }); + + it('should NOT compile without any input', function(done) { + sass.render({ }, function(error) { + assert.strictEqual(error.message, 'No input specified: provide a file name or a source string to process'); + done(); + }); + }); + + it('should returnn error status 1 for bad input', function(done) { + sass.render({ + data: '#navbar width 80%;' + }, function(error) { + assert(error.message); + assert.strictEqual(error.status, 1); + done(); + }); + }); + + it('should compile with include paths', function(done) { + var src = read(fixture('include-path/index.scss'), 'utf8'); + var expected = read(fixture('include-path/expected.css'), 'utf8').trim(); + + sass.render({ + data: src, + includePaths: [ + fixture('include-path/functions'), + fixture('include-path/lib') + ] + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should add cwd to the front on include paths', function(done) { + var src = fixture('cwd-include-path/root/index.scss'); + var expected = read(fixture('cwd-include-path/expected.css'), 'utf8').trim(); + var cwd = process.cwd(); + + process.chdir(fixture('cwd-include-path')); + sass.render({ + file: src, + includePaths: [] + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + + process.chdir(cwd); + done(); + }); + }); + + it('should check SASS_PATH in the specified order', function(done) { + var src = read(fixture('sass-path/index.scss'), 'utf8'); + var expectedRed = read(fixture('sass-path/expected-red.css'), 'utf8').trim(); + var expectedOrange = read(fixture('sass-path/expected-orange.css'), 'utf8').trim(); + + var envIncludes = [ + fixture('sass-path/red'), + fixture('sass-path/orange') + ]; + + process.env.SASS_PATH = envIncludes.join(path.delimiter); + sass.render({ + data: src, + includePaths: [] + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expectedRed.replace(/\r\n/g, '\n')); + }); + + process.env.SASS_PATH = envIncludes.reverse().join(path.delimiter); + sass.render({ + data: src, + includePaths: [] + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expectedOrange.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should prefer include path over SASS_PATH', function(done) { + var src = read(fixture('sass-path/index.scss'), 'utf8'); + var expectedRed = read(fixture('sass-path/expected-red.css'), 'utf8').trim(); + var expectedOrange = read(fixture('sass-path/expected-orange.css'), 'utf8').trim(); + + var envIncludes = [ + fixture('sass-path/red') + ]; + process.env.SASS_PATH = envIncludes.join(path.delimiter); + + sass.render({ + data: src, + includePaths: [] + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expectedRed.replace(/\r\n/g, '\n')); + }); + sass.render({ + data: src, + includePaths: [fixture('sass-path/orange')] + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expectedOrange.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should render with precision option', function(done) { + var src = read(fixture('precision/index.scss'), 'utf8'); + var expected = read(fixture('precision/expected.css'), 'utf8').trim(); + + sass.render({ + data: src, + precision: 10 + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should contain all included files in stats when data is passed', function(done) { + var src = read(fixture('include-files/index.scss'), 'utf8'); + var expected = [ + fixture('include-files/bar.scss').replace(/\\/g, '/'), + fixture('include-files/foo.scss').replace(/\\/g, '/') + ]; + + sass.render({ + data: src, + includePaths: [fixture('include-files')] + }, function(error, result) { + assert.deepStrictEqual(result.stats.includedFiles, expected); + done(); + }); + }); + + it('should render with indentWidth and indentType options', function(done) { + sass.render({ + data: 'div { color: transparent; }', + indentWidth: 7, + indentType: 'tab' + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n\t\t\t\t\t\t\tcolor: transparent; }'); + done(); + }); + }); + + it('should render with linefeed option', function(done) { + sass.render({ + data: 'div { color: transparent; }', + linefeed: 'lfcr' + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n\r color: transparent; }'); + done(); + }); + }); + }); + + describe('.render(importer)', function() { + var src = read(fixture('include-files/index.scss'), 'utf8'); + + it('should respect the order of chained imports when using custom importers and one file is custom imported and the other is not.', function(done) { + sass.render({ + file: fixture('include-files/chained-imports-with-custom-importer.scss'), + importer: function(url, prev, done) { + // NOTE: to see that this test failure is only due to the stated + // issue do each of the following and see that the tests pass. + // + // a) add `return sass.NULL;` as the first line in this function to + // cause non-custom importers to always be used. + // b) comment out the conditional below to force our custom + // importer to always be used. + // + // You will notice that the tests pass when either all native, or + // all custom importers are used, but not when a native + custom + // import chain is used. + if (url !== 'file-processed-by-loader') { + return sass.NULL; + } + done({ + file: fixture('include-files/' + url + '.scss') + }); + } + }, function(err, data) { + assert.strictEqual(err, null); + + assert.strictEqual( + data.css.toString().trim(), + 'body {\n color: "red"; }' + ); + + done(); + }); + }); + + it('should still call the next importer with the resolved prev path when the previous importer returned both a file and contents property - issue #1219', function(done) { + sass.render({ + data: '@import "a";', + importer: function(url, prev, done) { + if (url === 'a') { + done({ + file: '/Users/me/sass/lib/a.scss', + contents: '@import "b"' + }); + } else { + assert.strictEqual(prev, '/Users/me/sass/lib/a.scss'); + done({ + file: '/Users/me/sass/lib/b.scss', + contents: 'div {color: yellow;}' + }); + } + } + }, function() { + done(); + }); + }); + + it('should override imports with "data" as input and fires callback with file and contents', function(done) { + sass.render({ + data: src, + importer: function(url, prev, done) { + done({ + file: '/some/other/path.scss', + contents: 'div {color: yellow;}' + }); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should should resolve imports depth first', function (done) { + var actualImportOrder = []; + var expectedImportOrder = [ + 'a', '_common', 'vars', 'struct', 'a1', 'common', 'vars', 'struct', 'b', 'b1' + ]; + var expected = read(fixture('depth-first/expected.css'), 'utf-8'); + + sass.render({ + file: fixture('depth-first/index.scss'), + importer: function (url, prev, done) { + actualImportOrder.push(url); + done(); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), expected); + assert.deepStrictEqual(actualImportOrder, expectedImportOrder); + done(); + }); + }); + + it('should override imports with "file" as input and fires callback with file and contents', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev, done) { + done({ + file: '/some/other/path.scss', + contents: 'div {color: yellow;}' + }); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should override imports with "data" as input and returns file and contents', function(done) { + sass.render({ + data: src, + importer: function(url, prev) { + return { + file: prev + url, + contents: 'div {color: yellow;}' + }; + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should override imports with "file" as input and returns file and contents', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev) { + return { + file: prev + url, + contents: 'div {color: yellow;}' + }; + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should override imports with "data" as input and fires callback with file', function(done) { + sass.render({ + data: src, + importer: function(url, /* jshint unused:false */ prev, done) { + done({ + file: path.resolve(path.dirname(fixture('include-files/index.scss')), url + (path.extname(url) ? '' : '.scss')) + }); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should override imports with "file" as input and fires callback with file', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev, done) { + done({ + file: path.resolve(path.dirname(prev), url + (path.extname(url) ? '' : '.scss')) + }); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should override imports with "data" as input and returns file', function(done) { + sass.render({ + data: src, + importer: function(url) { + return { + file: path.resolve(path.dirname(fixture('include-files/index.scss')), url + (path.extname(url) ? '' : '.scss')) + }; + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should override imports with "file" as input and returns file', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev) { + return { + file: path.resolve(path.dirname(prev), url + (path.extname(url) ? '' : '.scss')) + }; + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should fallback to default import behaviour if importer returns sass.NULL', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev, done) { + done(sass.NULL); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should fallback to default import behaviour if importer returns null for backwards compatibility', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev, done) { + done(null); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should fallback to default import behaviour if importer returns undefined for backwards compatibility', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev, done) { + done(undefined); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should fallback to default import behaviour if importer returns false for backwards compatibility', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev, done) { + done(false); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + }); + + it('should override imports with "data" as input and fires callback with contents', function(done) { + sass.render({ + data: src, + importer: function(url, prev, done) { + done({ + contents: 'div {color: yellow;}' + }); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should override imports with "file" as input and fires callback with contents', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function(url, prev, done) { + done({ + contents: 'div {color: yellow;}' + }); + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should override imports with "data" as input and returns contents', function(done) { + sass.render({ + data: src, + importer: function() { + return { + contents: 'div {color: yellow;}' + }; + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should override imports with "file" as input and returns contents', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: function() { + return { + contents: 'div {color: yellow;}' + }; + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should accept arrays of importers and return respect the order', function(done) { + sass.render({ + file: fixture('include-files/index.scss'), + importer: [ + function() { + return sass.NULL; + }, + function() { + return { + contents: 'div {color: yellow;}' + }; + } + ] + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + }); + + it('should be able to see its options in this.options', function(done) { + var fxt = fixture('include-files/index.scss'); + sass.render({ + file: fxt, + importer: function() { + assert.strictEqual(fxt, this.options.file); + return {}; + } + }, function() { + assert.strictEqual(fxt, this.options.file); + done(); + }); + }); + + it('should be able to access a persistent options object', function(done) { + sass.render({ + data: src, + importer: function() { + this.state = this.state || 0; + this.state++; + return { + contents: 'div {color: yellow;}' + }; + } + }, function() { + assert.strictEqual(this.state, 2); + done(); + }); + }); + + it('should wrap importer options', function(done) { + var options; + options = { + data: src, + importer: function() { + assert.notStrictEqual(this.options.importer, options.importer); + return { + contents: 'div {color: yellow;}' + }; + } + }; + sass.render(options, function() { + done(); + }); + }); + + it('should reflect user-defined error when returned as callback', function(done) { + sass.render({ + data: src, + importer: function(url, prev, done) { + done(new Error('doesn\'t exist!')); + } + }, function(error) { + assert(/doesn't exist!/.test(error.message)); + done(); + }); + }); + + it('should reflect user-defined error with return', function(done) { + sass.render({ + data: src, + importer: function() { + return new Error('doesn\'t exist!'); + } + }, function(error) { + assert(/doesn't exist!/.test(error.message)); + done(); + }); + }); + + it('should throw exception when importer returns an invalid value', function(done) { + sass.render({ + data: src, + importer: function() { + return { contents: new Buffer('i am not a string!') }; + } + }, function(error) { + assert(/returned value of `contents` must be a string/.test(error.message)); + done(); + }); + }); + }); + + describe('.render(functions)', function() { + it('should call custom defined nullary function', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return new sass.types.Number(42, 'px'); + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: 42px; }'); + done(); + }); + }); + + it('should call custom function with multiple args', function(done) { + sass.render({ + data: 'div { color: foo(3, 42px); }', + functions: { + 'foo($a, $b)': function(factor, size) { + return new sass.types.Number(factor.getValue() * size.getValue(), size.getUnit()); + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: 126px; }'); + done(); + }); + }); + + it('should work with custom functions that return data asynchronously', function(done) { + sass.render({ + data: 'div { color: foo(42px); }', + functions: { + 'foo($a)': function(size, done) { + setTimeout(function() { + done(new sass.types.Number(66, 'em')); + }, 50); + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: 66em; }'); + done(); + }); + }); + + it('should let custom functions call setter methods on wrapped sass values (number)', function(done) { + sass.render({ + data: 'div { width: foo(42px); height: bar(42px); }', + functions: { + 'foo($a)': function(size) { + size.setUnit('rem'); + return size; + }, + 'bar($a)': function(size) { + size.setValue(size.getValue() * 2); + return size; + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n width: 42rem;\n height: 84px; }'); + done(); + }); + }); + + it('should properly convert strings when calling custom functions', function(done) { + sass.render({ + data: 'div { color: foo("bar"); }', + functions: { + 'foo($a)': function(str) { + str = str.getValue().replace(/['"]/g, ''); + return new sass.types.String('"' + str + str + '"'); + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: "barbar"; }'); + done(); + }); + }); + + it('should let custom functions call setter methods on wrapped sass values (string)', function(done) { + sass.render({ + data: 'div { width: foo("bar"); }', + functions: { + 'foo($a)': function(str) { + var unquoted = str.getValue().replace(/['"]/g, ''); + str.setValue('"' + unquoted + unquoted + '"'); + return str; + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n width: "barbar"; }'); + done(); + }); + }); + + it('should properly convert colors when calling custom functions', function(done) { + sass.render({ + data: 'div { color: foo(#f00); background-color: bar(); border-color: baz(); }', + functions: { + 'foo($a)': function(color) { + assert.strictEqual(color.getR(), 255); + assert.strictEqual(color.getG(), 0); + assert.strictEqual(color.getB(), 0); + assert.strictEqual(color.getA(), 1.0); + + return new sass.types.Color(255, 255, 0, 0.5); + }, + 'bar()': function() { + return new sass.types.Color(0x33ff00ff); + }, + 'baz()': function() { + return new sass.types.Color(0xffff0000); + } + } + }, function(error, result) { + assert.strictEqual( + result.css.toString().trim(), + 'div {\n color: rgba(255, 255, 0, 0.5);' + + '\n background-color: rgba(255, 0, 255, 0.2);' + + '\n border-color: red; }' + ); + done(); + }); + }); + + it('should properly convert boolean when calling custom functions', function(done) { + sass.render({ + data: 'div { color: if(foo(true, false), #fff, #000);' + + '\n background-color: if(foo(true, true), #fff, #000); }', + functions: { + 'foo($a, $b)': function(a, b) { + return sass.types.Boolean(a.getValue() && b.getValue()); + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: #000;\n background-color: #fff; }'); + done(); + }); + }); + + it('should let custom functions call setter methods on wrapped sass values (boolean)', function(done) { + sass.render({ + data: 'div { color: if(foo(false), #fff, #000); background-color: if(foo(true), #fff, #000); }', + functions: { + 'foo($a)': function(a) { + return a.getValue() ? sass.types.Boolean.FALSE : sass.types.Boolean.TRUE; + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: #fff;\n background-color: #000; }'); + done(); + }); + }); + + it('should properly convert lists when calling custom functions', function(done) { + sass.render({ + data: '$test-list: (bar, #f00, 123em); @each $item in foo($test-list) { .#{$item} { color: #fff; } }', + functions: { + 'foo($l)': function(list) { + assert.strictEqual(list.getLength(), 3); + assert.ok(list.getValue(0) instanceof sass.types.String); + assert.strictEqual(list.getValue(0).getValue(), 'bar'); + assert.ok(list.getValue(1) instanceof sass.types.Color); + assert.strictEqual(list.getValue(1).getR(), 0xff); + assert.strictEqual(list.getValue(1).getG(), 0); + assert.strictEqual(list.getValue(1).getB(), 0); + assert.ok(list.getValue(2) instanceof sass.types.Number); + assert.strictEqual(list.getValue(2).getValue(), 123); + assert.strictEqual(list.getValue(2).getUnit(), 'em'); + + var out = new sass.types.List(3); + out.setValue(0, new sass.types.String('foo')); + out.setValue(1, new sass.types.String('bar')); + out.setValue(2, new sass.types.String('baz')); + return out; + } + } + }, function(error, result) { + assert.strictEqual( + result.css.toString().trim(), + '.foo {\n color: #fff; }\n\n.bar {\n color: #fff; }\n\n.baz {\n color: #fff; }' + ); + done(); + }); + }); + + it('should properly convert maps when calling custom functions', function(done) { + sass.render({ + data: '$test-map: foo((abc: 123, #def: true)); div { color: if(map-has-key($test-map, hello), #fff, #000); }' + + 'span { color: map-get($test-map, baz); }', + functions: { + 'foo($m)': function(map) { + assert.strictEqual(map.getLength(), 2); + assert.ok(map.getKey(0) instanceof sass.types.String); + assert.ok(map.getKey(1) instanceof sass.types.Color); + assert.ok(map.getValue(0) instanceof sass.types.Number); + assert.ok(map.getValue(1) instanceof sass.types.Boolean); + assert.strictEqual(map.getKey(0).getValue(), 'abc'); + assert.strictEqual(map.getValue(0).getValue(), 123); + assert.strictEqual(map.getKey(1).getR(), 0xdd); + assert.strictEqual(map.getValue(1).getValue(), true); + + var out = new sass.types.Map(3); + out.setKey(0, new sass.types.String('hello')); + out.setValue(0, new sass.types.String('world')); + out.setKey(1, new sass.types.String('foo')); + out.setValue(1, new sass.types.String('bar')); + out.setKey(2, new sass.types.String('baz')); + out.setValue(2, new sass.types.String('qux')); + return out; + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: #fff; }\n\nspan {\n color: qux; }'); + done(); + }); + }); + + it('should properly convert null when calling custom functions', function(done) { + sass.render({ + data: 'div { color: if(foo("bar"), #fff, #000); } ' + + 'span { color: if(foo(null), #fff, #000); }' + + 'table { color: if(bar() == null, #fff, #000); }', + functions: { + 'foo($a)': function(a) { + return sass.types.Boolean(a instanceof sass.types.Null); + }, + 'bar()': function() { + return sass.NULL; + } + } + }, function(error, result) { + assert.strictEqual( + result.css.toString().trim(), + 'div {\n color: #000; }\n\nspan {\n color: #fff; }\n\ntable {\n color: #fff; }' + ); + done(); + }); + }); + + it('should be possible to carry sass values across different renders', function(done) { + var persistentMap; + + sass.render({ + data: 'div { color: foo((abc: #112233, #ddeeff: true)); }', + functions: { + foo: function(m) { + persistentMap = m; + return sass.types.Color(0, 0, 0); + } + } + }, function() { + sass.render({ + data: 'div { color: map-get(bar(), abc); background-color: baz(); }', + functions: { + bar: function() { + return persistentMap; + }, + baz: function() { + return persistentMap.getKey(1); + } + } + }, function(errror, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: #112233;\n background-color: #ddeeff; }'); + done(); + }); + }); + }); + + it('should let us register custom functions without signatures', function(done) { + sass.render({ + data: 'div { color: foo(20, 22); }', + functions: { + foo: function(a, b) { + return new sass.types.Number(a.getValue() + b.getValue(), 'em'); + } + } + }, function(error, result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n color: 42em; }'); + done(); + }); + }); + + it('should fail when returning anything other than a sass value from a custom function', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return {}; + } + } + }, function(error) { + assert.ok(/A SassValue object was expected/.test(error.message)); + done(); + }); + }); + + it('should properly bubble up standard JS errors thrown by custom functions', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + throw new RangeError('This is a test error'); + } + } + }, function(error) { + assert.ok(/This is a test error/.test(error.message)); + done(); + }); + }); + + it('should properly bubble up unknown errors thrown by custom functions', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + throw {}; + } + } + }, function(error) { + assert.ok(/unexpected error/.test(error.message)); + done(); + }); + }); + + it('should call custom functions with correct context', function(done) { + function assertExpected(result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n foo1: 1;\n foo2: 2; }'); + } + var options = { + data: 'div { foo1: foo(); foo2: foo(); }', + functions: { + // foo() is stateful and will persist an incrementing counter + 'foo()': function() { + assert(this); + this.fooCounter = (this.fooCounter || 0) + 1; + return new sass.types.Number(this.fooCounter); + } + } + }; + + sass.render(options, function(error, result) { + assertExpected(result); + done(); + }); + }); + + describe('should properly bubble up errors from sass color constructor', function() { + it('four booleans', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return new sass.types.Color(false, false, false, false); + } + } + }, function(error) { + assert.ok(/Constructor arguments should be numbers exclusively/.test(error.message)); + done(); + }); + }); + + it('two arguments', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return sass.types.Color(2,3); + } + } + }, function(error) { + assert.ok(/Constructor should be invoked with either 0, 1, 3 or 4 arguments/.test(error.message)); + done(); + }); + }); + + it('single string argument', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return sass.types.Color('foo'); + } + } + }, function(error) { + assert.ok(/Only argument should be an integer/.test(error.message)); + done(); + }); + }); + }); + + it('should properly bubble up errors from sass value constructors', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return sass.types.Boolean('foo'); + } + } + }, function(error) { + assert.ok(/Expected one boolean argument/.test(error.message)); + done(); + }); + }); + + it('should properly bubble up errors from sass value setters', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + var ret = new sass.types.Number(42); + ret.setUnit(123); + return ret; + } + } + }, function(error) { + assert.ok(/Supplied value should be a string/.test(error.message)); + done(); + }); + }); + + it('should fail when trying to set a bare number as the List item', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + var out = new sass.types.List(1); + out.setValue(0, 2); + return out; + } + } + }, function(error) { + assert.ok(/Supplied value should be a SassValue object/.test(error.message)); + done(); + }); + }); + + it('should fail when trying to set a bare Object as the List item', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + var out = new sass.types.List(1); + out.setValue(0, {}); + return out; + } + } + }, function(error) { + assert.ok(/A SassValue is expected as the list item/.test(error.message)); + done(); + }); + }); + + it('should fail when trying to set a bare Object as the Map key', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + var out = new sass.types.Map(1); + out.setKey(0, {}); + out.setValue(0, new sass.types.String('aaa')); + return out; + } + } + }, function(error) { + assert.ok(/A SassValue is expected as a map key/.test(error.message)); + done(); + }); + }); + + it('should fail when trying to set a bare Object as the Map value', function(done) { + sass.render({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + var out = new sass.types.Map(1); + out.setKey(0, new sass.types.String('aaa')); + out.setValue(0, {}); + return out; + } + } + }, function(error) { + assert.ok(/A SassValue is expected as a map value/.test(error.message)); + done(); + }); + }); + + it('should always map null, true and false to the same (immutable) object', function(done) { + var counter = 0; + + sass.render({ + data: 'div { color: foo(bar(null)); background-color: baz("foo" == "bar"); }', + functions: { + foo: function(a) { + assert.strictEqual(a, sass.TRUE, + 'Supplied value should be the same instance as sass.TRUE' + ); + + assert.strictEqual( + sass.types.Boolean(true), sass.types.Boolean(true), + 'sass.types.Boolean(true) should return a singleton'); + + assert.strictEqual( + sass.types.Boolean(true), sass.TRUE, + 'sass.types.Boolean(true) should be the same instance as sass.TRUE'); + + counter++; + + return sass.types.String('foo'); + }, + bar: function(a) { + assert.strictEqual(a, sass.NULL, + 'Supplied value should be the same instance as sass.NULL'); + + assert.throws(function() { + return new sass.types.Null(); + }, /Cannot instantiate SassNull/); + + counter++; + + return sass.TRUE; + }, + baz: function(a) { + assert.strictEqual(a, sass.FALSE, + 'Supplied value should be the same instance as sass.FALSE'); + + assert.throws(function() { + return new sass.types.Boolean(false); + }, /Cannot instantiate SassBoolean/); + + assert.strictEqual( + sass.types.Boolean(false), sass.types.Boolean(false), + 'sass.types.Boolean(false) should return a singleton'); + + assert.strictEqual( + sass.types.Boolean(false), sass.FALSE, + 'sass.types.Boolean(false) should return singleton identical to sass.FALSE'); + + counter++; + + return sass.types.String('baz'); + } + } + }, function() { + assert.strictEqual(counter, 3); + done(); + }); + }); + }); + + describe('.render({stats: {}})', function() { + var start = Date.now(); + + it('should provide a start timestamp', function(done) { + sass.render({ + file: fixture('include-files/index.scss') + }, function(error, result) { + assert(!error); + assert.strictEqual(typeof result.stats.start, 'number'); + assert(result.stats.start >= start); + done(); + }); + }); + + it('should provide an end timestamp', function(done) { + sass.render({ + file: fixture('include-files/index.scss') + }, function(error, result) { + assert(!error); + assert.strictEqual(typeof result.stats.end, 'number'); + assert(result.stats.end >= result.stats.start); + done(); + }); + }); + + it('should provide a duration', function(done) { + sass.render({ + file: fixture('include-files/index.scss') + }, function(error, result) { + assert(!error); + assert.strictEqual(typeof result.stats.duration, 'number'); + assert.strictEqual(result.stats.end - result.stats.start, result.stats.duration); + done(); + }); + }); + + it('should contain the given entry file', function(done) { + sass.render({ + file: fixture('include-files/index.scss') + }, function(error, result) { + assert(!error); + assert.strictEqual(result.stats.entry, fixture('include-files/index.scss')); + done(); + }); + }); + + it('should contain an array of all included files', function(done) { + var expected = [ + fixture('include-files/bar.scss').replace(/\\/g, '/'), + fixture('include-files/foo.scss').replace(/\\/g, '/'), + fixture('include-files/index.scss').replace(/\\/g, '/') + ]; + + sass.render({ + file: fixture('include-files/index.scss') + }, function(error, result) { + assert(!error); + assert.deepStrictEqual(result.stats.includedFiles.sort(), expected.sort()); + done(); + }); + }); + + it('should contain array with the entry if there are no import statements', function(done) { + var expected = fixture('simple/index.scss').replace(/\\/g, '/'); + + sass.render({ + file: fixture('simple/index.scss') + }, function(error, result) { + assert.deepStrictEqual(result.stats.includedFiles, [expected]); + done(); + }); + }); + + it('should state `data` as entry file', function(done) { + sass.render({ + data: read(fixture('simple/index.scss'), 'utf8') + }, function(error, result) { + assert.strictEqual(result.stats.entry, 'data'); + done(); + }); + }); + + it('should contain an empty array as includedFiles', function(done) { + sass.render({ + data: read(fixture('simple/index.scss'), 'utf8') + }, function(error, result) { + assert.deepStrictEqual(result.stats.includedFiles, []); + done(); + }); + }); + }); + + describe('.renderSync(options)', function() { + it('should compile sass to css with file', function(done) { + var expected = read(fixture('simple/expected.css'), 'utf8').trim(); + var result = sass.renderSync({ file: fixture('simple/index.scss') }); + + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + it('should compile sass to css with outFile set to absolute url', function(done) { + var result = sass.renderSync({ + file: fixture('simple/index.scss'), + sourceMap: true, + outFile: fixture('simple/index-test.css') + }); + + assert.strictEqual(JSON.parse(result.map).file, 'index-test.css'); + done(); + }); + + it('should compile sass to css with outFile set to relative url', function(done) { + var result = sass.renderSync({ + file: fixture('simple/index.scss'), + sourceMap: true, + outFile: './index-test.css' + }); + + assert.strictEqual(JSON.parse(result.map).file, 'index-test.css'); + done(); + }); + + it('should compile sass to css with outFile and sourceMap set to relative url', function(done) { + var result = sass.renderSync({ + file: fixture('simple/index.scss'), + sourceMap: './deep/nested/index.map', + outFile: './index-test.css' + }); + + assert.strictEqual(JSON.parse(result.map).file, '../../index-test.css'); + done(); + }); + + it('should not generate source map when not requested', function(done) { + var result = sass.renderSync({ + file: fixture('simple/index.scss'), + sourceMap: false + }); + + assert.strictEqual(Object.prototype.hasOwnProperty.call(result, 'map'), false, 'result has a map property'); + done(); + }); + + it('should not generate source map without outFile and no explicit path given', function(done) { + var result = sass.renderSync({ + file: fixture('simple/index.scss'), + sourceMap: true + }); + + assert.strictEqual(Object.prototype.hasOwnProperty.call(result, 'map'), false, 'result has a map property'); + done(); + }); + + it('should compile generate map with sourceMapRoot pass-through option', function(done) { + var result = sass.renderSync({ + file: fixture('simple/index.scss'), + sourceMap: './deep/nested/index.map', + sourceMapRoot: 'http://test.com/', + outFile: './index-test.css' + }); + + assert.strictEqual(JSON.parse(result.map).sourceRoot, 'http://test.com/'); + done(); + }); + + it('should compile sass to css with data', function(done) { + var src = read(fixture('simple/index.scss'), 'utf8'); + var expected = read(fixture('simple/expected.css'), 'utf8').trim(); + var result = sass.renderSync({ data: src }); + + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + it('should compile sass to css using indented syntax', function(done) { + var src = read(fixture('indent/index.sass'), 'utf8'); + var expected = read(fixture('indent/expected.css'), 'utf8').trim(); + var result = sass.renderSync({ + data: src, + indentedSyntax: true + }); + + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + it('should NOT compile empty data string', function(done) { + assert.throws(function() { + sass.renderSync({ data: '' }); + }, /No input specified: provide a file name or a source string to process/ ); + done(); + }); + + it('should NOT compile without any input', function(done) { + assert.throws(function() { + sass.renderSync({}); + }, /No input specified: provide a file name or a source string to process/); + done(); + }); + + it('should throw error for bad input', function(done) { + assert.throws(function() { + sass.renderSync('somestring'); + }); + assert.throws(function() { + sass.renderSync({ data: '#navbar width 80%;' }); + }); + + done(); + }); + + it('should compile with include paths', function(done) { + var src = read(fixture('include-path/index.scss'), 'utf8'); + var expected = read(fixture('include-path/expected.css'), 'utf8').trim(); + var result = sass.renderSync({ + data: src, + includePaths: [ + fixture('include-path/functions'), + fixture('include-path/lib') + ] + }); + + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + it('should add cwd to the front on include paths', function(done) { + var src = fixture('cwd-include-path/root/index.scss'); + var expected = read(fixture('cwd-include-path/expected.css'), 'utf8').trim(); + var cwd = process.cwd(); + + process.chdir(fixture('cwd-include-path')); + var result = sass.renderSync({ + file: src, + includePaths: [ + fixture('include-path/functions'), + fixture('include-path/lib') + ] + }); + process.chdir(cwd); + + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + it('should check SASS_PATH in the specified order', function(done) { + var src = read(fixture('sass-path/index.scss'), 'utf8'); + var expectedRed = read(fixture('sass-path/expected-red.css'), 'utf8').trim(); + var expectedOrange = read(fixture('sass-path/expected-orange.css'), 'utf8').trim(); + + var envIncludes = [ + fixture('sass-path/red'), + fixture('sass-path/orange') + ]; + + process.env.SASS_PATH = envIncludes.join(path.delimiter); + var result = sass.renderSync({ + data: src, + includePaths: [] + }); + + assert.strictEqual(result.css.toString().trim(), expectedRed.replace(/\r\n/g, '\n')); + + process.env.SASS_PATH = envIncludes.reverse().join(path.delimiter); + result = sass.renderSync({ + data: src, + includePaths: [] + }); + + assert.strictEqual(result.css.toString().trim(), expectedOrange.replace(/\r\n/g, '\n')); + done(); + }); + + it('should prefer include path over SASS_PATH', function(done) { + var src = read(fixture('sass-path/index.scss'), 'utf8'); + var expectedRed = read(fixture('sass-path/expected-red.css'), 'utf8').trim(); + var expectedOrange = read(fixture('sass-path/expected-orange.css'), 'utf8').trim(); + + var envIncludes = [ + fixture('sass-path/red') + ]; + process.env.SASS_PATH = envIncludes.join(path.delimiter); + + var result = sass.renderSync({ + data: src, + includePaths: [] + }); + + assert.strictEqual(result.css.toString().trim(), expectedRed.replace(/\r\n/g, '\n')); + + result = sass.renderSync({ + data: src, + includePaths: [fixture('sass-path/orange')] + }); + + assert.strictEqual(result.css.toString().trim(), expectedOrange.replace(/\r\n/g, '\n')); + done(); + }); + + it('should render with precision option', function(done) { + var src = read(fixture('precision/index.scss'), 'utf8'); + var expected = read(fixture('precision/expected.css'), 'utf8').trim(); + var result = sass.renderSync({ + data: src, + precision: 10 + }); + + assert.strictEqual(result.css.toString().trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + it('should contain all included files in stats when data is passed', function(done) { + var src = read(fixture('include-files/index.scss'), 'utf8'); + var expected = [ + fixture('include-files/bar.scss').replace(/\\/g, '/'), + fixture('include-files/foo.scss').replace(/\\/g, '/') + ]; + + var result = sass.renderSync({ + data: src, + includePaths: [fixture('include-files')] + }); + + assert.deepStrictEqual(result.stats.includedFiles, expected); + done(); + }); + + it('should render with indentWidth and indentType options', function(done) { + var result = sass.renderSync({ + data: 'div { color: transparent; }', + indentWidth: 7, + indentType: 'tab' + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n\t\t\t\t\t\t\tcolor: transparent; }'); + done(); + }); + + it('should render with linefeed option', function(done) { + var result = sass.renderSync({ + data: 'div { color: transparent; }', + linefeed: 'lfcr' + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n\r color: transparent; }'); + done(); + }); + }); + + describe('.renderSync(importer)', function() { + var src = read(fixture('include-files/index.scss'), 'utf8'); + + it('should override imports with "data" as input and returns file and contents', function(done) { + var result = sass.renderSync({ + data: src, + importer: function(url, prev) { + return { + file: prev + url, + contents: 'div {color: yellow;}' + }; + } + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + + it('should override imports with "file" as input and returns file and contents', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function(url, prev) { + return { + file: prev + url, + contents: 'div {color: yellow;}' + }; + } + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + + it('should override imports with "data" as input and returns file', function(done) { + var result = sass.renderSync({ + data: src, + importer: function(url) { + return { + file: path.resolve(path.dirname(fixture('include-files/index.scss')), url + (path.extname(url) ? '' : '.scss')) + }; + } + }); + + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + + it('should override imports with "file" as input and returns file', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function(url, prev) { + return { + file: path.resolve(path.dirname(prev), url + (path.extname(url) ? '' : '.scss')) + }; + } + }); + + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + + it('should override imports with "data" as input and returns contents', function(done) { + var result = sass.renderSync({ + data: src, + importer: function() { + return { + contents: 'div {color: yellow;}' + }; + } + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + + it('should override imports with "file" as input and returns contents', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function() { + return { + contents: 'div {color: yellow;}' + }; + } + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + + + + it('should fallback to default import behaviour if importer returns sass.NULL', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function() { + return sass.NULL; + } + }); + + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + + it('should fallback to default import behaviour if importer returns null for backwards compatibility', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function() { + return null; + } + }); + + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + + it('should fallback to default import behaviour if importer returns undefined for backwards compatibility', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function() { + return undefined; + } + }); + + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + + it('should fallback to default import behaviour if importer returns false for backwards compatibility', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function() { + return false; + } + }); + + assert.strictEqual(result.css.toString().trim(), '/* foo.scss */\n/* bar.scss */'); + done(); + }); + + it('should accept arrays of importers and return respect the order', function(done) { + var result = sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: [ + function() { + return sass.NULL; + }, + function() { + return { + contents: 'div {color: yellow;}' + }; + } + ] + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n color: yellow; }\n\ndiv {\n color: yellow; }'); + done(); + }); + + it('should be able to see its options in this.options', function(done) { + var fxt = fixture('include-files/index.scss'); + var sync = false; + sass.renderSync({ + file: fixture('include-files/index.scss'), + importer: function() { + assert.strictEqual(fxt, this.options.file); + sync = true; + return {}; + } + }); + assert.strictEqual(sync, true); + done(); + }); + + it('should throw user-defined error', function(done) { + assert.throws(function() { + sass.renderSync({ + data: src, + importer: function() { + return new Error('doesn\'t exist!'); + } + }); + }, /doesn't exist!/); + + done(); + }); + + it('should throw exception when importer returns an invalid value', function(done) { + assert.throws(function() { + sass.renderSync({ + data: src, + importer: function() { + return { contents: new Buffer('i am not a string!') }; + } + }); + }, /returned value of `contents` must be a string/); + + done(); + }); + }); + + describe('.renderSync(functions)', function() { + it('should call custom function in sync mode', function(done) { + var result = sass.renderSync({ + data: 'div { width: cos(0) * 50px; }', + functions: { + 'cos($a)': function(angle) { + if (!(angle instanceof sass.types.Number)) { + throw new TypeError('Unexpected type for "angle"'); + } + return new sass.types.Number(Math.cos(angle.getValue())); + } + } + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n width: 50px; }'); + done(); + }); + + it('should return a list of selectors after calling the headings custom function', function(done) { + var result = sass.renderSync({ + data: '#{headings(2,5)} { color: #08c; }', + functions: { + 'headings($from: 0, $to: 6)': function(from, to) { + var i, f = from.getValue(), t = to.getValue(), + list = new sass.types.List(t - f + 1); + + for (i = f; i <= t; i++) { + list.setValue(i - f, new sass.types.String('h' + i)); + } + + return list; + } + } + }); + + assert.strictEqual(result.css.toString().trim(), 'h2, h3, h4, h5 {\n color: #08c; }'); + done(); + }); + + it('should let custom function invoke sass types constructors without the `new` keyword', function(done) { + var result = sass.renderSync({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return sass.types.Number(42, 'em'); + } + } + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n color: 42em; }'); + done(); + }); + + it('should let us register custom functions without signatures', function(done) { + var result = sass.renderSync({ + data: 'div { color: foo(20, 22); }', + functions: { + foo: function(a, b) { + return new sass.types.Number(a.getValue() + b.getValue(), 'em'); + } + } + }); + + assert.strictEqual(result.css.toString().trim(), 'div {\n color: 42em; }'); + done(); + }); + + it('should fail when returning anything other than a sass value from a custom function', function(done) { + assert.throws(function() { + sass.renderSync({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return {}; + } + } + }); + }, /A SassValue object was expected/); + + done(); + }); + + it('should properly bubble up standard JS errors thrown by custom functions', function(done) { + assert.throws(function() { + sass.renderSync({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + throw new RangeError('This is a test error'); + } + } + }); + }, /This is a test error/); + + done(); + }); + + it('should properly bubble up unknown errors thrown by custom functions', function(done) { + assert.throws(function() { + sass.renderSync({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + throw {}; + } + } + }); + }, /unexpected error/); + + done(); + }); + + it('should properly bubble up errors from sass value getters/setters/constructors', function(done) { + assert.throws(function() { + sass.renderSync({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + return sass.types.Boolean('foo'); + } + } + }); + }, /Expected one boolean argument/); + + assert.throws(function() { + sass.renderSync({ + data: 'div { color: foo(); }', + functions: { + 'foo()': function() { + var ret = new sass.types.Number(42); + ret.setUnit(123); + return ret; + } + } + }); + }, /Supplied value should be a string/); + + done(); + }); + + it('should call custom functions with correct context', function(done) { + function assertExpected(result) { + assert.strictEqual(result.css.toString().trim(), 'div {\n foo1: 1;\n foo2: 2; }'); + } + var options = { + data: 'div { foo1: foo(); foo2: foo(); }', + functions: { + // foo() is stateful and will persist an incrementing counter + 'foo()': function() { + assert(this); + this.fooCounter = (this.fooCounter || 0) + 1; + return new sass.types.Number(this.fooCounter); + } + } + }; + assertExpected(sass.renderSync(options)); + done(); + }); + }); + + describe('.renderSync({stats: {}})', function() { + var start = Date.now(); + var result = sass.renderSync({ + file: fixture('include-files/index.scss') + }); + + it('should provide a start timestamp', function(done) { + assert.strictEqual(typeof result.stats.start, 'number'); + assert(result.stats.start >= start); + done(); + }); + + it('should provide an end timestamp', function(done) { + assert.strictEqual(typeof result.stats.end, 'number'); + assert(result.stats.end >= result.stats.start); + done(); + }); + + it('should provide a duration', function(done) { + assert.strictEqual(typeof result.stats.duration, 'number'); + assert.strictEqual(result.stats.end - result.stats.start, result.stats.duration); + done(); + }); + + it('should contain the given entry file', function(done) { + assert.strictEqual(result.stats.entry, resolveFixture('include-files/index.scss')); + done(); + }); + + it('should contain an array of all included files', function(done) { + var expected = [ + fixture('include-files/bar.scss').replace(/\\/g, '/'), + fixture('include-files/foo.scss').replace(/\\/g, '/'), + fixture('include-files/index.scss').replace(/\\/g, '/') + ].sort(); + var actual = result.stats.includedFiles.sort(); + + assert.strictEqual(actual[0], expected[0]); + assert.strictEqual(actual[1], expected[1]); + assert.strictEqual(actual[2], expected[2]); + done(); + }); + + it('should contain array with the entry if there are no import statements', function(done) { + var expected = fixture('simple/index.scss').replace(/\\/g, '/'); + + var result = sass.renderSync({ + file: fixture('simple/index.scss') + }); + + assert.deepStrictEqual(result.stats.includedFiles, [expected]); + done(); + }); + + it('should state `data` as entry file', function(done) { + var result = sass.renderSync({ + data: read(fixture('simple/index.scss'), 'utf8') + }); + + assert.strictEqual(result.stats.entry, 'data'); + done(); + }); + + it('should contain an empty array as includedFiles', function(done) { + var result = sass.renderSync({ + data: read(fixture('simple/index.scss'), 'utf8') + }); + + assert.deepStrictEqual(result.stats.includedFiles, []); + done(); + }); + }); + + describe('.info', function() { + var package = require('../package.json'), + info = sass.info; + + it('should return a correct version info', function(done) { + assert(info.indexOf(package.version) > 0); + assert(info.indexOf('(Wrapper)') > 0); + assert(info.indexOf('[JavaScript]') > 0); + assert(info.indexOf('[NA]') < 0); + assert(info.indexOf('(Sass Compiler)') > 0); + assert(info.indexOf('[C/C++]') > 0); + + done(); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/test/binding.js b/mybulma/node_modules/node-sass/test/binding.js new file mode 100644 index 0000000..5963463 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/binding.js @@ -0,0 +1,129 @@ +/*eslint new-cap: ["error", {"capIsNewExceptions": ["Color"]}]*/ + +var assert = require('assert').strict, + path = require('path'), + etx = require('../lib/extensions'), + binding = process.env.NODESASS_COV + ? require('../lib-cov/binding') + : require('../lib/binding'); + +describe('binding', function() { + describe('missing error', function() { + it('should be useful', function() { + process.env.SASS_BINARY_NAME = 'unknown-x64-48'; + + assert.throws( + function() { binding(etx); }, + function(err) { + var re = new RegExp('Missing binding.*?\\' + path.sep + 'vendor\\' + path.sep); + if ((err instanceof Error)) { + return re.test(err); + } + } + ); + }); + + it('should list currently installed bindings', function() { + assert.throws( + function() { binding(etx); }, + function(err) { + var etx = require('../lib/extensions'); + + delete process.env.SASS_BINARY_NAME; + + if ((err instanceof Error)) { + return err.message.indexOf( + etx.getHumanEnvironment(etx.getBinaryName()) + ) !== -1; + } + } + ); + }); + }); + + describe('on unsupported environment', function() { + describe('with an unsupported architecture', function() { + beforeEach(function() { + Object.defineProperty(process, 'arch', { + value: 'foo', + }); + }); + + afterEach(function() { + Object.defineProperty(process, 'arch', { + value: 'x64', + }); + }); + + it('should error', function() { + assert.throws( + function() { binding(etx); }, + 'Node Sass does not yet support your current environment' + ); + }); + + it('should inform the user the architecture is unsupported', function() { + assert.throws( + function() { binding(etx); }, + 'Unsupported architecture (foo)' + ); + }); + }); + + describe('with an unsupported platform', function() { + beforeEach(function() { + Object.defineProperty(process, 'platform', { + value: 'bar', + }); + }); + + afterEach(function() { + Object.defineProperty(process, 'platform', { + value: 'darwin', + }); + }); + + it('should error', function() { + assert.throws( + function() { binding(etx); }, + 'Node Sass does not yet support your current environment' + ); + }); + + it('should inform the user the platform is unsupported', function() { + assert.throws( + function() { binding(etx); }, + 'Unsupported platform (bar)' + ); + }); + }); + + describe('with an unsupported runtime', function() { + beforeEach(function() { + Object.defineProperty(process.versions, 'modules', { + value: 'baz', + }); + }); + + afterEach(function() { + Object.defineProperty(process.versions, 'modules', { + value: 51, + }); + }); + + it('should error', function() { + assert.throws( + function() { binding(etx); }, + 'Node Sass does not yet support your current environment' + ); + }); + + it('should inform the user the runtime is unsupported', function() { + assert.throws( + function() { binding(etx); }, + 'Unsupported runtime (baz)' + ); + }); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/test/cli.js b/mybulma/node_modules/node-sass/test/cli.js new file mode 100644 index 0000000..c4d5e95 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/cli.js @@ -0,0 +1,793 @@ +var assert = require('assert').strict, + fs = require('fs'), + path = require('path'), + read = require('fs').readFileSync, + glob = require('glob'), + rimraf = require('rimraf'), + stream = require('stream'), + spawn = require('cross-spawn'), + cli = path.join(__dirname, '..', 'bin', 'node-sass'), + fixture = path.join.bind(null, __dirname, 'fixtures'); + +describe('cli', function() { + // For some reason we experience random timeout failures in CI + // due to spawn hanging/failing silently. See #1692. + this.retries(4); + + describe('node-sass < in.scss', function() { + it('should read data from stdin', function(done) { + var src = fs.createReadStream(fixture('simple/index.scss')); + var expected = read(fixture('simple/expected.css'), 'utf8').trim(); + var bin = spawn(cli); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + src.pipe(bin.stdin); + }); + + it('should compile sass using the --indented-syntax option', function(done) { + var src = fs.createReadStream(fixture('indent/index.sass')); + var expected = read(fixture('indent/expected.css'), 'utf8').trim(); + var bin = spawn(cli, ['--indented-syntax']); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + src.pipe(bin.stdin); + }); + + it('should compile with the --quiet option', function(done) { + var src = fs.createReadStream(fixture('simple/index.scss')); + var expected = read(fixture('simple/expected.css'), 'utf8').trim(); + var bin = spawn(cli, ['--quiet']); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + src.pipe(bin.stdin); + }); + + it('should compile with the --output-style option', function(done) { + var src = fs.createReadStream(fixture('compressed/index.scss')); + var expected = read(fixture('compressed/expected.css'), 'utf8').trim(); + var bin = spawn(cli, ['--output-style', 'compressed']); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + src.pipe(bin.stdin); + }); + + it('should compile with the --source-comments option', function(done) { + var src = fs.createReadStream(fixture('source-comments/index.scss')); + var expected = read(fixture('source-comments/expected.css'), 'utf8').trim(); + var bin = spawn(cli, ['--source-comments']); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + + src.pipe(bin.stdin); + }); + + it('should render with indentWidth and indentType options', function(done) { + var src = new stream.Readable(); + var bin = spawn(cli, ['--indent-width', 7, '--indent-type', 'tab']); + + src._read = function() { }; + src.push('div { color: transparent; }'); + src.push(null); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), 'div {\n\t\t\t\t\t\t\tcolor: transparent; }'); + done(); + }); + + src.pipe(bin.stdin); + }); + + it('should render with linefeed option', function(done) { + var src = new stream.Readable(); + var bin = spawn(cli, ['--linefeed', 'lfcr']); + + src._read = function() { }; + src.push('div { color: transparent; }'); + src.push(null); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), 'div {\n\r color: transparent; }'); + done(); + }); + + src.pipe(bin.stdin); + }); + }); + + describe('node-sass in.scss', function() { + it('should compile a scss file', function(done) { + var src = fixture('simple/index.scss'); + var dest = fixture('simple/index.css'); + var bin = spawn(cli, [src, dest]); + + bin.once('close', function() { + assert(fs.existsSync(dest)); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should compile a scss file to custom destination', function(done) { + var src = fixture('simple/index.scss'); + var dest = fixture('simple/index-custom.css'); + var bin = spawn(cli, [src, dest]); + + bin.once('close', function() { + assert(fs.existsSync(dest)); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should compile with the --include-path option', function(done) { + var includePaths = [ + '--include-path', fixture('include-path/functions'), + '--include-path', fixture('include-path/lib') + ]; + + var src = fixture('include-path/index.scss'); + var expected = read(fixture('include-path/expected.css'), 'utf8').trim(); + var bin = spawn(cli, [src].concat(includePaths)); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), expected.replace(/\r\n/g, '\n')); + done(); + }); + }); + + it('should compile silently using the --quiet option', function(done) { + var src = fixture('simple/index.scss'); + var dest = fixture('simple/index.css'); + var bin = spawn(cli, [src, dest, '--quiet']); + var didEmit = false; + + bin.stderr.once('data', function() { + didEmit = true; + }); + + bin.once('close', function() { + assert.strictEqual(didEmit, false); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should still report errors with the --quiet option', function(done) { + var src = fixture('invalid/index.scss'); + var dest = fixture('invalid/index.css'); + var bin = spawn(cli, [src, dest, '--quiet']); + var didEmit = false; + + bin.stderr.once('data', function() { + didEmit = true; + }); + + bin.once('close', function() { + assert.strictEqual(didEmit, true); + done(); + }); + }); + + it('should not exit with the --watch option', function(done) { + var src = fixture('simple/index.scss'); + var bin = spawn(cli, [src, '--watch']); + var exited; + + bin.once('close', function() { + exited = true; + }); + + setTimeout(function() { + if (exited) { + throw new Error('Watch ended too early!'); + } else { + bin.kill(); + done(); + } + }, 100); + }); + + it.skip('should emit `warn` on file change when using --watch option', function(done) { + var src = fixture('simple/tmp.scss'); + + fs.writeFileSync(src, ''); + + var bin = spawn(cli, ['--watch', src]); + + bin.stderr.setEncoding('utf8'); + bin.stderr.once('data', function(data) { + assert.strictEqual(data.trim(), '=> changed: ' + src); + fs.unlinkSync(src); + bin.kill(); + done(); + }); + + setTimeout(function() { + fs.appendFileSync(src, 'body {}'); + }, 500); + }); + + it.skip('should emit nothing on file change when using --watch and --quiet options', function(done) { + var src = fixture('simple/tmp.scss'); + var didEmit = false; + fs.writeFileSync(src, ''); + + var bin = spawn(cli, ['--watch', '--quiet', src]); + + bin.stderr.setEncoding('utf8'); + bin.stderr.once('data', function() { + didEmit = true; + }); + + setTimeout(function() { + fs.appendFileSync(src, 'body {}'); + setTimeout(function() { + assert.strictEqual(didEmit, false); + bin.kill(); + done(); + fs.unlinkSync(src); + }, 200); + }, 500); + }); + + it.skip('should render all watched files', function(done) { + var src = fixture('simple/bar.scss'); + + fs.writeFileSync(src, ''); + + var bin = spawn(cli, [ + '--output-style', 'compressed', + '--watch', src + ]); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), 'body{background:white}'); + fs.unlinkSync(src); + bin.kill(); + done(); + }); + + setTimeout(function() { + fs.appendFileSync(src, 'body{background:white}'); + }, 500); + }); + + it.skip('should watch the full scss dep tree for a single file (scss)', function(done) { + var src = fixture('watching/index.scss'); + var foo = fixture('watching/white.scss'); + + fs.writeFileSync(foo, ''); + + var bin = spawn(cli, [ + '--output-style', 'compressed', + '--watch', src + ]); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), 'body{background:blue}'); + bin.kill(); + done(); + }); + + setTimeout(function() { + fs.appendFileSync(foo, 'body{background:blue}\n'); + }, 500); + }); + + it.skip('should watch the full sass dep tree for a single file (sass)', function(done) { + var src = fixture('watching/index.sass'); + var foo = fixture('watching/bar.sass'); + + fs.writeFileSync(foo, ''); + + var bin = spawn(cli, [ + '--output-style', 'compressed', + '--watch', src + ]); + + bin.stdout.setEncoding('utf8'); + bin.stdout.once('data', function(data) { + assert.strictEqual(data.trim(), 'body{background:red}'); + bin.kill(); + done(); + }); + + setTimeout(function() { + fs.appendFileSync(foo, 'body\n\tbackground: red\n'); + }, 500); + }); + }); + + describe('node-sass --output directory', function() { + it.skip('should watch whole directory', function(done) { + var destDir = fixture('watching-css-out-01/'); + var srcDir = fixture('watching-dir-01/'); + var srcFile = path.join(srcDir, 'index.scss'); + + fs.writeFileSync(srcFile, ''); + + var bin = spawn(cli, [ + '--output-style', 'compressed', + '--output', destDir, + '--watch', srcDir + ]); + + setTimeout(function() { + fs.appendFileSync(srcFile, 'a {color:green;}\n'); + setTimeout(function() { + bin.kill(); + var files = fs.readdirSync(destDir); + assert.deepStrictEqual(files, ['index.css']); + rimraf(destDir, done); + }, 200); + }, 500); + }); + + it.skip('should compile all changed files in watched directory', function(done) { + var destDir = fixture('watching-css-out-02/'); + var srcDir = fixture('watching-dir-02/'); + var srcFile = path.join(srcDir, 'foo.scss'); + + fs.writeFileSync(srcFile, ''); + + var bin = spawn(cli, [ + '--output-style', 'compressed', + '--output', destDir, + '--watch', srcDir + ]); + + setTimeout(function () { + fs.appendFileSync(srcFile, 'body{background:white}\n'); + setTimeout(function () { + bin.kill(); + var files = fs.readdirSync(destDir); + assert.deepStrictEqual(files, ['foo.css', 'index.css']); + rimraf(destDir, done); + }, 200); + }, 500); + }); + }); + + describe('node-sass in.scss --output out.css', function() { + it('should compile a scss file to build.css', function(done) { + var src = fixture('simple/index.scss'); + var dest = fixture('simple/index.css'); + var bin = spawn(cli, [src, '--output', path.dirname(dest)]); + + bin.once('close', function() { + assert(fs.existsSync(dest)); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should compile with the --source-map option', function(done) { + var src = fixture('source-map/index.scss'); + var destCss = fixture('source-map/index.css'); + var destMap = fixture('source-map/index.map'); + var expectedCss = read(fixture('source-map/expected.css'), 'utf8').trim().replace(/\r\n/g, '\n'); + var expectedMap = read(fixture('source-map/expected.map'), 'utf8').trim().replace(/\r\n/g, '\n'); + var bin = spawn(cli, [src, '--output', path.dirname(destCss), '--source-map', destMap]); + + bin.once('close', function() { + assert.strictEqual(read(destCss, 'utf8').trim(), expectedCss); + assert.strictEqual(read(destMap, 'utf8').trim(), expectedMap); + fs.unlinkSync(destCss); + fs.unlinkSync(destMap); + done(); + }); + }); + + it('should omit sourceMappingURL if --omit-source-map-url flag is used', function(done) { + var src = fixture('source-map/index.scss'); + var dest = fixture('source-map/index.css'); + var map = fixture('source-map/index.map'); + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--source-map', map, '--omit-source-map-url' + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').indexOf('sourceMappingURL'), -1); + assert(fs.existsSync(map)); + fs.unlinkSync(map); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should compile with the --source-root option', function(done) { + var src = fixture('source-map/index.scss'); + var destCss = fixture('source-map/index.css'); + var destMap = fixture('source-map/index.map'); + var expectedCss = read(fixture('source-map/expected.css'), 'utf8').trim().replace(/\r\n/g, '\n'); + var expectedUrl = 'http://test/'; + var bin = spawn(cli, [ + src, '--output', path.dirname(destCss), + '--source-map-root', expectedUrl, + '--source-map', destMap + ]); + + bin.once('close', function() { + assert.strictEqual(read(destCss, 'utf8').trim(), expectedCss); + assert.strictEqual(JSON.parse(read(destMap, 'utf8')).sourceRoot, expectedUrl); + fs.unlinkSync(destCss); + fs.unlinkSync(destMap); + done(); + }); + }); + + it('should compile with the --source-map-embed option and no outfile', function(done) { + var src = fixture('source-map-embed/index.scss'); + var expectedCss = read(fixture('source-map-embed/expected.css'), 'utf8').trim().replace(/\r\n/g, '\n'); + var result = ''; + var bin = spawn(cli, [ + src, + '--source-map-embed', + '--source-map', 'true' + ]); + + bin.stdout.on('data', function(data) { + result += data; + }); + + bin.once('close', function() { + assert.strictEqual(result.trim().replace(/\r\n/g, '\n'), expectedCss); + done(); + }); + }); + }); + + describe('node-sass sass/ --output css/', function() { + it('should create the output directory', function(done) { + var src = fixture('input-directory/sass'); + var dest = fixture('input-directory/css'); + var bin = spawn(cli, [src, '--output', dest]); + + bin.once('close', function() { + assert(fs.existsSync(dest)); + rimraf.sync(dest); + done(); + }); + }); + + it('should compile all files in the folder', function(done) { + var src = fixture('input-directory/sass'); + var dest = fixture('input-directory/css'); + var bin = spawn(cli, [src, '--output', dest]); + + bin.once('close', function() { + var files = fs.readdirSync(dest).sort(); + assert.deepStrictEqual(files, ['one.css', 'two.css', 'nested'].sort()); + var nestedFiles = fs.readdirSync(path.join(dest, 'nested')); + assert.deepStrictEqual(nestedFiles, ['three.css']); + rimraf.sync(dest); + done(); + }); + }); + + it('should compile with --source-map set to directory', function(done) { + var src = fixture('input-directory/sass'); + var dest = fixture('input-directory/css'); + var destMap = fixture('input-directory/map'); + var bin = spawn(cli, [src, '--output', dest, '--source-map', destMap]); + + bin.once('close', function() { + var map = JSON.parse(read(fixture('input-directory/map/nested/three.css.map'), 'utf8')); + + assert.strictEqual(map.file, '../../css/nested/three.css'); + rimraf.sync(dest); + rimraf.sync(destMap); + done(); + }); + }); + + it('should skip files with an underscore', function(done) { + var src = fixture('input-directory/sass'); + var dest = fixture('input-directory/css'); + var bin = spawn(cli, [src, '--output', dest]); + + bin.once('close', function() { + var files = fs.readdirSync(dest); + assert.strictEqual(files.indexOf('_skipped.css'), -1); + rimraf.sync(dest); + done(); + }); + }); + + it('should ignore nested files if --recursive false', function(done) { + var src = fixture('input-directory/sass'); + var dest = fixture('input-directory/css'); + var bin = spawn(cli, [ + src, '--output', dest, + '--recursive', false + ]); + + bin.once('close', function() { + var files = fs.readdirSync(dest); + assert.deepStrictEqual(files, ['one.css', 'two.css']); + rimraf.sync(dest); + done(); + }); + }); + + it('should error if no output directory is provided', function(done) { + var src = fixture('input-directory/sass'); + var bin = spawn(cli, [src]); + + bin.once('close', function(code) { + assert.notStrictEqual(code, 0); + assert.strictEqual(glob.sync(fixture('input-directory/**/*.css')).length, 0); + done(); + }); + }); + + it('should error if output directory is not a directory', function(done) { + var src = fixture('input-directory/sass'); + var dest = fixture('input-directory/sass/one.scss'); + var bin = spawn(cli, [src, '--output', dest]); + + bin.once('close', function(code) { + assert.notStrictEqual(code, 0); + assert.strictEqual(glob.sync(fixture('input-directory/**/*.css')).length, 0); + done(); + }); + }); + + it('should not error if output directory is a symlink', function(done) { + var outputDir = fixture('input-directory/css'); + var src = fixture('input-directory/sass'); + var symlink = fixture('symlinked-css'); + fs.mkdirSync(outputDir); + fs.symlinkSync(outputDir, symlink); + var bin = spawn(cli, [src, '--output', symlink]); + + bin.once('close', function() { + var files = fs.readdirSync(outputDir).sort(); + assert.deepStrictEqual(files, ['one.css', 'two.css', 'nested'].sort()); + var nestedFiles = fs.readdirSync(path.join(outputDir, 'nested')); + assert.deepStrictEqual(nestedFiles, ['three.css']); + rimraf.sync(outputDir); + fs.unlinkSync(symlink); + done(); + }); + }); + }); + + describe('node-sass in.scss --output path/to/file/out.css', function() { + it('should create the output directory', function(done) { + var src = fixture('output-directory/index.scss'); + var dest = fixture('output-directory/path/to/file/index.css'); + var bin = spawn(cli, [src, '--output', path.dirname(dest)]); + + bin.once('close', function() { + assert(fs.existsSync(path.dirname(dest))); + fs.unlinkSync(dest); + fs.rmdirSync(path.dirname(dest)); + dest = path.dirname(dest); + fs.rmdirSync(path.dirname(dest)); + dest = path.dirname(dest); + fs.rmdirSync(path.dirname(dest)); + done(); + }); + }); + + }); + + describe('node-sass --follow --output output-dir input-dir', function() { + it('should compile with the --follow option', function(done) { + var src = fixture('follow/input-dir'); + var dest = fixture('follow/output-dir'); + + fs.mkdirSync(src); + fs.symlinkSync(path.join(path.dirname(src), 'foo'), path.join(src, 'foo'), 'dir'); + + var bin = spawn(cli, [src, '--follow', '--output', dest]); + + bin.once('close', function() { + var expected = path.join(dest, 'foo/bar/index.css'); + fs.unlinkSync(path.join(src, 'foo')); + fs.rmdirSync(src); + assert(fs.existsSync(expected)); + fs.unlinkSync(expected); + expected = path.dirname(expected); + fs.rmdirSync(expected); + expected = path.dirname(expected); + fs.rmdirSync(expected); + fs.rmdirSync(dest); + done(); + }); + }); + }); + + describe('importer', function() { + var dest = fixture('include-files/index.css'); + var src = fixture('include-files/index.scss'); + var expectedData = read(fixture('include-files/expected-data-importer.css'), 'utf8').trim().replace(/\r\n/g, '\n'); + var expectedFile = read(fixture('include-files/expected-file-importer.css'), 'utf8').trim().replace(/\r\n/g, '\n'); + + it('should override imports and fire callback with file and contents', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_importer_file_and_data_cb.js') + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').trim(), expectedData); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should override imports and fire callback with file', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_importer_file_cb.js') + ]); + + bin.once('close', function() { + if (fs.existsSync(dest)) { + assert.strictEqual(read(dest, 'utf8').trim(), expectedFile); + fs.unlinkSync(dest); + } + + done(); + }); + }); + + it('should override imports and fire callback with data', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_importer_data_cb.js') + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').trim(), expectedData); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should override imports and return file and contents', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_importer_file_and_data.js') + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').trim(), expectedData); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should override imports and return file', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_importer_file.js') + ]); + + bin.once('close', function() { + if (fs.existsSync(dest)) { + assert.strictEqual(read(dest, 'utf8').trim(), expectedFile); + fs.unlinkSync(dest); + } + + done(); + }); + }); + + it('should override imports and return data', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_importer_data.js') + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').trim(), expectedData); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should accept arrays of importers and return respect the order', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_arrays_of_importers.js') + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').trim(), expectedData); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should return error for invalid importer file path', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('non/existing/path') + ]); + + bin.once('close', function(code) { + assert.notStrictEqual(code, 0); + done(); + }); + }); + + it('should reflect user-defined Error', function(done) { + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--importer', fixture('extras/my_custom_importer_error.js') + ]); + + bin.stderr.once('data', function(code) { + assert.strictEqual(JSON.parse(code).message, 'doesn\'t exist!'); + done(); + }); + }); + }); + + describe('functions', function() { + it('should let custom functions call setter methods on wrapped sass values (number)', function(done) { + var dest = fixture('custom-functions/setter.css'); + var src = fixture('custom-functions/setter.scss'); + var expected = read(fixture('custom-functions/setter-expected.css'), 'utf8').trim().replace(/\r\n/g, '\n'); + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--functions', fixture('extras/my_custom_functions_setter.js') + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').trim(), expected); + fs.unlinkSync(dest); + done(); + }); + }); + + it('should properly convert strings when calling custom functions', function(done) { + var dest = fixture('custom-functions/string-conversion.css'); + var src = fixture('custom-functions/string-conversion.scss'); + var expected = read(fixture('custom-functions/string-conversion-expected.css'), 'utf8').trim().replace(/\r\n/g, '\n'); + var bin = spawn(cli, [ + src, '--output', path.dirname(dest), + '--functions', fixture('extras/my_custom_functions_string_conversion.js') + ]); + + bin.once('close', function() { + assert.strictEqual(read(dest, 'utf8').trim(), expected); + fs.unlinkSync(dest); + done(); + }); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/test/downloadoptions.js b/mybulma/node_modules/node-sass/test/downloadoptions.js new file mode 100644 index 0000000..968213e --- /dev/null +++ b/mybulma/node_modules/node-sass/test/downloadoptions.js @@ -0,0 +1,129 @@ +var assert = require('assert').strict, + ua = require('../scripts/util/useragent'), + opts = require('../scripts/util/downloadoptions'); + + +describe('util', function() { + describe('downloadoptions', function() { + describe('without a proxy', function() { + it('should look as we expect', function() { + var expected = { + strictSSL: true, + timeout: 60000, + headers: { + 'User-Agent': ua(), + }, + }; + + assert.deepStrictEqual(opts(), expected); + }); + }); + + describe('with an npm config proxy', function() { + var proxy = 'http://test.proxy:1234'; + + before(function() { + process.env.npm_config_proxy = proxy; + }); + + after(function() { + delete process.env.npm_config_proxy; + }); + + it('should look as we expect', function() { + var expected = { + strictSSL: true, + proxy: proxy, + timeout: 60000, + headers: { + 'User-Agent': ua(), + }, + }; + + assert.deepStrictEqual(opts(), expected); + }); + }); + + describe('with an env proxy proxy', function() { + var proxy = 'http://test.proxy:1234'; + + before(function() { + process.env.HTTP_PROXY = proxy; + }); + + after(function() { + delete process.env.HTTP_PROXY; + }); + + it('should look as we expect', function() { + var expected = { + strictSSL: true, + timeout: 60000, + headers: { + 'User-Agent': ua(), + }, + }; + + assert.deepStrictEqual(opts(), expected); + }); + }); + + describe('with SASS_REJECT_UNAUTHORIZED set to false', function() { + beforeEach(function() { + process.env.SASS_REJECT_UNAUTHORIZED = '0'; + }); + + it('should look as we expect', function() { + var expected = { + strictSSL: false, + timeout: 60000, + headers: { + 'User-Agent': ua(), + }, + }; + + assert.deepStrictEqual(opts(), expected); + }); + }); + + describe('with SASS_REJECT_UNAUTHORIZED set to true', function() { + beforeEach(function() { + process.env.SASS_REJECT_UNAUTHORIZED = '1'; + }); + + it('should look as we expect', function() { + var expected = { + strictSSL: true, + timeout: 60000, + headers: { + 'User-Agent': ua(), + }, + }; + + assert.deepStrictEqual(opts(), expected); + }); + }); + + describe('with npm_config_sass_reject_unauthorized set to true', function() { + beforeEach(function() { + process.env.npm_config_sass_reject_unauthorized = true; + }); + + it('should look as we expect', function() { + var expected = { + strictSSL: true, + timeout: 60000, + headers: { + 'User-Agent': ua(), + }, + }; + + assert.deepStrictEqual(opts(), expected); + }); + + afterEach(function() { + process.env.npm_config_sass_reject_unauthorized = undefined; + }); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/test/errors.js b/mybulma/node_modules/node-sass/test/errors.js new file mode 100644 index 0000000..537ebb6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/errors.js @@ -0,0 +1,53 @@ +var assert = require('assert').strict, + path = require('path'), + errors = require('../lib/errors'); + +describe('binary errors', function() { + + function getCurrentPlatform() { + if (process.platform === 'win32') { + return 'Windows'; + } else if (process.platform === 'darwin') { + return 'OS X'; + } + return ''; + } + + function getCurrentArchitecture() { + if (process.arch === 'x86' || process.arch === 'ia32') { + return '32-bit'; + } else if (process.arch === 'x64') { + return '64-bit'; + } + return ''; + } + + function getCurrentEnvironment() { + return getCurrentPlatform() + ' ' + getCurrentArchitecture(); + } + + describe('for an unsupported environment', function() { + it('identifies the current environment', function() { + var message = errors.unsupportedEnvironment(); + assert.ok(message.indexOf(getCurrentEnvironment()) !== -1); + }); + + it('links to supported environment documentation', function() { + var message = errors.unsupportedEnvironment(); + assert.ok(message.indexOf('https://github.com/sass/node-sass/releases/tag/v') !== -1); + }); + }); + + describe('for an missing binary', function() { + it('identifies the current environment', function() { + var message = errors.missingBinary(); + assert.ok(message.indexOf(getCurrentEnvironment()) !== -1); + }); + + it('documents the expected binary location', function() { + var message = errors.missingBinary(); + assert.ok(message.indexOf(path.sep + 'vendor' + path.sep) !== -1); + }); + }); + +}); diff --git a/mybulma/node_modules/node-sass/test/fixtures/compressed/expected.css b/mybulma/node_modules/node-sass/test/fixtures/compressed/expected.css new file mode 100644 index 0000000..197319f --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/compressed/expected.css @@ -0,0 +1 @@ +#navbar{width:80%;height:23px}#navbar ul{list-style-type:none}#navbar li{float:left}#navbar li a{font-weight:bold} diff --git a/mybulma/node_modules/node-sass/test/fixtures/compressed/index.scss b/mybulma/node_modules/node-sass/test/fixtures/compressed/index.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/compressed/index.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter-expected.css b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter-expected.css new file mode 100644 index 0000000..9b67ea9 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter-expected.css @@ -0,0 +1,3 @@ +div { + width: 42rem; + height: 84px; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter.scss b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter.scss new file mode 100644 index 0000000..fbc6116 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/setter.scss @@ -0,0 +1 @@ +div { width: foo(42px); height: bar(42px); } diff --git a/mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion-expected.css b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion-expected.css new file mode 100644 index 0000000..741d2cb --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion-expected.css @@ -0,0 +1,2 @@ +div { + color: "barbar"; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion.scss b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion.scss new file mode 100644 index 0000000..4e6403f --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/custom-functions/string-conversion.scss @@ -0,0 +1 @@ +div { color: foo("bar"); } diff --git a/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/expected.css b/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/expected.css new file mode 100644 index 0000000..1cfd35a --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/expected.css @@ -0,0 +1,2 @@ +.outside { + color: red; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/outside.scss b/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/outside.scss new file mode 100644 index 0000000..9568623 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/outside.scss @@ -0,0 +1,3 @@ +.outside { + color: red; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/root/index.scss b/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/root/index.scss new file mode 100644 index 0000000..0279f78 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/cwd-include-path/root/index.scss @@ -0,0 +1 @@ +@import 'outside'; diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/_common.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/_common.scss new file mode 100644 index 0000000..7b30f5e --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/_common.scss @@ -0,0 +1,6 @@ +@import "vars"; +@import "struct"; + +.myvars { + content: quote($import_counter); +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/_struct.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/_struct.scss new file mode 100644 index 0000000..f3152b7 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/_struct.scss @@ -0,0 +1,3 @@ +.common-struct { + content: "common-struct"; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/_vars.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/_vars.scss new file mode 100644 index 0000000..da5a7f2 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/_vars.scss @@ -0,0 +1,5 @@ +$import_counter: $import_counter + 1; + +.common-vars { + content: "common-vars"; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/a.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/a.scss new file mode 100644 index 0000000..6c815de --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/a.scss @@ -0,0 +1,7 @@ +@import "_common"; +@import "a1"; + +.a2 { + content: "a2"; +} + diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/a1.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/a1.scss new file mode 100644 index 0000000..272671b --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/a1.scss @@ -0,0 +1,3 @@ +.a1 { + content: "a1"; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/b.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/b.scss new file mode 100644 index 0000000..2f21d7d --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/b.scss @@ -0,0 +1,5 @@ +@import "b1"; + +.b2 { + content: "b2"; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/b1.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/b1.scss new file mode 100644 index 0000000..ec7b88d --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/b1.scss @@ -0,0 +1,3 @@ +.b1 { + content: "b1"; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/expected.css b/mybulma/node_modules/node-sass/test/fixtures/depth-first/expected.css new file mode 100644 index 0000000..f83c268 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/expected.css @@ -0,0 +1,32 @@ +.common-vars { + content: "common-vars"; } + +.common-struct { + content: "common-struct"; } + +.myvars { + content: "1"; } + +.a1 { + content: "a1"; } + +.a2 { + content: "a2"; } + +.common-vars { + content: "common-vars"; } + +.common-struct { + content: "common-struct"; } + +.myvars { + content: "2"; } + +.b1 { + content: "b1"; } + +.b2 { + content: "b2"; } + +#the-last { + content: "LAST"; } \ No newline at end of file diff --git a/mybulma/node_modules/node-sass/test/fixtures/depth-first/index.scss b/mybulma/node_modules/node-sass/test/fixtures/depth-first/index.scss new file mode 100644 index 0000000..09b0e76 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/depth-first/index.scss @@ -0,0 +1,8 @@ +$import_counter: 0; +@import "a"; +@import "common"; +@import "b"; + +#the-last { + content: "LAST"; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_arrays_of_importers.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_arrays_of_importers.js new file mode 100644 index 0000000..38c1c08 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_arrays_of_importers.js @@ -0,0 +1,12 @@ +var sass = require('../../..'); + +module.exports = [ + function() { + return sass.NULL; + }, + function() { + return { + contents: 'div {color: yellow;}' + }; + } +]; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_setter.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_setter.js new file mode 100644 index 0000000..9ec8c24 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_setter.js @@ -0,0 +1,10 @@ +module.exports = { + 'foo($a)': function(size) { + size.setUnit('rem'); + return size; + }, + 'bar($a)': function(size) { + size.setValue(size.getValue() * 2); + return size; + } +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_string_conversion.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_string_conversion.js new file mode 100644 index 0000000..3aa4eb8 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_functions_string_conversion.js @@ -0,0 +1,8 @@ +var sass = require('../../..'); + +module.exports = { + 'foo($a)': function(str) { + str = str.getValue().replace(/['"]/g, ''); + return new sass.types.String('"' + str + str + '"'); + } +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data.js new file mode 100644 index 0000000..23f272a --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data.js @@ -0,0 +1,5 @@ +module.exports = function() { + return { + contents: 'div {color: yellow;}' + }; +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data_cb.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data_cb.js new file mode 100644 index 0000000..d587304 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_data_cb.js @@ -0,0 +1,5 @@ +module.exports = function(file, prev, done) { + done({ + contents: 'div {color: yellow;}' + }); +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_error.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_error.js new file mode 100644 index 0000000..eb1c959 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_error.js @@ -0,0 +1,3 @@ +module.exports = function() { + return new Error('doesn\'t exist!'); +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file.js new file mode 100644 index 0000000..ad7b17d --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file.js @@ -0,0 +1,7 @@ +var path = require('path'); + +module.exports = function(file) { + return { + file: path.resolve(path.join(process.cwd(), 'test/fixtures/include-files/', file + (path.extname(file) ? '' : '.scss'))) + }; +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data.js new file mode 100644 index 0000000..e29f042 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data.js @@ -0,0 +1,6 @@ +module.exports = function() { + return { + file: '/some/random/path/file.scss', + contents: 'div {color: yellow;}' + }; +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data_cb.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data_cb.js new file mode 100644 index 0000000..e24f05e --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_and_data_cb.js @@ -0,0 +1,6 @@ +module.exports = function(file, prev, done) { + done({ + file: '/some/random/path/file.scss', + contents: 'div {color: yellow;}' + }); +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_cb.js b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_cb.js new file mode 100644 index 0000000..dc5b8bd --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/extras/my_custom_importer_file_cb.js @@ -0,0 +1,7 @@ +var path = require('path'); + +module.exports = function(file, /* jshint unused:false */ prev, done) { + done({ + file: path.resolve(path.join(process.cwd(), 'test/fixtures/include-files/', file + (path.extname(file) ? '' : '.scss'))) + }); +}; diff --git a/mybulma/node_modules/node-sass/test/fixtures/follow/foo/bar/index.scss b/mybulma/node_modules/node-sass/test/fixtures/follow/foo/bar/index.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/follow/foo/bar/index.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/bar.scss b/mybulma/node_modules/node-sass/test/fixtures/include-files/bar.scss new file mode 100644 index 0000000..f377712 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/bar.scss @@ -0,0 +1 @@ +/* bar.scss */ diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/chained-imports-with-custom-importer.scss b/mybulma/node_modules/node-sass/test/fixtures/include-files/chained-imports-with-custom-importer.scss new file mode 100644 index 0000000..8dbe665 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/chained-imports-with-custom-importer.scss @@ -0,0 +1 @@ +@import "file-not-processed-by-loader", "file-processed-by-loader"; diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-data-importer.css b/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-data-importer.css new file mode 100644 index 0000000..1925a60 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-data-importer.css @@ -0,0 +1,5 @@ +div { + color: yellow; } + +div { + color: yellow; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-file-importer.css b/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-file-importer.css new file mode 100644 index 0000000..326f694 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-file-importer.css @@ -0,0 +1,2 @@ +/* foo.scss */ +/* bar.scss */ diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-importer.css b/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-importer.css new file mode 100644 index 0000000..1925a60 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/expected-importer.css @@ -0,0 +1,5 @@ +div { + color: yellow; } + +div { + color: yellow; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/file-not-processed-by-loader.scss b/mybulma/node_modules/node-sass/test/fixtures/include-files/file-not-processed-by-loader.scss new file mode 100644 index 0000000..47f8c1d --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/file-not-processed-by-loader.scss @@ -0,0 +1 @@ +$variable-defined-by-file-not-processed-by-loader: 'red'; diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/file-processed-by-loader.scss b/mybulma/node_modules/node-sass/test/fixtures/include-files/file-processed-by-loader.scss new file mode 100644 index 0000000..4c79efe --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/file-processed-by-loader.scss @@ -0,0 +1,3 @@ +body { + color: $variable-defined-by-file-not-processed-by-loader; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/foo.scss b/mybulma/node_modules/node-sass/test/fixtures/include-files/foo.scss new file mode 100644 index 0000000..9834f54 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/foo.scss @@ -0,0 +1 @@ +/* foo.scss */ diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-files/index.scss b/mybulma/node_modules/node-sass/test/fixtures/include-files/index.scss new file mode 100644 index 0000000..01bdbe2 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-files/index.scss @@ -0,0 +1,2 @@ +@import 'foo'; +@import 'bar'; diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-path/expected.css b/mybulma/node_modules/node-sass/test/fixtures/include-path/expected.css new file mode 100644 index 0000000..1f0ae60 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-path/expected.css @@ -0,0 +1,3 @@ +body { + background: red; + color: #0000fe; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-path/functions/colorBlue.scss b/mybulma/node_modules/node-sass/test/fixtures/include-path/functions/colorBlue.scss new file mode 100644 index 0000000..4fa618c --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-path/functions/colorBlue.scss @@ -0,0 +1,3 @@ +@function colorBlue() { + @return #0000fe; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-path/index.scss b/mybulma/node_modules/node-sass/test/fixtures/include-path/index.scss new file mode 100644 index 0000000..8b0f5e8 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-path/index.scss @@ -0,0 +1,7 @@ +@import 'vars'; +@import 'colorBlue'; + +body { + background: $color; + color: colorBlue(); +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/include-path/lib/vars.scss b/mybulma/node_modules/node-sass/test/fixtures/include-path/lib/vars.scss new file mode 100644 index 0000000..4b04915 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/include-path/lib/vars.scss @@ -0,0 +1 @@ +$color: red; diff --git a/mybulma/node_modules/node-sass/test/fixtures/indent/expected.css b/mybulma/node_modules/node-sass/test/fixtures/indent/expected.css new file mode 100644 index 0000000..a7df077 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/indent/expected.css @@ -0,0 +1,2 @@ +foo + bar { + color: red; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/indent/index.sass b/mybulma/node_modules/node-sass/test/fixtures/indent/index.sass new file mode 100644 index 0000000..3f7dfae --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/indent/index.sass @@ -0,0 +1,3 @@ +foo + + bar + color: red diff --git a/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/_skipped.scss b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/_skipped.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/_skipped.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/nested/three.scss b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/nested/three.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/nested/three.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/one.scss b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/one.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/one.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/two.scss b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/two.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/input-directory/sass/two.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/invalid/index.scss b/mybulma/node_modules/node-sass/test/fixtures/invalid/index.scss new file mode 100644 index 0000000..e04c557 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/invalid/index.scss @@ -0,0 +1,3 @@ +body { + background-color: $green; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/output-directory/index.scss b/mybulma/node_modules/node-sass/test/fixtures/output-directory/index.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/output-directory/index.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/precision/expected.css b/mybulma/node_modules/node-sass/test/fixtures/precision/expected.css new file mode 100644 index 0000000..c9a0a06 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/precision/expected.css @@ -0,0 +1,2 @@ +.foo { + margin: 1.23456789 px; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/precision/index.scss b/mybulma/node_modules/node-sass/test/fixtures/precision/index.scss new file mode 100644 index 0000000..328b214 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/precision/index.scss @@ -0,0 +1,3 @@ +.foo { + margin: 1.23456789 px; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-orange.css b/mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-orange.css new file mode 100644 index 0000000..32b0627 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-orange.css @@ -0,0 +1,3 @@ +body { + background: orange; } + diff --git a/mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-red.css b/mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-red.css new file mode 100644 index 0000000..3884d51 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/sass-path/expected-red.css @@ -0,0 +1,3 @@ +body { + background: red; } + diff --git a/mybulma/node_modules/node-sass/test/fixtures/sass-path/index.scss b/mybulma/node_modules/node-sass/test/fixtures/sass-path/index.scss new file mode 100644 index 0000000..867386c --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/sass-path/index.scss @@ -0,0 +1,6 @@ +@import 'colors'; + +body { + background: $color; +} + diff --git a/mybulma/node_modules/node-sass/test/fixtures/sass-path/orange/colors.scss b/mybulma/node_modules/node-sass/test/fixtures/sass-path/orange/colors.scss new file mode 100644 index 0000000..ca95971 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/sass-path/orange/colors.scss @@ -0,0 +1 @@ +$color: orange; diff --git a/mybulma/node_modules/node-sass/test/fixtures/sass-path/red/colors.scss b/mybulma/node_modules/node-sass/test/fixtures/sass-path/red/colors.scss new file mode 100644 index 0000000..4b04915 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/sass-path/red/colors.scss @@ -0,0 +1 @@ +$color: red; diff --git a/mybulma/node_modules/node-sass/test/fixtures/simple/expected.css b/mybulma/node_modules/node-sass/test/fixtures/simple/expected.css new file mode 100644 index 0000000..402ae50 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/simple/expected.css @@ -0,0 +1,11 @@ +#navbar { + width: 80%; + height: 23px; } + +#navbar ul { + list-style-type: none; } + +#navbar li { + float: left; } + #navbar li a { + font-weight: bold; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/simple/index.scss b/mybulma/node_modules/node-sass/test/fixtures/simple/index.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/simple/index.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/source-comments/expected.css b/mybulma/node_modules/node-sass/test/fixtures/source-comments/expected.css new file mode 100644 index 0000000..53b1a38 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/source-comments/expected.css @@ -0,0 +1,15 @@ +/* line 1, stdin */ +#navbar { + width: 80%; + height: 23px; } + +/* line 6, stdin */ +#navbar ul { + list-style-type: none; } + +/* line 10, stdin */ +#navbar li { + float: left; } + /* line 13, stdin */ + #navbar li a { + font-weight: bold; } diff --git a/mybulma/node_modules/node-sass/test/fixtures/source-comments/index.scss b/mybulma/node_modules/node-sass/test/fixtures/source-comments/index.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/source-comments/index.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/source-map-embed/expected.css b/mybulma/node_modules/node-sass/test/fixtures/source-map-embed/expected.css new file mode 100644 index 0000000..a1e895f --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/source-map-embed/expected.css @@ -0,0 +1,13 @@ +#navbar { + width: 80%; + height: 23px; } + +#navbar ul { + list-style-type: none; } + +#navbar li { + float: left; } + #navbar li a { + font-weight: bold; } + +/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAidGVzdC9maXh0dXJlcy9zb3VyY2UtbWFwLWVtYmVkL2luZGV4LmNzcyIsCgkic291cmNlcyI6IFsKCQkidGVzdC9maXh0dXJlcy9zb3VyY2UtbWFwLWVtYmVkL2luZGV4LnNjc3MiCgldLAoJIm5hbWVzIjogW10sCgkibWFwcGluZ3MiOiAiQUFBQSxBQUFBLE9BQU8sQ0FBQztFQUNOLEtBQUssRUFBRSxHQUFHO0VBQ1YsTUFBTSxFQUFFLElBQUksR0FDYjs7QUFFRCxBQUFBLE9BQU8sQ0FBQyxFQUFFLENBQUM7RUFDVCxlQUFlLEVBQUUsSUFBSSxHQUN0Qjs7QUFFRCxBQUFBLE9BQU8sQ0FBQyxFQUFFLENBQUM7RUFDVCxLQUFLLEVBQUUsSUFBSSxHQUtaO0VBTkQsQUFHRSxPQUhLLENBQUMsRUFBRSxDQUdSLENBQUMsQ0FBQztJQUNBLFdBQVcsRUFBRSxJQUFJLEdBQ2xCIgp9 */ diff --git a/mybulma/node_modules/node-sass/test/fixtures/source-map-embed/index.scss b/mybulma/node_modules/node-sass/test/fixtures/source-map-embed/index.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/source-map-embed/index.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/source-map/expected.css b/mybulma/node_modules/node-sass/test/fixtures/source-map/expected.css new file mode 100644 index 0000000..708bc47 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/source-map/expected.css @@ -0,0 +1,13 @@ +#navbar { + width: 80%; + height: 23px; } + +#navbar ul { + list-style-type: none; } + +#navbar li { + float: left; } + #navbar li a { + font-weight: bold; } + +/*# sourceMappingURL=index.map */ diff --git a/mybulma/node_modules/node-sass/test/fixtures/source-map/expected.map b/mybulma/node_modules/node-sass/test/fixtures/source-map/expected.map new file mode 100644 index 0000000..bd43765 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/source-map/expected.map @@ -0,0 +1,9 @@ +{ + "version": 3, + "file": "index.css", + "sources": [ + "index.scss" + ], + "names": [], + "mappings": "AAAA,AAAA,OAAO,CAAC;EACN,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,OAAO,CAAC,EAAE,CAAC;EACT,eAAe,EAAE,IAAI,GACtB;;AAED,AAAA,OAAO,CAAC,EAAE,CAAC;EACT,KAAK,EAAE,IAAI,GAKZ;EAND,AAGE,OAHK,CAAC,EAAE,CAGR,CAAC,CAAC;IACA,WAAW,EAAE,IAAI,GAClB" +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/source-map/index.scss b/mybulma/node_modules/node-sass/test/fixtures/source-map/index.scss new file mode 100644 index 0000000..38a8fe6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/source-map/index.scss @@ -0,0 +1,16 @@ +#navbar { + width: 80%; + height: 23px; +} + +#navbar ul { + list-style-type: none; +} + +#navbar li { + float: left; + + a { + font-weight: bold; + } +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/main/one.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/one.scss new file mode 100644 index 0000000..414af5e --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/one.scss @@ -0,0 +1,5 @@ +@import "partials/one"; + +.one { + color: red; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_one.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_one.scss new file mode 100644 index 0000000..379ec65 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_one.scss @@ -0,0 +1,5 @@ +@import "partials/three"; + +.one { + color: darkred; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_three.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_three.scss new file mode 100644 index 0000000..1846e9a --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_three.scss @@ -0,0 +1,3 @@ +.three { + color: darkgreen; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_two.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_two.scss new file mode 100644 index 0000000..7a1ace9 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/partials/_two.scss @@ -0,0 +1,5 @@ +@import "partials/three"; + +.two { + color: darkblue; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/main/three.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/three.scss new file mode 100644 index 0000000..24cab72 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/three.scss @@ -0,0 +1,3 @@ +.three { + color: green; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/main/two.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/two.scss new file mode 100644 index 0000000..68036db --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/main/two.scss @@ -0,0 +1,3 @@ +.two { + color: blue; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/partials/_three.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/partials/_three.scss new file mode 100644 index 0000000..1846e9a --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/partials/_three.scss @@ -0,0 +1,3 @@ +.three { + color: darkgreen; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/three.scss b/mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/three.scss new file mode 100644 index 0000000..4e9d1a7 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watcher/sibling/three.scss @@ -0,0 +1,5 @@ +@import "partials/three"; + +.three { + color: green; +} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watching-dir-01/index.scss b/mybulma/node_modules/node-sass/test/fixtures/watching-dir-01/index.scss new file mode 100644 index 0000000..b189432 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watching-dir-01/index.scss @@ -0,0 +1 @@ +a {color:green;} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/foo.scss b/mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/foo.scss new file mode 100644 index 0000000..620aa31 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/foo.scss @@ -0,0 +1 @@ +body{background:white} diff --git a/mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/index.scss b/mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/index.scss new file mode 100644 index 0000000..dece2c6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watching-dir-02/index.scss @@ -0,0 +1 @@ +@import './foo'; diff --git a/mybulma/node_modules/node-sass/test/fixtures/watching/bar.sass b/mybulma/node_modules/node-sass/test/fixtures/watching/bar.sass new file mode 100644 index 0000000..de9fd93 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watching/bar.sass @@ -0,0 +1,2 @@ +body + background: white diff --git a/mybulma/node_modules/node-sass/test/fixtures/watching/index.sass b/mybulma/node_modules/node-sass/test/fixtures/watching/index.sass new file mode 100644 index 0000000..9f146c8 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watching/index.sass @@ -0,0 +1 @@ +@import "bar.sass"; diff --git a/mybulma/node_modules/node-sass/test/fixtures/watching/index.scss b/mybulma/node_modules/node-sass/test/fixtures/watching/index.scss new file mode 100644 index 0000000..7905647 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watching/index.scss @@ -0,0 +1 @@ +@import './white'; diff --git a/mybulma/node_modules/node-sass/test/fixtures/watching/white.scss b/mybulma/node_modules/node-sass/test/fixtures/watching/white.scss new file mode 100644 index 0000000..620aa31 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/fixtures/watching/white.scss @@ -0,0 +1 @@ +body{background:white} diff --git a/mybulma/node_modules/node-sass/test/lowlevel.js b/mybulma/node_modules/node-sass/test/lowlevel.js new file mode 100644 index 0000000..a7aedf1 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/lowlevel.js @@ -0,0 +1,243 @@ +process.env.NODESASS_COV ? require('../lib-cov') : require('../lib'); + +var assert = require('assert').strict, + sass = require('../lib/extensions'), + binding = require(sass.getBinaryPath()); + +describe('lowlevel', function() { + it('fail with options not an object', function(done) { + var options = 2; + assert.throws(function() { + binding.renderSync(options); + }, /"result" element is not an object/); + done(); + }); + + it('data context with options.data not provided', function(done) { + var options = { + /* data: */ + sourceComments: false, + file: null, + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n', + result: { stats: {} } }; + + binding.renderSync(options); + assert(/Data context created without a source string/.test(options.result.error), + 'Should fail with error message "Data context created without a source string"'); + done(); + }); + + it('data context with both options.data and options.file not provided', function(done) { + var options = { + /* data: */ + sourceComments: false, + /* file: null, */ + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n', + result: { stats: {} } }; + + binding.renderSync(options); + assert(/Data context created without a source string/.test(options.result.error), + 'Should fail with error message "Data context created without a source string"'); + done(); + }); + + it('file context with both options.data and options.file not provided', function(done) { + var options = { + /* data: */ + sourceComments: false, + /* file: null, */ + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n', + result: { stats: {} } }; + + binding.renderFileSync(options); + assert(/File context created without an input path/.test(options.result.error), + 'Should fail with error message "File context created without an input path"'); + done(); + }); + + it('file context with options.file not provided, options.data given', function(done) { + var options = { + data: 'div { width: 10px; } ', + sourceComments: false, + /* file: null, */ + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n', + result: { stats: {} } }; + + binding.renderFileSync(options); + assert(/File context created without an input path/.test(options.result.error), + 'Should fail with error message "File context created without an input path"'); + done(); + }); + + it('fail with options.result not provided', function(done) { + var options = { data: 'div { width: 10px; } ', + sourceComments: false, + file: null, + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n' }; + + assert.throws(function() { + binding.renderSync(options); + }, /"result" element is not an object/); + done(); + }); + + + it('fail with options.result not an object', function(done) { + var options = { data: 'div { width: 10px; } ', + sourceComments: false, + file: null, + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n', + result: 2 }; + + assert.throws(function() { + binding.renderSync(options); + }, /"result" element is not an object/); + done(); + }); + + + it('fail with options.result.stats not provided', function(done) { + + var options = { data: 'div { width: 10px; } ', + sourceComments: false, + file: null, + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n', + result: {} }; + + assert.throws(function() { + binding.renderSync(options); + }, /"result.stats" element is not an object/); + done(); + }); + + it('fail with options.result.stats not an object', function(done) { + + var options = { data: 'div { width: 10px; } ', + sourceComments: false, + file: null, + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + indentWidth: 2, + indentType: 0, + linefeed: '\n', + result: { stats: 2 } }; + + assert.throws(function() { + binding.renderSync(options); + }, /"result.stats" element is not an object/); + done(); + }); + + it('options.indentWidth not provided', function(done) { + var options = { data: 'div { width: 10px; }', + sourceComments: false, + file: null, + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + /* indentWidth */ + indentType: 0, + linefeed: '\n', + result: { stats: {} } }; + + binding.renderSync(options); + assert(options.result.css); + done(); + }); + + it('empty data string', function(done) { + var options = { data: '', + sourceComments: false, + file: null, + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + /* indentWidth */ + indentType: 0, + linefeed: '\n', + result: { stats: {} } }; + + binding.renderSync(options); + assert(/empty source string/.test(options.result.error), + 'Should fail with error message "Data context created with empty source string"'); + done(); + }); + + + it('empty file string', function(done) { + var options = { + sourceComments: false, + file: '', + outFile: null, + includePaths: '', + precision: 5, + sourceMap: null, + style: 0, + /* indentWidth */ + indentType: 0, + linefeed: '\n', + result: { stats: {} } }; + + binding.renderFileSync(options); + assert(/empty input path/.test(options.result.error), + 'Should fail with error message "File context created with empty input path"'); + done(); + }); + +}); // lowlevel diff --git a/mybulma/node_modules/node-sass/test/runtime.js b/mybulma/node_modules/node-sass/test/runtime.js new file mode 100644 index 0000000..de0ee5a --- /dev/null +++ b/mybulma/node_modules/node-sass/test/runtime.js @@ -0,0 +1,185 @@ +var assert = require('assert').strict, + sass = process.env.NODESASS_COV + ? require('../lib-cov/extensions') + : require('../lib/extensions'); + +describe('runtime parameters', function() { + var pkg = require('../package'), + // Let's use JSON to fake a deep copy + savedArgv = JSON.stringify(process.argv), + savedEnv = JSON.stringify(process.env); + + afterEach(function() { + process.argv = JSON.parse(savedArgv); + process.env = JSON.parse(savedEnv); + delete pkg.nodeSassConfig; + }); + + describe('configuration precedence should be respected', function() { + + describe('SASS_BINARY_NAME', function() { + beforeEach(function() { + process.argv.push('--sass-binary-name', 'aaa'); + process.env.SASS_BINARY_NAME = 'bbb'; + process.env.npm_config_sass_binary_name = 'ccc'; + pkg.nodeSassConfig = { binaryName: 'ddd' }; + }); + + it('command line argument', function() { + assert.strictEqual(sass.getBinaryName(), 'aaa_binding.node'); + }); + + it('environment variable', function() { + process.argv = []; + assert.strictEqual(sass.getBinaryName(), 'bbb_binding.node'); + }); + + it('npm config variable', function() { + process.argv = []; + process.env.SASS_BINARY_NAME = null; + assert.strictEqual(sass.getBinaryName(), 'ccc_binding.node'); + }); + + it('package.json', function() { + process.argv = []; + process.env.SASS_BINARY_NAME = null; + process.env.npm_config_sass_binary_name = null; + assert.strictEqual(sass.getBinaryName(), 'ddd_binding.node'); + }); + }); + + describe('SASS_BINARY_SITE', function() { + beforeEach(function() { + process.argv.push('--sass-binary-site', 'http://aaa.example.com:9999'); + process.env.SASS_BINARY_SITE = 'http://bbb.example.com:8888'; + process.env.npm_config_sass_binary_site = 'http://ccc.example.com:7777'; + pkg.nodeSassConfig = { binarySite: 'http://ddd.example.com:6666' }; + }); + + it('command line argument', function() { + var URL = 'http://aaa.example.com:9999'; + assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); + }); + + it('environment variable', function() { + process.argv = []; + var URL = 'http://bbb.example.com:8888'; + assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); + }); + + it('npm config variable', function() { + process.argv = []; + process.env.SASS_BINARY_SITE = null; + var URL = 'http://ccc.example.com:7777'; + assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); + }); + + it('package.json', function() { + process.argv = []; + process.env.SASS_BINARY_SITE = null; + process.env.npm_config_sass_binary_site = null; + var URL = 'http://ddd.example.com:6666'; + assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); + }); + }); + + describe('SASS_BINARY_DIR', function() { + beforeEach(function() { + process.argv.push('--sass-binary-dir', 'aaa'); + process.env.SASS_BINARY_DIR = 'bbb'; + process.env.npm_config_sass_binary_dir = 'ccc'; + pkg.nodeSassConfig = { binaryDir: 'ddd' }; + }); + + it('command line argument', function() { + assert.strictEqual(sass.getBinaryDir(), 'aaa'); + }); + + it('environment variable', function() { + process.argv = []; + assert.strictEqual(sass.getBinaryDir(), 'bbb'); + }); + + it('npm config variable', function() { + process.argv = []; + process.env.SASS_BINARY_DIR = null; + assert.strictEqual(sass.getBinaryDir(), 'ccc'); + }); + + it('package.json', function() { + process.argv = []; + process.env.SASS_BINARY_DIR = null; + process.env.npm_config_sass_binary_dir = null; + assert.strictEqual(sass.getBinaryDir(), 'ddd'); + }); + }); + + describe('SASS_BINARY_PATH', function() { + beforeEach(function() { + process.argv.push('--sass-binary-path', 'aaa_binding.node'); + process.env.SASS_BINARY_PATH = 'bbb_binding.node'; + process.env.npm_config_sass_binary_path = 'ccc_binding.node'; + pkg.nodeSassConfig = { binaryPath: 'ddd_binding.node' }; + }); + + it('command line argument', function() { + assert.strictEqual(sass.getBinaryPath(), 'aaa_binding.node'); + }); + + it('environment variable', function() { + process.argv = []; + assert.strictEqual(sass.getBinaryPath(), 'bbb_binding.node'); + }); + + it('npm config variable', function() { + process.argv = []; + process.env.SASS_BINARY_PATH = null; + assert.strictEqual(sass.getBinaryPath(), 'ccc_binding.node'); + }); + + it('package.json', function() { + process.argv = []; + process.env.SASS_BINARY_PATH = null; + process.env.npm_config_sass_binary_path = null; + assert.strictEqual(sass.getBinaryPath(), 'ddd_binding.node'); + }); + }); + + }); + + describe.skip('Sass Binary Cache', function() { + var npmCacheDir; + before(function() { + npmCacheDir = process.env.npm_config_cache; + }); + + beforeEach(function() { + delete process.env.npm_config_sass_binary_cache; + }); + + it('npm config variable', function() { + var overridenCachePath = '/foo/bar/'; + process.env.npm_config_sass_binary_cache = overridenCachePath; + assert.strictEqual(sass.getCachePath(), overridenCachePath); + }); + + it('With no value, falls back to NPM cache', function() { + assert.strictEqual(sass.getCachePath(), npmCacheDir); + }); + }); +}); + +// describe('library detection', function() { +// it('should throw error when libsass binary is missing.', function() { +// var sass = require(extensionsPath), +// originalBin = sass.getBinaryPath(), +// renamedBin = [originalBin, '_moved'].join(''); + +// assert.throws(function() { +// fs.renameSync(originalBin, renamedBin); +// sass.getBinaryPath(true); +// }, /The `libsass` binding was not found/); + +// fs.renameSync(renamedBin, originalBin); +// }); +// }); diff --git a/mybulma/node_modules/node-sass/test/scripts/util/proxy.js b/mybulma/node_modules/node-sass/test/scripts/util/proxy.js new file mode 100644 index 0000000..c01ddc1 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/scripts/util/proxy.js @@ -0,0 +1,76 @@ +var assert = require('assert').strict, + proxy = require('../../../scripts/util/proxy'); + +describe('proxy', function() { + var oldEnvironment; + + beforeEach(function() { + oldEnvironment = process.env; + }); + + afterEach(function() { + process.env = oldEnvironment; + }); + + describe('without an npm proxy config', function() { + delete process.env.npm_config_https_proxy; + delete process.env.npm_config_proxy; + delete process.env.npm_config_http_proxy; + + it('should return an empty string', function() { + assert.strictEqual('', proxy()); + }); + + it('should ignore system proxy environment variables', function() { + process.env.HTTPS_PROXY = 'http://https_proxy.com'; + process.env.PROXY = 'http://proxy.com'; + process.env.HTTP_PROXY = 'http://http_proxy.com'; + + assert.strictEqual('', proxy()); + }); + }); + + describe('with an npm proxy config', function() { + beforeEach(function() { + process.env.npm_config_https_proxy = 'http://https_proxy.com'; + process.env.npm_config_proxy = 'http://proxy.com'; + process.env.npm_config_http_proxy = 'http://http_proxy.com'; + }); + + describe('https_proxy', function() { + it('should have the highest precedence', function() { + assert.strictEqual(process.env.npm_config_https_proxy, proxy()); + }); + }); + + describe('proxy', function() { + it('should have the higher precedence than https_proxy', function() { + assert.strictEqual(process.env.npm_config_https_proxy, proxy()); + delete process.env.npm_config_https_proxy; + + assert.strictEqual(process.env.npm_config_proxy, proxy()); + }); + + it('should have the lower precedence than http_proxy', function() { + delete process.env.npm_config_https_proxy; + + assert.strictEqual(process.env.npm_config_proxy, proxy()); + delete process.env.npm_config_proxy; + + assert.strictEqual(process.env.npm_config_http_proxy, proxy()); + }); + }); + + describe('http_proxy', function() { + it('should have the lowest precedence', function() { + assert.strictEqual(process.env.npm_config_https_proxy, proxy()); + delete process.env.npm_config_https_proxy; + + assert.strictEqual(process.env.npm_config_proxy, proxy()); + delete process.env.npm_config_proxy; + + assert.strictEqual(process.env.npm_config_http_proxy, proxy()); + }); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/test/types.js b/mybulma/node_modules/node-sass/test/types.js new file mode 100644 index 0000000..4593b53 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/types.js @@ -0,0 +1,708 @@ +/*eslint new-cap: ["error", { "capIsNew": false }]*/ +'use strict'; + +var assert = require('assert').strict; +var sass = require('../'); +var semver = require('semver'); + +describe('sass.types', function() { + describe('Boolean', function() { + it('exists', function() { + assert(sass.types.Boolean); + }); + + it('names the constructor correctly', function() { + assert.strictEqual(sass.types.Boolean.name, 'SassBoolean'); + }); + + it('supports call constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + var t = sass.types.Boolean(true); + assert.strictEqual(t.toString(), '[object SassBoolean]'); + + var f = sass.types.Boolean(false); + assert.strictEqual(f.toString(), '[object SassBoolean]'); + }); + + it('has true and false singletons', function() { + assert.strictEqual(sass.types.Boolean(true), sass.types.Boolean(true)); + assert.strictEqual(sass.types.Boolean(false), sass.types.Boolean(false)); + assert.notStrictEqual(sass.types.Boolean(false), sass.types.Boolean(true)); + assert.strictEqual(sass.types.Boolean(true), sass.types.Boolean.TRUE); + assert.strictEqual(sass.types.Boolean(false), sass.types.Boolean.FALSE); + }); + + it('supports DOES NOT support new constructor', function() { + assert.throws(function() { + new sass.types.Boolean(true); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Cannot instantiate SassBoolean'); + return true; + }); + }); + + it('throws with incorrect constructor args', function() { + assert.throws(function() { + sass.types.Boolean(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected one boolean argument'); + return true; + }); + + [1, 2, '', 'hi', {}, []].forEach(function(arg) { + assert.throws(function() { + sass.types.Boolean(arg); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected one boolean argument'); + return true; + }); + }); + + assert.throws(function() { + sass.types.Boolean(true, false); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected one boolean argument'); + return true; + }); + }); + + it('implements getValue', function() { + var t = sass.types.Boolean(true); + assert.strictEqual(typeof t.getValue, 'function'); + assert.strictEqual(t.getValue(), true); + + var f = sass.types.Boolean(false); + assert.strictEqual(typeof f.getValue, 'function'); + assert.strictEqual(f.getValue(), false); + }); + }); + + describe('Color', function() { + it('exists', function() { + assert(sass.types.Color); + }); + + it('names the constructor correctly', function() { + assert.strictEqual(sass.types.Color.name, 'SassColor'); + }); + + it('supports call constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var t = sass.types.Color(); + assert.strictEqual(t.toString(), '[object SassColor]'); + }); + + it('supports new constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var t = new sass.types.Color(1); + assert.strictEqual(t.toString(), '[object SassColor]'); + }); + + it('supports variadic constructor args', function() { + var a = new sass.types.Color(); + + assert.strictEqual(a.getR(), 0); + assert.strictEqual(a.getG(), 0); + assert.strictEqual(a.getB(), 0); + assert.strictEqual(a.getA(), 1); + + var b = new sass.types.Color(1); + + assert.strictEqual(b.getR(), 0); + assert.strictEqual(b.getG(), 0); + assert.strictEqual(b.getB(), 1); + assert.strictEqual(b.getA(), 0); // why ? + + assert.throws(function() { + new sass.types.Color(1, 2); + }, function(error) { + // assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Constructor should be invoked with either 0, 1, 3 or 4 arguments.'); + return true; + }); + + var c = new sass.types.Color(1, 2, 3); + + assert.strictEqual(c.getR(), 1); + assert.strictEqual(c.getG(), 2); + assert.strictEqual(c.getB(), 3); + assert.strictEqual(c.getA(), 1); + + var d = new sass.types.Color(1, 2, 3, 4); + + assert.strictEqual(d.getR(), 1); + assert.strictEqual(d.getG(), 2); + assert.strictEqual(d.getB(), 3); + assert.strictEqual(d.getA(), 4); + + assert.throws(function() { + new sass.types.Color(1, 2, 3, 4, 5); + }, function(error) { + // assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Constructor should be invoked with either 0, 1, 3 or 4 arguments.'); + return true; + }); + }); + + it('supports get{R,G,B,A} and set{R,G,B,A}', function() { + var c = new sass.types.Color(); + + assert.strictEqual(c.getR(), 0); + assert.strictEqual(c.getG(), 0); + assert.strictEqual(c.getB(), 0); + assert.strictEqual(c.getA(), 1); + + assert.strictEqual(c.setR(1), undefined); + + assert.strictEqual(c.getR(), 1); + assert.strictEqual(c.getG(), 0); + assert.strictEqual(c.getB(), 0); + assert.strictEqual(c.getA(), 1); + + assert.strictEqual(c.setG(1), undefined); + + assert.strictEqual(c.getR(), 1); + assert.strictEqual(c.getG(), 1); + assert.strictEqual(c.getB(), 0); + assert.strictEqual(c.getA(), 1); + + assert.strictEqual(c.setB(1), undefined); + + assert.strictEqual(c.getR(), 1); + assert.strictEqual(c.getG(), 1); + assert.strictEqual(c.getB(), 1); + assert.strictEqual(c.getA(), 1); + + assert.strictEqual(c.setA(0), undefined); + + assert.strictEqual(c.getR(), 1); + assert.strictEqual(c.getG(), 1); + assert.strictEqual(c.getB(), 1); + assert.strictEqual(c.getA(), 0); + }); + + it('throws with incorrect set{R,G,B,A} arguments', function() { + var c = new sass.types.Color(); + + function assertJustOneArgument(cb) { + assert.throws(function() { + cb(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected just one argument'); + + return true; + }); + } + + function assertNumberArgument(arg, cb) { + assert.throws(function() { + cb(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Supplied value should be a number'); + + return true; + }, 'argument was: ' + arg); + } + + assertJustOneArgument(function() { c.setR(); }); + assertJustOneArgument(function() { c.setG(); }); + assertJustOneArgument(function() { c.setB(); }); + assertJustOneArgument(function() { c.setA(); }); + + assertJustOneArgument(function() { c.setR(1, 2); }); + assertJustOneArgument(function() { c.setG(1, 2); }); + assertJustOneArgument(function() { c.setB(1, 2); }); + assertJustOneArgument(function() { c.setA(1, 2); }); + + [true, false, '0', '1', '', 'omg', {}, []].forEach(function(arg) { + assertNumberArgument(arg, function() { c.setR(arg); }); + assertNumberArgument(arg, function() { c.setG(arg); }); + assertNumberArgument(arg, function() { c.setB(arg); }); + assertNumberArgument(arg, function() { c.setA(arg); }); + }); + }); + }); + + describe('Error', function() { + it('exists', function() { + assert(sass.types.Error); + }); + + it('has a correctly named constructor', function() { + assert.strictEqual(sass.types.Error.name, 'SassError'); + }); + + it('supports call constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var e = sass.types.Error('Such Error'); + assert.ok(e instanceof sass.types.Error); + assert.strictEqual(e.toString(), '[object SassError]'); + + // TODO: I'm not sure this object works well, it likely needs to be fleshed out more... + }); + + it('supports new constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var e = new sass.types.Error('Such Error'); + assert.ok(e instanceof sass.types.Error); + assert.strictEqual(e.toString(), '[object SassError]'); + // TODO: I'm not sure this object works well, it likely needs to be fleshed out more... + }); + }); + + describe('List', function() { + it('exists', function() { + assert(sass.types.List); + }); + + it('has a correctly named constructor', function() { + assert.strictEqual(sass.types.List.name, 'SassList'); + }); + + it('support call constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var list = sass.types.List(); + assert.ok(list instanceof sass.types.List); + assert.strictEqual(list.toString(), '[object SassList]'); + }); + + it('support new constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var list = new sass.types.List(); + assert.ok(list instanceof sass.types.List); + assert.strictEqual(list.toString(), '[object SassList]'); + }); + + it('support variadic constructor', function() { + var a = new sass.types.List(); + assert.strictEqual(a.getLength(), 0); + assert.strictEqual(a.getSeparator(), true); + var b = new sass.types.List(1); + assert.strictEqual(b.getSeparator(), true); + assert.strictEqual(b.getLength(), 1); + var c = new sass.types.List(1, true); + assert.strictEqual(b.getLength(), 1); + assert.strictEqual(c.getSeparator(), true); + var d = new sass.types.List(1, false); + assert.strictEqual(b.getLength(), 1); + assert.strictEqual(d.getSeparator(), false); + var e = new sass.types.List(1, true, 2); + assert.strictEqual(b.getLength(), 1); + assert.strictEqual(e.getSeparator(), true); + + assert.throws(function() { + new sass.types.List('not-a-number'); + }, function(error) { + // TODO: TypeError + assert.strictEqual(error.message, 'First argument should be an integer.'); + return true; + }); + + assert.throws(function() { + new sass.types.List(1, 'not-a-boolean'); + }, function(error) { + // TODO: TypeError + assert.strictEqual(error.message, 'Second argument should be a boolean.'); + return true; + }); + }); + + it('supports {get,set}Separator', function() { + var a = new sass.types.List(); + assert.strictEqual(a.getSeparator(), true); + assert.strictEqual(a.setSeparator(true), undefined); + assert.strictEqual(a.getSeparator(), true); + assert.strictEqual(a.setSeparator(false), undefined); + assert.strictEqual(a.getSeparator(), false); + + assert.throws(function() { + a.setSeparator(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected just one argument'); + return true; + }); + + [1, '', [], {}].forEach(function(arg) { + assert.throws(function() { + a.setSeparator(arg); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Supplied value should be a boolean'); + return true; + }, 'setSeparator(' + arg + ')'); + }); + }); + + it('supports setValue and getValue', function() { + var a = new sass.types.List(); + + assert.throws(function() { + a.getValue(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected just one argument'); + + return true; + }); + + ['hi', [], {}].forEach(function(arg) { + assert.throws(function() { + a.getValue(arg); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Supplied index should be an integer'); + + return true; + }, 'getValue(' + arg + ')'); + }); + + assert.throws(function() { + a.getValue(0); + }, function(error) { + assert.ok(error instanceof RangeError); + assert.strictEqual(error.message, 'Out of bound index'); + + return true; + }); + + assert.throws(function() { + a.getValue(-1); + }, function(error) { + assert.ok(error instanceof RangeError); + assert.strictEqual(error.message, 'Out of bound index'); + + return true; + }); + + assert.throws(function() { + a.setValue(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected two arguments'); + return true; + }); + + assert.throws(function() { + a.setValue(1); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected two arguments'); + return true; + }); + + assert.throws(function() { + a.setValue(0, 'no-a-sass-value'); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Supplied value should be a SassValue object'); + return true; + }); + }); + + // TODO: more complex set/get value scenarios + }); + + describe('Map', function() { + it('exists', function() { + assert(sass.types.Map); + }); + + it('has a correctly named constructor', function() { + assert.strictEqual(sass.types.Map.name, 'SassMap'); + }); + + it('supports call constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var x = sass.types.Map(); + assert.strictEqual(x.toString(), '[object SassMap]'); + }); + + it('supports new constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var x = new sass.types.Map(); + assert.strictEqual(x.toString(), '[object SassMap]'); + }); + + it('supports an optional constructor argument', function() { + var x = new sass.types.Map(); + var y = new sass.types.Map(1); + var z = new sass.types.Map(2, 3); + + assert.throws(function() { + new sass.types.Map('OMG'); + }, function(error) { + assert.strictEqual(error.message, 'First argument should be an integer.'); + // TODO: TypeError + + return true; + }); + + assert.strictEqual(x.getLength(), 0); + assert.strictEqual(y.getLength(), 1); + assert.strictEqual(z.getLength(), 2); + }); + + it('supports length', function() { + var y = new sass.types.Map(1); + var z = new sass.types.Map(2); + + assert.strictEqual(y.getLength(), 1); + assert.strictEqual(z.getLength(), 2); + }); + + it('supports {get,set}Value {get,set}Key', function() { + var y = new sass.types.Map(1); + var omg = new sass.types.String('OMG'); + y.setValue(0, omg); + console.log(y.getValue(0)); + }); + }); + + describe('Null', function() { + it('exists', function() { + assert(sass.types.Null); + }); + + it('has a correctly named constructor', function() { + assert.strictEqual(sass.types.Null.name, 'SassNull'); + }); + + it('does not support new constructor', function() { + assert.throws(function() { + new sass.types.Null(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Cannot instantiate SassNull'); + return true; + }); + }); + + it('supports call constructor (and is a singleton)', function() { + assert.strictEqual(sass.types.Null(), sass.types.Null()); + assert.strictEqual(sass.types.Null(), sass.types.Null.NULL); + }); + }); + + describe('Number', function() { + it('exists', function() { + assert(sass.types.Number); + }); + + it('has a correctly named constructor', function() { + assert.strictEqual(sass.types.Number.name, 'SassNumber'); + }); + + it('supports new constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var number = new sass.types.Number(); + assert.strictEqual(number.toString(), '[object SassNumber]'); + }); + + it('supports call constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var number = sass.types.Number(); + assert.strictEqual(number.toString(), '[object SassNumber]'); + }); + + it('supports multiple constructor arguments', function() { + var a = new sass.types.Number(); + var b = new sass.types.Number(1); + var c = new sass.types.Number(2, 'px'); + + assert.throws(function() { + new sass.types.Number('OMG'); + }, function(error) { + // TODO: TypeError + assert.strictEqual(error.message, 'First argument should be a number.'); + return true; + }); + + assert.throws(function() { + new sass.types.Number(1, 2); + }, function(error) { + // TODO: TypeError + assert.strictEqual(error.message, 'Second argument should be a string.'); + return true; + }); + + assert.strictEqual(a.getValue(), 0); + assert.strictEqual(a.getUnit(), ''); + assert.strictEqual(b.getValue(), 1); + assert.strictEqual(b.getUnit(), ''); + assert.strictEqual(c.getValue(), 2); + assert.strictEqual(c.getUnit(), 'px'); + }); + + it('supports get{Unit,Value}, set{Unit,Value}', function() { + var number = new sass.types.Number(1, 'px'); + assert.strictEqual(number.getValue(), 1); + assert.strictEqual(number.getUnit(), 'px'); + + number.setValue(2); + assert.strictEqual(number.getValue(), 2); + assert.strictEqual(number.getUnit(), 'px'); + + number.setUnit('em'); + assert.strictEqual(number.getValue(), 2); + assert.strictEqual(number.getUnit(), 'em'); + + assert.throws(function() { + number.setValue('OMG'); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Supplied value should be a number'); + return true; + }); + + assert.throws(function() { + number.setValue(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected just one argument'); + return true; + }); + + assert.throws(function() { + number.setUnit(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected just one argument'); + return true; + }); + + assert.throws(function() { + number.setUnit(1); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Supplied value should be a string'); + return true; + }); + }); + }); + + describe('String', function() { + it('exists', function() { + assert(sass.types.String); + }); + + it('has a properly named constructor', function() { + assert.strictEqual(sass.types.String.name, 'SassString'); + }); + + it('supports call constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var x = sass.types.String('OMG'); + + assert.strictEqual(x.toString(), '[object SassString]'); + assert.strictEqual(x.getValue(), 'OMG'); + }); + + it('supports new constructor', function() { + if(semver.gt(process.version, 'v14.5.0')) { + // v8 issue tracked in https://github.com/sass/node-sass/issues/2972 + this.skip(); + } + + var x = new sass.types.String('OMG'); + + assert.strictEqual(x.toString(), '[object SassString]'); + assert.strictEqual(x.getValue(), 'OMG'); + }); + + it('supports multiple constructor arg combinations', function() { + new sass.types.String(); + new sass.types.String('OMG'); + new sass.types.String('OMG', 'NOPE'); + + [null, undefined, [], {}, function() { }].forEach(function(arg) { + assert.throws(function() { + new sass.types.String(arg); + }, function(error) { + // TODO: TypeError + assert.strictEqual(error.message, 'Argument should be a string.'); + return true; + }); + }); + }); + + it('supports {get,set}Value', function() { + var x = new sass.types.String(); + + assert.strictEqual(x.getValue(), ''); + assert.strictEqual(x.setValue('hi'), undefined); + assert.strictEqual(x.getValue(), 'hi'); + assert.strictEqual(x.setValue('bye'), undefined); + assert.strictEqual(x.getValue(), 'bye'); + + assert.throws(function() { + x.setValue(); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected just one argument'); + return true; + }); + + assert.throws(function() { + x.setValue('hi', 'hi'); + }, function(error) { + assert.ok(error instanceof TypeError); + assert.strictEqual(error.message, 'Expected just one argument'); + return true; + }); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/test/useragent.js b/mybulma/node_modules/node-sass/test/useragent.js new file mode 100644 index 0000000..5578fd6 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/useragent.js @@ -0,0 +1,15 @@ +var assert = require('assert').strict, + pkg = require('../package.json'), + ua = require('../scripts/util/useragent'); + +describe('util', function() { + describe('useragent', function() { + it('should look as we expect', function() { + var reNode = 'node/' + process.version; + var reSass = 'node-sass-installer/' + pkg.version; + var reUA = new RegExp('^' + reNode + ' ' + reSass + '$'); + + assert.ok(reUA.test(ua())); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/test/watcher.js b/mybulma/node_modules/node-sass/test/watcher.js new file mode 100644 index 0000000..8c80425 --- /dev/null +++ b/mybulma/node_modules/node-sass/test/watcher.js @@ -0,0 +1,503 @@ +var assert = require('assert').strict, + fs = require('fs-extra'), + path = require('path'), + temp = require('unique-temp-dir'), + watcher = require('../lib/watcher'); + +describe('watcher', function() { + var main, sibling; + var origin = path.join(__dirname, 'fixtures', 'watcher'); + + beforeEach(function() { + var fixture = temp(); + fs.ensureDirSync(fixture); + fs.copySync(origin, fixture); + main = fs.realpathSync(path.join(fixture, 'main')); + sibling = fs.realpathSync(path.join(fixture, 'sibling')); + }); + + describe('with directory', function() { + beforeEach(function() { + watcher.reset({ + directory: main, + includePath: [main] + }); + }); + + describe('when a file is changed', function() { + describe('and it is in the graph', function() { + describe('if it is a partial', function() { + it('should record its ancestors as changed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.changed, [ + path.join(main, 'one.scss'), + ]); + }); + + it('should record its descendants as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.added, [ + path.join(main, 'partials', '_three.scss'), + ]); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + + describe('if it is not a partial', function() { + it('should record itself as changed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.changed, [ + file, + ]); + }); + + it('should record its descendants as added', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.added, [ + path.join(main, 'partials', '_one.scss'), + path.join(main, 'partials', '_three.scss'), + ]); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + }); + + describe('and is not in the graph', function() { + describe('if it is a partial', function() { + it('should not record anything', function() { + var file = path.join(sibling, 'partials', '_three.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files, { + added: [], + changed: [], + removed: [], + }); + }); + }); + + describe('if it is not a partial', function() { + it('should record itself as changed', function() { + var file = path.join(sibling, 'three.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files, { + added: [], + changed: [file], + removed: [], + }); + }); + }); + }); + }); + + describe('when a file is added', function() { + describe('and it is in the graph', function() { + describe('if it is a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record its descendants as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, [ + path.join(main, 'partials', '_three.scss') + ]); + }); + + it('should record nothing as changed', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.changed, []); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + + describe('if it is not a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record its descendants as added', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, [ + path.join(main, 'partials', '_one.scss'), + path.join(main, 'partials', '_three.scss'), + ]); + }); + + it('should record nothing as changed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.changed, []); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + }); + }); + + describe('when a file is removed', function() { + describe('and it is in the graph', function() { + describe('if it is a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record its ancestors as changed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.changed, [ + path.join(main, 'one.scss'), + ]); + }); + + it('should record itself as removed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.removed, [file]); + }); + }); + + describe('if it is not a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record nothing as changed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.changed, []); + }); + + it('should record itself as removed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.removed, [file]); + }); + }); + }); + + describe('and is not in the graph', function() { + describe('if it is a partial', function() { + it('should record nothing', function() { + var file = path.join(sibling, 'partials', '_three.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files, { + added: [], + changed: [], + removed: [], + }); + }); + }); + + describe('if it is not a partial', function() { + it('should record nothing', function() { + var file = path.join(sibling, 'three.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files, { + added: [], + changed: [], + removed: [], + }); + }); + }); + }); + }); + }); + + describe('with file', function() { + beforeEach(function() { + watcher.reset({ + src: path.join(main, 'one.scss'), + includePath: [main] + }); + }); + + describe('when a file is changed', function() { + describe('and it is in the graph', function() { + describe('if it is a partial', function() { + it('should record its descendants as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.added, [ + path.join(main, 'partials', '_three.scss'), + ]); + }); + + it('should record its ancenstors as changed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.changed, [ + path.join(main, 'one.scss'), + ]); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + + describe('if it is not a partial', function() { + it('should record its descendants as added', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.added, [ + path.join(main, 'partials', '_one.scss'), + path.join(main, 'partials', '_three.scss'), + ]); + }); + + it('should record itself as changed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.changed, [file]); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + }); + + describe('and it is not in the graph', function() { + describe('if it is a partial', function() { + it('should record nothing', function() { + var file = path.join(sibling, 'partials', '_three.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files, { + added: [], + changed: [], + removed: [], + }); + }); + }); + + describe('if it is not a partial', function() { + it('should record nothing as added', function() { + var file = path.join(sibling, 'three.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record itself as changed', function() { + var file = path.join(sibling, 'three.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.changed, [file]); + }); + + it('should record nothing as removed', function() { + var file = path.join(sibling, 'three.scss'); + var files = watcher.changed(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + }); + }); + + describe('when a file is added', function() { + describe('and it is in the graph', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record its descendants as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, [ + path.join(main, 'partials', '_three.scss'), + ]); + }); + + it('should record nothing as changed', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.changed, []); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + + describe('and it is not in the graph', function() { + beforeEach(function() { + watcher.reset({ + src: path.join(main, 'two.scss'), + includePath: [main] + }); + }); + + describe('if it is a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, [ + file, + ]); + }); + + it('should not record its descendants as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, [ + file, + ]); + }); + + it('should record nothing as changed', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.changed, []); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'partials', '_three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + + describe('if it is not a partial', function() { + it('should record itself as added', function() { + var file = path.join(main, 'three.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.added, [ + file, + ]); + }); + + it('should record nothing as changed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.changed, []); + }); + + it('should record nothing as removed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.added(file); + assert.deepStrictEqual(files.removed, []); + }); + }); + }); + }); + + describe('when a file is removed', function() { + describe('and it is in the graph', function() { + describe('if it is a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record its ancestors as changed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.changed, [ + path.join(main, 'one.scss'), + ]); + }); + + it('should record itself as removed', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.removed, [file]); + }); + }); + + describe('if it is not a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.added, []); + }); + + it('should record nothing as changed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.changed, []); + }); + + it('should record itself as removed', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files.removed, [file]); + }); + }); + }); + + describe('and is not in the graph', function() { + beforeEach(function() { + watcher.reset({ + src: path.join(main, 'two.scss'), + includePath: [main] + }); + }); + + describe('if it is a partial', function() { + it('should record nothing as added', function() { + var file = path.join(main, 'partials', '_one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files, { + added: [], + changed: [], + removed: [], + }); + }); + }); + + describe('if it is not a partial', function() { + it('should record nothing', function() { + var file = path.join(main, 'one.scss'); + var files = watcher.removed(file); + assert.deepStrictEqual(files, { + added: [], + changed: [], + removed: [], + }); + }); + }); + }); + }); + }); +}); diff --git a/mybulma/node_modules/node-sass/vendor/darwin-x64-108/darwin-x64-108_binding.node b/mybulma/node_modules/node-sass/vendor/darwin-x64-108/darwin-x64-108_binding.node new file mode 100644 index 0000000000000000000000000000000000000000..8f91aa6f1fe254f458e7f1952aab8ce5a990aef0 GIT binary patch literal 2797624 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 z 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

d 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

I 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 z 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%0A~YlN7x-{dvD_(2F{Jl}x&4IOJZ2MyQ4~1 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

r z+%BXYLHvkDH?eD@mEN_{PLHCjQH^|mFi7yw*(o#QkhN2 zzbW}QMP45X7W*KxkGT21=(3pvvE8zgTZl?+Az|r9{(fR*V74DNM_UoU75ZS)mET4f z!{_+662#@R^0&iAX?yYyfICXCypvej!RR$a+``V-1`T68YPc|tPMM<^>B$e1C*IGsveg1(nXv~-DtqXs zz7)y-Ad>x&^YA0>`XlLt@iKm(Lk8-82VqO6G_hvjVsqh=7tk^zEC180Uxqmdrum(u zBy}>s-zmvXMyFGhlRiypJ1zXxr~s?)S@DaM9lJz1N&Mg^uR_LEDp{4CgokDg86IE~qW9yVRe$-hcDr7}8v zj-A%$w80n3PJc-`t2y?Sip0KFD*nB4QpyVCm8CHE;o7lOIbcOH4r7i%%ZY_76=zHp z-!xV}WH}|zQdw;S)oiH}wo0<070marRH`Rqw989~pJ<7;7l~mL zlALTg*(r>@o=*NV`TdFUQ)5Gc{e&bhVH`EfSSjlP=PyJ4<+KfU5~a(Lc_n&WO$Yon zmYuRPV=65jy6zNu zy8Lyu_b=odvYz>zf6w;|a^I)dZk_scbzS^|JbDHHpUT_yKauwfdep6FzSrm}U1xjz zLV4G(XTGD>GvAi$neQulxYwtC%w}D$eCMubzCG77A0q|prRU!ml~|v4xph7Bo$#OJ z`xXCpJ^vredx6oZ^=XeQ*E1j90M@I#P1ZBt-x-BnXZ^Zr|E}VH;l6P0e^SmbuK(yl9Ts z!ZjvtXYM20&zUss6u-H07#~g5_R`<$mCb~i&sEuc6OK)*hGQmNzPuWan{fP^YPh7G z60_A<4R!suhz~iv)u`=4erYQ`TD$Z7($Rm##m=wRCwoJc<&&z68>VX4fnn*m>hXf1 z9A6D5|4?P|CX?TUeZz8dH9mi$;dxc2&GG!yYPf9Zx0>T7Tr`YdUX3qaR%N!9&xCz* zJa6>K89g(G>0C8m(lBetnoR#{l=aw4`_=pj!*pXcoI0Y)DOXonII_y}Z>wB(PL+Ls zXTqme**>MpahWOynsif+u7)RGQ00{0S6RNj%9(dmx$M{~CmK0@P5rZY?AF`BiB+yN z>GP)k^Nif-CckUSPnz~!Y4R;J^%*#!DyMyBl}Qsn&xGA;%yA=koC(h~^%rxV7EZ6G zn|W=OqYbCm+Q;a3hsod9)O(F-x6$UjuQd5q9#fU$URdQsqtC)xJ|ib(%D=4Oc@?$IN9(_!|8^X8O}1i%`k8Hh~Wam7Y&ygzGt|~ z@M}Z)x>}EjVT)mhVPC^-4F?;JG)x*EY&gO2M8heDXB*Biyvi`UTlM*#993m@WR<>& zkBz8?^Sc|4sWNTiW!GvrzDt$G;Z@4$Ds!fs*@kls|7y6B~3esX|K3xhkO%_Xt>PqJ;POoUmMCl%ynkiV%TBW*Kk|I!Gi8gHEc7C8D4At&o(#V{)R&hM;q>IINtDR!?fY)hSLl$Hk@gAv*8@W2Mr5`w-`O{ zF`Q>O-*A!P62p?=$A+s7e=u~-|6h|~55v+9)hjQxN0nK_ocV4{nD4^E`0DYpVK!3@ zCoZT`ZmTkGm@>>777WXV@%yXk%TH7pd!@>>`JU9i!u6(oh3ifG2-lmQhov{|ds}bX z*LG#YhqT_bZ)Lq{AIN&szK`{$eFN)F`>@rU_UWoO?Tb`z+NY=9wC}&lhHp5%X~TJ#P?Zc)3&~P!xxg?w9lf-hA$z#6&ZlnoA$}0H|=9bZ`zlR-n8!=y=fmfm2JB! zwa=Q$h7TIOX`7FrhTpaUt4By^=OU%S6Y3nmafKirBCl&O_4Fo?^z9(41b>A zKd2fLGc20xDs|w`QyMwuyE%V!HS8Z#WzsNV;(wmIrhkn;&-e56wQ#v6*Ysl{PzkKP!`sFJFgyc z@k90hVBpW*|7*u%=6J0iqb8+xT+H!g^H0AYYR6OSIG$O@@!UF&7tHZme@0Ee%z&ys zv6ZG@jInUN=`}y}rq_O{Y)w_hMpW;6NkhGMjovapRw>Mzu59>v(p!;n_5XzBF4C2l zf33He>F+D;S`Gh`@0#*WdHH>-$8#q9bLusF^rqMFsj%{w`*p2-%=e&)miW)kS1rC) zel1+%uWg?aHU)ZH7v2Xo4L-mt>()Z*7VkE(daF{WtG2HZ-2XL zzI8F)MY@_EHKt6u+VzvEjJo{z<3Ht=-~3 zRB_d;3tEXOrNpESxU)%0QBX3x_ooqx~gBU zi~8j@tkw^|OqF`1@ZF)eTK)7|V|v5?RfWIy{NdxNl5brscag59M{ICaPFM9SbWy)d zk81r&CO>|rD*Dvq>b1o5R#?yL6CWp){Oe+_i*z+TYV4|hr7r51>RGKHepV`a#E1U0 zetHcwz2U2+!e4v-vPRyznC~JTCeW2~*Hu4}>ht*L_s>L!Ie$hzzQBGWFV z{qRRqk+&}5v*s7m)#_DaSNG4Dso&4!6c{;Yo5 zAC%tw^{gL$`>OfZ!FU(PYxSzJtNNYNMg4M})%vB3{H$S3o?a7EZ`fj2_-oG}{s=4i z*2Quc>1uk^*j4?`>7ss_jjQ#GneV{l&%Ous+MRk!Z?b;%%Nlv>V!n%XwR+XqRsAmQ zqJF8~)%ul<{3LendaKFPYoF>Z)^q*pmpAg(#bOuf{;7x2Pq4xN_pSDReUqu*|9bvy zVy;hIK{I%C-Vstg%x|r%BT}_V~yLx|_(?$Jan^xxb{UivF2eIko?X4Xg3^lU=X+ z6^*=gvD`(vTD@xQs(w#(QNNO@UyL~=dP^GC9v&ghQHqmf9?NY(#TsE(_N&i=}}`>^(%K#zuack z`sIv#VNQ_VYVu;{y8-{d>s7zBk+&{pyGU2lqsFeTPhb7=_d{m$YW)gEKE8c_Qa`;W zw%)Sq`FzM4dFvuRDy!xEjJ0~z*j4@FUDPkNg*ks_T(0!9`sq1idMg?J+UryHuI67C zV_l@H)vLy?uFnysen0>JEB33_FKOf#4fPt{dedvLSJ+VHudQEUpK88!vD8JnTEB~L z`q49nwfgEc?e&)V5Bu8-CV%1EYQC)L*R8cfu_oUzwV$c?&--Wt1O#zwfBv& zroFXpT0&-awVkWdXjfx5W~FtCe{J!ts_A5GHKlK;=MU zthHChv{%8{%T_AKpLD$19LT5`+9PZ7 z)!JiS<88I}$eH%2*@4&EBePAlJqo|6>Mf}%lm8!kZvxm>b?l8F*-n6#7Pn9u`ubYa zLQ8kaTkQ60>%=jTM+s^ipzzwto06z_5ti*FU0y|?VAhH)I1tE%u$Zu^tOg2*-3^=A zf`Jgk5^8pZ)lio2H|NZ`y7x*~k{$DJzxS^LcXaQWnKNh3oORB^Fv|K!Fr2JD%&_>A89(P8-Kb!(&PA0352G)lzN7_F8 zyq+Y?^28aY8K!vLjJseY$z=7>(52`K!4?<1Li&g?-DLIA;;;{0j-vcs>qmb--141L zq|2E~9qJ?2qq9DW*C~6```==RD~cpT|E}u2;)@I?Ss%rF6*2eVxSm(t6VROw=oVcsahXGv3cAIdCV_ljn(MRe>Tt7SJ6Ot@n>G3KHV|Bt!;aLhl%I6mA%Cd)}|XV%Lk z^${LWbcJBd1y9>Yg2S~wG&FEN5&gN<&xtowxL4zCmgpkQ{B%E4>p`zKOD$A#7d!ue zyP+gwT^`e{Z~90fDIWJJEcf|`*iTe`q?ljD3YLQ*?tqi=gm+O8_ut9)V%J|LG@k-6 zFOn%96?2q+T39~uJGK+t%e`4zuc={6WT$BEuO)xHhf%_dc+$BEkh!mMBY z?&o(xCJNopRn)K-j^Eio^UqcJA^t~U(ivj(r_+f$6y>|0;iTJN<`*ph4VUog&JV4x z1nW!dNhT5xZ==#jlI5xRqg@{r|DoPn7*19nVdhr|#$51pzG%I;`72VKKEpAe=bxw2 zr_ZHu`YUjsrBp?d;bhZ?y8)*Zlhsd*`4xh37rg1#Px48v83na|Dp)_-UNly0Z>66U%U6Dc(udYhob`fx z>mQ{t=?lOHm+o)kuG?3>iZ{M|3qE%lbWye z<7N56T28i~FwaND8BVr*#hG6rm~_FLZu`;pVz54(^>O0Als?2!Dqs8zwY|i7-WK;l zPsv^k=2r+NT=29US}$(xae~w5Y>$)saed(!@27Qod0s3z#rZMuC#9D{5O?{iBJ6-V zeSZF~)2U&6iu3i4u|A^fIe%5`xDQahM>)QPj<-q4m)=W3FZ-1yYyY^bSjJQcdfo6? z&NR#K+;5lIU&)WVkR@i4q1Ger3YXs#3@0mp!!e4!5NvV5i}Cj%9+zl&!^bJUQHE)T z&T&c0@d^+3G|O~2$0gnws$a!wGWRc)TfP&e)|=uY#4zivg!dV1`s4zo&jiPpW{CTt zB}(!K3WmK3PF9~W=2Hm9UGU<#!frD|UvP!Rh z*D!qp^Vc63PBy)T_HF8LxBZ*C+)r2gsFUM8N#&o`mxkrQn#@Dcc z=`?@i=Sr^)e^&9t7@B&WrM|Z?oUC5cnqL7}9#io+@wHwXI9#X035%U~&~&C=xnC1y z{?nyb-G0Z|o}Knv-ke|W2A5mhXDzd8vU-nkdJ4g~3!c{dblG!?<1zKl?Uv3DSG{xo z6tZWn@3@P;lU#qe*?G(MO3!hIlht>c(^m-6-QM))#G7t?H*h?Y);H%%{8Or4)%l}g z>}%?Kaytc$-4!gaP%!Zo1!W@XaZr9cPqDteJ50^a&{=P5dr!L9d-&k|dT(KU$ET?Ga!zL<=yk!HZoRi`qu$F4=w0hO?V|5E*Dqn6 z-cz|gVQB2B-ct-GTff9lV}1o-(j|Pl^({`{HamB#&*T5e^~Y`shQFv_#m@YlE0!?p zyPV~SGE6f}v0WRVQgTjK-_ccyt`Ia_@TObeNsec#^-5G;cb>$`>NaX*U8i5BjECt1(2PZy`}==F+!oX7VKLyE2tY;nPxZhd=iVtsJG zI(?&hkNs6a*ZvB(pKkW;{Vu25r(ojS3RZX(^nXu5HgjS8O4Z{ro$l32PvT4kabJ%_ zO)xBE=ZWhS|Ar@23@PSQ2#T{*JXv_$Kbx+8qL<^*cJ6eP7Pwe63&YfAp_W{L&1a*Z$!g^WG-;zPX$ozQ&D&Nc3D$Ev!afWHmZ*P(P)#Np-7xrs}4aK(* zjJe=VcX>;2JjrvFTyf5C@tV>};%x=fZz<^SQ0a*-R>|Yhp+BUZ|WIBTAlz$5jm83lv=;=y$=>`i^qAuD>-* z{zJu6>^L~id>SrPa{0Nw6FhH|#+`HY7iPZcgi25Bb_El6DCoaU!4&hU;CTn{2Z~;o zGp%32`4qiK#Ty=Geb(4vjK4QrtiGoiDz2IHe_}d65g;)gN$Eq&gcf3e` z{v!Dau20>{q1Jb_NPhkz`NfOmr{hmCzL)0*bm7q9;!{e0&h|lvS8%xQXE^Ei`UcZG z{Nb9u!G%7m88J-peIVY`)%n?pGZYMSc$&w98n0o9@fhlJOf@v|Rx7+DLr1hi@I5i* zxAXbq483>oIph~9sKftRFtL7Wa>V{cs?GuYv+b!F7Y(Uk2+P<{?CpbLSWe;y) zyDLsQs43oR$k5AKU{tYht6U@Jm{#z_^=j%`C zc%yvpmF64c`v`QnhI$`#vHcIX{nt93QHz`uhr#=-wH$ifqT|(^PofNy4AUnm`>jYSsPPh~s`vPd3L2XgYbL+qOIoxpcZ^W|V>^o7Uefx{#moAc@Q6#^LuNPPT z(na#~7s;=I@1-nMKSYb<7b}uqyhwhjBKf6?PYdB5)9g)c0Pl&#zzNg-0_yNOLwv$;Ey-U59 zZ&0w}Nd?m{^LM7#>2QM$GnwCK6x4VvyYTlz6^wT%=pVM@Y5ayu)OX`@1!D~348?8g zd&LF?%Nc6=ihDTxJ_W<~E9g%u=zWC0Z&Wb$pn|C<6^y>m;f{PsbGS&U@P@Z?<7qkE zpz(pCD}PhLinM}h&JSn#Noe~zS=o~_{0a_Fvc2hWZ?w4nQUlMY5?#LWK(t7H;Uf8I zIm?e!awcw6_b4VArWi(Nsqe;@71Vedif^m$>F+35QLAA5hj#pipQv}Ek-yJZ(7Qmv z*e?`}GfXl}GmIX}c)wII*`=U&rGhO-DcEqGg2pNZlV>UDH5Alx{~K(-c_VT0cPs0|r!$SSz29A&D@|Bl(k^I6%@)Jkd%d>NyPwT@dmLDfP#_JRG zykNu6)IFwthTb{qJ^Wt^YCH{7{Jmj6d${3v*ZBX2YTd#A>w3`kmS%g4^8BMNPdYrs z;bCoOjG)6S_R5ThDQK7qmE|vdjI#UqSJgV1hCLPh#YbwwR6~uI-b01Q7*Dfu^40U3 z&iPW!PeYC8Hec#z`8A%7ubj`NPO}`TZ}2*wZz|~BOTqBB6pVjc!NhkI)az3GXDfeV z`S;cL*g5Q9^s0C7TJ>JxQ}1T{{3FWpEnl0v{_`8^d&5PFkDps($-%_(nv;GRz$K~J7*iXLtxZzlP{pseP@D|B0RwO@vk^E9c@{1P9 z&wHFby>9JAyhwg#zMQ~z#OthE{!`s+-S8C!E56F_6$-X|O+jrh(LL0=|LY1Gdn#D| zO$A$aS1_@cg3<3V{H}rxKTxpTt6-X8%BS9wm5f)Vpr}!>e71tIA1WCCk%C48fB!!U zhJUPJ>L>g@PeJb-1*3mZ(AZDGxL?8K&lU79R4^4*Fu^d*-^-iT_ljRB*wD@R484qB z&QR-39Io(M`V{mIC}=EGP%LNoTLsg)QSV8H>0{M<%kc^}oTy-$Vf+-vZ&a{?^*O=*t~A?IlI_vwq|8seW(Z`Yx{RitSB@dpSJe2-o-5m!}o~3WnNT z-PWmVzES3@@imMUSQo1C;ylkRYIc&JVhp{t>RsdMa-rjmyTq%*E557hf4z=g^U>jc z4%hSI&hTgf`nXGY_|)S1PbsFSc=Po?O}TjgiLQsrFHrhPGt~Vj|JCZdv;S0)P~TIx zDX9BT$vf41_+|y2{U`6R`d+C2l(>@drn&zVyIAqv*8Y>YNbzy&KUHi{;VFh%&;MKd zPvvY+QMR9!3sw4c`PlAzs{H7FmbOC;^?oQ*Pdb31b3EtVhvgj4#b;*5W5lAxWj~9K zM(=klHh$-ROC7)Fr_XOKmY>`Cv6^49z`h2JXPjZLFWknLQO*yd%U55di{uwCl3&A6 zaq^{#dD$)!H4#@(himA)R((%i zV-Jtulm~621a)|eC7kNlB=ad9 zR}(CnM&l-Plv1zOHk@;T*=@plcioEmC*z2_-Co16F9@m zD^#Owl3QmWn(ce=Rew3bZm;LE}$G#D_{;J;+Pd@$V_+v%l zYq=8z<`)_+Q0;v5|L{Grj(J*xzb6=`G~SODeg(q@hAj-E3=M_}hAD>PCrr<?~a;A^!aQ@!F z-~Ieuu!Uiip}{b$^Ml`048>f|Q z?D-&CpMKV-+y4FwdB2Qv|9+>Akl{7;$}auY_JI9=l(AQP$Upb(xBDo$!iy94L8^i5>sql7XxCg^3 zh7An67@o=S`@d3ja~a;m@M(r`F6zB@xN!#NCt43B2GhT)|Q zZ(w*YLr;t1SHbWn43A>ChT)YAYg!fl9EL|SJeA>}+EjQ;yMkvkyq)3p9qRichTRNL zV|X6JYZ>kwRQS_XYEoUwuaIUay4labu!7-q#rJPMlheTGcAwSq!+Fhf!xb%G+oz?! zF+8i~B+tB-KY1D#&RaNd(cDFI51hNGk)GCn3+Gz?&1tEavv5whJY4?kIpOVFX3aUI z5ii^0UwO+H=PsP{|M8<@&LI#(#{Shgi}cU0K*W~J$a z<}W4d=kQreX^DLnVhC?<#!+qwa{CR96#i!>MBDtFmVM|aYe&hVQl|v7#zsOBgYc|O zB3gFBheh}wX|>{J|DM${pAxA$}e+XwpQx3~Lzfk0PVq_4Fv80b@&(d})x-ThsGa6fQKw)!4O8f@)q z>t7rQL3>K1Tv9_!TfB8`tsQ~()<~aC_bu{8IY34>|eo)udr zff z2p1t9dX9LEkuqa+hB01ZjLYZ9PR8i2iLzP7*o>=;Vb4uB8WW|2Hnu%pKb_bf0cBSi z69^oenJAe>K|^4&gE79tRmP}CQ5qAUr7%P=Ou>m#k`Tc&uQJ9#Jvig4oN0x{4|L^9 z?9k&nvBvOsNR^0ha0g@b)5hp_#?WrY*jFJ91WS}GM|!SFlni;UPn7JHn6a-hzMU~4 zQ#(8Z-}gnb5;ONTMn8K!{lfeB4vDgTjgc9~#E!=B_K8nRjFP<&dcCpy`fH5APhWrI z^(<|ciALjp)q=IK6&*xKIqVhRE!HI&cC`9YYsGdj^wQ~%RmIiOiSN#j-K|~O-RS;Q z@QP^s2Cbdg=YcaXxVW{yvu|O4ckpMZGdqJKYHa0I<1*!_Y+KvW7%V+3u%y4Ww?jn7 zK1-Uy_YPE}VW_xcMP~BLcMUr75JJ{4f?1Ms7-H6(&4gBWzhB}r6=lgx$ zW-7J^wRZLg{R2(D`enVXVTg>zryF%=e>*DiCbTlDs?N#6@AF9>^Si=5y?yRXWcGqX zJz+0GT_5q)(oY%p!75tRrGcvbTfyV}siPc{15X4x#e(I2{?y1#F6ov)@h818Isrw+sb%(8=;9&W-ay<{5*hy;84 zGA-tU=Bj`%tLewL?6$wk+4!SjZE9NN4J-;Y&kHm+2AX_z9Di4^yD!ky+ItubR%UMz z=IL#XtmtkJEa~YEHo@-t2Lel5yE{6Afk@FTsuu?P`g^-|K|qIULDhoR?n>|8{oU=< z%IT2#=wHoWP&rUnBP|rkC_0YZrKre6R@QZdBH`A)_NC|us`MhAs2XI!MY6qkRo{zF zb=894vS~?ac441FmSi*eBr+vCmdRyH7X7qjOcvKEW)0b_&wD`IZ-VW8RC)R;55|~5 z+b-obEZ0|S{U{B(*&8qoxtgk9pRcJK&0%6ICkBKj$=_TZXq&oD!C@PyL(8W@1vcTUBj`&9Lb6MZ0R-6leN~oj zcCeSqW;FSlb*O+I9--79fDSxObwsLKJ35*=Fk~>ERO9w6gpSaFM6lMv7W%FpNpC5- z*1-NwNy}?6Kjx8IRveN3Hi?&JSvB621_IH+3(fHpjcSSQssjCtH) zU2%Ji=r3vhGF@UMW*Vt47zU=6OEDX0q`gL}{5oUee`HIM;bR|3_`Gw#bBP>jU@U>D z@yBh=mpdJ1$wJ*B8l6kJ#88oRmUK{j!)hAKJ)ZqT%R}7(8b!%?Qr|3)9)Bx!ZsA#o zNc_>w#mVKH7sPZq+Gw4i;qCHAQ!<#wg&@>bLyg%5xLJ_EP z=bH4YIemeJJw1JvIL3JL-7OB2#1hM0#VMdlPqt)qJ>HaG1y%b6SID76U}1k}P^M{c zQ<1SX!+AzCnE^FB2unz}6o^e#m4To4_w)rjWNe0-h<4W?lQd)ErmIycePwY1RyX&D zY4S8;(f;6n=9jPrwnsB)I&CV#=ZcH4MpFeW(x!egkP zt-UJ(jv8pF-aDX#_422(}pyt=8ieW~O-QjwQ24->$7AuLqEY@ahJ-4T) zGuW!SS3~pivPT`&-G`<}iZb@){J7LuW1>jm-dvn42egR=e z(YXl?1XZf?n@0V<7(rz!h@mg!&AocFe=B(pK2@AV&9pwp)bn^&BY%+WjD>z1?8xPB z@L5M6h!;j2KbEU>Eaj*$#!q+l8VWG1$?mui*Rl0FImYU!#*Vc`mbQXaSR! zjK&>pV=gh+t4t0yh@WZ6u$;tJN#vrf&uEVlRN1&R*nZf8AOz60<_X28#Lld?5kquN z#>nR;D@rX?3x~W^!l+}g?M%o3iC(`j*wr%-4ESk9!qT2jtX@&I-;iFi##0ixs1Y05 zAr;%$gT(2-T7Q-L zw2_*LIT5+KZ2YUn;7^Q+-`i+wQTxKH59X;%jW+(ay*%q>9O&>}si(S)v3^=XH@v@% z-R!2WP#-M{1uA2Hj5(TxHl#X#Z%~VzeksH75LziVRA$FDn=RD2tIXsjb~lozfpMvk zEVV1EzDchQgx8qXDXCr`>ekz|@{H(Kd-^OizWHhi3VAJ%h>4R-qM=t^i7J^$Cn|M{ zNtH;uQ_+f}{X>y1T3A5}`?EyVf6Z0K zjE!qG#!fb+9Noi6ufZD0Uth=T1bJG@BB4Hif(`JT`zu_8h4fGO0)uHE^^738EeWtQ$RXE z3zrUR?cHx#2jwdS9?E3QuzSYL=1THsA(R{~a59rQsXS>tG}zlSFEkL6v!bluAxm1_ z&AjeFtjfa#X0XF-$RKetW9`YU9wYXBTT!%RYdxn|XAh@1mNN5p#5Kj0UM619-`Q!6 zJ&{Rt+EwyO-<;0y($+>Svg!_YMi%t+H64!SlMsF|Bm9_aPF2rUi=2&2-i+>Uj9lX} zlDnX)l9#0h!m(A(3~Md){$QKpV{px0^Ev~3^|?g?SMhx*|ilOlSfog%XY8F&*c$HyKl z*48q+t#Zn>$SKDfrx8zb#YI9S#uQw3Hv_5+LH2$yY2p-;#U$Xa7 zEf*Tv)qs^Q=&564QFUN`bFKW1k@j4>CMvN{!m4E~VDIWe?fkPgpX}zxzG}zUitE9q zB}A9Cl$na%_`BLluVLaGn;kajdc}g0W2-}RPS@)AeO$23V22;i=`kI7LW`uLbER{5 zOh-%`DnMr$8^XHOQI0-~=X97y0fk5`zQ_@W z=hTffpXbz#rYO&;E3v5&i?oAp6le80CL+<}*dc!rt7%pW&FwjLlQY*0CAngBH!FXf zxjm;tT<5yRS(L}rjk+-hpC&e#X3w~=!4qHm=2y@l=*6h>0n1*ad?J#x2RMQc%yU*F79j0y+?haEo3N<+-8+LY>x?#FIOkF7QIZWM1@;FT0NOCw# z-B5ElOx;jb6)QW6PKT)rNlu5U8*VO#sT*!Shp8J)E{CZLuH9j(wvryY$Q9Y@Fda1q ze|ZZ@eut@BOuAW>dEj)Ix)3=WrbD~rmCNBM9eKN`O3yMQC5sI^Ox+|hyR|YMPKT)* zRc1DY;xHYiCVByHq~eKNWD42cT4VwX`9>dg>D1&; ztkW-={I$b;@{?ydLq{B|M2bwDZAMTk`;^?u&Ugn3c|l`q9HYuCQX27Etp@MzZcv?& zVz}gVgXUvU$PJp0)}lH}P+>P{@yv3$K_@|-!wu?2U7Q;UYM}(@a4zZvDDG*_=~#5l)||e?A-xRLHRU<|h-3G= zVq5rfa zWY(aevvYE8LGw8A#{2B-EU3zTnBb9 z!(k7Bg~14xjfl7XqkuD4_4q}fQHg)7yh~kuR<5ahQ z>tR7Uz^2LH1 z9_lG+Ci1eW)yg%~AWb-0o+)tINto^L?dj|3!wNt<)nGoVY;9`O%D7i(2QVFlrp^Gf ztnacU5X%wB?B)c>2Lg=|F7$ZYeGpDz= zbw##rq-_po@c4v-Y{U){I&MK!1qf&SIc#34CsTYf9dFQ&WYgEfOb=Mrjhx1*CVeZ& z$|9CrfbJXxFpUphwv|*lVN2=0gK{vM~%cgA9%D8t$Bdy}kRihgkPV z$SqTI-i37Pwwh`~dNcK)y|GN^BCaV&Hj#_0URu9gv7RT!=;zG>mTAngZN|pIz30Kq zs=KiU*H=j$Io+h9@Syi>_H!5DKtfXq-asvDkc^>Q4-z-Y>?Gdsq-+~ zX=5tNfULZ1B2>{zcBxJ4%!1zf{T%DB%8L9 z_d2VHZFM=NCXr21H6OiOxy4qNB3Z?bW}(5RrCL>jlUd<);G$0Wl?=vmA+Y&Ngj6=d zq8>)bmmTA|=y-)gKDu-+I;CgVra-puS#Te>INm=;KcGG256NbK$U$IqKq1 z%Ly7=v6F!t>f|o=D1Qiz;^-G_nND+t19D5eycNQ>a-G8ZsE3GS&oWng zs2XN)Dr~Gv(-oVTgH65}#(d%o+4_a>%A#p~+B7Gb^y9C=Jf>d2MR%$aD$spKo$)KL3vZO>Flsv~Bdvg_2 zud|%0o~&yOmH7^on?wvrw;1N}yx^FLpe}U@1iH~{3WR%c^NXrTQVtC3&WhaoCGylt z1kkCOV=D=@3=1N)5}s7^IcUjX9vlYs`gq;tYOTl#T=Xtmg;!_ zCSA+LrkSTq`_ObS#Sw&b6hW7)z+?IN>qMpUA+>j^24~!kl=J$o>Oi0urw^j?l9zfZ!gOImT~|-oP-}7R z3(g6gkES$$-#A(+GQX><33I?rO#`@P16H$0W^nY2*1Ct=Vr5ufi7@DbAUngcT!C6O zL$*M(DXv0W62ZabxFV}9)E7Xe$vb2)*WC*Z$Uclpypfx}nhyAEQd3gHxlwA`$zjtZ zC*0z>QMB4dY{9t5Am=8(>_$t@LD_5SMFG0L#D~d#|9;qhh%!{K%8(g_d8ZZ>EcG{P z2EqTzH-_o3WG2kKSWByRELRve+9?%=&P^RIDv?8ofXP6{I<7J5G2z#R;|KeKDmQ15 zFB4aW$Xi`{`?{&iJfuFh{T8Ph(7Q2<3`X9R1m6damBm?rCVN5{Rs?jF62g{;q?00^ zp`wJ6Cnh9kNJcCH!6i6T6%5;#5}!mS1V_hr25|AwaypD9DCtHsp=g~mRLRWu#l1m? zXk(c`^anFy2e8wWqD)!B=?bMlYy08-I5msH#+_kYS}81@31bVUuM?TC(yHlObT_HJ zjup6(3jI#HIF3FK?j|+g)fzbr7wgIRV(JqdiF~Qk;?__n;SQ;QKHNaGEGWe`^cNfs zs=f@n5m~YZ-6Y{k$2qjSHsC->UvjOy)q*s_k`!dOPj9%5S z1T%%QY^3N@m#M>X`5NqMUn&Jo>(?$^vxS`3ui+K+8vPHV4Pu+|fQ)UB-%$%vaO^)Y z=|S_K0i+nG;Gq^=f(1z`Cx-}^5|0eoWB!5z<~7w;6OlpR!#&IB_b~k?l{j$X{N2oW z`A&z15>&Xue82kI^e`7VDNqJM?8J$-K{qngFQ<+t&!RB=x~xO=FAe4>)`@ z(AL}2+Mx^Hh&7}`&8kY}SikGoMy(&0;T}uEO!7w@+(P%W!EAb@4UF;kE*zG+9Gwz5 zVM_!lTY%<0Zu<(`lSZ7jeeLho-zWGx_QUt1ztGc5*z(U45HrM#z@eg=rao|9L_i#~ za|BhoxO`^}&Vse**Zs-xbcWjKV?ZSDEE7BU#L=ad;;b2U@DkA$lZe04D}#BSJg`jN zy5{#)HWL-Qki@;)k<*n{y>#{!N75!9+^!amE;RNSC07-DpVrpx7l_2C7Kux`_c=%; z*UtP`UV3!?Wi!R6s>CH_)na6(Pi)+-QrxnAt$1OF8m)9VgXnCa$td93Pu2Yfw*v;m z;KtI~@)u2&1<+xn;}iXL|Ajz05g{bTH$6j@q+hX{}0%3VPbtVbo&W)v_M44ZIqz@R2`NB2-ezsc(`JNL! z2b(4BRWoH=IG~=Y&um>`l1V%=2H|3}geZmg6UWN-9Uw0-jmYcVenyApQ=&4?CM++? zT{PO-#NFF1_+sY%=z|X$M-fI~j^+c7TMxMtt#B#K#FBCV|Pu z{THSF#Ub$;X*$(GN?wXba;XqAvah}r@lWq3Zrmwz#fvz5SE{+DeyiFkyU7g_;;33t zl6B9U82hx%%mazPDa0X?&uR6b}TJRA1+GElD~t^ZOdJIiO=M@ z?(c}5b6>D`(s?rxKSe#M#9sE1T_zG|K!OsiF_0CWNbaQUB3AL%PHHc7u$Mo4P!7TxEW4z6 z*`9U`^l220iz@>IbXRMWtrma_T{$zc((a{lUoGlJld83M39XlsH;mURH^Y2CHl5jK zr<*I)u{!DUG7&$EL{HJPEN#dHh@(H}6CZz0luSjS_dbVfLeWyO{J7Lo)sQj?K6^W3 zNeE5MzWwagi}QA-T1pJ>3^W9l3F8`i#_<#-0ddpLm63LI&(@BXiO+Vmiko&> zES~;?9B9y(p{I9+IQ#apcCqgEGNq1y_~`bs9@$I<#OtGF9pbqSWh%wuoX5+8;{Hu# zGV254#m!~i(vchx7o^JC)XCieao#g!ofu#Q#K^N{%hVCt0WtP`nJ767-Nk!$2?xae z&y|VKwD*X_7gS6UaouRyVsR6qLz*yQBUYM`el(_8i=(z6LUG&{7FArhrR;DewYYSP zj8t5?rL3zpEJn7JsX^o&TeJ*f!xo4j7iQ=Vr+EAexMx=wTgp&INMWTkrWfyhAtcVY zvy8h10deve2pxS@amKE!zKPpGog(U)v&93u)`+3qa$hJc?)XZzxO`7Ka6&x$ty;0+ z2cm@C(_+i6d!u(ixv^z;QPwD)_@Ym|^~Fh7JnzqY*aq)kzekmXY@Wi z%VH0brOO+W#roak(j;-mS4oL?e5u}y*ID)0ifmP;-Xa&e#jVZfeEDq`REu}M_4!WO}zAFQMQn(pP~mk4}E!`N#T!udG4g}H-CA~r0}2rGIIARN?~fVOl^vu z#xqFgBvW?jS0n{N%e!BZri@=hyNi-Z*913z)p2wAndhN95Pc8vm!f*9_=HNv3A<0J zWSoK|I!i@#cW0?MdUxpbh!W^AwvwJH`Ai;Jf>JSQ1wFmHLqTV(gMx6a7?{N;r;2eU22EPmybm_6xawpB8_aZ1dF_jE}1 zp=5RkF{2}x#Lausp~K?s?@^nO+_PS+{Dx1Q`OP}bOK6wiV~`aw!x^kL!yIhuo*HKChZ zCsmn0u@@Spsgb7kLMk318B&k343qD~Z2T7DpFG*7Zz1K6Q{3^*h zsUmy(JGJ77@79U;zME}Y4}RNeT917j34TFF{dY?CC(~Pb{X0`Lt$%z6iW!&Ey-3f* zOPn=y$ogb#^wsYoVB}#Q#Oegzc(e5c>Q}w?K>2A`X7iJ4d#{K_lbMI zKj}v1W_0n%Z<_c%d1UYUK5CMqO3BLc6lJPkecBIl^s7gHVDCf!)uj)8o4pS`Ag=s@ zwGVyA4-n&@D8|Im^o*V?V?PzKb2}q8|3I}eB3?zd|AF@t>KR<_n^J+g+E*uT@XZ$S z%IpGlp3hmJhJDcO>6FI!Dw*Ch=xMB`^r8?k((-EJ|;BjZC#cHr6OMRDVJ_`a$)Sa&%=)ofxdi&dqeSGdJIf=moA#>~YYz2^E&p999ydJo;_h2KUhxb% zusb-9EETu@ko+RnJ151pjn0cCect|V%ZJ>~?Leb$Xu zo6LpVU*e$?lWPW!zGkm&%DMOx`(WBJx@{8c*Lou2!#m4@1Fh}-a@_{)7R4?}v=we^ z4|8&~38Z+RH&NCdT-J%ZD`dK8j}xuqm9vRO%9(@f@I)E;wF67xLJdxzuy;+A;j-y= ztf1%(boBINyKEmWp6?KwCoqpxE$;cDPdwZzO5|#E|K4rL4-Ee0ndF#!l^!AM>4;6@ zh#xJ*eLZME9_vKK_7|Aor<%p!PxVc?^6=)_SR~Wg-+>8PH>F@!0u!LEy>NQNw~XV) zX>XHlvO}r*X+IW^NHxn8G>O%hdoUsQ*5#hgc1-h_hGXWcp3RlJ53uLhrsxov#sbXi z&X@a?o7C!Seb#z*%6+-c>QnTMa&EYJ??5O-aR(}^e%2nrybs-}3x6jS7w)wJN8Go% zL_78Zlpwiu_4Lb1me5?*ky|mlht**yBe(z=m;RWEnYuAOv9(OukS=!9!1L;fvM?5$ z1jz6g2WiJAW}}}cGlFZ@yh&KZf2xjVR!2eC^x~}x=Cb+#cv-~FKdls(boj*ip-GtB zhd)Ir?xf7(1Np=`Ayk4_!uDp6qHR~hiU;QEH6^AqRg#+fv&j3qH|=n;o%ToE(S&yo zgnE1AW!&Tp&07?jn&$>!v)FqlNpTbz){@CnE4AHcjL}}n&9lww?JZ4dL30yr?VBxk zGsE3$)v2`FePFfwNz^8B`>meH(w_d#4%)}s-JuRy&mnK-6yJB(qC+oITg&81F^m~8 z)ftff%_cv5JfAotsL7pj16!6%n|B6CwsxY*rotMj7cms75my~H3Cp^F9ts@oI(i_8%IsRz zo_;uQwpbgf6{+Pl;^{wBi;e$NCD#10PFxX1BYDg5XieWb5v?h@flW2yWq+-hSXd?A zKN#bzU;4zUebwT+WtGag6;Knv7ccjUOW^w|HILO6e{ae*+(&+%bv?4U{0NUIIRGo& zXaFoeZdwprA}>f6PwXv9eU;rPh7q-@K<@u{+N;myZ0$$(#*!IqiX0GE9OJG_WhH1`UoX`r5D`bcTRK;+Z93>@KNlyQg$hvJ9Uc+sYiEcO zTqB}t+->fVU`=mrKwP&US|sVU%cyM1%~D9L9xX#PKz6WQv$$=6KN9Tk=rQlt&h9~? z(stDEP2$a8b_C(frPa7t;fAF_y1JdRT-mnr;!!2-;-2G6y0A$*(4J{X^uinMQK44D zY*@sfFDqdmB>G4JT17k!N)sdJsE#2#r_a;tVg+mP80GOHfar;A`#2L4j>AOC~Nv}aB zK3*GG=pA(gJ6l(vuhAyX@i#9D(7G>QReuHY8$&%+N>s$N~;${d@g7Fbn z5s4dn@zc)masO=Ue_{IzR_5z7y-^FIp^AePgZEqLX>1@i&EjppUknG}?Y3z~tpB-g zsa1zZe0Y#usp6sEiPAds!Mh`Y;Ng&#TEqK)-bur7v38;SB$5Y1-g`)C>iZE3ec~n# zd;B0>quy<)QSZZYjuK+EnrzT=((AhiVQBb(lo_GdIYM7UM6rh{w3=)bom8wFfDRU; z{(ohm+?a?_NT)sEjfH3zuu=^&Vl5rU@y@~E-ObLypt$JQS)<7NTMq1Q?OkEHnqJ&- zx<_E)V04j6_Kk~_Iv!tCtG0GRs#8Kb`43x?|2QQ-I|)}Ta!JB9i;%02%Oq^lx_Nk! zU2_jZbIHv*bgLuuK7_`fqvU(V`3Kb_LnHlYm?Jv-dlsV}viBIpS#4Faac#s+>mATE zl5=NgWmm9wNwB%6zZWB8bKqD7hf>}bairfA=S!6x4%oY-4ZKs-fRv$*^hx(=3? z{)jV=_vkUGxab6r?Rp>a;VM{*&M4`J8U2MSrQ*Hca#F%m}=7 z5Nwb-apWN++U18}4UVoNo5XpC*aj407}a6=9g;cuEd9 zd>&JVtjO+H#}3WaDy}*d@%$ORco9DxbTj4gW0S1FpZ@QNFs}8WV!*AIX2OtQXTQ=q zB_P(u2lV9!oc|Q9OQenOu+yS+Q7O4swqoX=0EDGOeRbG0)*KMH3hP%Iw{v zIqeA1EPy!vG&tIoRXy-4Rki)&SGp*?e2T@gPT|`8^eDT{IZ3-PeFsbvHxbiVLJP1)j(oF) zJud)ZZ-c5MfA@Dgb>`3gM~=u<*`UWU&d zo(MMv5j26v2feKwzrkwMKt|5^z}e>h zEm$v}462=)IB&EYI}v;2w8QveRpPb7AnBz<9lMR5#_ixyQdIZim?h}E_H^Q^_)I@8 z)1%0YHnZyQT=Pr0dJyP5VzLwox6QrOVz4?#_AuJSWteUu#fY&b(_?EVU}i8!`$qG& z+h`a^ho;|#j|?O8MrGFDC!f#DEZjoR^w3NgL%lfuH(8y)dpfghZG)qy>8Gq4XMVaWa zP*7~mOtR~>P)A80c6MS$kka7D4YBF4#i3qVES^P?h;1gK^t1GgZ6Q)hZ>I1lEo2-O zoEZ3UycnKfT0kxt5!cgx&hDV41AYtY$mBS&O}xLGG+C%c_;ETH;`n$v{_8vXs?^6P@Ic|32_&gXSK?IRL$W6Ms+eMhQ zsEy(u%2+?9XZnckV1`S(#qHhA3&hArWd{i(HDmq)vF;hn7x~1a-E{$V53Bg_ZtO;? zs^wQl232ljE%{-OuaY@u?x-rBsr6K@o=@EX;#hhnkEdtq6naL_mR~NQXZ#{c8qIth7F>ZH zPuTgLnfy30QfyOb%a2o$AIV|jp1xSdbQR*5!MC=FXY|2mV)zeyE1P&P=4tE^SDxab zbNmNg3Q+ig!+kMilDX#c)E}72l*D@V> zY^Fzl?6Ht3aSiD~Eus|n_BV>F@A5P)7nj6J4iFI5iT?SRx4^2Rc9hGqr{FJpvKswW-nBkgs|bq@U5k^`s9 z9H1Co$eu9C&a#l5OJuRzK(-xcoblUz;qnf4(2;V^W=Fo;?}vW&kMNw+aRkZZJnFhd zar?=hx&3W0VR7CWJlgctD4#ss@;oZe- z22#BFTdk;jEGd5QSSa6_5b^il62+^(Mc&;`IT*V`=Hr8ugX$h*apLcI&NKddjx3AI zy}z4{qm}3^3z+c}D?K{?e^}x_;y7qLz8Q>XWEJ@Hf1f+c*ZPUt z7=MAD#@`XIi}^invN-0rOuca;DI@(N$hO0B0yzEF{*SzNRQ%~gkGwZkToLmqzv3e? zk19PUt@13Qbv9ybm51hCBI5oxQKjUTJo!Ib@>4C*uBK>>mq=PUKlbwfED+;=Y-+{% zB`6OJ&WxWyvxoif)c3hW?~_4V)(@MKE=>P0f_ZHnIKVtpSS;c+#; zqcWELm?g%ih->OyY1!{lyzCmO&#bc&m#y@0yDrvZmK{4T<#`6UQh-WhfH!}O`&W7f z#3L)gFY&(A_{a2&%V!GD9F6d)N1AFldnl9n>xRH27Tq3;(#V8-)mXHF6B}BoNOc64 z<9x9{9qnm^znun@;^HCCwD|7eq?DD8ea({3i?$UDZBWW17|!T*6`77FKGGn>^xer3 ziDUVPT8m+w>r_P5O|%?Ee7x2}I|{+vWnfz5dNLB<)~t(bk1U}m#6ONI*_-xLj+|RU z^ZerKt)+04HHybxE<3OfXWG0(^O6bDI2E_q$b9ms$<;0nju#(83#LqG!}K`4>k2u& zo9hDN@zo_L#w)jnQ6)~GXY@pR#^p14lKk>#87iM?`HaWtOG-ZDCsX=#J#mz!+jpGo z_8}PTP9dbsOtH9p&?6h+KyzPzn|K=&j3$e_EiCSnEIR@eC*?DC2K`RR zXLLwn%4b?Wjn$G$K4WLf(6i(h`HY?|zo_S0`CUGZbLn?dK4a_XcS1g+=SzI~Ov|Tn z0ey*GByr?3Jxsrii|LtKFGDYpUoNF*Qa+8#NY4^d>`p>T++{^N!s0PH z<`f{M5e&iawjy0d~DrX^R0KKfHLl$KQz#?9!f2__Q-) zzK5*__^~CrKb=MiLqw45eydF9pO%qnJs~9#jOPPZq`z5^9w4M>l8_P)T9IC}AiYIM zX#^v64_T2;Jv|fM>eERk1S7gftVkmkq?-vT`lyT!&x|skvLHQ2NNI@_f6R)sa#bd} z!BrF;f}w&jE7C<4q{|2?iC_r+gca#t3(`Z96N16-Nh{J;3(~uU6x&2dNjx)xud;ab z*N{g)`V=80@XR3HXhFJ_kkS&#cv|w4&veR4@QQ`t4I(g}A=EUU8LlT=dY@-d@6&je zkW%s)drtDkQ_QRr&kuQg;)c~&!8v@U$K3Vm7jK>A;hoP-esSpIc0iCmOS zC0`18@0lLVX9Q%cC_fy9V@*hEJC})^ygwq|Y02BzOuVz`a8!y+x1HOyXMrvW3TWWz zoOI(k>0TqcI4F><3q%)q$Nf$diSA46^ru2aV z>3f#w?2Evpo;RHBu`eEzU*E`?v+v}LAP4(Ajc3`uk#WFcBxpZB7bou)Jvt<>+idA|^JA%gNUXxb&6$nj-SbeRJ#!(t zg6UxoPG6?tD?Yr~LrV?2sJAD-SZ-z(@2>Y$;UEEMBGjQ!u)I=t_Sl8&Byv;=$6bc1 zf;N#Jv(7`iNKae`oy9LCHAXLj=4J-v;%%|zd{3{q;_fne=&3pEoU#(g=Sdp}ahf1T z^iAT#(Xw!B-%_RPKs61Ho5WL_%MKJry;XL2e-Ez;-L`RgyLgC}$l5i)gZ)g_+Fj$e zDRy2QPCoSPl;@nGM^>w~5l>#|nf7S~DABqE-7a{w>Dm=s=* zk#u3TsF#LeepkS(7V}YjbR3m3MJw8omw0G?l{S1~ZrW*LV(3zj55bH1jH9gZ*kzu2 zZMNdP%V6Pb!#D&itc1&=`Nw6R+2Dy&V$~2+9y*(ab>iio8en0Hs<)@7FE`Gqms3q~ z3Di;Q3yE7U_EhTV#j%%oaP*EUPg?ro%F!w+N7##ibKE1mc0&QDh_D^;?!_LCM4W#q zgfZ?TVR&zkShwEe^JWHZP2%G9p33=)o5Y9ffg625R&jVDKDlKmAoJ82kJ!5215LQA z;TTdwG$~8^qx4M3XYw)P+%B%X#A9kenoCv$YbeQd7a3N5hwqxbe@6xCK@pLknF_#r)`N9;t=9!1aSpXiyw6Ll7L=8a$O$>UKfvh@+K zQ5sXH6YIno#G3YzqOq2{7)9y|SSIRZ99Ryo!!&Gmz>ML-5S=AIN)C*W_}~gphgcbx zDGAg_he(qcj6tpRF2$DHZ| zN0#tpx_IF(={3RRzj*4^Qh#SZPIr%p3)hwLF@@9L0-lN^>M#L<(j=#QRTCHz&uzwD z(&=gd{p~pE^;&Xo4$*6t=@qh^d%@($6e#G?_Y^sgEYkM`8<`7 z2ayu&vs4KQOEWOj@sDdfxL&7oMW9{zxtC(IH+d(>upB$CO?9ChXWQKdmgKZ+9g>`R zEhLFPM3ThEND?@q&GR9tbn4wp%0G?Gs#O7T_H`aLR6(JpQk+j$#a0^kZ!N=7c#lJb z?W%E7J2p^>e|u?xRsh!qd(inZ;5h+ybu* zL%r24)PdsK8)1ZFH=>K7X8b9`sVS*d$#nP6ROMPEk-aWRU2bvdO&)dLrjnu~Kqp;B zn%cU=O}D}_bmM2HYj5t&h`X<+Q6I7b9oMWxKYTs1EWU}dEWMeYsb`?IQtDx+ua`aS zcdqw%@%8~BCZ8viYoPL9+1`Q1Eff^7SVHuM4(iNV zh&F~N(LQLQO={Y4Mf;kfeT!)0k}4seNl7bD6ajE&JV`aV6AAJa2_+%9+;C&=e& zdL}QXXX3BBpiRpZhPM6?PTa>FzP2=|9m>e-z|5*xGCc}RJv511Z$TaY?5(I@pSayq zE1o<9%K<-lyR=H2|MZMHY!pAd9|LJrSaRS+z8SiP4jYjpI8pcM8TE3_X+KTE=R`?A zJ);`;`eLMh|wmm+1 zWXVExwRmMQ@N=a+t)n+dB?URc(%G6qn!Skvn{`SQu_dvuM$# zpJ_TG0vp4vr4*CFSr$`ZN+Hi-5tuF@ZjOc2wA{gRSOiX~5XW9dPWX37v+(?(mpXcv zhZYw_#3;_}+OARDb~noZJ9nG&NUKNDrv81@Q`Zq}lMB~mzH+~W48}UVKl2_>y~L6` z>z$zw-Q$_9yQ&nX$E|&9l?u+;yCMZVoEi|Pj(RM@ ziH|k_F-a&hYQ#O1fcOSaz3F6b5)&Idvw2NwleqUDPc^F73Ez08MODIct=J?$Q-`+35MZ6S>GdxT-z zgxMtSy2sq2$+5;s!suCF1chPHGxb+`#%_{d@Py1ZAhOI?(QEg4YOrw#BaB>|%+Gts zQ-_X_TBO@1h9C0O({Unlo(sJ(oRf^!6^A90mHXtC3V{REB4@q$>RCkM7B+q#(vW;g z%J(#6`jnT}Y`4iP&B6Wj2T)?qeE`{cUJ~&oKjf*_7l(+A4|{xU?lfK3)GjtY;;G{=w2rGAd+yQVgYNA|J@p(A z!D=_0RsPaO5;;X8r|}det>T^sJUT8nsbUX7MHnTB7a#D*`$uWhe+bLM(VH6(|9BLk zJfzd>$krr1bWM~S!&MKFRXsxj*t?g@2AH;?EHU%{NikUQTdK!?^Ld zhjc7`J%`a~eVd1(RM;(<`ud}!bjS|dmCv+%MxU3KBcE~kjBb(XlcT+95JMy%_AJBX zCDyBNdz!?iN05rdI7z5B0&t0|R3&DvGJA2yBcAD7Exkd;`4Z_V`Lfj3tMp9BXY4h| zGNXnqqzhL!(uSfHnbWTZ#EXw&Ov@H@#70jw|5mpM;0y)xpsWFL{zkJ{nZZhT17d8W zr;17CE+RYS^Hipc*QJp1nMljuZ;+}oVrgdQY^3wi))P_UO+rlJN$WmZaS; zKs>b3gKbf^Pn(G*{ua>~Z__jV4n3n2GEY!WX#8q7y>lKzhXM6XR>1j>fmix{8UF{M zFRL{h?UTmfgFp6hRIblF<*C9}^L*A*lWT-tleLXOta{#4R+c(yH`LrZCO_TkdgSAX zY~>T4Mse&WPqlb;6QX^1vnRBCIwC!fB281Iv|Cd=`#5c!S6Asx2m5nz{5+=YTRVD| zp&I<)anF*@o;IvI9T4|zM#RxSA!6D%&nRu;$W0zZ|(A>v#==Y81k-;RLc=RbLu6Xh(NRdEn zkVVExUNfA!86u4hh`Tp?eA2}D%QWQieX`)l7^8!fN}qUoGv)&>BID~6BTp+6n7#-f zrbLqk1Qyd0Po(Oslt;0L6MtYj^m-hn$v|q5iW?2j6_Rub@ZkIyxppPkp^nDGkfae?Axh+BVsbi(amR5-N1m*4)2_`8z~?DZZWO6a z9Ff3BXS|drYd-17FL{Z&bk|VUL~kJLhIwEB*C_t>lBanEMsmv=#jS5j)0I6tb1h?m zDJk1w9(*ei6_=-9Mq;Oh)0US>a>$Iq`K^$=Y<{=6<`oYw$@&?M4mp4S_O@qUe;5-m zI5>fh^;Z`1;Jcnfas1xA5G{7VXjOgv;A5l}(~zMK?EKnqS%*D zeXdcw_hH@w{RwBB>SpU*+2Y;T{&_a!5aq+ykS_*u1Vw%WS(JOF_X+C=M`+?d5|3B& zigUOA^VF0r%|%;DQ}@VfapS*$ro=UG{WqRa$B=;*Mcl6Ew%iWuQN0nvip{FA5Rb`fYy+6Qy&+pm(!S?dAjhM0hY-f>C zF1o5Rvx}^1cl)iSr6B-SYM>=hX7*3P3_?HvLd+0MLK2b)4G0iZ00M+0qyR|>ApyZW zLoiPQ-uLZuZw!*i%IeH+Tkn@IZrr=iKKo4jO#AFZx!I9m=mPVU)F~LVy!weXz>$H- zc(wbD)tmg?#E47L-^H4A$D1FJ2|qaYsyE0jFY*ca>W7tboGhxX@5f4(>g4}{eF(qFYl3-?Cx1O!^HvtVFrXX0x; z4s59m7M-g1a2K>tc&yMozB|(SGr;S+Nfyr_&m!{lZu&kvd;d7kE9B_|H>9;p^ZX+N z^1;+1Gd#}12D=|HY8V+Q92pd2qjMG#`S-}*KZ`lEgQ@XV5rb9#_$M5<#rTv{oh0(s z@N?h*(SHyLcSbEXYzYU>zrLrT2Bs+~1F}S2o$ZKvQd5s^!?iKC#XrN!RIXaK!Gy4l zBGXx7C`1fjg=FSsX8|YD`qq1I>y=#1+k#zo9D2PV-(Mm$tU-nM#D)AHW9G# zj3Bbb9eHzR4$J!`nS0+d*);!pNHT1)&2iBD>y41$BP0^^yko^k#FCkPUj?Yv%yYmV z9s6eX;n?`Cbcpc*8`$r?A~3+BD6UPrTre0tvIwaOKs<;_AwR|~3iFUltLHn0tF!YR zBhO>OG0qv(!zB)7TAR7c=R3p$3aaV?hgE4`FTiGX z%Jj)D<;mCA?ZWDe5r-LN!m#K8XO{}jMD73eiY%Iq|F7mE^5oR6OFa`& zE|6d7q2McGpa56zVi)~?2alg)J37w8wo9GLM-`tcH;1AdSWI^DH>SAMJTHU@m5@Py z58WR<;d)ATrap*5BOjRKeDSL(naa1tpkDf? zEM)tp?eR1!)aR37a=s{de4z9`N|wM)H0D{$B%yj^6uU2>^Qird?{e*P)#KP9Uo8 z#S!*4&qZDbY*S+#{o{fq7NWNhcUCJOP&sseAyt2g!@hq6b%x3E6$#xMVtAd%V^_7f zL;5b&yyOEX`*Chdvd~8!-YrCbiSR2YhIY%dpeG=2y5)_aFT`i>4PxLH(eq63rMwsP zy`o&yz3PD10fYH8b!j!U%XoEcsUxwU2EDXAPL*F@9#Q3Ym&1dOTXZb&4qTq@uJA?H{KT6y-L+ewx%k?;*3~_Jt}lW)bXPtC_pufRKC5SG6on= zm92nO{uPe?W=OYIpch$HMD`tIA7{#RWd%fu_$YL#Wkn8cjHc8dIe+KqCa+kVZ z6zQjS^J`%FKLca`I-<8qo&|$I%b^6c#!82r>~g72h6xLWXP1Q8OAPi%$l3oK&!PFm zU_Q}TA7>s zc4J_KUuMhsQqC!)nf=L;4R&LYIzhikp%wpv>0Uz&_ymiIo}K>!b$%o?c%}^DbZS%7 z+qI5SU%Qj@kO^qt*16ZZbr`1XU*||1tIxXGxkV>jvMbb2ISo_`DZfpzbJDto!ctk# z2mJ>NRA|t5ahFfTS!Cb{muyNs+UOWDTubzM${%pD=Pz+Dq%GSg_N8T<2tJd56}Iow~l+DbJ*{U znx!#_xPM$6UFk7kzrN8SN3voX8vH{<^$Uw=5Xa|#pHiv28&Sf(+JDJ*5hezU{}s@8 zkQjJH^uPI6D1U80jQ%&qA9jt;>dxX{?`5qCc>XoR&LH|`{%dG++ferjs$E3?zXA*O z-WO-%TD=M3{Rjj7R)~<;YqSSDRzFj`$(~hMFUlDtw1PnbMH1yoMma{U-VFX{w>ZY) zfU-VI8Bs3-XSm<<+=^-~LBH5hf}tPnfKtCs!;~<%1vZcw!;@3K)6VL9#(;yFJe#?p z+yQ>W!S}n&HU2c7Tg#cbTmB6uZ;3R&gb#G6uOCBbwW1g!g|)?war!c^nZHjjK zhuMspMKk}fuci6{+*exR$bJSh3^sM>6$z}u5Q%nq$5`#PB{ULetPTnl~w|MW{ z@Nco`HBL2EK*e9H$E0QXVJtgcH~}rRtqp5W4d=N06~dxd!3~VuZsH!>Kbx#NYk6=O zEekgY{s`sAfzzLOs0$iI0>#@9MVk&j#w^)tg`_W}RW}bfrsQTMYwsVpT{?}?M<$a4 zxT=~*FsFpGKpQbsntu9I>>X@VRo(f>}DCct5c+yA3LwWcA~dlIglRCaNXnjM1uR3O)n3enQD6s}EjAE_T(^1o0FIkw z$Wm?pH5zsQ0EaV&SrDG%D2RaR?q(U;Pv{K;U}L z;B9$yWR8MvBW`r?3A)P9rK@BNk+Fc9cX;q?b%thY79B<@g<7QP^rDph?7z8jaVG97 z&Qo0{^cctT(DNq_#{L%=;T(MBkoGz0+aWqAxHQ|Dt9rILGu4dkPD_If(WJCjI4zYo zL=zCIbLOZeTN9?Jw_6jiGNCp3lG21MRZ*Jox9L;$i>syZ3KG1FmXwgAwzW7i)rLEc zDQfQ{t~d?Rr0?G1%;EyfkQ`WdZgHY;hN$q*igBOaWbH0x=;_~$Z4PuKL$lf(Jjcz&b|*Q`%&fl?YdL`$LioW0}L@2;fy{ZKUX_}Rn%0>jxoR7swKe}@TGcsJ2|{@+18 z;R@v;J3^lka>%OJ5Uotzvz@XqH$=rR^*LoFafpgvwFOfO-pe*L`?IUXPRtZ8vI(ca zdE5|9#oQaRaWX`u-}@Avzjyka+!`FBNw{6iy$}1&yrH%U)m?!`;Ju1Q@KLI2xQ&^z z_mLwvSv9?aYoMvT;CZM{nrq6O*7ejwH3g?+S8bZQRNcX>f2NzIoqDElOa`~dr}}L%<=s^S#BVx2E=%S(AI+h_-Vdcyfw*64oK^Gc>3uSp07L$h|&Jar7&vDTrdm;m}` z{d?}HZ6Nv%|9g~0vTA>d+q&QhzX%#<+H|UDMPl}?Rn+UJ|aaGT;K*rILPGryQL~#VIrm44b@3ZOCKv;7EXf? z%|_Ev$EoBUmV-Mtc}N$Exc#r+Krwdq&;w>-GeD%u-sr?r{W6aOvU2PSerZ0npM+Un{Go%)7KnSH(GfH>U2grP7aHzf|qE@WwuQ%_ZN z$sJ?T0@o8UZt*;10*AD<%Er~Scf`%2L$um$Tg_F}$1IKD%;6}Fp}f_)W1UlOI2xj5 zQMC?b;V&AFvIuQOStMYURxMhO0oaW?eIkL!&~z)R*p@IkCt1&x^_$b%WJsm&ToNU+ zUHSukTuRf-#U)w}oCU{)hp9L|Iz;nnrO%m>{q@jJ!+IaeIvikG2Tl;Ztwc{3+aNZ~ zhG^03fbkwYiVe*XRx6j+JU!C>E=tK4X>UNEoJy$~l|9CN1(V+hY1RIGt?!BpQ-c_DCHLfQU(;PUjmb;3uMPUK9PE z(Nsg5h@oPlXXj`n-F9|~S<+DL-*@eSH`FBcdOJ!ryeBqMs&|hwx`?N9#=jlInIU~x z=Hfo5_Aoa@yN^Xj(M9^tprD*~?NbZ)JN4c?taEfZZQqu_Qf*~%VTE?co>N|U$T^kw zb`8sy)(wJ`zRp#))B*H zW6*KrPRELvT~tG~q+T~TBl~o^ZWdIa6Y*Cvncm&R&`~B<+}{rE5yJW7&djN*iyH~v zlT2Cg6jBC9*;`LIKUL>XIPGf<>KoznCEV&v95D&YQYqNR)Ska+q#ix@r%F0uPzeW} zyo_Uv3s<)BMsL-6!f9R55q;Njf>WYhW0{+~$8yLC2O5t^n5SNxaPkI(%0`fc_Xwa2k>N4k98W;!(8iWYocb!zoazv!|R9H~&`|A`qZxBh=O=NVTFF5}avv z;u?Y$NLt+nA)mCt>(16Q&f()>5(z){mN3`OILCf64bFm7=S=P?PWaX1=Kg;A+k(!C>NaHw9ij9;pPoVkCAFm4X}gDBb;@a9W6;v-{A_w= z3JbMM!ZaX^<>Xq`H6w>&+*`M{I47tLr%)p-->5CkPU{+gnH?;n;|LsevTqUHYj%!T zch2Cu=On*dujjYeVHY#3ubINe_{VN+aYp^usxz%l9HqdW9#a2&9ZuUhf38baGrYG| z>c?qviS?bmjHMj)oqev=8S6XyVhmewDkdjS7dd&lDJwiD=S;Jlc^^FGOp7U*cccwm zB&|0@3|}UOu1YvDYE$=4!EFSr>s{(vE2x9l@lEcgnA3_%(HTTlZD=Q(8w@1g&(}jh z-c50b0X%mYKs!SZv^vEbv?^~yk@0SdHInWJBEd7F|AjoiB8FcRLvM+`8RPhM<~T%> zVW~oKR6J61^tCy226@@+iu-NOh#y^5)Q*I5_2N-!`6 z-cNBd=yYjAz?ckv+~FK}KZUnbn8)8_v5vg`nC^}(WS~s9^OVdyv34j^~69g7{ELom!c-A zxo0B72A%nvsbTHQ95$Rmqk!Qz?wGmA78AO_pc65Uc7CA_cF?$8*o=qk)@jMCSm&br zY$ki8UW6F6Uodc)T(rK4xWxCiJ2SY#9Zl^^h6@R8^umbhc4zd$h&`;Vo-5=Wx+VPY ziF~#X<$f1N^tD@>M3h7lZqI>xSh>qn&1YP`hveZ23qB==U&!+tqW7IVzbE=;{0CrQ z7ST74=*j;NNR!-!8k2+@9nM_$^t9}lSNW_Qo`nn(77P^d*}sSwSWFBqk*~{%p(1&| zM&7I?`nL&IAU?}H#SACt%%&$~s7Yay!N>$-boJX1F z{vt~BT&iguxrI&=ea*rdh#9)@q-7YY2^@8)LuV~#5AaJ#1s!FCueb$Doj=FoIwdUL zkOfwR)6;N;Dnnm6OMzOuK;rKsN$@R6a$rB0Iwd_LEmru=UCyku!D3M*4DWr%@Btu3 zNKia^>PVL}B|AGKMK#Lz_xv6LDrZ#uCtxZaOPYGs<;)iE@p)*;zD<^|NA(eyI0t>>JmJX3M=$6$hzB1G0fFoG(UqJ7DCj|9;=sLRVmRsn@+xHqH)VqC# z`sr6+r{T`*^UiP5(kJ8CDYLukwsXq2Q>VZS0skGn?aYN&Jgm<1-^zPVA=LlY-?Q>X zzIpcNj5~*q8=WQWyO>r8*O2=L|g7T)6=xOWU{_dZ>WSc)!O59=jg}^ z>J8p{#g9z~jVyJRQEFDR4UZQ9W*kV5G zg>_!RC73%T=T4EZ2QI-pECX|Mk{vtVarNzRpB zl&SF1OOP)sIX5*uUBYdK@spb$sQzr2@?S=?zIO$q@V={P+x0gwOK7`|Mt|@w zTKUdNGZmu-^lB0`%wpY zB4-LZ1bMUgfRTneog`P3%A11+kQ+3D(~X;1aN`O(sjO+~lhUoW)m6<>W)A!`T^+pY zbgR|(ol?2G>kL`9(8C^K__E$W9`7@(#q~)U$vW!3{e~4uB+;#?lTIEPvf2eBe}0wY zUAejrV-uFw!x}@%4^4NPu63KKoWhjnqjcrHE~2DQO2Q=ySPnvymtc4I7`U9$J>dP8 zy$175>ROU2t2eaPg`<3Q43Qi?UvHqXOiNFNStkafSsZ~=n2vyfMLPVO;)a9x+|=x; zI=06FX0>{W6frkZ4pH^QWbM5k&C?{*_B~Zdg0~7u_;|Q#x`9e{r5v5ZtewU%^{mDi z1!l<^nc3)TsU@UV;8-c0XHkmPyNofp>gp~dd#e0@S8t3>mD*$Ns!hwDnv~(rb7#a< zsCxlpWE|1-oQ$L__hfYUn78cjHI;!iJE@nlGZ&wL+MC#JwZ;}ns=8dNB9?aajdJl> ze{*+Srl!Z&rVi?Jza$;;#m92|7Guds&vK_gdwnH|TYewrSx}8A2$>Qw171|3lFhDy zN|ZD8sZ-pxI=0%#lify|ds6cB3@jhoHSqafdm{$W=`TAW?u48CnG~iZ{1l zY@=q}wiFRx?YM0zBK|pW8;ZhHjX?=&6-A zf&rlVNAZ=1%=X-MQVArb(0?^9_LCSE-FK#BWMj=GHecRWLT7WR7pn%Y));aWG|ehL z3I3*5N)QXFn4WSPz=-Z3hxFh#MvKfmz^ZL8!dl%?;Q<2&5pWTjJsfB7b%*RmqX%)q zvoTTvKvQi7{)AyZnT?13ybszO6 zjL_h^m)SF3Eqh?ExFxE}2hKmT+BWkc`bVytZ3Zb9z#gz7f)(1FFzk05oC-g14svmj zdj7yU@CqW;M{WV(7Cs~ydz2XNWO6YcbEm0|51rZ5;Sc~z5bD--q!ZUZshtmTlhX#-knKVky-YhIw)9 zi%xR&3%@Y=$pYl#un6@sED^sWiT5%i4hn{V%E2|yaT6s6kY1PC{K%=Jt$YOfuu%H0 zFqG%22&&p2AtyQ>W9TsdnRBF!#(qmVpFe|~qf?>&rn#{^xcISir2Z3`Wy?zHAXhP| zBTo@D6T?QSwI3i$9EPP8n?|)hc4lxBg=gJW<5MP|^6};*tk(`p8u{g4VP?Tii2=1C zj?ovmbQyL;+6ncrT*-)}snc@c)p|_Qs5IW#HUaGTZyXkjvr{P|-_WVF3*FCCNf?O9uj+e>Qj5ReO@vMyL})dW;e9t5-hZ3nbuoPg^U^%EHJSlw^T>lcg@J8;lt$G zZ)^2F>2p!axk40wUv-MQ@z%)$Y-w<)p;})#bEng_hU$2QN!s~W=$`ZV_vtHVYUWgZ zE1hnKSgN+1s>iGvxm*)RL~k6Q-RI0gKC^oF_q;x=e<0=Ub8@2k{fO7~IXS`oe#D#m zoY_+`2HSu=B_q`H|0u%<1F_yl4g^1zH@_beBIx%pI=)222rKD&)&Qbh*jH<;8TrfZ4eMU)RWYrQY z6|{*Q^?QykSz-Q!${KoWEzb0-`J+G6dnC}4e*(9AZ<)dul9C1g8ENo%|1;8Hjq&t3 zNIR1yhwNx#Tic%yU-^4z6zlpS?&!qvwi<6-Jbwc3>i0-XxR|L3*Dw{+r%jzcO|`st zPMU;^9@W-uSbZ6ZoM;Wb&1WkOwHeeO`c~pG zP%n-#R_{r~DqZ?92FO#*9)o*|H%a2dN02m8Fn+tNzuo6IPqPRu7-}KKckg&^pJ5E6 z;X(?=iO9q}<(Ww#P9dZ@TAiI?jFA1A*E6t2Fn1eS}BY_DB`vgLmdhj6^Y=Nm45p8Kc#lB?!5CDWv7XR+6fl%}G1v>m1m-QdH9#d=fPz@fWJASyfO(`2Za@ujyT8J+%-50W;r#_j5Gt=~T!9e5Gc1a5 zdn65vFyFvJJ0_|h>}S8{g+r=}QFwbKid&H=Fe%B`WhhH?>H!)h+^ur)fy2pMG^zT9 zRyL@;MMjz`T7z};tUp+Ls1UJZ9oGx63aeM~@>C6zA9%?)xG1INXV>z9du+aE3iLIS zDXOHvs*su33D3j5$jrLeF)3;&V2a$>hB>$qsi6##BBW*MBJ2y;ONn{PyN0Z=WXP?C zJk`4l4=1!SD8HCH1>cuNO zR&PL<&^Cnmc$n2@4lhQpP_-OdZfPNO*|Q>Jr1hnCl`%#?a{10)mEk>0c9m~f1C@Ao zE%e~A^~P9D8(FBsd|NNB%8V~ho!N{wsf*HDM`9}8FE-rCsZ(OsRxqPk&JwiNqZuFQ z_A<4eVn}W`_BTtcY(<_#oC4DFCte+XM?sGqY)BZVV`WIF_Mq5)8m)vVw;4+ftcs^k z&a&G6Jmz-9Zi6xmi`sFF{1SIbxm3sMXyG#DXV>T@K;7Q+)D>1_?Dg2~zj2)rv*?wl z)-nhDRsWTJ+XJF^&L_Z7!6(r?nYqlE1har7sV7-!GSK`Z^9^XmxN8eB2K@{p$JnX! z2z>$J`E^hk+_T{lKkDByBL@~fyf}N@uWiMqYKkajA!IV**27cOt7QY%P+ubt^xC&p zhIzP1+pvr~?0h-G2IX1DR6=RSHkWP7vCc0G3OEIe?V~(Z&id`EV7_<*G5KKU;#tVJxr^D+GQ753vFp=NJfQG{lnNxfbYYW+>_ONTzYq21GumT0ZISHN*t}!NI@es;APgSt8g&vbdpyubudP@@Q zL)Z)8DQbI>0Y+FDjghlj@}~CZteHK6AqLkPDo>p*!UC}y>&khmh*EmPv0ooXzh2|l z@JoKR)RAu`7l)H!c82({lgjOvq}0etZBWvss#apT{`yK3U1&9`YgTH;bX@cnTWc<@ zL|e7?ob2S}sjaMK{)OXN%hb$O29}jjv*QAu7lyQuihEtT%CPK*VzQx}+2CCbc4kB& zs!C`8*)l_45GzqW^nApcE`~|dTI{9UN)%yIr%ccKigQP6=!mP-H=wtV-Hp-BC`FaA zt;WXDx|-c&n%EH_^EXTOt{;zL@|O?;N161g?o{jo#|bxkjbU%Ss1m7ICxpJ2=y}Xg zF;;hZYR?+%?ZkA)t&*{Q5~l7`gz@es`i>9-jYQ8GqW_Y-e=2Wgy7fhsf!APqqrpgI}4`U(v>*Tpdo-Y$USLOK*F*s`iY1R-uJBXpW36KG$8d(ug zOV%4u%cGKbQD5ZkXK=$jVd5vEi!;?GHqgKkG6**bvo2zA&YuGV+XZ(KgBOYZ`M(1C z*8K`mS?%f0dKqZ-*B?o$4;{55(%ncRIImVP(gSmmKz}m@8QMWePNzQVCBLBzw}{~xpAlCP167|Pq;z0hmdjJeH%CUT_}3z}q?VN4 z-GT>*{=-Dy8F}uJ=NX^#{d{6*+2`QN?OO_1xW$@7=czSYAW67{G~Oy=ct0qy*|B?z z@u_Oxf|2dREvU@g@Hv5h_&LQO{^Bn{?AiVW*z(&|{p~it1@RWiDCM`rjBH$Rjt!H^ zyl&tJ&luFIZN~5zmRy4Wp|cRRVH<^pxJb}`2#s~Ev)hc3>6Ud5=j=;Lj1gSa##n@Z zSCkl2e~qZQRj?fvWyk_`Z5wh&H541LN>T@l4GvqjZa01e`Ce={GBeez5=wcP@};T` z+lBw5ABF#0;lF_V!{Cpaa0IcKBQV0V6MT0&7p`@J*Op*(Wj${~M!?5~WJE=Yk(q8i z*N~a-s4#0F`i>C;$BCg6#IT^Jk#AlyiP|(v1aZn|%#uviw9l8*p;YWWi ztCB9|E0@B^R8LA!8kuTIDdlMX!XdgOLbjvS$W*)eEim9)6~7(fw-DlmY%L;B%NIY% zRHr0}JhlskeDj=we5e9e<#fXx(P3t6 zvM!Yw_F5OGXM+>%*a0qqR?0Fs!L}XWgG&{;c-y2r1pPtDh1313#NzU3l_)HaR*5y` zx=O^#UtF%MM(n%tawZyVfoCL(+lfIzPY0g^K=e7;(|PthI!^5^H*zuFj(c~f0^CBR z=MYz|sDR3}EC;C4BhzKJ%6EQknzea1#<&-0V5Wy6Nos$^V8cs>>DmP{OA<^CwPnw> z3R{rKt1#v8cS(BA6T`j4&?Q^4!n9HiP}ds38zdpe|H1UorG{ zqmxS&`yP8+n!zsY>bKqyT|MIG6542a0!X8>+^zvlpig+eCHmjVGY}c0o9jTsriZnL z)u;x3dsfRTm#a4Fb}?Y~Ps!Hq=~p>omV_%=={&Rk0MO&X`8GKqW96x%DbAJzD|eR$mpz=9M|nO z-0G1qB8ihE^sE_A)w3Hj>HbRr48Ca(#v|Jq+`EPn2L-)r8l@cktb9^t@ggK!e`ZX_p|mG(=@`n^W{dMSAvW*!9* z0z7;~&n99((6d>d1wC8jSxM z!}{4TZ>l7_-7u0%O-GhXeEatqVzV5zJl;duebo#Rs$q!eiZOHV-abQ{BJxH7zVL}^ zswKUrj_3m_C$dC7AKY(b>*2I2KQM@;Yt$q*V)J^W*94c{j9Y8sbNjI&%(yPH3VHU3 zY=XhP65~E%STL}k&)x$F&NEC1VNjMQh+&P5^5&$x5ezi(+1pI+ zR<7TR920pd{TIH0OAFC+iWn61wemSE7--|OHz;p3p5e3SEHThU^mofwLEm{kdwYn! zUim8Mxkx!Uj*wO7B&;jNT4c_JVX2&CQ}bDl-b)fbB)qOLq(1!+qrQ&>Fk!Y<)6o6t zdP#-ryDG5?2CwlsEEv2lJZ}?2cZuHn#J~gcw-*KVnm99h>)}CcUHy!~6BZtV!N>Ca zoEUrwPMC z-%?7TGDiKJ8+9(#a>N)DIfi@=#OmUaIIDxDM-eh8A^p7){xZTl;td1l935yquuuZt zWf1>8qW3;A_)^~Vfr&F)9Y2ZzQHI-1_i#z-MGuzdVbd-3TAjU)8SYdZhOw42)Z?RA zy@heFI?}-9#BUJdN((~3%}3K^Na=k`)?uJBrI%NA4cK+ikNX=8#-Uk13qgw@_?r-o z+x3V*6$y`b=blgzV+a9JmmY&);aL;ObS0UR%g$q1&cn#iO2pIVn1Bsdz$OOt`WP^{jRARP2}5}G z2!Y}6d^#@HO0wU*5aJyq_5o4JW#oy>v(`R8xO6dWuzj^*v0F-dU#;|n)vVwj6@4~L zbT9$`!CWg}B9VTP7>$-kc78C+d5s3`;azE&>fH-)4;+`gZ{Hb{?UXSN4`25?OiK%xeJ9P1qSZ`x*q1JElmjL-HH&fU_gD!KdGz2 zp*CacbR4Krs}U+8UF|uElQ?hMjBIr-Xyl3^G-|$nz0~#6}Z*3aIx@ zm`+7lB&i)ONHllLkc&B3_^`%dx$1Z`%p_Wxao8wIt{yaVX9~v+RKa;YV^zWHh&0^5 zh&a)X>S43A+M3$d5)r2D6axFB!5ZR& zU5*Xb8x7XUV1a0`XD#Skzd|m|Jqs<7ttw90!`HMVYJgl-)~0v*q2D^}!iW8Vt<_$4 zLOyNhs!pCVq;1*Xo^~R#ARANTdV(a?(d=zAFctuTk1rE2C{0Zlh4+l@ zW_`5XEI)0etD9%oc$UXBo?Wc?Az>H^x-w|Ug0OBHhe;6@3Z2X9P!P*SaP6;KBnt%_ zN2=!xN+fsMw@}|_g3$M9YwgmiPE%Sd=<7j)UXBJ`bXo`PW>BvLwbuev>1l(Jspiv6 zZ~V7o*0-1Z=I1wq$F$SbW9SP#Tgg@1&gkx?>Wo2yBXyUN1Y(FcB7bb+9TxF%i}(?V zgCItJ35FTa!L;Y908(&CQhO%)vJ)?_OFHlp5)1l;U~o+}uN}vE=ZH{38zgPSD`Kvy zZ@20vIyH5_9W$8ZG(Ns+hiIXG#5ZG!pG1k@lQ=B=J?)gsE9evS1C^YvQ>7iy#+K4N z6{jo%R3HJN4+@3^!-Ad;^7IRa1jB-!PI)gF5DW`?&LYO2=Bk=b;}1B#ubMhx29TSJ zep&@P4USjT*-l+-y`7@;)s;?^QpWVmEOm=o08M#%u4?Espz9y7>HEPF0tyBNLxN#J zPnRTG&?o2@3eReB zt5Y+Bxfqg2J?AKrPcR@D67+P-dthXUq}ybD7Z!23XQTi2NP!5M)(UM9pi^F+Cx?(= zu!nqPfDKQ?hI&o{&&A&}YQgZu-~U8^UU&|lyqA6tdg&Z0&PnGWXSuXex^WIkjQJk| z1?JXrkC3`|F0vw~9-l*DWq+0KRximk1g5Bdf}Rkcy@EcV!V!11q#I+$#`A`{d>-Wf zkS&rQuQ01kQspGL&wnCXV|Rbij^JA~{@2}DGfvOWNuTzu@|?G2nR`A~`2CE^b6KPj z^Z`YhP3H}rBX@fY^{9suUA85vW2k`8hjgebaBnt#Kl;?)vO)yH}a;_@t)wF9l zm;@0JatMY6J-7JAE9e7aER_dG5WR+OP370@GJD*sClc!~;7x{_b-_B|tUCAtEf zs+AWEoNUTajTaD^U)W`+$_VNC7}6saX{(Ulk!0N$d`R>^5`01oJtKyJ=+Aky4lMwR z1O1Ac%dGJ{=XWnq$w^tY|c{fRYLh2U`Fo4DIw9T-KR6+S3)>Q9>dC^}& z#jx_?nqRasPNr1RCCf|+J{MK*bqq<=6^`e8H6Z>dYr48*6R0QHceEf+4}Mpr@8! zy@EbLKhSD;yRF$^kbLz7u_=T>X8JUBI|SANA=MwQS|1+rLr^${1jB-!UF51sy_c;6 zwrZWsEb$4sAm|q|W}GHHcv-5E{?kC}fY1dabgEaAsF#^a}ac0Y2Jk_f*r`9U?6?1m#r0tOsE3d@IN8GOKO@P;Kb9)Z0v z0-J_u=vy&cmUJT7kpmm*)h%Nzt__0K9Huo`Pn|jy+C&VSZy~4B#1uEnelP24G5!iK z-8ROMMs|lkM0EW&rFty#c>X(*n>bt_O8U7z^P`GUCbkJdIf=vb|2xZb;b6q=F~r>@ z_7n=SU{KJ%if@AJ5ZpP!UX&SlY;lmI+^*2=BRNF2vKcGnoq zrt(#uRfGB;j~p}})qK|&CA#iU3U&G}QXDE~`g}Wx;XRT`-+jnx?!Cy0X~8`(@IOGH zkH$oNDPFl}*oWcNt$S!U5AGS(2{zSqA18@=?_1}vp5Hgd#rOj3yKjuO|GL!72jCq9 zZ-~ekjFFbt#fTTQgZGVoo){bM4{~}ci0CHj1?#`C{Ii|C&xAiDZ*Q0w5DW|YA2Abt z%@a#1eBaRi`sP!b5Wax+3DN(Y=y^#D15pvbJKGLCh-BMQGV?F_E6imQ)r^NmH1BRc zjON|_hmmZ1@(|fp8n&|SXc%X*+QP7+?w9-?koC``%iv-i9Ha$NN`Em{-sz=obtK27$IaJ3CLegyHr@yaFfbyn8`DA)(YS4uq}DJjpL% z;p8o1JU*au{K7u9qV9%`XhnELYQNA01cNIj%xZ?=5F&|gE@%im_ILQFj~DEJgs}~# zJp9g2lrKlWzVp=n5}OU zv$Ie)*)ScK=`Kv>;TweKUZdJMalrBD?|JAc zQ$2oxank6RI8w#M#dnnE_hhX)UKnGwpcHwkePZEQIMhq<{h6VkF@@6&ByH4J35Zpra6%+j> zf)zw>CDF4>o)5|UW5n;BasyM{cthRL|NN7+OX+eYT1U?H8rDQvo1OU%HDZi<4AyE-AGMTq#Az_%>ONz< zbrgEA&pzgZx09ursA}I1?3D%!H2+=yzI!mL#qS2}jSfau$kcoqW2QeCQQuqRH*&00 z@7@kZvPM!8Vu^aM5Iwi0bOi%~!TWp@ekwH2h#}AaApL^>f#MjcPQJtG?GZ^yi7MD; zDhJQjtDbk*nV2+I^;|I3$B8QcJ$m_59&?;JHPalW?#?mCsGak1jD5}mbGYhQXyQcq zLUW{=Q(&r}jZ$ac8>7{(8Rl5Ebf!5>9i3|?sz(bzRGW{0?+Xy-xPLERA#j@6j7Bqet@&kk zlJ#ZTCFbRqNp$P#Qafju_SsBzd=cUaFdk!|U*d%`P1gVq#wTW)1AQF_7MZBxazrgE z!V9J$MBa|Uynr8`X->3{3?VP9Ge^q1lv($dmBI&9KXrYhe6!3?Bj;aLWxi<-f>1my zi_9+~hhf#@rRGE&h&6wSJJKvOgV$@!&*eNU1}qa)*?MF}s#`X_)ZSSpEU?7erfNoY zfvcFdS*Q?q&zmEEo($h!s`n!5+=vNT(&?)9*{Cv)W}D-z7q%FBXjRu?j`~eH&Uc5u}GbYPvJl)h^Ije?w<|omUwdzGaqKX`>Ri_KgScm9c1<@*k6um?p5qD4% zP-DqmEm&^GIM-2yAyXOS)U5gD@ZnnL4e<4hd8tbs_d=JHEHk5%GkM)0nu~j*a_m>$ zmClcfz!xs{4)xsdOIq#DL%pAGMkaBk3z0u+-$FAoe|)mUj9gYwyTY^_6}i;DZj;grnAuFjy`|L3<6X)_jSK@#m)cvv_T^I5 zod~%HAq{m*uw5`L=$*;;ejrUNT`F>RJUYnEiBU_dY==$S3=fgf^2zhiMUhPX;_aH$#7p~gh$WrP7?91?s)G(2+{ z)nXvc&>k-~e?b!r^bp*}gmd~f^HbVzL|*vV+~V$?C|qJrai@M|sY91qvVx!{oxlyJ9It6f4dCq z?7qFyi$~t)Zo+l~*@}8s9)I*d-Vi^yX7; zKT(ARy$kv57Yqu91-%8}?i@9--{?p*LkBL@DT9 zBtif=THLc7t+lNPqs28VF-Cm65(B|&tI_=yx1ld@XvYY0^;wJt7j>KJqfzP!Vo+U$ zAgW)1w@+7q=WC-wQp7bp&=;eGksyE#*FFW@S$==v`fil?)cBd_Ih~n>}+f&i5G#M*nSQ#US9-r z-(qIiaUhamSE=ZT3}g>hKhN!=11yTxkxo$Hvl6Bw4Kt99nwJ36q#H=O|@> ztfD!__xD!D3@h=!U_;En694PY#Ec{HzpMkjW3*dWeV4%3<0W6K*96h7Rd#oaKcO?G z)eYm%o_4#-#h=<9yDP?@nJ^bN{9uI4Bs;kdBwjs(YT@c=i;uKryuY~G9H{Z}{w8`9 z!@JbxNBl6qd297OaVsEc3Og&HO~|KZ5|i zWegAmMs#ECn#g2FbR+1W%k)IgeDF88#@3JcGn3Wdvz%=FKrvL&<0|!ZjVZ%8)lS($ zLgOhUrB5&baGdH0)7CjQE$W~?)ZjsN8*zx`zVm#*JVbg2bf6AabC zNYy#PUcr!HUpEPR;`(d-v~E0BnfhO06kx`$nxkchQg zA=S?9NYl|0b2J@pP0vjJo9W5$OG+=wYNp>DrQfP{zd1%f=E8_3Yx3kAHxA3FIaQct zz|VC$Je|n#J}4@mBq7(GY|$JlgQzDVs#@%a80RU*$En{YBY5d1lkuTtZi444&YoUv zMN(HGakxSPcP;HSvy$_^b*VNcucpS#&0=o8L*j4?19n-NuA5+JsC#7lvsmeCHVeY;6>l^<>8W_n&W z{KBXw<>psYlD|qvvKcen;X{w?G_y0{?gf>x3Nff!GVUW|r#pQzUhmw35gcp9imfPZ ziZW*#NM=?tTT{|=Q4&yqTcxs0&c-mi+(db1bClEv-Z^SkwK;Wq4%Rs^FGiYFTdj%v z&R~@Q|H^fyon4i6rd@f@QH1&6Z>S}V1=$K;b(loap9W0D)e~fGc23qLRCRZb&az{= zB1=-NbRR9%xtps>cUsvStt6*dHC9L*TLnu6YX$3pm}$U&u4Z1b&76`Aa~E`Dn0qkw z4MNu{*e!Tf@HUXP)Hzrn$v~bhDn_Y4Ek^Jx_qSGxVWk*#1bLO6nhJNS z$gQJQCgfB1YQg^{`FxZL8+%wLVk|*68_JNelQC98{k^usoHRXkN-l2bP2 zBfiV!D9tpvgHm;Z-&f!26jY)HPr-bbg|LpDI%NbYtM zm$6`qc&sc|Tf8g-@3mSW)Y26tCKg@PTEert5|oJ*p>JIDfS7)F;aY#rq-95 zlhhulFRBZ>K6Tp7?0qGhck&;yt@d{kIiyN!t%_&yzgUL>WiqZKv=)!Z?fJ zA1GypMY1-32c&2dDSAXsW=yEm%ubtZSI%-~D_X+4QZ#ASVbr3sNX>s&#t5?5)|Qn) zXW)VpwTfACN0>gdnTj5+DZ>~T<>6(l9zV-tzTk2oeL=A`o-JdM^^%8AUMC|z@0Cfm zKIYp>39?_XN${NDRl$2eNQ5xH9TKLPk-d~}o+^n_a5)f$UDP+WF5ZC#j|DY5D;aLR z(3T4B5OemXCoE@>7J@o2e- zc#_|4%eM!DPXu2H&Z(x*iv^1WeS+HsD+FtRNVIO5$VOZlq)IDHs^_TISicjo?AMfE zXIZH{3M!~#d})#|SPzG`N}n`|<$Tv-VK>ArRQz+P_$@x+o#@+i0hU%;jjy?q zCD~PJ>h}4n5}_|kXiLo>BY|{{Px$RFzQMj$&{Ja<rbnVk~VIR?Ehfu0J^s%5mx1UCq7 z5v&lb5ex{P2Er7RV*^#{H`CLySOz+pmFWKAsZO_%!{{Zge&qzUd9MV&E%=;Fc=OXV zYwYvhAFFW|R#~l2+SJl2g!b;DfIh*1U{Ejw@thuQS`dkdXiy}Q_UuQ23tp{7QCyi3~0OTJw%oVE*A3DyZ75o{3* z3U&%!5WFV%0EkwCJL1&wIuo8cFm-3*pUKxZf;09~(gMNdf*S=Zfa;?}oS8OP?YjpcY!1UPXhdew`(*x!IoyZ(fkmYo3?X-RI3=TU%XPnz&Q0b{{bi+6qtHW(*o z(1cw)hNwV`IXNXMaqO@W!*B%;D(d_;pCvAZ6Crn>b#6)fV~=;`cSHxdgQR@qzNDV>PVBBfuCDVCLAWIr%mRtTziR2 zq)c;T4w8$pUJJ78X^S}~>bFq#m*DauGdoSL^8!`^GxsGpzU<%{2QiKdac*wO~|fodMTw z%5aF-#NKw2J0&#@#Vuv|ycN-S>JiO9f_;nlbQaOO4nR5S)0Xo8(IHHFUmP;0sj{Oc zwh`rODfv>?VA}pIY1LO6XJL@ijB2;48LKBaCn|U6qRBNiv(~{}*b>&OB^yJb zPvUy{nUbA4JtQSb^7`*3!?6dp%ivZ|7YslF*x_XHmbJ`#Ki#6Xx98d{p*aZHM* zWm<_YVRL*blzoD8_JiKAdbLbTzRf30oU)MZ2J6k06Wm~dqQVNB=DVg*RIR$g?q(sl zV4y6xN^leTI_&KaDZ1VhChjXt!wgw-ILI1NBGlDFjY~)MmzmINa&aIk^h>68zfc_( zJTBNQ*e2L5cuDXY5W`4b25P0h(M-oZoK`JtVw|^x@}W>_A6_Eg>qhh^IM$}?Ymk($ zg=T=WR_w{sl4Q?GEX!E7$k9s%!9u~6K;@j4tUT!c*>&W~ zXyRZqW|r_OMsO8--0K@2V8ux2SF{Da)F;Zo(O91M_K(a9%ICNpP!R2@ul* zjs>r9uz}wPO(w5KQm>zaHn9k;4Z;Ef(HbT3LXP;j7zC?^n04E%{JXjY^EAI zF0>~FTLjxA9M2j-f*Z|P9l{PD79c458KLM9JS*5O*eiHZ@QPqq@P(lFAai%KV5wlG zV6EU@!2>|#qQ0^dncCZ8VvwMY%Rose?g~B>d?M5wSjD;sN4?d9u*y@>LI+WbzKl(m zOf5OS5-y%YlxwzNJ`nbpTCew>GOa#2%t63%`Ib0Zj|*O(GDi&8k44b`jud25eyho~ zIWMV;gx@L&!*9jvGp*)uEP=P0Be12_YL3LpV5>O_Yl5WREVRXf zWrCH0)q=YP>je)A9u{mM8X74iWSi-tDFz;|$$lnj49{U=0LVS0 znL&(x?{=Hx^nFq3*}1$dYM=uX@VJ4Ulmv@TRh~9ST0wBJxH&>UtDtm<7HpFM0wn6j*5g=FMG`ahS~!~8;s8tnwDV^|L-Eh)-xuCRezU|W!!%X z>-;^!T=pK7yauAyTh~S)C(pwg$ue5RzaaOj!$Rq60KEzVmBTV!0>S)t?r!rgZTwku z7Stiq8O6s)7i*J(@73+*Z)DJ?X49B002*)?^c@GiVH;(E_Fa3#2n+vqb;EiF1{biy z!M`&-5tA+a3$y+N8Qu{w57^LQ**xL<{Z4%MoM2pj!H}S@k#B;6o|E!bFa%T%+T6je zQ2W$Uk2_%bWm)9O3h7JA?`@J$f7pqTjE^~}+Du=&^yUoNw?R@dAmD})PvN3!?CTh}mwMzu>o-^5aKG<|Y za-KYcBA`<8B#mTGvq$V%$R zHwY%^>EyGYh>KJC>^aM4KhX#PVLZe;M6Y+7xHJ_re&o9Hbn*SLq@?KGnn`Z-LFg)J zR5>aQJwBdBvLcQY%j0+rgd0R44bC8qgui-yNtL<;+t;L|h-QOkgg2l}EJ9ECbxI;- zzs2(QBW4uQIf>tD479I{)^8m7Hxoa}fIrjmQQG!N#4zfb z;4Q%?f}TqfhhRw1AL5&kp!YJL1A<{7-CIolUhYv z((q69-UO@YsmYa>&5_#hbp2%tzL}vt+ZcMJs=W-WB{^zwelc!4mhi_fbB;7tonD`y zJ|3%{UB<%ag)3N9-E$r5rCaXMaN|DKMtdG$IQ0A}R`<3)!vg86XBhH)q7Gb%ngOX@ zuVT(AJb4{+PNBIVA!0nFx(X5^W-H3Kk%HLg6uPcN&nc{b1^NBOkQ_%kwq1oVzH3;X z?Yo9W*;98RWosD1ta}XEp1y!=SKd&pz7HJfXj;d3RMl1U3-$Oa>Tf?=JazACe@i^I z={+Wc`WUBe$a#Hc0t$md4LB3B=GuTWAsc6bI!x+8j#@mwHqh!yRbLfofuw%dc9 z^r$RM804f!ZDGP7Cq2%rWy$nE>Ctw3;7N~lg-E!!j4^+rX5EQt-#cU5_x;x~r;QfJ zwc_=6qOEu(TX6}weQX~km~}UjFT11pvMZV|$DZ3(lj{9z+s+avJQD0P3$K?kw_Zha z>l$*)2<|{E36|0FiM#gclmic~@ugb+)U-~gY=xVyrgv5k#f_)ODV>S{4Um7@%!7cZL$V!|U5k~EJ8ktsQ4G%~UdM+yF$!V=ohK^lGc>T^lAFB1f=ym>lNT12UgG))HiEDy zLL;J!q(;(`zmxnH_x{g1fOm)2yoE|NCGuj(BB&;DsazpAtNDft!fJD;2U zs?H<0(kz-zzWD|6QpiXCYf|1Hm)ZDYw{2WmUVV7~u#!qlVgwy8(mJyVam8_?cL zX+y^7Qk2VGnJ$r5r+jbdPmfOd-q4k}fG>JMt=%4*QtP*<73VHnSC&gLztWZYl`ftu z)2m%P|9zt+kGby~J^X}hxJ7owZGOd`Ps)n;S~1)gk*ddJhrISF*$uD8rk>wlvG?P$ z;;5%(#U8QbQ7%Ia_YI}v9{1l+It4AQoLqjfE=NyZWw-|A7AC8&S_cF^+Es?IjoLXnud`VNbfH^RcwN)wSo! z;&#l>`yaJ{@#r;z6a%eS6268 ze&OFxrYle`a%J`pjLEcLtcVVkt1v$%nR+(ctv>x1y-va?EqjS3|Ndf4-t}Tlo{lE- z2axe{R~8S+{MZVVQT(v$i7T^5(37pBOP&e7M|SW5^$$(?9@&YwSWfvK*&WYJ{T|t$ z_d`Fl!F`_%8ay^^@U#~+c;>TH8+>|y^x{#;aAfP~hG!?oRWAoi<9X}fBrxA7AsQj0_Tzh19xt#h8 zPB=oh{=yKDD)_@eH9ocHHFgYG2HpTwuk(KA4m7c(oq2Hm zt1*1#@1))8lVAC}0g+Y&HLkTaZbpr2AG9=YUzExIC>OdiI}r2BTv;51IQligU+>Om z+^1r!SJ-tY^w*t@b>$&wW2Gze!!WB{05S5r#4 zs!aXfU3BCg@^{jIw8Qr&zwi|O!JRQuIOz!}7r8Py8S@KWnVyRI_zaZuU0I!l`FUrf zTzL-473ZTYFOsM)^7X}RZry%O$34Z~|H%4_e5LUpc(IZ!Mx&`Km%B1sf+fpb8DAm6 z?yBrkD6D1S9I^Z`j*jUd)MC?oxQKTyv+`%zaz>HsmoUx53g?)9eHFOUu9gf zXT232zn4_n^VhQU@?T4({q_;@j(zHzM)4u_X}-#s9Ew9Y`qQ5EX}-#MoSZbK`6}ar zy}~0+UQ_I~PdzwDW#J-uK`>TcBfXKQ!Tr}rvf`<|5Kn$vM}Dzu7rZ373PH z{P4PYz9$Q+qwD5{5*8eb#;=uO8(X*x`@}TIja0k%*V7$2vf>GBh!W=HR~euFwY?l;94<|#H%QYj^;O2Z=G9;HtBlVcUH4yQ zoVP%lD$vxFS8>rrd)FuLkRc)C1M0j7g&WZPAoD(rtUvtFy8JF+{|*Jw8Q3({jc9jU zx8cyEc%QnwFvXn%1paYQee$b}CmvGQH#TI=@}ui|R{?=@kzi6_Gn7)wCFupvnxxjP z`%In%`{yWGe(JvU7d{b_-{&H;ce4;Pd;|`Iex&0!sap-FqMM z1)rV22L0&$>iSi0fpam&@hxbkkkWpY@$&uZ?tOshN#qv)0d-PW=B_MV8Q&_)qx3eo z^2X(Ub^m?BBV@mmclV>i_pjS;?#ZJ5_X&5Gw8HNbE=P59455h=539e(_X&?e$6ok- z!pHWP6Uy>~F+P7na`7EVJx3{j6%g~;pE1A8mGkbzeCoZ^3t32qD4u)|4ICfN7VUA{DS%Q|4*O9 zuUJqwpTs}3p#E=u68~4ctok=Ui9hS0`oH-}{Q20k<9jf^`Cm~Me?uAn9b3hG693nO z>U>*XcI4}Esx73BY?T#KMun8vCFdSo$9GAW;O%wnPQN*L${s1Jo|SIe9Z?qj9+k{~ zD2wholDnb6p*U=k2N7ZNv;N2MrXN4+e-vkjRBFf*1Xs_#ERhzDJ*2Lm^;d_WzYihv z!j{=zeG> z*&j`2QV#wtfWzn42mKbnUtG%vAT|79mY4d(_18zbgZZU?3*goT0|VZHfJx#yaS+N% z%Kq;HoPA_ne;42Y)XNV>jpPuNr7N>TWj-oVjul5@zVhXWUgUQKuE&$X z$~BRk?7HmA3T2d@f-*S+%i}Xqre~w9T$yK>PtHMEx-vT#^YM8o3s}_egWo_ z3#E*5lw+c0zcZ_s@+nBCAXlA z|KR4Olxtb^L|Xsi#OC;HeA6xDPUrX~7r8&EJ2ihy{?6Wn|0MnGt*_%x7sAx@G@5;om{T zjkmXp(&OQpTRwDt{NYXCwd)UX|Mnl?HzedYoPM;u+<0Gp!|wQcXVXp5%69&R!HZWt z^my4pR=6>&T)EPf@vSnRV_QUjK3<+To_a!kbN|#&M#9E<@`UIlEtD0lyyn%VtmZJ}!+bLApe z=B`}k%EFb)QObMHh$7z^kw5DqUqL*vjz6k~+25TgXU7$8?dE>Tl_%EU?&p4sb(Qm1 zx-z~EZOwCKB4sopf0GTZJb7aMdw%Y)Q^lF@*6kvHJ{cO093+wJ;)#=$SX@6`H^@@+x6 zQ^a=iS59{M;Vyph!qeqFAN>uD=%1&{oeSI(w<&cFK2w4(bYU}BE^=k=%4M!BT)Etp zrIhG4{sx5)^3W-AGId9{%kZ&Nq`eicZsqFYPv_~znZK~U3vO7VeOZVBay8@I-Ozl0 zJGphpWXj)@@0$Cn*PJeUxxB-Uqfc%^=@;I=uL<>-^KD<Ca#?C%G8w$ zrPRMdqTA)T)9U)SLtWcvVo%9j-9@g)Jj*ze{$)&GI8a6SEjC9=*rBMi=>pd7G*=o*KSySJtQ8 zwddDo*UepfmY!eVKDze&y1V_xZ5P$eU3*qsQvYUj@?tsG`giR)=F<93(Y=?}<*q$9 z=k@PLM=Y)PqJyre%UydezOuec^pC6R=B_<=UX4wIPRLz*%CqI2(EBs##7*Z(R`*^g zeR}Gm`ZRa#S#)`Qi=F-V_4m%})7`aaab6Ga+H*kWx-fZbg~u zmi`VTcV%^d*PeT`y8mkR+2>1FZ(J;Ax}CrA;V8Xa{)!at+OsFRci$Ctf7hP#ua;L- z@~hd=_2^exVxtvzOS4n%+H>DIu1(&C<^maCd49pW_S`2U9X-FOZtvQ&3~_PuhI=oo z`+obRmRv5;FPG@%u00E`s=Hfb?Beg*Gw&M7B)$h-)4TRuac=$V(Xw-K%NV5kxO7bK zbaZK5@7ixNFZden+-`*-cR#rAA*)+N$*@|;UZj=k$Hs^hLbHz8vFFE_T&W1a5K4_?Hb_)*kI zcl)N~RP6pu8Lu6pn-|r0j2@EHm%VGxzS!Aum|d_0hxg=Nd!CmOkM6oscRX$X&}-zg z6LZ&|R5~%`u04+~!hrRMHb?gHTx5~$DOsRyboj+}bJw1~U|8iyIR9cfr2X9_9=^E0 z=btZY^{ze3E|zl!?%H$X#nNcG7aC3GX`}957x!H(ANR=ixCT-4y-}gs2W7e+s`+iV z9|j;g7*&e>oh{>e{3UK!7rJy0bm=B2%Y#rRhoH<4MOht2=T`6B0Vh2I>x%g(;~+Q?M>M6=i-J%Ib8K>6s{tvrxtv%IqAJ z<+&)6^HJs(xE80}wdXE5bIN`*dDggjiDXb+=xX-w+VhmuicYxDR=ET?lRv5 z@7i-aS|~0?J?xQ};>52z-pQBOdDou1F4Kc=wRo$QE|H5OZ&q@sHw(8|3b>ILs?yqGQAOH@jI09O(?V9qbzSm znfw7|ek+3bX90IzUY~N;o*U%y-@j|mlX8{R>&kQPLVp|d^mdfRAEgm{*PaV(S?qscUg9i0^=x{TXF>C(5Kmnct0c`giSlP)-@VYtN(Z8uAy^O8<(oxEE#oca+%* zl;wRWll$Gc_3zqqo}4NBckQ`(DYnW3sNwJ0bHh?S3EYk~)q`jueHdj?p;zXFy6+XX zSLa<}dv);@=+!@6yZyWNoOwlk@~%Diphotn%kwdp=M%2>dwdb%ak?E7D zS*=7S-@sja_PA0m{c_iyy|1jhyY?K2TItg+-)B(9&!Nozg|d7e5!|SscV*q(wdWdK zj*{KJCCmGF?YUXb$-HaN?Jnx>-$K+qP|M!6=lLt;&qd2S1$qcw;+~)F>1z4&?BQ3* z!FiRtr0#_#;(1u9)fZh=*Sq#CL5*y0)F}5s4S(031t`eZ+>&-Zt!9DrKx zVzwKe9r8fPua-U3pM?*;8prN@mr~+Vl0$Lf)$aH>3rmZGTtbG0%blQ zWpyOV^k|gD0+jKwD6`+VEOFPKXRofiyY}pkr%h#wwaM`)^Ak{3C!$PGMp>MKGCmb$ zb{fiDNk-HLe_-VPR)5%5> zX+c^Z&Bo(#v?whhX_=J;{e^8wCZAo7w2@9a(nFisC_3wmq}I+{*M%BMt*SLDX;gYq z$b4LDWg>U0G0AGwWiwKYlw*mEDe~jLb}Jj{cJpzm9nVZ_WxX6PW;d#lbhMb6jApYE zv69hB#xWjEN2+m|A4x|Fd5mWW*NV-ndNGo(mDIBFY%E?!GTy9_%7&`mSB|A4xuh%G z1)ER$7mr{#o0%jTkK`kbMlNMGl8huXs+n1>m|0>}YUQj(S(6nQFyz@vR?Tb4s_ksF zm5ug##YiizC8LG(sv#|opt)kShr!LI%k5TLYqjNH$NiJRk^f+~Le|A2SfUFnj1wTK zNi1o&)%6vxzaVNVk%qOH6k6TH6_soW~4nC5ZT5} z*&Ca(Uv|1p*&~{*Uau*QV6Ll65{#dCC{fq`G*GDv2YZ2Uf$O`n6hF--#!ik7Xd1eofEf%>Ecr=QjI$q=Ob#35k;nk}$QaukOGe~y7ok91tW4zyY9dHhlLN09Ek`=7 zW;s&L>S4#MWT(qV;}IMcvUU|&QH#g0yb@3T$+42jeqG6)T?&`AR2~!AQKkME=1?n^ zR^_l5ks+6As~7crtQ=2A(|S236-V>2Z1udJjp0y}WuxV2KGG^jGdT~Iqs6R71N-|6 zr)*|Ar7`y-qdKye;Juo z^QJ7DUDT@ARqGeyll9Z_e7#nqs;8@$W7(W^Rj?PjP#nFUQtVG(qGw@9T|Gm^V>!0yDoLRshn1N z(#J%)5sTf8CHGE&{a_@PTnp@cW395@$Y-^aRocbuwxIlvXEfq^BN=bxV~xUH?s7Rh z*BZ$x4cQ0Mx||-e*}ZgjwOTqm87<^!MF9M3v^$bWyOGVT#v~s(J|y^R((jREgJS)3 ztXHlP&o0-<=aj3Z`_-~F;*s=Q@oTH`qAptghD6Q{BeFNh=;k9bZe!K#Ml!Qpw~^JW z@oXetH6CpwwQ`1>&l1^@6R9WNm?gW~NI5f;t8%9t%SX#sR-@UP$*g2XIXhjonpv(X zTUoZ=SiV8|#%!#r6&qx;%bCe0vFy;zd}c?sW2=(3l98q~HgC2|E#A0lWVK|=Vx9EeRV^9s$(4AG9!9#+%vO_jYNcFA(>XFUvKfmFCHGm? zXgo_=uVz-bCdsyzv_|4t#Tw~IIiASAJq9ZuiR&^*v*LO#ok?b8GqbU7QIm`0%xY#n zQp!G;j%2GQA1Z3q81}}vaQmQLe47PhU_(R$mQ}ckxiSAchY)WMy{5Q z7IHvUtE6(6NVjB+)6rzrY&4N}s71Bp(d}bm4;yLBabXGMkyTU4|>{BwRTjpC9vPYGpNj)9S>vAB>N!Bas zMIB>O$`F(?B9h3ga{X$x@-1;QS)nu{`Z4u|Qf$ zYU#KGTpg7Sl28YFRCx z70;AoR!*I@WR1Kg2YZ4Ye9d?jG}@MnQx}dL@o_Dd{8Bk)ijizg_GM13mR#iIXm7g( zaxHDjT)W+p2f3KZ5tZRow1!;TC5+UQBeU6-nB7*Vhj7VArzgW&OJ`*De8XhTeBE@l zOim}+n4~GGma-qAfy(WT5Wj;5pKScyZ#T^-~kEtB*sA4z1aVj1Rgq*_IG?s~O$ zyjmj9&SXy>l`CRT&Ze?!%H>!FwvmjcYi2Ugm7Fvs{&*o9OmZw{lruW9M99}jB`fLh z>d8p_>SRtc8IL7&@hUs`aF;^|4HvaAi7{zgp%IQ~u?nvI|O>>}{aZ)sZI@Z_Y-O^-DQMidxTA zT(?}iXq2mztH?pLYWWJc%rzkDNVR@ECwWu(rt0OnbR(ATOW;?#uQcJ}C)Qx3W~@U7S4)iC$sYLd|VE5xy9c z0m))ztJmvvdvfmWlyV)C;eTc3p66j-Dp$*A79+i4MqBpWRGzKNsIBk@jw&DhRlhbl*6DHAEXRb9>m@=T_Zml3ir%IQh2Y9m#> zC0iw((QIJPkw#|5udGJ8GCI|0A$lfzq;yy=x9F@~^T#7MHFu7pH6wW+XP+o)%46s8 zk?0lj7>|s)$5mhEAEVd!$3@$YyXCL=qJM1t#6OmM`^RkWdh|~5w@LhC>oEU#%NJ%u z3uSq8;f!cQdHi{2PPDl^E;x9Oi~s2p=R|XbuR3#1w39qG7R_;S_Pb0UZ<-TzYH~~Z zf6R#*vi>dq@{i}wT|IiE@bV*9cgt5ky?XQ>srTg#Uhe##Kd`3j*O%Y5mdopog=@Lx zdAXKbzTRKga{09X>3PAnYrA}Aeravj?q9#|`OxkC?WiMhH#~gpXr4TN z>#DU~d)=GXcI_ST`jKb{Kg6!QF5ugQcO0!nyZqw2+oM8Fem0RJo#CoSTfAW;+R*TK zh3EQJuKZ=dmj?V~z-WI%`DtQCCOk|?VHxrBnQnEo#YR3pd1ql8|Ez!?3mEMqUJEla z;Q{e1BVIMjt&ZODMjwy7kFbq*Lco^={9wR{=lVP1+h_cyVZ?8&>ep}eCLf*i zWcp>`TZW&!*;hDAeRAK&j7)ey{-t5~y|=p6(RJ#RYj2&p{oWGrF9Sxi*c6#*AMq?B zUh{1}-nHUmdy%2RPcS1B9^hMspS9fTXmk_rlTm+|_}#aA|NZKd>8F^H2@i;G8S&+! z;HFr8GFBme$FJ`Dmf?5Q&($Z>PlEl`GW>E&AK(G?$@H5+e9JEXclZk9Z}a09DQ_b@ zS6w`?y$UnR6EbfZ?N#se>krfR$n?v=w+z47%KP`JPku{l`h2pWJevfbON8)4u zB16OWY53Ls?PD2!qW*E}lj*lGBNHAbq_7M>f3I5|J*+-?txc!zkByJ^ETg?b+xx8e z=nq+DU4NQBTt6Sn@GJGtQlGrW+o#W`4BE5o@_C=H@CET*KFZ7|#*9pOKz}U5@3gTt zitbXMjQZF!%x)zp890^6=r0@1ANQy!KkQaVANLhzy+gOBGW}NITZW%#{igb4 z`fmz+@>Wv6sq65teZcz&zhRDCzfN1%)jA?re{;Yud*{^lJ{d6b*#U)4;p>M3rTz|F zDUZhqPxtyE*Zz*bOSixB7Q%ClKM^p;qtrTJY){J=&vYAK;ZSX#On(eBGT{Nf<(KN; zRnngA-(AA!-w%V=N7*M_^U*e2>Heg=K-l(gNx;m{?jOj{GWu6)d&{+bGW`TIGT{Nf zW%#{My4BGp@AmnTQGY}EY53KB-!lAI{ZFV*rr!*F%kWe6cT%5BzX*KGF8_|Na5(c< zrf=g-$U@8T6Rm%n`ege0a)@@5An%szGv$3h4nABzqO>k-QPYg zjQ#CL!Twfg{6(^ULur&e^Sx8|H^jsCwXa{?_?Xu>=wG$1RFY|9@zEZceq`#yx9t4S zIz9R^eP#MRzq&uZmf?3l=PO*NKAFC~9wNSF_>C`kfBpCQ{K@niL43>bo9egKC(~~R zzGe7r^|w=>Ouq3K7r{?>XT7_ znDN6cq%pPCC)4Nt07iVv_I&pR@$L3MF5okTu|NDcINvqD;=)I3f57*jys5C=A3hf_ z^J{y(KR%W*K3#49N7_DlSU*)iQJ>uRF(VTmFg|U=h+lryt&SF{Prms@`qTB*`|Vjq zd+qIfg@?60GQwhe7h`@s82MO+-_VV;?g#aJs!Tt|j7)fdZyA0fw|l_URiBLdh@WAl zO!O_oZ_9TdFrA@3nSR@?o%AikkJZ0LeKP%4;9G{DssEh%WcuB}w+z4WO<&;^TkH5K z({Bg9W%wPfznS`E`f1=>hL7Kw#?(=tOuyq-_s8Ed{Pwqeg>S1*9@fXN{$ko)eezYp zbNwn;vc0Y@15Zd{+4V=;TjxW5JS%1T=LbId+fu)&>+rBgz()ssUck!(9{aGozG}$% zbgfsqR^O+*LiuOPmGXJYuUOmHN4_t0K72^(>!Ie_Unz|9;jY2?F#EP!9c}j!KOW?{ z!qbhf-M$!K%NXD2JHEYC+aqHYj#pcMI=`d-)#{U5ADup*DtN!sGV*Ef?DP4Y__+R) znNQ(Y_xE4R@EhOr6;k!d^s~UX3_n+Yz5np>$@J5}w+z4geP7}0>XV1{qn`H{s!tx) zPt|`&ee$q=`@ens%|E8&uT0-Q|DKSAmeK#}2j2gg`s88#^oQQh)h7?@cYf^s`hWWT z$;0~5PrSd4`egdKU)|sTEW7{l|DpP1`aR$LRiS-_(uvu=-^B-7(()ctQ%x@Z))Y z{WhQU{U_7s^Aq}(;kWnp{;}$l>2rUlPrg9vH@)i08v>r$nYteS4k&aAU!Q$g>hHjn z^7tuX?EgOro{#i2-%DiuhSDDSZ^Am1t`&sZP<~R4i3g0IW%R$Xud5!7eag2-Mt%70 zF~6R^W%!)~{rV58Po{787sR&=znOS{5B15z`jz@usZSo(&kyqPNB_(BpFFIe9PIrM zs86P!`PC5^{kM$%w-50Zexg2kSie&L3iZkKi{Sl4%ZQ&J;o~>A)&48f&;9Ct{+8j# z^L>RMs86PE`#W9#TSt2TQuWF7ZNBg=BYt#@_h0#GpFf%Yp!k{kUss<@-^QCRetevd zzeIg9{Xy|t$9sSLGd_PZ{Xy}glfBsRXEr9PQH&-Y+#fAUjOzo}!3hb=xkm3ImF?0_E(c%#ov^|udr zLBPo8rLHHpN&Ov6ex)$3CqE6YC(ToQrH_2x?|;^BJG(Pdzahh^+fJ#BAK zZI3*xpR0eW`egbo%*ccX#J7z2)k3#AdifW8f5@nh{1d;r?^}i+pXw`oNqsW?Jn${U zZ=dEXoTNUPej50e;g{+^sy?~zV@4)COh}O$cKM&-R!1NBqVIpKjB4nA7Q7!|8Gh?* z@9(2NnSLDjmf>gTc>iYg$@Fu-x}U#g_`P#|g~peB{^Vi()_LCly82}LJbu9wQjmWt z^_yOGCDy;x@s&vZ9ZdcC!Z^Nu793w)&F4AIhur+~zju6P+TK>;cYTzUp7Y_{#L{@dV#8{PqPtz-nLd`IG7AL43>bqYHh7&#F)E`@#O1 z8-|}R^8Nz#$@K01jQlOT{1ibWoZ{tlDzn6Re2kMjQ z>*^OhzFJGYf0p{>Vf{+|XgkecnLdvvF!Cp_BlVj;v@5axrH-$+N_~5LZ7Dq6@zuP- zH@ZOcA)hZiH;9Mhqpi!BpJi;HuD16(ZI6ul!}zKCe^;MOKMmqrM*Q}bzQU?qJwBA_ zxAl7)V2rP2`0+CDZ>Bz(eit(`;Q_v7_~mci>S$N>$*4a}|C|5o{RQfi>D$-eh);e< z>NmaW%JHvF<&6UF2;=jCroP|5ukwEk`TqYhslS7Xce60|um1_o-=+5F-Cy_HgZwq& zxyEPzI=T#u{#nNOwyyIPeyQz|hxKFiPgI{wzlj-{@PPQ15kI}&t&SSo`~HwoAKSO* zSNDC(@EbSy3SU&8Og{^J%kXpcPg0*etlzuQ2Y6V0a^J^{On5;5GsB4AEZpj7s~vp* z$*6|@$EH4f%ka~iygyfcGX31I?#H(bzx#V%;Y#(%!}`sey}#BsG=F9KJl}$mKlv?E zzv)$1V*N{A37Cx36W4 zZ>9eFJNoe<(@z55GW_@!Utxds$@JTSZyA2B{%z`$>1Tm&8Gi2%zQP9I^!bzN+x>Au z7Fvd1-Rk|F)hE->gZP%=XSewZXQ)pe*6%I%{=b;NGJWokVB}9;>sv3qe{Le{?f$rH zz`qj4{>ce*=ufKg|5w)I`7-&>!qe@a4Q&8E^0Vy5N84Me?PbdE{r1%MJ|8gJ!~UBD z?OR6s?c05YSbXG5re6iVW%#W>`U+R5Pp01pe9JDr`j0WbGJP9wLKa$f@&DulZ1o+V ze@mHu8pO8@ztH->QlEUQ@O0ZN3)-`c_ToEyg|)xy^C2^zcHmovpR2#K`egb=;9G{D z{MlDnraqZ|75J82{&)Hc_cMQG`f=b}h9BMKE3CSc??0J-EATDDZ>hhD`egc9;9G`Y zs{bkV$@JR;p3gS#^#RUPpG?0S#JB9mPyPGUkCo~7MtlR{2`MbYum0}Wueq}yKQjFk zGcw@;zGe8yeQtHMmHK4V$N3<~j7)fdZyA2)ez!XMs`_Nqhi}IlzGe8)1KvMCee$q= zrv8=clj(ObBNHAF-?EGUkXs%7lkt^@^*axH{|(>s<4>k9FB{y%_?8hrd&IB*xcX%J zjlj1IKY!HwJ@v`-?fZ}Dzh(HXV1{ zyH9%mE#LR!Paf89t@Qqv)h7?@M^AZwAN9$@`i1(7)F;z#`{w)OZyDp?c-mL^oBCw> zt-!Yozpeh7a$<4UbLGB|8JX}fAw{_V^qz66qj#!Lrr-6e`@UtwFVx>bee$q=>scS* z5cSFQ^WgZgjQG{RynliEWcqfzT>njf;5VQ53+`5*Og}UA;ai4Zs6YDOe*DSwqcPtA z7`|oa>vPJj=_}Juz1|;x%kX<+s2N4SRG&=08+<-%*~OpX{l^$znSL3Jzh(H@Z0~RO z1K)o#{Z4TGwG2OMc>jm$lj%2H?Ve$O}GA3w|Rcqji0S1Jx(f&w}`t;b*V*{)Ot3 z={Nl9etgUD^Vj$a535h6-wAxn@Ec8EVa*@<@gvhu0^c(HbbVjpc8Gf>X z_j~G-={Nl97wv!gI$z-w##g2v2fk&*Z@%7FxK4dC{bt}>hTndJuTcAuAHP0Jzw!L7 z3XWgP@LO;4{_E8zV<~()-V?IWGW>jF?|(^sGX0)k9pM4KWf%V~zCz6S%2LKzuwuA!8}FZ!Z`h%kZPmc>fCZ$@DvZ^<;d*@H?ON3m#OT{K}tB?H_6(pM16y zGJ(+_%V@9hHLQuE&xw!zkg?PqFK+FmpBRRps{b?f$@H^ef3@uTvjb{MJL-3o>9+#k zGW>W)@4x$JK7TU(com;8cmnke!;gM|B8sk1pNysGe=0wi!0=OmOknt_`YY5Yf98K) zWP7aZ^nQD}VYJuX4=qR0kHyFKARqH0?KOOJ{q`)Qy`HvrrM5>#6xTl=uJ5OY;WrNO z3m#CPjHPb>F!d*7K0KeK2l@)T{@nM6OuzS9-vKau%P#)e-e2n%x_>Iu?*{vaW%#{w zyuXe5Wcp3Ny5E1x@RM_Wg`WCk`g!16hTl2gSNM(kWcqR7TZUg;;43_$KACRiSA1y%#!~EmZBrk9ma2{|A6{r`ZnL` z^6y;X~81Ke^KTGj`YgPnmwpukQEXGWwrijqV6>@?O8^9%@tS^ zMW<+cWGvlKescN21csjjWCFu4)xVVeQO0`sHr{mctA|iCif&b(Ouy~cPR6&4_^pS% zUz_K*N1w$*{LHWJ=Wp5NU-=3x^-ET0n`CEqHc*Of(R-a7Y#)EGee*RDI@2@_Y zeou111cq-Je(O=Jk*786zcQ90e_MY#Kh^q``egbY-+Vv5WyG%@^A%pZx1LXx>D%!_ ze9Q2gk9+^4>XYfm(g#dn_%T2xF#J^goz*8}J^G(uMkYMKw+z4aq_1$W`eZDHU-;F1 z-!lB@DPQ42^~nzj&z04jHrr<^v;9mffRUeNw4Z7FyNZw3&t%j`evQDl3_n+Yf%;_n zu4B>$81XGT|7k3YqO0jE({K9Kecv+t@)=*@4)w|OZGREpGW_IO@4swc-+%J3e)~D^ ze^h<)&xP&wnIACQx7!=}Sw?=1=Y9JZY5QdQJvVxj<7*jyto{w^lj*kt-!lA6{Rh=2 z59^oezidB0zT{#3M&#eHc!&DrVg0uH+o?~cp9lT7jQ&S8A3s)~Ourp`zGWGHyYBr{ z8DF{Y2l3m6-S*S^H>w{8zTI9E(x_$lnbvTx?C(|Dkzfyl6^~v;YJmhZ~@mn)}|IbpNOn*@PuKG8tPp01q z`fnNWGxeWTpG<#H{8Ih(4$$LInZAvO{#$napXK}iKJ{D5^asW7YW=UNPo{6$lV=({D$90wca<#E(|>@jsoE%kR%pG@Dzn=XD&{r%M^(;pN+Rez!S zWcq{Rm+D`uKAHZY_>I;4`2AgdGW}GB7!w%%PXRK4G5(qQ@@G~3^D||v$Mds6@k_1$ z7WK*WQ)vSec)IxU9H0L->XYdYil3>!GxJxb?*g0nmR_wnb_SEfHGeyQ~ru>XOd zOKeQ+f9_~<{L_Yyf3EuEVdEF-|5kl6eH#zsZyEhhUgqQfRedu3LH*Cwj}G$t51D@3 z^cV3hBYw1okH4<^Wcq{Rx76QEeKLI;Z@TzB^*^sZnf{>osrtWEpG?0B`fu5d|I2;< zf1`e)On*@PTVI5)GW{foZyE8MYy0@$P@hbHQ2dVivHE2CMG)Vzi@%PKKcDfH=?{#r_0M7a zz>kCYmJz?u`peWO4;w#vh0niKpG?0S#JB9Wzxtzx`2DA=On*@S6Rp3I`egd;AiibS zfA!ny7yrlj(Yn6>UsRvW_-PQ|GUBJ||5SZ4{XzXN)IXB>E7Q0Aosfl=5x?aSFvOn*@PO#QVE)#oqD^asVSwEmXrlj#qN-+YxHzt5{r zravftSN)%XYdYieIRIf%;_ngW^Z)`TpOiKAHZY_-*y?Ri8|MQ2d_y zzQKPY~t{>u;3{YRPpp!lWM-&lPz{Xy}YulD2je)Y-p2gUEG{~7hk^asUH)ZayY zGW|jEbM+5apG-fC`~=4FZyD#G-fMjS&r+XEe^C5X{p-{x(;w9TQvH9ZPo_U8e&e-1 z|JjH8{fA6{Q2dVio2yTzKPY~z{&wn<>D%$1Zv0zKpZ~7vlj#qN-&H?RpG<#H{Kon| z{zCQ1^asUntG`rzGW|jEEA{`RKAHZY_{|M`{!ge+rax%=chz6>2z~yeOn*@PMC)&+ zKAHZY{^=bv~( z-~X%BC(|DkKU2SC{>t=oAO1yO|My<+<3FuFnf{>osrqZp_xlf-emjV78T~KSf4BN% z`h(&(-r)29y82}LX%OEs;%Dmbr#_kfp!lWw7cqZj`nJE={+1EHxslKRF7?Uu2gUEG zKl4aG{$%=buVTSojs{Y}&-(;pN+dZW+(GwPG+=RW+4?ti)ZyQoj5KPY~s{=w># z>9>RUmeK##n|%IfsZXXqD1KM{>(nRHuY&lN5x=vskN?Tb^asT+)t{?AnZE7sbp3C>#m7HG zeKP$)@jL4OL47j)GU&f$^uP61AOAu1$@B-s@2X!vTCd;A^y47DWyCMFep7ui{Xy{? zoA~_Stv;E4JBV)?@jL2ot3H|jp!oPZx0rTPpG@Dzn{NB#@7!YAUwtzDLGdf~&sLvI zKXa{5zW;6+{ZHTK<1bU6On*@PLjAv}Po|#+@hu~MujS*9FYx;hnf{>osrqkHpG?0K z#J7z2mHMAjpG<#H{N|=U|DUN(rr!?YTSok@`t#K%(;pN+QU42KBHR_Y;Hv``?{FeG3 zQ=d$KQ2)E?pQk>Vej3ELjQG*!KL6jVPp01pe9Nx?>aTmOAHRk&{W$O~!%wvS=IWE_ z+wq=2ebXNN<`zExPpVI*-!k>#TZZ3Je}DDK^s~UX3_se^$1l_;59?>@ulXB4eq{P_ z5Z^N5x8C97Z>v6;ekbrP!;jVfw)*5@{X+d;sZXZg4B}fx{7U^Z)F;z#1-@nY&3F3# zzasVHM;_MisQ*^=$@JSne9MTRsQ*Fr$@H6nZyA23{`b@;)3^PdkcF1vm+IfHKACE7Q0Aosfl=;diwD!|eb6(NDGh?Bo6TlNsOk7x674ey;v| z)F;!o{e^ECex?4I>XYgBg7LEqzx!@Kepjnc9@a0^|FimJ`nJEw-?GbJ{Z&u!<5wxu zxBZ208GiFUKL4MoPo|#-{kIIiRDZtuWcr=Jw+z4aULXGg^~uBfvHHJPpG?0Q#J7z2 zsrvO3b^lYQZ^vsw7Fvd1X#Jn6Pp01u;#+q8f1mIFq3XAkhxHS!f42H$`nJEw-!kH7 z>ffzCnZE5We9Q1l_5bT6KYnETouL1g;kVxJ`@fU=h0 zrf>T@Aqy?T@2I~*eKP$th;JEwrT*wCdj3)#)=xg@`~MpC$@Fc1k-ufc&(!azPo{7C z3*R#QQvIdslZW*iTl@TPQ=d$~9r+22_?8hLe|HtrgX)v%H{IIF_b)8N@2UUFg?{|W z^lg6;-!lAE{k_yD59=4|AEiE-emltDGU7KrVH>#GJV@$_?F>U>L0E?nZE5We9Q2gANJ!P zo#y*b9@g)uzqa~h`nJD_ZyE6u_1~gCnZE5We9Q1N^}nD#nZE5We9Q1l^{-Z+OurHN z2@Kyd{7U^5>XYer1K%?I&PV+CKczl-SU*#L_UV56k?A*s_?8jBQ2*`flj+;>LjNtp zk3Q=2KT>@%{caH7GW@Rk7pPCB-wS-pE`Rl}W&X;;`tASl`QNTSnSL{fZ`tLq{>T}6 z{!pfG$7@0sT85u!{qLwxrk@7!EyHhp%;*0L^~vEmCb zKAFDl?}RM0?DALtb!YnVYbn$31o17ykG1|g)F%(?7wUgpeKLL9U*vBY@hkOztUj5( z?Js=G@S7j^<5#Lr9@fX--Np2{`egcTw|4URgJr}|)SrEpAAd6aX5d?fpQ*p4`egdH zzti=ppiZ~F`1GW?$U(b<0d$n*#GKUM#G z>XYerBR_!=-!kGypYZ*kr#_i}&+8F=%PxQQk7xeM^qYZi8GfSmZ&sg7e^CE(^|#La z_>t*%gZP#azd7Oi{}uJg^lg79WT9o3zxunXpD5F}{e^ECex~&os!ygrsQ;zp8apWg3^0$ofE7bp^`egb^;9G{@ z?fCvbs6Lr~7c(;90r4%v&p+k;(Q|eGQ$~G!|E(!Mn85Ix0GYt>ORfJ_^~qQdf6(|f z{>#TdTzxYAp0t4pjQExjKUV)t^~v-H#n05gL47j)hKoKK-!kIo>ff(Ed04+tf3x%a z_>+hAOZ9hGpG-dv^0$oqyW9HlU!XpjeiHbW;aBQks6Ls#9j^&lXc>O=X&?V)^~uBf z4fXF;pG?0Q`E<45anp?(?oEd-Z| z@hu~MEkEldxW|B3o! ztVjRb@`DKszYUNH3?F}o71OEeld*o7>rY4h->Ofh-$vsyfv1a~sDGdOWcr!2CwaVLlnSL4gmf^R)=HqXsKACVJ*#mFW)}|5)qa zs6Lr~h8dagFd>Cym;d%Y|0kKhGW{5`O!Q+%p5bR&fAx#~_><`;rat0ZhTq=7$KObO zGW}-YTZZ3N|Fi0o=?@yeME$GOC)1CE_?8jB@eQBNk|>Hv``?{Fc`Ls`_O5gYxgHf1Ubd`ZiyTpJl{P)&HCN zWcr;Tf6MSI^+y-`@h8*o2EJwZop1W_YpPGC-@=ScctHM^;m6JM}MPSyXR z`egcp#=lVi@9LB37e2jy{+5w{`dwdP?Mrq4Ri@vTeqaKl|80OwVECoh-%5Ql)(>_4 z-pR-Rs`^c3`b}vE6BzNE0GYsu-`4s^s!zuHVXpr@^iJ=zes&D)(ydw3elUTj^9%L2SD#G3ge(*N($Qr6><7O8KU1GfziH|tzGdWJsDBdU zE7NZUzGe8)EuzpMZjnpU8ZwK)$BYsc)t<@(F>u2h3r#_i}Gl*~5ji34l zt6wP7x8pS-3oX0x`=KAdv86hG%Jgl2;ai5^*7_T$Paf8f)o-g$rf>U;_?8hrRsToo zlj+<3!nX{+Q2##l$@Fc!>Ec)Fk6hu$k36j3_>mv~x2aF2Z}Xil|F-%^t52rii2MYG zZyEjXsDG~dWcq{RsRXEq&~UtV@4)CVEn@8v(2CQ{;yP@Oh1P#6aC!LOz7e4+&>XV1{qhETzeXSoqGW~Xtzh%U4tG}cAm`ZnHl@k{n!eKP$)@f)!pzdxx@rr$RGMSRQXe@Fdi)h7?@C+ffY ze|`VS^au4nQ~xvSlj#rYf2scU>XV1{8@u`Odr*BceLG&$j-UE-uJirxDAOO*|DM+W zi27vugZiJUf0_DZ`h)T>)xTSP^00n$cRzmP*ZcmH=@06ETm82BWcq{p-&6k*^~uBf zsrse*WcmZgPyPB0zW=2%{XzYY_VDAkwfbcGgZkf6|8n)o^athNQ~wV2$;0}Y`cJ7( zra!3vh5B#3(T^XQ{-FLxbN%?G>XYerB0qs~{91PBKlLwDzoR^?pKAR-s!ygrsQNds{m0++!gPfCWcp3FcJlRyW%y0?m#R;uKPdl>`Wwp| z<@kFo3zxU%urr!w0&oca2{kiIs>D%!}e9Q1F^-oftJgnc{*XMtY z`egc9kiTWbZ|vv&SvULslZW+l^*^CLnSLvXZ`t)<{hidWlDzelEyIrv@clnPeKLI; zZ@Ty`^+*5U;Fo9 zGW{-Ondo;Nd4^x9f2{gs`b|?G@h!t|BtHLJ)F;z#1-@nYZS_BPs~>+d{dVA6h99fH zllo-(jlj1IKT-cT>XYd=1K%?IO#MHqPo{7CJ0S}#!!OnU^liHTE7Q06!nX{+()x4N zC)2n2!nX{+agg7Bi`6I7xB0@i48N`ZrptBvDbw!-<7XLuruDy~KAFDF7x68_FVsI+ zeKLKUFMP}Jql10_>$m&-$@CjR{+8i4)NiRzrf>5_e9Q1#>VI8*GJTsbe9Q2=>ffwB znZC^zzGe75^`BOsOg|0!ZyA2$5I=tF{n3vfd00PF|9$F{=|`B62@lBMGU8{4`uN+^ zS4P!gK0hzC{sQ&M^zC>fzGcLZ4)gKX{FClK%Jl7c!?z5-q4htgKAC<`LSO>Jw+ug4 z|7+@#hxIGD%$1kcF1vCtCk-^~voxei`_d;g{+^ zt3H{2Gw?0D_(%Kro8PI&zcPJ0UK6s=GW?d-KV5w?{UnHQ8Gf$*a`nl>`ke(n|Cx9B z{K@pwAiib9uheg;Po|#*zGe97F+Tq1)h7?@caHV`3Cv%aejdcPjQEY;c>hNA$@Dvc zZyA19{fE>i59?>@&nf-*lj+-hCuE^z#P6j(|4r2=({Bd(TZW&g|1I^&^jm>%8Gf$* zo$8b6H!vd;9+1Cf_{DKP|Jir@{*zH3*Ka%C@GZk{9`F7CRG&Po-&6mm>XYeLk^?3% z;#)@i?g>8r;p&s=JJI--oqwYD&!ewQzd&%Az=&@de(NOf->g2FeiO1x^qY=6!|$j+ z<1c#rE7Nb8`iO5CeysI>rapOCKU4o`^~v;;Aiib9Z=dY@f0g=V`f1=>hF_{*yT|vx z&*EYKv-Qz`%dY>Y`1o&CKUQY^O4`5#hHn{uZ=v@;r9PQ{6S7S7n~o;8U!wkx)F;!= zOnt<+jQH(Sef(T~^00oT{;GfV<3}FWPfzplH&dTXzZ2wd8TnW0FJ^pY`c2Hpga`EB zGW^CFKK=*p_4$)gAKSmcj7)fdZy7%BBZ2Ar>XT6)eit(`;Q_v7`0ca3f4%x-)F0;j zm#F_w^~v;G2rd&C@hu~MuKsF&^Zh5&Z$g%de$$a>_@(;qQ=d%V_80Lj!*8GC`+t=B zWct;Z4+w^D8Gh?R?_Z}rnSRgY3*R#QRQqh-!lB@a_?WSKAC<4Gcw@;zGW9b z_x}1T^!Qh%-wb@q@LNm0zm@vr>xAdJ$i8?uV76b3`}JVtXBq8B*ZTI~dY{jaOuvg6 zneYJLGW_l`?|(#nGU{Xd*ztsK8Gh%t-v6%pWcra`-H&hC`SN=enC8+~rr*YlOn5+i z%kY!yy?>JWWYkCg_IQAA8Ga<6OJiE9KAFDlFMP}JEA{`PK6zNb{GE?K_7A`P$iwJQ^LZ}tAq)hE**)c@o*?;ou`nSKK^GT{OFTSorra_>K@J{k3qe z!;j^CRZMTVU#}0!^zHtJ_?F@KfnRG&=0=~qvVpJBvr%j*(M2dYn|U%IuE`CEqHl;`D`E@FIT`h)Us z$@5}Nvmf;1N2YK0H}v1Ki!aYBF>RoJQ+ZgwAt?2{s!MN{N`)Ce}ejC`Xy#$!UKHEF1|Ln?vol{d04+(-^V{deKP$vW@N$x z;#+q4zs~z#m-7h5zp0G+*#BDcgNeRn_#LhP3-!tLOUxMGGW^!-ef;~?C)2mb8}hdd zzf}J{Px<`G^ld!&mf`0c`S^>}C)2+JGbVq_@Y6SW{|!(3_~iEq&-JP+zZfvvFUEW& zF!Ce+Lh3jDDpwvI@WlcDF5rg(UR}=fw!KXP{&c{<4EUgcuMha{fFBQd=Cf1dZxHai z0{%?E-w$|RzzYJtFyQL~zBAxQ0%YZ)-@b&@!D&XS-UKH^40pAtyKLcJ(o(I_R-Z4EUUY?+SSBv8nC9Kj3c!d|1HO2D~!hjpccs z9iRUSc#nY33HWZ|H`L|z)-TqHFg>aq{nGPz-LGFyc^&0eueTMls}}rLb<2>jPg9?Ir2Og{a>KGzH+9# zx$;%YA5~ti{6*ylly_E+VxM2E{1)Xyls~V0vhuf-FIL`9`FiC$l|a#v4>iw z1hEf-*atyu*H9|4br1xhQ%g%N9Tgh;(2yu)?6D7G55`(;L&qLl-P+YQh+X-A-}8CD zZ$9&R++Q>Q^LX6MJnx*>`J8iRxpQx>m_*MruN_aFUWR^xUYmZE-kNUFqv!!=+x{F* z528<|^YjJu2>LpDG<`o^p`WHNq2H$K^f&Z}^!)SL@f6Ro{rMR^nqH5-gx-#>)BDhw zbFKe1y)=C)J&eAH9!uXu*Xf7o2K_wUq~E7Mr2k9LUA6fO4YcDKMz2WkNN-4wrgx%G zp!cIE(8thq`gA&Xp3VCUou_Z5N6?SaBk7muG4x0DvGh;oxBVYaFGf$ISE1|lrt}l^ zF7$NzK>9uUIQnb)Y&v_s9nav*%Nxw#y=}+kjJ;wreJXLy0dNRER-JrLi zr_;OB@6m_QnLpY7o=9iu^XMFXHJzvLp@-8?(!0_Brbp9X&_~nrENI6wj$VeIK(9?- zMQ=?{p-0h=(udQ}(I?X%(ihO*)7Q}hC)n}dPYrT3wy(Z8nOqEDq~&==7IF0lQ-iC&t1h+dt3o*quWPwz(mmmW(mlzt9{ zuQw;qE7B9_4e6`so#-j_e)OaCG4!kS>GTZxFZ6&5?Rajb7o{Jg2h%Un!|0Fb9qFGe zZ2LckUW~5NtI#*no6-X&+WcMU9DN`?ls=9=mOh)FL|;xnN8drup#Me}CfU5#=py|o zeKbACB6d9E=_Tn)=r!m%y#?K%cc-7D51|KMWb;p?bM$%iQ2H8rNBTZ`Z@NhzOTSHz zr@y5yp%+X)r^MsyZhA01joy&%rF-ZZ^a1qTf42QUmL5W%O%JE9p!cTlqQ}zH=yCMF z=}YJ@={h~%Vz&QHI!AvIyp=ri=82^ceaEdK}%LFQK2O zr_leQpQC@IXV8ldvf~+aneERi^iX;;x=8<=zKR}0zeS%&XKS{-^XU=vwe)CuDt#9H zG<_BQ4t+QM9X;@J+kQ6voF9*;9qAS6W9g0PI=wSJjUG+UppT=oSJ?K?p;xD`qzm-j z^xpK7beVpGK8yZ}o=gv1s`KXw%Lf;N_YFQV_|o9}gWnAPD)?vV?>+p_H#P{~A$Z^5 zi-Kq2SkpzYAVsh0gt3 zJNS3O6N2vv{#WpK!Gi{O&f73}&*0w$|2g>H;Fp8{8=PCQbN<%BhX$V(d`0jB!7m4Y z82m%p-&+5Tj2UmhG3cf4&`QXok7h1V<{#wDi1|JhVA^6tdr-I)Lo^43y{1t+? z2rdOzf*%fkBlst)bk55KZxTE*_=w;?2HzF@ui$xB?VLX}c)Q?zgU<_oH29U^Pl5-n z);WKh;G=_Y2!1Dc!PPsrH!S$5;ERGE4E`i|xivbszf15Rf~N$(6THBho!eVK_~774 z!H);e2p+sv=k|9?UMZV?KV|Wy(%-gaG6&Ej=|9qC`f7SS{a3n1e@r*%CGxiY>GWoF zi~dQPIU0X(S#!*6nbAVJ+%2u|ePHrIv(F504ZmMfPREJmo^(5YKSzE&+5dhC)*qZc z(jm7O7{5>AjqO#qz1i2c?aAHtRraf~m(}OPd~eKeu-})x+-=`t|0nixw|y?%k60dM zFL&D)*?+}e?zXS6AF>Y5KizF#=lXlGm%HtI*`LW??zYdS#~qgY*~{Jb1@`}8FL&FQ z*)O>+pAU4meU0mH&0g-dZ?Zp%z1(e|Nsk*Wm$R3i%lWjvwuM!84?Ze*V(`PsxIc#T{680N$Nc|wzQ0K8 z`}6%na)0N$z~kF~Q#(F+k@Pt7=Xwq+I4v;l zKX3F!_Eq+>`dK|6D(r7yFL&G5*)O!Y?Z2$v?{9zmpE=Wx|4a7rFVlJV=U3Znwa>=P z^Wly2(c<S0AD!0G@?~;=&zItPcK)^=Zs$+lH@Uz2Gsg|;e0t;lD06$qb9*w@$Nk~g z$NlMzzRJGJUQRdJ{fR4S!3FxfGy2B)c05e#`$brV8=7(Hhg~4 z>TC10PiNox^hRI3-1^Pf%j&b?-(T=XU%STo)7Z=Edu@E*d~fuXYps8Ry{tYPdhhoB zv;SE8PpdD7-Wz>pvdv#=TRVTU`bv2J;@#f=>#Z-cuh8lXVZJx|2G>8Cy{tZqD`~++ zPx`|fee(vJe-(Qf>*M)UNgr6$SK2b8FWzYVE9_=_apS{icui4A${qqgIH|FQ3Sikdj zd_AGn7t%gpfzcO$w7}@gTz?#U8MkBq{k;C>SMRj>&$5@*`~Th&y*K7J?zVoB?QQ>M z^_lSa_ip$1TEDM)T7A=Q?mK>O^wkG!g+H^G)wggZEx5q`d!w&3tbc*MjP-H;>bQ~? zT%h+xpMTi;6?WkLM`L~T#q@ziy?1*)*B`~c68ciRp4oe&@8$Xv*vp!q54|_~>?5}S zPqLSPx?|_pvrU4v{c700H@08n_V-IY-v7zn_W4I`|4w8tciT7EU&LNkUkv;2-9A5$ z+589DXKD5M(0ijVaQ&Cr%j);Vm9*fZC;j2wK7Wtf{Ofk&`J>hA{jPfXA8Gv@Hq7On z;FWqhZ|@2IZ8F|3m-znobowm%VtUAR_Wt=M-A*^?DfF}S6ZAXuTl6>d40_b$T6oM|x{|EIpDwi$09Lkv@t3nm&&nbc4;iiXKYeO%JE1CFgW<)8)ItD;GO& z-!k~H;0ek2`Bj7O|F5KT`{@xEa|89@Z*VFBIe#_WCUjNb|wHFwVZ*M%ld)W`!)p~jB63ctY@$;OBzB2wr?-=lqR=_X{2ud~NXK!S4qzFsgIj z(BM6TE5X+U|1J3a;Q9CLoVR-L4#7tRpBsF8@QcA;1~0Z(=lu19M+F}fd|~iy!A}K$ z5WL{to%7cU?g{=?@Y%uF2mdwr-QfB6>72i2@Xv#f4xSi%cktW6bMD(YZ{^_agAWTn zH~5a=mxF)u%g%X2f_Dx+D)`*sdhnCM9|SL2>YTqp@ZP~E2Tu-e27ep8{C=JDwh#VQ za5ebW;HQJX2wrIa&UyLZoq~@DJ}da9;C}>v8oclUo%4qU?;Ct_@D;%i1iu{oW$==t zJLhi@yle1L!4rb-4t^o{o8To6?3}-0@E*a(1WyRQBlv~juYwmjsB``X!6So@3O+aZ z=HO|;9|g~MaOeCX!CME92|g|O`ru~pjAVSjwl}{&nRAS}Ob?>R(W@o<_g~uv9~^vA z@CCuQ2md4Z&EW5Y7d@nNf7TD)DfqD9Q-UuGzAyNt;4gybKeTgy)(YM}cy#dZgZ~_S zU+@dTp9ar=Sm*w%51YNcMm>1_^jY-gC7chE%?je1%B1Je=7xV z5xjr!Nx_!}-y1wVct-Hj<<9*X7Q9>Vk-_H#-xT~*@W;W~Uw6)5CwRBuqk_)}z9#sA z;1`3x3tsZb&i&aicvSH5!IuU<68ui^JV$lTTP1kw;QfM62);P@w%}>OZv|(L?%bax zgVzi03I0{^nZY*(KNjm!^d}#0~!50PJ5&U#;D|nvYbnf5E!CMCJ z6a1UtbAzu7ek}Ok!T$|j^tYY+w{Gyx!3PGP5PV_qEy4c?ek=I<;6;z^+`n~#cL+W- z_{`wzliR<4$e*v?Lyw_fqbu}x^dx$j7K`*B*||GfA6WdHNtoqpGOzRJN9gC7b0D0tE1JGZw<@BzVR1>YL{Z19ZWMNa6P zw|?**!N&z(96U96dhnOQ%bwUdf8*d$!N&wo489}y>EKrI0w;COUn6+O;3I<14ZbP3 z8T@f@_V;0a@D9NT2cHsrS@317BPww2G z;lYOopBH?0@XNv91TX!E&UuC4eS?1=TnoNG_}{_voYFaO<>2AL2L_)Jd}HuS!QTfj zJFav7=E3^~j|;v!_~GDx1%DU3$f=$4R}UT@yif2k!RG|u82pdmkAerD*111x2JakP z4n9Bl=HR~ve-J#+A3Nu-7`#>RLBZpLZw`Jo_>160$9K+OFL<}$BZDspo)Y|0@VCJ$ zp58hC=fNij-yYl>{A2J6XLN3V+u*~3&kepc_}Snuf|oe6bKZu*BZE&2zBqVl@T}gy zyq?zg?_WMh_U~WN(;*Qd1HHx$+o?}b9=J(r(nC+*L$PSTxb1kXWQ|~>ixW)^hs~@ z`5UcYlfA6o&qMExzRdnW_Okk1+C?ld`W%oJ7=4v}jlGQ92d9rh`oIGBH^0fg$zE1p zZr3w=Z_F>;WXC`796NvVO3CBc;zHZ2@N?Q9Z)~r@?Tz5}WcAt5d!ui%f116lz7%?I z^!c0Zc$PcYjz?Bsz?HP%q9^^~jlO(~^}Di{vHsxnQO1?D-~zoj`rf+rr?8i?em8yb zHtX+XFRQPF|31kZ^PBfrKaIVt-k)#mzju58*}tLvr@QT2T>oqKa<_fvUfcggt9(Aw z-S%0opJy+t&!zhT3ykB>0cnA8{CV~}vX^l??mvIN`a6FG_G8$~-S$QH#2 z!2RuinSG7DtiFLOX;JUpKK`k8{-4(I)9N$n?_7NE-R>W@{(wj{-^?go5asK`D4ae_|zV}({f5BeHymlXcKfmmZzW9>$7qXYtH*xT3fid43eePxJ z>+I#+pZb42Z7tN^T;KM*vAyhvw!KYLkKezN)7AFzw8HuHMxXhw_3yKn)%*WHO#67; z?=Pco{%HMj6KuY`bMiRb_4c3IUdf$LY|k6p%g|G&R!mN zLI3+x36EEAY_B%Zwzo&>aen1=wS9i`bK4HV*dK57%|)&MEqhsgd7jSR8+~C}>nF08 zZx6@wbnqv^npY3U>y3G>!8ULH3+;Gi^}S(#z1zpTruE0LZ_<6e9d6&_xz`zeeJ$(X zW-qJv_jgbFq&NCn-ufLU^8TXLm)$({-srPyTR(}t+-+ZB{}y{$eIv~G#{9xMHh->3 zw*RvFSv?=K>sg;?FRSkj^Sv>@#r|g(@&2dPm%{sXZ}i0tZT=#Ewq90W$Cb3;q9^^~ zjXtxn^>?zDans=RQA!_J)R)>aqc5=^aq)fe6RnD33g&c27etUe!lZ}h$F4`DB> zuY}&az5koo@gH&t_n%hp_qX5u=lYxd#rk^a>tVikd;X?2e=qhWTJv+E_eNjg`p2@D zyX|Z2FJdou+c((X&t6ua4g2qn{cp1WjJ>ShA1}_oH~JR)l`pmPFL&E#H?#9Un!T(( zANJoH^9$@RXD@f#m)XyCneD%ejaZtFf2W=WxZHKX3H)ZLBY_m(};S>zVhzcYFS})}NsH zwE9Zuz0qe!Sl?tXt1pM%8-0cS(pT{O(dzxY9<1-Shd#5N%`dZ;yX`CNAJu$Xz29HV z_s0Ad*Uw&Q`!B2a``h3Cm$$e5AI)A?@1HN|y)nPIqxBQ7viY+5f;(U6z0p_M-^*U^ z>%-4C3eM=8Kezc`vX}dMTuBQq+Vh>!XLq-L!>euoWvqtRuc})gy*K*WFRcFqd%3R< z@1N4Q(d`AdqtEYY{d4SP^$lD}3obC<8+~gp>px;IV}0y@9#_(W3-sRTbNg7o?KO7% zGS)}m4taszyWQ_={co;iPphxv3N!TH=$pT^{-5k+^?rZRd!x_nXZ@v)d4XW%c^+Sz+{YPg*}`r?&m)(ZS~iUlsgd@SDNQ+}yeSt%Iw8+SMIjk_oa`$$NX!$L64&c+-tW_q?e|zr^nOx({tZv>o@6f^qcgc zsdoF9^y>6Hx7zUxru@l2=z$N|{%l1LruRtp&zG^m=Lg>u{BZDV!Cwb2a(m~z z4TARyJ}tNr{B7{^Q#!Z5eeear-vw`TM`wRt@K?cG-r2eSsNiwIw**fQ&fL|xy&=Ip z!AB?K_X{iheZEuZ@$|KHjed;2n|_yW(hJ;e+iTGq&~yK^yMG^V-?aW{_xgKCa({o{ zoYWFaK!$Qd8~x%j!$v{ClHs&SrlhwmExQeIe|>H~Q>c)*sGZR^JG{ zcYFSP)?cUjw0i$|>%lztct+pL^{2C!)mP{5JpbP4%S+n)h41J2qt*L){mrj%{ZZ^? z^+mV8=)Ez&$^HoTa<_eMDck>3*vsAaW%k$U_-Xa|u>aoJ{~FhSl)bFpf4#x+d!sKd zZTr9e19tvp^-Ww!3og)mqt7jC{Rix2tdFlB1zbrBF3@|UFD+;N&a3h_-jL~U;ZJR zFRT9ySJHwDoIme&zpC{Ys;AZK`+N2Bt!e!nHq7O*;2(k)dbo4_O@j{zJ}>z0;J1Po zd8Bjun9yzqkK65A(xd6!b^BlK_A&G(^zrm~`W(7RUrt~3 zg!OmOQ|Q0ZuhOs4bN|iO|CAm=&+(WY&j@-+dJMe=J)Yizo=opfKSv)zx9Ag-b9(Tl z%kzTo3H~g2&c{3Zb%OT|9v6Il@but0|Ju3zHG+2wt_0s0{7Ue=Pjqg7-Qc~G@%?Fz z-#;Ek524Sc3-nF&Ncx|2nf{Wl(#!qLwm+H1>%;&0@7cCV>yLK#*RIL^eSg|q(_W7* zPq*XyQ+ZnQIM;s=jQM!IZ*UzLuXo;fy{oQe+n@jMwtczVzL>Xu7<*ZLF3k7F{4)EI z>}B=oE^99^_TL+Qh5hmDW%YSnNeeE}d!w(fZTo*Ydl~EF{N>UI78rdFNDGX<$sYf% zT>Ji^aXWgyzv#Wu_j3Jp|6#q{ZQo*l5PP}XKC_M;|3&QOZu>0zC)vyDbLkvlf%`ju zdG_D1m(>^B^~~NI=dZ$k@o9GcWc3YPNeeD8-y3~ls2%^t>}9Nv`>!4H0=;*;U(fo> z)YIy#*hX4l^xo*3T>l03vib(%w5V^iWkz3JpZotLpTD&Fyjvghz0o(g{wVgc`eNw4 z(PuZX`M+Z?tFMOM8-0!azu3#_^P%@f-()}kQ+)o>>dT?`Mqe0a`+pL9S$!5)(t?Yg z^oKY4;)d2=!(PVvc>MTz=)KW5*iU0GtIwrvV1d!+fV9Bqd)a@@UdHX1UrZlZVD#ST z^BdXzuk=qlf3kYNzv#Wu*VymMURK|1PoFv88-00Wn|~sES$#G1-sm%%SbrURS$!E- z(t?Zj{yVqlZ)*Junop~5wdpj`IFU`+&s+pM&H=n`YqYZ>Wg8%H~MVB z`Z4Tf^{a;78-0QODePtSx$yHU`LeV=zMq);@AiK8R(cTq2t9;;fiBYT(_`uH>2dUe zPuupZ^z!s2^m_CZdIbFhy%*g}A3?Y1li_SS|6RUcyE?5un&%Q1cO>`seyy~n-5+y5 z!^Z=?eeyWh>-?r&XfH4xAKtis%Ipv4_T+B+3j15x%iZ=>_FuA>yX|Z2H+t62hy0u5 z{?11}oDXlDk0!Tw5w|C6fBgD5pWf&*TiN~dJbSs@KF@x!=lFU_ciWe^{_gDMZu=_x z3)suu_6_#WvzOIp!}<4apMUmCJa5O}q`U2Vx&A2jvie+@@7=!thTHvDW1peB?Q>lJ zZT7Nyf4q47cw>H^{pv69{{R1+U*!6?v6nU9A1~&6V}6ds%%g%=d23-^S+u;w8?f)%)Y^NuTsapXd6Qu$R@B z!hCP^RrZ5lw)wL9a_GI=`@gO2{|)RjwEAM`z0nuB{%Wt-d|7=x^xp0HBW(U{>@&3b zYUsV&$ItcGdX>i?`by}%(Py`_`S-DxHQ%q_lRoL)p3i=p*EpY6-^kbkqxVK%+}`Ft z$zE1pvb^v8qBr_F`(OOa=F95aVcG_a`QGh*2b=$fdb;a=N9%v}I_J~si)kbl&G*Lq z%ud#S!d~v{aV0H%y)*h^kM-a6+I$(S4Ne~|#A#9QjlQt6^#{CRy{vv#@7L=^>u+H% ztN$$g{i1jK{O@M{N9t+y`guOwlm3wBe>1&b9FQKrgYEt9T5#Ib-2X6dN$2R@;cWW; zjPEZ;)9=ya>CDph`z+VcgXkydJpBn>qzAoa+aE(?fB)Cd8#hnukH#ItW!L2X-oN&a zwDU7L-HxAU$s51j|NFHjx2N;v-9F!=Y_^`-E5^G07S+58FYW%b$i^qKR$(bw4j zz+P70NRLS@F!tXYed$1(f75%m|FZf5;4@^?qJ|^E1D({)~@#{IvQ?c>H^} z_y0KSXa9uzPpkKjcg*)jU*-BIu$R?m!hG*`e}c_lvSstDw0b|Uzxg$;eJ4_clNGsm+(w&uV^w{Tb|K^@T9s8}lnC+x$=1%j#z}zsi2M^o10!-?I89uA~JQ zIDg)lUpmF+pUqyz`gr}H)%-I1$Jxv3^SF{0TwuO8=GVsA{LJUJ|1#F^W`3RhM(kzv zh4A|0jrpz9ZT_k3W%aW<{>&NHH`&YTTR8Z%z&L*I_I&mW&amTe(duV8|4f_T!#+c+ z_pkSu?~VD@s`VGLm(|Z|evSRV*vsmh;p?9_=9e$9`9r?2vif}c-kW*8pAU~;Z}g2zt>5q~ zn=h*`hxy*<^OsqF9eY`QF3k5vU%bltrM|ZLvig?YJoEAIjJ|M#ed09svU)$SCw(mRa{96F3@|UZ{2GBsBdilWvq|apILqVE=;lh4feA7LfQrv81oB2T42nt zu%G{1n=j+`_I#|I78rf8t(kq3{V?{j`ifg0y*K6;@38$pkiFb(-(-Kj=F{Ew#XD{O zeVR{q+c&xXTbdvGY&d>z9Dgs@U;H~e|FY&6Lhp?}cbDz|ChTSP{{F)G_eNi4zdw6f zz29H--smgr&t)%n+gI67WiNNz*Vw^BVFH~5s`Yl5Fl#?LE;@#hn-(?$AIdJH}L z54L`lUX1RgSElpR?B^dF(Ua(%=oVd~2R&))A4M1F)94BGMRb$Ck)Hc0>mQ_t($CPx z(r?of=&$Lw==pxM)igP!DE6i2%Z}JPVmCBcW!^9;L*Y71m7M!J@~ue4rliuhnkJ}1|vX|AD!sEvqeeV<2k7F;Z_uv2bq)&RI&;H%|&)CcAv*F)&^hTe1 z#rpZ@;`4!4-{c(#W4<@~)(6(F!d_ON3&-!>-v5uS--dmbR$mVHpEvpn*B{MZJ|(%o z=W{9i`-0xsUhh}7KbLWPvi2tvzQ6Ns_upGTRXwfV&+AE_^hRHp)Bc0Bm)Ohd3*o<4 z^G08p-&Xj7y{x|1cCYX8?2W#(sP);o?eQRQlG=>MP;j zFY!iSoNWDt>}B<>@O<$`U%0{gN7&2ii{a-t-sr10TmL3|Sv{Zbedo^`eT{u)UORts zw|$-cvh3w<`v&_>*~{t+i*(+9-q`=l!*={nv6t0n!@sxcjXwK#>u0c+`+6Jyf1bY_ z`=#gO>n*L`KVEzANqq1E^K<{O`CF=|`}*+s$vC(BC#@f=o>pIU^Dy5VefcTtFJv#P z?+v{-`eM`iN7&2i3!(Q$Uwzv8&)CcAYwmcl|K8~H&sjfcpq+nNeIfMT=*uryzX^L; zeK~x6@J8SJiuH%Fm(}~{8}{EDeT)4c*~@+XfSHe%cJGWn(`)muWiPAm9oX4>qwoFD z`X{viw0gh4?fJI33~oo?;`;Au|3jY-uV3Eib1j=c|NMOZ(3u-LZ{Tu9M^;KNKnDl|(8}l2p+59yYwDTupeH?!YSJHwD z^xo)m1FWyIm$82P{>PQH-~xTt8GU{Z>)&H9V>R@>ZhiFL=(BTKKPqecFRRzj3t{x~ zk!k&0`ka<=!S@Hh8~k1H8Vhx9Z&WgV9$4bflMbV=qEDi0&)UzQ&Z9r1ucGIE-fq8( zuDoFWJ3W)_`m--=`!kJRoIY#1-M$K)eaXBDeF?oYeZuQ@`~LLMUh^^Z zaC$sF=1sf(V!Hg6`DXf2`XPGA+jjeN^ltB%-=(L~-_q~V^Dkn@H{@MgKSvkob?GX- z4ShE~ik|yD>&Mas`uB8$KA#@^zO8??{2%k(^ho+2^d$OU^o{hV^neenAF!w$Po7?a zF3_veReCeJM(;{br4OQ?qkl)Y=yT|SAKLsYl5=`;q{}J69|ivyy!K+9{Q<$}2H%(5 z{_ltR^R?IMVf4pzfgZTHtv`}plP=S{(^dK;dNPgIgVFed%bH_m>-c%y)oK0Fx-nhW zll%MmU12_Z{rMr?J~(YpK7WbM?@uubuV>8xwow?bN8at%GrqyErykqO((3)!|Mu${ zZb%C*&=(f6{aJPp_lNGbFE4EU{_JJ-rLh0rnBQF7`a_nq`Lg<1?SE#F^;6i(>a*>m zbze`M+vkt{h^2V`X!SX_KF*&v`aIVk!(LYJzkZ|lMqgn+j=ikD6yDE!qwihHj{i#b zvib(Dqy-n4?~T5;wDnK1m$5z`f2Hv6<9MUbtZMxy>}B;WTuBQqFy9+}Yc=Z!{nXCC zjP)@;AO3wVZ}hqKt>28jtiBo^f8OZp8(Du4d%3R!_veJOlD<&D0! zmG!rSNFF5PWH0;LiqW&H~Qw`)<3J`r`4Ah?c9HF^!Yzn|0#P}eLn2JH~P{z z>$A(){V%I;+4#Qm=Z(I2s`YvHvif2;esA=(3#~toy{z8<{!~x;q&NEJ#nw+@FRS-o zuh4s=&)2MfiM^~oYj2PGj^7)7;V$ccU@xn$gy*j}`o?|MFSo3ne_4GtoPTfhP4)+| zm%HtI*&okdR-X&=y)i#C)%L&2URGZS$M4-fe+}y&WM81w7sGsS^i{6^HhWopKJ?z` z8|*X7@%)GR1#BoSxadiLc%#oeZ2NyQdl@(3_0P{k?~Ojs{$2L6`ZBJh1sCYO(bpca z`G3gS{>xY&^Lue6Ex17MjlS}j^&hd9u|E1NuA~JQ=)KWbAGdzDEy3>vFTO(O`Wq*&l(zk+mF)?>Pq=+NZcksk2lM-* zKhr1BH_|owL3%p<4E;U*Hl6+0=6y{U==lcQysznH>9L>K`fJnE=;8EkExUaWdhn;_ zL+NAb6Y0Wdc6*f`LtjbP={xD^pWFI>qp$kH{3`t({R#a&J==)7R74W$pJ@o~HBkxAX`a&$rR| zgG>DW_-8{pzdv3*xxep^d;e~)2fs_V4^G>Yzeygaji*bD!s|mZyg%{A>qGuY+ujnZ z*!JYJlKb0U*1f-Pzg{_GdxfTLZ!)(hce_8;XRI%+%GWzueVxY$W4?EL{S#NO@xUF+vs-R3uG_5SM%=6j>B zzi<5->}B<}v33Gs^xo);zp%fc?_n?Z^#_LD8GY+M>yKkEtLIwjP`tIve_-tGPq>rY?9?!O$p|C;?jpUQT3 z_3e*0wpabiws%VE@qCxHKmPIGlRoK$oX%XIeM=o_0@|15i1earH`^XHAezNz)|uWj>X_0{nD=#9Qm zu)c@AtiBxPd$;GaKT7lIZu{I8Hh&U(S$#Il_s0A@`>E_@^#yx)^qoI%^yTes{wwTd z_5OH!u)f(L8-1DmB=)j;{^ve@_n$ZV+|O)i*-#jlQ&-?f+aut(VpJhUc$0`obR8f5To@Uk|-E`qn7xS6$EM z%j$FX*Y$np-y3~)KkE-+FZcD~=bt%e^!bCVf0MnezMQ_t!UFfCKfKY`4z>Q^^?Ckj z^_g(|-tB&@^%ttA)fdD6U&0%G>m=(>-hk(iR-X;~?~OiliuHR9vtCx;8+vc_y??ZR z^9`++)wggZEx71Oe|V#Bo^JhF>}9M!IDJ&Yd~fu{bF6=Xy{z6pUohVreTDrd8`=KL z>dUy27F?kBM&CNu=0C(<#`@TQ|9ENl?s(9bCRo4f#x`G8@6Q){Z}i0rt)IwV?zS&X zvVQhWY`(0%7gy4P3(WV%{M?_d|22CV>*M&FxRMrJp!Y`Ky4d<#*~?fTz5n|T^xo(z zmsx+(ro8`X^(9Wks)zc>2&&DKB9 zURIyOm9*dj^S#kGZ?XQ3&29f>tdITouh;0k+w*U;{x1dV>$Li6+6ERFy*K*8?bc7+ z!g^VK0dZQ?7uqtTudpv}X}zqz6kb2Q(f8hA^FL-Ut8ch@*ne;IwL5wKwzB!MdVjvq zd!w)1WBv2Px&O5K0jCSV+gdMU{r2;30P2~2)fs)|5$pdpg2zv*_xp?a-tGQz>p$F%J+0oKFZAB% z8-KO_q3wD6w0eKM=)KXmp0NJr9eDh-`qSOkRQi0nNnb;cncwE!OCL)=MW02#LBC3WNe^1U`gwP@<0;b1(kIaC(3jBL z(9h9((%;iZ&_foq?f-$^jlPinn!cVMn6>pEpoh}W(0kMG&}I5tdK|q#(T-;ly?k;` z58iaSe(-+5$Dq$z!KM($8 zT7R@|OqXMl`}=ut{b_rCPf54q=PUA)$>Us)QG?S*K776M#_L7zv$nnWxjk8ZiQ9zn zdgG10@SOD{cD4PH)i*=$jXwLl^*6GY)%$t<%`dZ`>*qFK?zV5TKY+cgz7Sq7z1#c$ zvhDv9?6b7`a_GI$SN>)F%DeIPnpW?>zTo)1(KlYV{$%#D`Vy|B1sCYO(dYhc{Rix2 ztdGY}9aqwV3-sRTn{QaZ!|t~KGS)|*!ot!N)JH z-hY3A`QGjMi&*~x`wXqVfh%dj1$uAvjYX~BX{61Uu|Cd!7FW`O3-sRTn~Pch1bcb# zsQzD%vf=*p#`b!DYTG*?^>}@g)7AF=RBf!-T^ zeOc@O!(PVv=-VML(0jN0<*XmPr|o~8R$oX77PvjXEi?KS*WZ)9tlqz0ZO?b_$J_n# zHvc5`wEC=@hu#}~W(DhSVlS)D;YwO?f!-T^Zm{)p?q$a>V||=I|NKGkjlRWx1bbP1 zF>M12jNTi4VMUvN8hg3hzRG?ods%%6!_xv|ehEkm+}?lo-)jG9_1X5?Gkb6JnU!q+ z*V^08pRB$SdT;a%_M_R$>T{v@M&HZ+V)k;keP(6b|EBhzR-ea}wBVvA{o#%I`61RX zwvQdZjP<*D{+3s#txhtIy&}T5y5=_s0G=R2a+SXsoURIxTuQ%wu(HDkV|0a7`eIcC# zEHL^4kQNwyh5hWmwBwg?JI-G#9KSdE@&-14Pxi9+^1*5ST>BRLX=IQm$65`89}S=hFJDP3N~ zd@Fqx{U|+!evzI*|A$_5QS1Lp523UB+ws-t73k;a_37+l)^A5|Lhnr za(|zO=a)C0U-_+V`zNJ-u=9ie$M*d58{6~7_L|$+_Fm)miyRT%=bp0+u8bc##k?_Z@*BaeSy(?xBH^?JFBPr`tW+2ac=j!TEFTcoKLH- z;R?rMzBl^D&#j;RQ0ry&{`&*;-sqd7tbdlhtiFybZoW7A%3jvra+uAR-%1{5X2A5!P??YwP8{ zKK%WC)fs*B81_e6FRSWG|~Ph2JOiM&BA| z^UprY_Fq=-A8*)yZ}gedtbc;NtiBQc{@)vYW0Lh39c}Yv_4)Al@ow+`#nvBu4ELW_ z-wgl#op*cwb=D924d>J9{p(Lp`lL7d(hb%x@>}a=^>tiH3og)mqtD)C{Rs9l*2nX| z5T3u@=!>^lzxc5>U+%WA-fI0j?B#Cz=Iz$sah%PU)mOv*d$-Tuo!0;4cRYVGkH0Y> zT}cbJhx6x+K6jt>|70&~ehF97f(!KC=qppL|D3&y^>O}N=>v;;Z}jE+tzYzb+kaVo zA?&|5`uaoG@6KLUUks05Z}gdeTED^xHeXg>3;+F>H~Lzy^`Ehq)i=Za=iNU3H?41+ z$m6Hg*F*1(KKG9G7oKFjtiBj}@AmxntUvVkoKLIw=es9;(i?sKL+c9_>t*%DaQ}Iu z&wOhA!Y5lVciR`gu>MW#zHx&6m~d`)#-<{o##1w~Y0tjJIA^@Be#8^xo+6L#^K{{l$L! z`x9DyCj9=kce~%&`gP7=PpdD4-Wz@SQ0wPC(|Wl#d0hLEWq)XU#qj&=-q>E_NZa0W zXW8~-^^I_Uc%!fU*7~p5%j$b^B`vt+`s9tibiVbEoX7J?tIvk_r{3txHR~sy&+|#EFNWjyM&G#7`tqNwm%Ht= z*IK{b1nXt>j(Uq`%kO) z^U!;vZ`^PFGwkInFYf>O*voIwuzhUL8{4ZrW!w9A>hXFlV|_dy{nt12-sr2(TYuXn z*30Tki>HmG1xD|UzV(6imA_aotJh!fsrPR8-&w!wrR-_-+3}%!~DE6 z`rd7=|Cqh3z7<}Nz0o&!u>PT|ZN99&=;mSnz0v3R4ba4Ete4gM=P!D1^tIh={$bZz zFRO3iN?LG%-Wz@O7uKJ`UdH-^(?`j@KSl42zO}dYqbA#YS$#hA-sp1&SikypJbqez zE_^-lMqfD4`XAWK>Kmc=MxPmD{gc<*d|AE!{;Vf`(i?s8Q0r?qSTC!uhWp*PW%Z@-`13|zIMVuEZn9qPwyzyy{kk_>FRL$v{r7I~|8dqYa0~aJR`2(>Cw3^|Ja_=)KXGFR^~kDb~yC8}{X`@A>bIK7XC{ud|ocH^aX_?TtQj zzxDUtVe@76)$sWBMqh1MKjBX6W%adLe7~E2-1_oe*30S(;r+aK`}{p={SJ5Y{L$*` z=@7BNJ?Rf`^tq?3pU7TTUkvlT+w-5d{-}F6pH|<%m9*dj^S#mMU$lOwdwKjc)*qZc zO5yS2jlTMd^{d=xy{x_wdT;c_UhDtMURLkluVDYZ(f9t_`gNw-d|7=xJpa7g`~Q~p z^WM+>r_~oi?~T6sj`eS`m(}yvN&3#eH~P$H)=z!F=F949xRMrJ^rSz$(bqn={-Ou1 zm$5$Xzhe5pqTU;Qi~WP_W%YT>`+9HmxfwS9W%jaq|9%1c?~OkDrS-?B2L|5%%j*3+ z^xo(T?ElSPR`2KaH$VTi%^&-a&6m|z!~O4#`HgR_zvN--W%af2`1eL%`qBCuAF*Cm z-#+o~{_}44{0A`>e2hJ<-alS({NCtmv)KjF_ zH^Y2y^qGOy@5^4kJ$W2kTxfg#^$YvsjqTMJu>0i;KSGU{$Kv&l=UqDZxC)0PYX}8};PhQLXPkILZCSA(g?O)Lo==q+p z<7v{%(b=_a{dMUb>22w8^j>s}{uMoT9qUh_C(sk=C+HjK59tT#)z`KDS$Zt}E`1~Y z9X(*Et-s*2c09xB73gE>4d_Yh+4?)sQ|MpPU(-j?!`HX<|46s!i|I{<+3mN`W%?0% zD*Yn8=!Ulb2lNp7N4i2U@|+z{jb534mEM>hxRGsdXL@h?0D2t#Tlz-&O#0Z3t-p+} z(YMoe`mgk>^ec2`6YD>rH=$>L-u8bay#!sRSEI+%o6~jr=k%lW!E`Tue6oK(a8d9J z!Hc}mx&E-=eS#~&R|Y>F{9|zb#m;&A1&FZ4?1ykWun2A>*y zeeks44}!C=cFtQbcvSF-!B+=A8T?uBLa%ksTPwIH_^{yd!B+=A9{g_bfPZz)UnzL& z-~)ok1z#Tg_uvnM7k<5S{(8ZC2A>psW$@#{?*-4<+c|HQ;GW=PgRcvIHu&4%75?2h zZ;Rl4gMSx%N${h=9|te-M(4aOgU1F>3~mH}5WL`CsPVt2xPYEa z-$OU(7wPHrH*|~6y=B|W=Ip=!*p41Tm+1n1CO!A6-TnWWuTSfbcHi&bncUxh&(U1U zzMr1sZGJyZ4@vIt=L1=Mqn#F9;QMoLe1G2iQ`_FQ+@6f}2d59eet&&yY3mPVFRL%7 zZD4`Xdt-iS8S5+T`?k_KrOsWUP<-&#&KKU;3H#gW1dKGq{o#T%h;H{L=E)@1&l_s+iwOA6V3T zqc5&t{SoYC^?6)zy*K*GVCyenFRRam-Wz>wMe84AFRL$y-Wz>(W$WK#FRQPI-Wz>m zi1h>Cwfj$2-v~c%_HG~lYSypIzCx?__g4=-i4R`1`_-)qL zpYPazZ_MxA%=&rXxBFjK-@ui$-~zoj`dY#IJbM}II(sqAI-{`Y0E|K6Bi+rj3)!d_ON4S(P7 zjlN#Ae(wL+{U@u>;YwO?f%)F(o4Z&)l)a4gasO4)2Nv~}w#?{@yIQ{wds%(Wt&jQM z=v(a1W-qJHh29%|_UAUg&R$lZwSNw%Z~wi~=k~GwY4)=ET=?&6ywMkqu>Mo_vU-2K zJ?WF)=zG~O@&TWJwE8@*qy-n~z0qgOHh&ZLGS%TXSzjU9lmqYK3zV=(|$Fi5zmoPjnFy@zlw7}>y$69|Wdl@(3{>y~dPw#gB zJL?})Ppfa?N?LG%`QGST$6Nmudl~DuA3wN~7F?jOI-{?gXnpP@JO46P>!#2C-ukWB z%j(M*o)#GMz1#EI@2~l^`W&vLMZGurTE*s{#$N8WZ=7uXjqGLhy}07$d$;GGV*Nig zpH^QAy*K*Isn&naURGbh@U*}^>5mGK78ren{jwkP{-bd_?mvIN(R-tBasBPs%j%11 z8(3iU-slUb+5R8LURLkt^*6uH{%ZEJ`f7Xn%=zB!`G4g3*L=F$zRC5!WG}1Fh3Bs~ z=C@9_`GY^P^DnFSuQ%=E#|>%01^UvN*6++-R^RK^NAHckaJKcwvzOJ^+tX&AKX3Fc z_LH^$wED&X+W?ID-stP++x+L)%jz?s_ipzWTK`}5wEAq=e{b{+uD?dh&cEDk-(_V;1gP3`Z?)}jZ~ThPPk-RRxu zgXuE;JNhj8Y0i?~(&OkE^hA1-g3Y_09!=j*SLh~v3H>HLjsB9JLC^EK9nXL*Z2L>o z!|Ao?rMI-(x1_J4cc-7A$I#R1iQ0;6vLX@Sw#uC~6(UdHY1`B*tEaC?4RGy6LG582BLeBJ-~ z$YVok(e}LC$8(MC&(5jG`R%2#etUmHpLIsxy4Lzb*~{t+;lG#iMxVdg`cv4;>NDZ{ zfA4mGxAk@PwED^%?ZfXoesA>k`>k)Xm-~9lXZFtR`43qCmFCmxYi|9X^hs~@O|C!x zH+KGI^@Y%Tqt8BQ^Vec8tM~6WFy9+}fqjv^tiBlLd!w(iKZ?EFZQslORQ9s^Qkd`E z-v5Rj|3vLSt-ca^Z}bhWe-nFIeL3{r=<^TR{D;`f>izlZNuTsaUt#|od%4@b$^Jd| zvifS+e{ak$J#72Gz_<4Jlhyn4h5h$N-^+eI_Okl+6DREhjNZH5KVtLuQBQZ>KWhDH z>S^`4@cZ4~n4g(u{gv!x^}XTs%e%e*&scxI=F{qnxRMrJ;P}1K=by9wdG<2a$LnuC zeE%qanAXR?_u1t8gCFS3cJ_V({r~#+e#@{eAr{y<%r<9I9F-WA-QjP-H6e*OOX8vBRX%iZ=3_HVG4yX||~&;C8XUeew6nHTMR zuE1XIw$HKOioM)zUtm9)z1(eIVt*=ox!bvUVKZCujJ{R`i8-11i&FtlF`#Sp<*~{wv{`R;34fb>XVE3P_z7Y1`8~dMm$?m_^ z*vsm3q4!3gV?Tnu+-+ZAe;|9g+rGqp9DBLjzQX=0_HwstiF)31;%`D%&)K?$zE2Uv%K&1 z%Nu=-{YmWQZu)Ffd{r>j1|Cv|p{6E27?zS(me}}!SepZj4GW$6)bF|;j$m;$1 z!v1^X{8ibn#9mfEtK)C7?_n>i_w)Lj-(r6Rds+Rg=I39v^FM*T+-+ZGe-C?E{jB!C z%KkO>vib!xw!k=k@Bj6F_9s7?qvQ8i=TGkM{cMf%_fEIt{j7Xsa)0kzr& z-sr3B-(oNK^#g1JFy`y;Z!)vbk;!q}xL7QBmt=f@m*@9$2hd~aW9SL=AL+vO_Wj?* zbdkO#+0T14_~YPJ2XwB#c`|-}+~Ci5d*~B$`^y{mcQ3a$XinRn zjP>z+@$2{3XIi#DdG@mUbc)*xjNTjbv+PH(m%HtA>`UzBZu>m@W7*5<3%2`x&o^)E zf0_No>}B=2(0ik=vVVZRtlrPV`SV8KWd8ztS-n5s=)KYRvj3R9+-=`tKj&P0y`pfm-*p~Oer`LT@^6y+dwv&r449Am*Bj?2^O>FB^SM14H{tnRP9Ip*d!sM2 zUuYiNA6b1KS6uInzV^Az-;TYkJ{x*(^z|9mk7X}++c&+2g^@Z^NYw$*2U&Q*e=Hv5$R_}j*7W2K)H%U^3r@QT|zqJ0!MR@$Q`fT|6X{jDFhsP(e?V(7imw+^&^!Nsiqf0W$` zyj=7B|M5YJTE|bsT874&V5|v(u|)*e*q2xaA+g2SV~fdBVrh*EV$G;EmKsad5)7iX z8zq)D7)473QwJHDbTGbu9?kE6&!Q*MzoDnnHM&mU zL%&KtMbDw%pueL(rmH*K_uoIzBX=<`wXChDPWPu9^dS0udN}4Ef&;2bU_w@;mSTCVf)8-wxve~I6p-%F3CU#Bbdf9R?7vdddvr?;Y; z^eFm68rS!yzCZX)7(Y^r54YC@_w@Zi>o|KpeG(qW>!G~x3O#>+5DqcfFh8DOvGM$D zbAM}x9{ZCq9H?G)>GVK1w1yT30N z8}nDsw0;(QS$#43`EXbG&DhEDPqKdVU-0vhR-bcUpJJoWOt$_i_Okl2{qL5N(~kLL zqc2}-{rBu;^%eL1No@4(E3F^1GC%)m^;P%&AU68SHP*kwURJNa-veX)vC-GBv;Kuu zY<{`Bckj>i_3`5{J{R_>tzWLw+c}@$e6{oA!T9>RJ-?p3LhnU?Kv(Fw^b~s0Rjr>v zuS~b-4d}kR+1Ib_>0$J~^i=w2`oN-%KbyXhuG0N?x5sawr_lG)P5PPOoK9A_{nB~W z)jA*F&G~faY0ghMza5OPubF}N^YKsUh3Tb!X^-dV_36R%?sSnJOPA^E>B%&nFF*D5 z_31D^{`&e#aF1VKe`n9fRr~Yvncg{gQgr_G{H)_n*l>gAcWgYrt2f&Ij^h4gjK}Lc zP7yZsvC-GqU&>xqU$(rvkBvTilg)oCdpT`iVgCqwIc?u&|2lg)ZC|?C)<1{6tiIxo zKQ@lP#eTunc|B?MIoHQVpSi{6--NxaK94(L!%bKC5F35|R_pg>FJnBee?I)e*4-Nu zqc5>Pg}vO}<4)MR`^f04({274>}3qY{7uARQy)8-|2FI2)co|^;GRAoO78!+790C( z+++Lew}xF0S?j6dPPCrb=!^GRKZw1oKIi^^eQfmQN3GwFy{x{DJJI~H(dQc0SJ=zy z8}936Z1k-ste?(aR^N7gZ1l~itbd8UtiIT%bN#WC^*?L<=UP9lzF~Ry^C5P!evV&Z zO@2PPzUI~+8-3*kn}2)uvgU8%PS|kM6+Xm9Uwp~>5_=ir@q8|ZU)a>gMqgupE_+#h z-tz7~Hu@&}>)Fd``%Kf;ztCEC{^ai7T|d3wSuKpuac#KSG#Kw!KIGT;Vf1(O2zt3a z?ES$QdM$c9eIGrAoj%;$ zdTY8&?-3jy|B=pTV0<=QU%nqWpT3p8lWx$@(QnY7&~3W!I<~*;y7vBMOL{FD*XyU= zZ;TA%N8&iR{y{ta|eCi6n85@0mw)LN}m(^ErCv3Pu9~*uBE$cTNXzQ0T9_uf;*O%Dn zvn}gyXD_QSxbNp;qc47B{VVKc^|i1DY%tbe1HuNQZ?pf3y^P1P{+c`gvC&sQvH4G2 z*N$IS-*Vs2#YSKL()tV8%j%o%zaNQ>zVMy(x3HJhXK^QNxakTXVxup9Z~Y7GWsJx1 z^Pi{a?qj2GE*d_G!?xjicKovXtXqF<^sWE1ejoO-`dqU2dFzjjKC`s-r?QvTSKae3 zHu~x^)=y(EtFPcr*l^PoKEy_!UDo>d*~=K8Jb!Q}Y`8&Ri;TX$ob?0N=jRWNVd$GH zg%4qa(Z@z#*~I!Hds%%vUr+Pr23h|b_Okk>`}~WI`P&8S?`1Em?`{6-w$``V%j)y) z`o+fljqR<^=I#8+>U*2NG}QWC*~{wV`EdSXWB%$e>yKkEtM6_8{BY}UXD_Rd=j&?J?%w@8uNE2e*N?IO7aQ{Pm+tOyCv3RE`s4MWFCJ(8DE2bO z;hN&t@;HFSxINu`z$)H0u}I$c|rD-`o7HvDOb` zFRQPFbAS!T`YS-#;NoW24Vawf=GTvichCgbg>CKQ{WtmDbO{ zF<*aZjK}q>hF{p!$3|bg%KG)#%iX>E{{>bfqi@}5{RsB5`igt~jE%ljw|+8vS$)>M ze~FF0e82VgvX|Az=c_CHW^DA?2dw{`y{x|B)*l;v^C9b(+r-YltUjKvr}@h>tUrLg z+}*p^zgpyE{WGnfz&=ZN_qY>X|9Cy<>rYw#B70eV!F~S6M&Ewc`fu6G>f`x(I{xbO z)(_p(&Y!Hlk*t2+^EWo;FTP;?iR@+dz0Kc#(fY^O%iX{l6V$1me?yngkz{>pnc|IzGa^*Q(cF*fF}&9VM+_Oklk<}Z9|{omQk z>f`y65A#{BsotUsB(tUkMJXCE7V zVHx`eMz3NotIy$1*l>gSW1}ziv;KV@KaKHeu774Z>(|=c&YzsNuPtx=vFzovePKoG z?_@8lFXG_C2IKf+CKQ{W>YS#Z^3p;-@ z#-};|h5pu$WG}04^ug@&=8ui}GizIa5qnvE-F^L!jlRCV^>?$E)#swGmpJ~|=$o5b zKa0JrzK%O#!wve_=qrP*-+PFiKN;iGoWI=W)?dS3R-bj(KQ`viZ*BeK>}B;$+zA_Q zu>RQSGuv3d+LrwMq45ybpLgdkb~67k>xZ(>)9PFH*TK8zkBvUNuk}Z}UO@>}8C{`U|Ut4`EXu8-3*r>u0c+)z@$*>SLqNon`%x?B%q5<814<*~-qp ztiIyrkDVOyKnFr|t81SbrybS$!RM!iF2HKQ@lP zb*J^ix3%@l7@y|#vvQa9Q`yUD``q2uzr$WupL5Uu*jRtzUh9wC&ekuhZ@A}QZ1kBY ztgo_{)%SM&YfoDLI(u1t-K{@1<}d!q`XSrf`epUK&ENjB^%L34Y5VFk*3V=wr|t94 zSwG(nw*GGO`P0CT!iJl!@F6yizx}-Rx3ZTpK6(E2K|QapMMhtJ+4@)5%j)$Pc3{jO zJL%uG{(JSb`rgie{yporAIjsW)z{to_t==f^{w?Mu$R^MHh<+i>+fYRr|ok;SpOw^ zS$zw4!iF21zt~uRCS(6W*pEBf@ymD!*Drp(K_44^eLm~29cI0(zPIBqE@1t;>}B=2 zum)@}=Fb6PgE4=Z{gOM`{4yTL`t#uzHW+}B<(=z5`#jlOl7^*6JZ)%W)Nshn>8-!(s-w$Ghu{VH8{ z{Bqj9ahCN5vX|5LrE%6@$zD#|XDZguVlSudYvZk7YB#=q(dzTK6E@u7`o+feYfi9! zANDfF`m3z}S<%+tpw(CVcFrFgeeo{q*I+NJ zZ@E4;`ut4mcVRE9Z%03G?Fzpc8-4CY>rY`Xt8cjDkBz=H%ld2C%j$dm{CVB_57<{| z^%?j6JvQdAylH*k-R=C#>U*0%_c!YgWG|=f8?&vyfxWE0y?E#KkB#-$|7HEl>}B;8 z_xc?heZFn|H|%Bgy&Zq^-`4N7hn+uJebN2>m)Mv;w}kzH=*jG5^$mCZVxw ztYdwCA6vhyzJWVo!wve_=osq zU(Z{=#C|rvoVG7+X#Fni<+Oc!BkO<7UREEU@1D+oeG}^s-km#FY6|FC@m%Dr12^(&Dn!mD#^_Q}j)AqT&te?$Z zR^PznVblDLMCN4u?B_qoj=x2#kIz?+>)*%b--&&NPTS}9v;GqHa@xMJzx8jjm(%v8 z5!SDCupPgwKK^=%$}*?>MOVtHr(L&W8?U%Bdx!Hy^Qf`K7UI`TK^e)S$%Ko&y2Qy^O7CEtUi9d!1`lj z{mrASzmmP2wyzyy{bq;S{IdGq)?YZz`myX~^}SvH_89AzJj~{o)#u&&m)JP|+zHlS z!CqG1+xiI=9NHr#ZD53$i_uCo4d_A(yA>t7Xj z!iF34vC&trw*C|LGRC9NxSt=#PWtPtU;aot|5aLj&VByGMqjU4Kb*a+zUtT9?YHr#ZD53$j=ZnFMS_A}B;C_w$F?N&k@bm#U}L7v21^(PtjBemZ+ueSE%qI)Al>^`Ehq z)yLNxeQeC1pK1LHqwW03>T`Dby3b#1^hNetvX|9o-OpcQqc1&U^S{hqR^N8>$4=&d z*7~nCKdnBVuPgj!>}39ztiR+aJN^=#wlBYG{eYvbm(|zY`eS4M>@4dKU@xn$xX<6% z=&Ns7Kjt`_Usj)Y&%fB{8?&vymc6XLxA!mQx2?~P;qlYz3-0)1WBxkFZ^~X)-^QJ= z;ifBmh>gD1;`-Uk7?0PVV)%tkeQfk?_D`~x)#okm?qj3Ry=(Ko&0bbtcCX*D(O2KI zeud+C{b=>c#L@a=C;j`@-=&^T-G5;H7G=&)t1sYAG=FT&-~5O5FS3`_$6qhI!f(b# zU;5Dc)labbW%W(miRO=uKL0Q4A7wAAZ@4}-`u4}xAA6$BFRL%QJ~sNoC)Pj7URK|7 zeQfl(&#YhfB%5DWUvQW_tcmBSU-}zoVL#{X#Jh+<+Oc$A?v?p zFQ@H`Kev9n)A{_P)AsE}tgo_{)ArTHte?$ZPTS{~uzu|`Z2hwOX1IpfU|hf0xc-?X ztsilg^|Jc-{RVpZ)G$65a&6Z;zv}$+vpdJ!9gKeu zWitQ0kWusu`gFQYUq~;ukNx{2*V0qyI{h^LB)##zHvTnwKl&s30s1?-O)q(ltuMcy z^{dg%1I(MyV@H^W(RF$R{UJSu&K+pu$I~@>3Y|U39>0aYk$#AtOTR$p54Q0wxespqo?^f~n8v+VIp>Fn9&Tj*Wrhv|*S+2b#%r{AORJI5aX zn*NerbP}&m#U5XU?oV$-??vxOXU5z35%duHc)Bsc9-m0RN?$?Gp>L=APPFllX*~T3 zea$3${Gasm^ndBO^pd}_1Poi`5dGuNI)pXy< zHvTSpF#ROmq+h2;pKs$orq7~(q`#z>K9|?$0vo?3y%N0zJ%rwk-itn*K9)X>zKFh% zuG7=#+4Q}1p9^jNKhyo`ztIKyGkPSwzyHap8R`f^pxO9dh;1>^?tR;--GdfH8$SwR@mRm{mE(jCi`dD%j(;1{@9qm z(btaW9rm*Ntm|W=Z?gZ7=BL${+}~G>jXuAU&A;z&cs^m%ID04{R{zFD5dhud)B0y{tYTjYlspcd@-bpT*a^b?B+| z5V}cs(eKmP|4%)i4-Ml-a&Fv=3GV6n+~oQn4UZ@Py(9ffa8J+Y9QTR&aXhhcKHBWR z;QnNc$MuNE_ta-swd=8P)z%}cuZDeKgVD#v{5AHgu$R@BlX_ks8+~>)n}3Mrr`5;v z^*BGr@2UA+Uvu-v#{7j}+Wgbm%bGtPkNIPxZ?XT8y{ta#=8uiO&3>6n?EK4V`%HgZ z{{Z%~`ih%BHs-IeAI4r*Uvhoy$6i(+A8%Lq&DfZ~#{L8La@xMZ{yX+^+P=kp>EGJ(Pfpus*0Ae0 zh`pS)&#@oDUQXK=*q_8+PTQB*U&vlg+gI4%$X-s{*VsS8URGap&)?X1{&$~W$^7_GkKlU{`ZQtbhliAB@`^-AF{wvta>I-iDv9bOF z`-j=f>T|A-{ZsG9-U<7Q-;d1+?&!RTXS{cVolmc6XLg*#!x4f@#Vn;Y2tlc(DJGREWho8cEW^|8^{Hnjd;_Okk_ z<=uU3^!bgfe}lc8wr{ZifxWCg>*kN096$T@uH^C4-97Gv4L4okLpCz{*2cE}-?Nu7 z4CgPNFX_YYVZ-C-+w5ntm%Dr12^(&Dnm@Ct&A-=GwtiWC$@Q@@e`%2Q6WGh@dwc#i z2U~v&ds%%2iw_%&^;dwf!I;0enf1@Im+^S=`G>(_gV7fg&FgFIzhEz??c3~Ey4ud4 zoVG7)ZtEY)URGa-){FJW#_?C!AH`l)UvqtI^tml;{wvwbY5NBIXV}Z?^KSmwn7_^b zBlfcTy6a=3uMM&FXRopIFRQQNPS|kMh4GQm7q+r~Fnbxp(tQ3E*&oJUR$mMI!3HPu zCz|*CYqOuuURGa-#-opo_2;*?^}obkPTQB+f5To@pLIVUijDaz+t~cSxYo|UtiI&d z9~*s({c!ej+P<)@&3_tuS$)>c9~<)**~Cf- ztB=>)6@D`|`Xc)`*vsnM?)=40=HJQIf833>{sOJO<<=h?eQvn*SFxAXS6v?)eVzT& z>}Bm(%t|_LuAU z>9l>7HPP_gh`(4?~Y5OYsGJ82~-(-I!dpT{N zE!y$V)bZ2m%kJ|xHa>qV9RCS>S$+KZ-W7f`Hu?tpWpB0fFQ@G@yW9E)v6s{K1@?Qh zm(%tY_NTL#)AkMaH|qH5w0&j|JN_qh{B+vB!115z_+8&}*FQF{Uv5vEf05~S{p7Us zm)NhvUQXNB*zd$%PTRNGk7h5Y?Q?tC@lV$A(`ow>$KR#ncYV>F|JXSHb&h|Ny{!3b zu8)nrxVNo;{@eKVi%#3OIeq|pS$)pU9~<*$_p$j8U@xcb^XwMPNFSbuDszdHMiwSHQC+4Zr} z=k~Yx?_@8lZ@4}-`WE|_*~{vyu8)nre1OgWZ}xK9J~P7lzIWL5m(}Oo{IQecXTJ&i z9Id|M`q=1e9KR2HS$)a%vC(G^wDq5$_0wtl6373Vy{taI-d*80V`Kg%`|0du^-Z__ z*vau9Wb1!k$4{#-x;{4gHphR?UQXK=4z~H1z0WW?Y5UwLTmJ*><+Od7 z{p;-Iw0(p9f7r`u`|N02f8V?L`A@4ah3kk7#`CWPgbl{?ugvkAu$S>To`1RQSo9s*MW%VsLe{A&iW9|4`_uBlj`hx3Yqi?fc=sxRZ^?BFFMxQ&*=FhR0)t6l# z8-11iX6$A4RoBN(<{xA8@2~l3^;y@)MxW>S)7i`Fo34+IK6AXye+7G4ebx1`ljCRq zn2w)L+vmzQ|0g*kM*zRvzY z_Okk#>tmxYo@nczz+P6LbA4>|W%f6-m(`bC9~*s>{Y&g+_3`m`h2M;gzQz7)_Okj0 z?t~3D=wqX=oovVd?gMuHWQ@n_Z#-X5^Viug_#j_DX!UvA2^((E$Hx4vQ*8dD9=2Y_ zc+6i9zp$x~jlO!S^;6i(Y5T%y)<45uR^LcwpErMO%%2%+{paju^(EKGMqgsT;tV@} zS$%Kkzs!Cc_Okkxn?E+@FP?7epUGZU-`o5p_Md3|wEE2awg9*bA0j8mf2Pg<#3MX@ zT7BE{?&}{rS^rtqf5yH@tB;@Wm_Ii9>^STDJ!WjD&Hr$|(jlOh_^;bW}_0t%i zeE#50*l>eB8yS7MVtt>6^)iN`Z-!skVDz!k7sgxPWG}0)Ar71RS|T(07W-u%xA|rD zm1sQXkBz=G!R9}Ny_~jhvA^aC&QGh4uQ%q8jrp4sZT^dAS}&__xb??IU!7!q`6=t= zw0-ec*01m<>*ch4_FU^{vX|AjaVKoJNsd1<)}NVd{c(S``DHwW=TANwk3Kf~{Q1^* zJ#D?LKIi(_=!+Lv|I6oi{B+vBe4+I_y+!JCF^B8j`LT?1nlk2B3KGo-M)%rbN=K5*%4crMEZZLmr z%%AzK_0RpqdKnL4{zmwPt-CiSM&Dq+^DEZN>XU&{A3NzUwfUEQl|8M#hC5Lo8-3|A z>)&NBtB*h5yTWhAMqj+#`r)tJ{IdF5^z{aPZ1nA^)*thh^|Jb=Ek8MI^s&)5uC)H- zw|V@u`uO>RJ~sO7)zJxwdRcuV><1f+`5QpkV9eiQzvFw>%Xl2~7jP$RxIrHq zeeQaj|CIMRKaKI|Yq%3O+@Oz*zVSQj&;G!A8RL^4aoD5qxC!g(|TEb)jj`Xqc7ZI{WYIhFRRbvPS|jR`D3Fm-)j9@|F&MncpQH_{KBR_ zHu};L;XkDpc_Ki@HbZ1maNtiS0C>t*#>+==FojXrm~^(%a7y{tax`q=0TcUV9F zx7N$*N4Z`;{)f(g@8Bxur<}iV#%_P=zb6{-W9NTQv|Vsd|2px^Kt1pFpV1qG#2?!gE z`SbT%ztVhm{$xCk`Agv!Hn^w0%6?Dwvich0u&J*list{L%|A)=)9Q=Sc+4Lg>#uP9 zZR}^H`zy5u=Pr~>d_l=t+=kN3|=fi^W@3DQ!e{bPry6;8y z@7bJ77wD<2>HLy(c}I#`*rK*Q+za_>sv>_F-ahPp?<4hwb_GQg|G% zS2FgG=XaU=fN_0e@WYQ?e8e=PgWm4KheiV zUt)h2dpT`iW&ap^S$!#4{k+fD*qFb~{uTDJ`kd=yqt8BO$NvF)S$+Kah~tlqzS6LM zE_*p`-+tWs#TT^eDXXu#&-d8L{C~23ZT1yfea5|B$4>g^tRK9P&0nF_$MfO%W24VD zt>2x!tiIvizr{x1{EPJ?*~@AB>MZL|W-qJHy6Ybs^Vit_ioKk+ud|=VURGar^T)>g zxz}v{-?5j~$LsA1zZn~So_*hi?fS{;bGQ>W+@Oz*zW6%NAA1?&@p{z2ov`5seQfmE zH?427moXlF6?ejh8}zZ!*Zyk#PCvKx%NUP7{(M6pJDGpB^|!Il(&{U?6E@tSkBz?i zmh~$wV)M%wkNI2S7dG{+L}v8mx2@lsy{!JcXgubRjXv{^^_Q@h)ff8M4q){1ZDBmV ze)svceZ8JRuSLH|52IW3X!>({Cf#RI+uv+@S$gnqZ2#-fWqM2cR=P;fqz|WGrB9`o zyV&-3K0S=ShAz=}!QshX;n&~S=&AI#be;bBVmAH(dQG}X??it{m+8#<_Wl6p_ou$T zUm3=av`dkEyd}7&ukVHT?0U`(kK^mRyz}Bce|>InpSr%Wljq0#w!dRTkNst6+{N>= z=Kg=pvC-G&SpNchIln~D>&fgIb{aOVCw8*G&Fp`0eq89Wo*J$7#Q(o(JYQoc$Fqa= zPqEL?>RZX|^X89@zQyrP_Okl;^%3*OM&D-t9(!4R-pwByeQv0&f2Sqw_+|A)*T+U* zW`8_;S$#Yo)*l;vjr|4eW%XtEdJ!9ac4u4vT=ug1HtvKCH<&**`pmA@A07V3*va#e z#zS~M#^ZbH+g;ZGjlHbCg*#!x4f@!azge`tYbl#w#(2!XPxysRy?ksKkJrnwe0>>5 zUqn~wx%BVo=cm}~)qV7Gmzn=W52W9uhtPB2Y$mf@%GZ~r|F84)rGIcwuP^!C?fA!r z$8rAU3xg-wp?4oY&PR*Cr}GgT=QF#9?e8w`PsaE(*E6%1^?znBtB;?*xSp{wf1dq& zIv!emeEreKPS(GV&HrDmpH^RW#~&MgjpO?+ZRb-~pL6eDW20~EXY+Tlm(`ct{ISvJ z_P2f%ds%%Ecfy97uJ9o?`tkwRPhc-&Jg#4Syy#=2&y28s276h38F#{l8}zZ0`46=I zb#>*B=W!=&xWW2kqc4xN`S;QKX^hA9%Y|RqVDvd4Y%uyN$Cug5cs%+1 z#o(~P=-Y|r^_3%R{;BL`_4#N#`q-Gi&i)?uvihv+W20}df0@0Uwr{d;vzOEME%u8n zW6vKsZQo|UHhVd3pE=Ub|1kEl`l>sBv2p&Y>_@Se)AqShHvhToW%cp(!u5}h`Sa|j zv6s{K1@;fIm(%t|_OsZ_>T~Y=#m4%}?7w9%r|qlkm+xoKA31GbXTKSHS$*EEKQ`9i zVt+7uS$%xGxPGzGXGYugKbyUrw$HJ@mc6XL5T?KeWBvjVHW>4l*gwf$#^ZSXil1-j zW1}y#f1ACWwy&`NhP|A&ud-iuSzdoSZC~T~P1wt6`#Sr5*vo1A2K&?4%W3;2`zzVY zY5NxYhuO<%`!@R)dpT{NIm({@KU>bOpPaVOvLC=+PTS|$@6KLM+vnMz%3e;}7ua9T zUQXK=*+0o%PTQB*f6QJ^+n3odyu4jMIc;BIzdCz4ZC_=-Eqgg_Ut@m=dpT`iXMYBJ zIc?uye;Io@ZQo>nCwn<<-(vq1dpT|2X8#U*Ic=Xg+CKlkVK1wXzuw~OPi%bs$+Pdb zf<6D_w0(*F#_VPF@z=W^zy7f=vMu<2XoxQBS zxB1)bpJy+t?`{6fF?RhwVK1xiZT>v_C06A1r`7j1e}UuIWiO}gi|mK9m(%to_D8dq z)AnWd=dqX5_7(OwvX|5LRrZgwm(%t&_AT~u+P=>IJN9zgzQKN_mF)Q=r|p~U3+&~z zeT)5}>}B=2@E#l+jL-iZ5H=XEf0<+L^XDA)G9F6v^NSq&8hbfyUts?zdpT`iVn3U` zoVKs9|DL^^wy&{Y?H6|a<+Oc+{r2o-^_6fPu)(-~6(DRdu3zCeyMBkWm+^R->sMlb zE_+#h8Iy$##{97{f0O-<>}B;8#9>okNi=W$#WA-2C)mp$2T$Ty+-QHTHS9OFzt~t$ z{xaL&k}LD|oK|14{QtY2I>#TtURGblov`5s=OZ@eFI-{sU(8;{cwCR(zMd4>&txyF z&xL(pgE4;&2pf#~%j~~lFXQnv&xb1eO;@q=C#%n6varFJKQ`uXus?~ttiFOcZ0akC z=B>Xl)z06e?B%q5gZ+{@z8=$Q`@)qre~G=Uz8b9;#~&NV-(-I;dpT`iy2|EXa8+Bs ztiI^xkB#~3?7P^@Y5UC8Hvi@9W%XG%e{9U3W&bLBxx06N9+QoXK6kCnKX^4eep!9q z%^w?mk^Ob-W%X^>$3|bc&gP%ZURGapeQfkq_5**(&mUTS!S%7xH#vS3ds%(S^|8_C zr`h`d$X-@ocYSR1E%slrm(^ErCv3Rs3Lj#lFI{i*@6eymUmD}_`jZd8u&IxYzRK}u zv6t1?l6qbr8-4zFHvdcPW%XIt$3|aZzr^acep!8E0owuG6+Xm9pSjuQ-=Dp#zJNPn z!wve_$^5rif2HQ9)yL~a9~*s<;~!uztIuKbu)*kaK-ggPW%jSLm+^R-uU{4R-?Ep} z_Eq*Pgg@-ZpO4FF`x^TKds%%6cfy7n9Di&ae`dO!|7Y3DcnHVe48O3ckBz>`ew#II z{j&NwmUs8D(Kl|h`Ny)C)$8w%!C1e1Wf-61zH#%S^ZaXdKE8qT5zcoxf8{)I?auuT zcRtklEaz*Tp9sd^?>L!%|Ke48GW`$wOL{JS;N|xBITl&R`eW&p=q9}$-J%Qh##dOs zCq0@zl75~(ogO*W#$QCwpr_GI`W|}j)i(Yqde}AQH|Y}n34Inl-vB$FJLqMCoh)JN8$sw^+wO%@%Is*2;)cU z!Eie(xTn8Al)1}Z9|mk-uP^fU!IPpMQ{nY0$KQkTdJ!A1H#zR_XzowOc=W~a3mc3+ zHu^IAaqMOFImBU8pG#y$Uu8dqy{tZ-uc!H2?C)YPs}Gkr*))G_%-?4J0(&`apQ+pR z_?W$%w$HL(ctg9Ma@sz}zCU|8ZJ%eq6?<8IZ|A?leh>Dt`uKd~`o&JJKl?H4t907F z#_<=hm(%uj_BXPZ)AkMa53!fk=iKuzHjcl={uTDJ`hx3YqtD%K&%aOE%j)Cv-P8Hc zvtMi@d;ZC3`vUuQ*vsnUEn@ZJ%Yo4SP9lpJTr-dpT{N zXMZevS$*<_H(Wy)=RY>ifBp}4{1epE>WjF;41H|$mHVxq%3f9<&)3uZl|Nd4hk9Cl z9(SVoV`KjM1J*a#%j$cZzy6^0v((e-R^=h+|4UQXK=*iU9Jr|paEZ(%R1&n3^kd7nSA zasA5d8|>w@eU<&2>}B=&KDGcD&mZ}_FkWlHi2j?}_lq<6{o)|{4SG18xz@h_Jc#Z~ zm+3q`k=~xZoG#JRgX8&McK!zA!;`(q?|*(V$owHakZ#k%>4o$5-*X*H=jco60zHG? zkH-1=sqe4e3*$%PL~;9fa8KV~H6F9ir)>w@=c9aZ@Fd0I7W4HFzlw|6Z^F1fvGM%K zK4<$ohx?P&w-@T{W24W!V*R!3W%WhNll3I?M@C;{|0H`^eLfnGJ~sLa`?uN4>f5*z zHr$|(jlMj~)<0k~JD)PfG@ZC)6UmB;c@)@ zQ~n~jr{`Zd#AMU?i;eSN=l=R_Vf&LY9_K$EkLwp3eS`fv?B%q5lYN1`oVIVV--o@N zwr{gPj=h|=&-~S{#{~9r+CIzva`tlCKF5AKdpT{NXa6XBIc;BHKa0JbwlA`u!(L9? zm)I{b#Gb!$+P=(wdG>PJzQTTe_Hx?3%6=$&Ic;BKe-L{)ZC_`9GJ82~-(Y_cdpT|2 zWPc-jIc?u!KZCuTwr{h4k-eO@&-~3k|6A~hP z_67E9v6s{KMfRJsm(%to_Pel`)AnWdhq0H__7(PLvX|5LRrXWZ%W3->`#O6$ZC_{q zJbO89-(dePdpT|2Wd9X=Ic?u!zvx!>{Fl||l6ODz-hal%`BC=ijmQZ^B+ypLgqzjlRTw2d$r0UvzzJ^mUHk zhrOJ(&$Mj)N3oaHx7_@(F@KBwS?p!?CHMDs}|**dtVpGQ=`vg?0IcpN{Ekf#Svih9h~ zKm2O&_h3AqV&nN#{Mz>S9QP-u?Xz>Oe~-PazUJnSjrr^Bhiq@hBd6_)-`M<@v6t1i z!gCNCjN^}u`SY26$>V=wFRL%`^GAJb^yNO*x7o|;i?|au^|8@6erEluJJ|8d>dTgQ z_py`pFKGSF?DMqxrh7e$jXtx8^@E4<>lv-S;O38wzQFOL*~{v~r&zMVUExD)^hNfU zu$TW7+|%>9g&l=W`-_eJ`}x#;gVV?D8x^(z5#K!*0E7|^z z2|Zq~WgLIo@G;`f2rf+zA_QFn?_HwY9CkpS_In$^3m#&+99Z(dX8)e#mY%zpOsv zUf*LU{RY;5rJhzl3wNUVW24V(Wc`{&o_|`sUccb3@If9L#;*~M<&lk+#qKks;qbYV zz207r&Y%a=7tvMvI=V*J>8I%@=@$JO{T=-go&TN9_g!!h*5fJvv|Sa=|^l-sK0`^*A;>j@J|U%HT=S@nOFH z;a85o2jlw0#`P_7e}CZqWQ<3j4ZpC#=wqWVv454ltiFOcZ0akC%;;O}KW8tik6({4 ze{A&G!FE2D-_y>AoVG8p--^AQwlA|E!CqEhh>jQQkB#-$*-vCItB;Sjr{iz2pUz%Z z-*WTE#{7-V?EF2&URGbmov`5s^T$S?-@^J9dl}>L{Aq??*wn{HpBZBPe0%ZrMGg<4 zFNa^))W=3&=J-|F%NU>L`CDPXC3{(Y4wHvX^XC$oF@KGHg}t1%Z?JE$m(%tw_Ve#; z=TA=CXSTHSza4uyZJ%R5k-eO@FR*`sy_~i$vG2Q&9lxBmudqLey_~kMvA>?ZoVIVU z{}+2XZQo+Q!M?oyblN_%m0kbS*vo1A9Qy~@%W3-p`ybiMY5NlUZT92!r_=Tojvvon zPTSYmKh9oG+c(%Ru)nQePTRNG7ud^b`^?sM{l~GF)Al*`kFb~1_67FevzOEMCH7k# z!0S(^?JFE#VK1lcYwTyTm(%tQ_KS?*_5UB&-{SZpdpYg=nSx#aOWDh5`yBfgdpT`i zU_bCcJAOHBUt)g>dpT`iVgD3+Ic;BKzwkk}emQO5V81(iIc?u!KaIVdw$E&1*MAOs zIc=X~zuCcd{Bqj9!2W#pa@xMc{%`E%w0(vBYKPeR<+Oc`{mJa*w0(p9Bkbk0eT)6V zC0oCow$E&9*MArGa@sz}{mhe004Mui8zHcyo{xyt0k2;Fpk3Ng8&==EH`gg(ceD^v3 z)p^MyI>)aXjGynf`SYkeJ(u2#&TeEszdw;)i=ILk=!fYN{XRXG#`*fGpLZ>KWarPj zmJ9Cb=Uw$3?fE%6JdU4t$yWwX!indG`SAUIF*2@KY<$0-8D{%?ko%L>hf|bnF#6c& zv+V!QUQXNR*e^cHjz>=0=h^4k%W3-p`#sppY5OAkli15?`x5(U?B%q5nf){DW%V`p z=Mk}!>$kIA|Bu*bY4!2-?&FR{ z_Okk>>tmy@?PBNeD)w^PzPzjTPqUZRXWjg?tA3HgI_8YNp((3cB zkBvUlW$W)^FL(ESYzN8E@IhZMjtS#)+&6B@>Hc&Vy)k`QaJ;^;&eu4<;`~uCzP?oX`ahSRO0RT`Jzl3br=O+| zq+9evIh@@sjn}ugz+PBqPe{l+|$>W{2q2a*E!anPx9`;J$-%2aetV< zD}0EJ=SPwI8^is{7>}<{CEN)cZqUa@U*FT#b2)n%V#nhhNybdt+ksb@tn^m(@4j*O%DnD@WS=H?f!1m!kQw{@CbS>>p(>tB?PE zKJ>BCw@2Ijud|oc$JZNu>}38i)_`V#x?*~@qweIfk92BR+kVS~}v*dNVa#^XubY-)erzY82b*LUI9mxJjUbeZ1xM*I3Sk=~2GoSsZir*EWZ z(EV?+{v~=a{rBMbcosUzzW(I-^`jp>nBJT&()-b)=`-jGeLY>Haeja5>(R4e{79Tw zZhsB#>FZJET)Tejp3K)TdP?vl#o<=hv&`Rv@qCJn=R=wOAGtqSeZ}>$(YM*Jbc(G< zR$p^{Z1mOh?06=zm(%w7$<}|tURGap^T+#^*qo!285+|%`_aQ(O-UiH-A7Jl~GzYVJ?I|NpbUs@q>|?61ZBeZ~FBIzL(0$4;&<`|N4FzO?#+>tmzO zUtq_x0ee|}-F>}`ovi;N>!-7C(dzTK6E@s*g%7dOXMbb;!eedyGRF50ze>0hHr$|( zjlO)b^`qF!7>~Z<)*l;v`x5J)VlS(Y*NgdMqt9JxegD&K{j&Nj?t~3D=wqYLPqDtj zUdH$|>#tvKeT%)Uz7+O@4aWQ>AZ#$^&t75uf@kpj(|8>7m)+k_i;cc=mGwukm(^$8 z`_J^!+i(Kqk6^$#3p z$1kg|xzC^2=*tgTKZd=mK8J%38;temfUv>ntL$%QFXM4Mf8*mt9~*s*{Y>_<`a++u zld!?)<+sB493J4d=sBI<*!eK$-v;CTZISOcZ=^@k_tPiS&(M?T+4L0pGx`pC{)+AY z4SE@RrJL>j?ppLPdJFnMx{EH;htki}C)4lK=g}MAV*9^}9!cLx&!8K@Ii0+4`>FFv z<2xVU!Fi1HHO|jEf9t%?1baW<;QR00={M*S-J&PabLrpF*-h-{OEc-U=#S|Fjpxr# zy`StmvGe`pD#1OypKLv9pD)LS$MJqr#{Sd1Ue_M8egb zpQZ2%oBC3sd9Obu_EXr)>T}U}%pV)`SJ>afUQXNB*#CvStUi9d!~C%^f1Ukz>}B;O@FQ@J6>?g99)fX{&*kH^bJDLBlHve?ZPpi)-^}Ied z`aH+aWG}04;ZE3agZX2l&(5~_H$KmfU&eTxzxeAt`q=1mZ(F|;ds%%Rcfy7n^s&(w z-?4t9$u_@?@tD8TCwvH-`q=23?^(af`PR$otFDiYzVxB>cd?h%x1#quSbuEvg^#U& z?E;%$R$p-Q%l{7JbIFm}ho4>8>6M*F1g{a^FTBdHpU2UCZ?&(t=g|G9n=he<(Kpij z(SM}J($CU0`Yrkax=lY%FL05qr$zUp+w|J>Vz=3PhR_4)-RQmO!-C`UajNtA&cAd1 zLoojQsKl?gv+1$=dQ4a7C4X(>r_$@vb$U1YY5G*UMdSL$U(ct7$Cn7d*;v@F=j*{M z2e-y4j+wW;}eKAst5UixC|o12^WNu0@4hL|Tf-{Jh4^JmTr zS8cu8-)hc7oQuvQ6IZ&|Qw_%PRJp#l>Bg3}-aeP`c(yWM5RCD~f_XL{&u(L0{Fou77o$N6jLrLM5` zYX1WgS2FTYIy=hdKa?)gd37n|3=%J!eD zn#**XzKd>LVvm197cMnxzQz^iL08-UDpSql>CCm}XY}~>X00!CvpIW>J%97`I&_KN zp03gd(+zqo-KKvVjL+x#-L`+Nw|r0M{P}y$FL8Xi(K$Z#ui?FTY_vKN%n1kJHnf|KR*O_pkB);^XYc0SyBigUyHOXpwKI`==q`B%<&Ilt=sz4MyackaK-`3&b9 zoSV*HJFoFOw}0m|oo{!Z<-G6>o%`Fwd8G3N&i6adcFx?`x&QT@4|P7@x$ZpMdH$O^ z_rI2N(fK6jE1YLI|K0iLH+Rmrf%6g0S35uM{4eKzw{-4*i1RVdmpRXL{!ijc_vh!D zw_^X5@bAflPuj3un>f55zQ{b&`CaD)r`!58ego$NohLZo?EGTlO85N#q1zAHdX~M- z*4uo+d?=m!(0pp*@P6e}^L5V8I?r`p^L9HP^?M`^@4vafv+3-Qw*O1%%!c+2-z{{7 zemHUX{&ypL{0rxSci4P-e3bJv=hvJUz0=Nz`c3IP=c~~r`mw~}LT_yAS^W1lzdYLc zS?B(Db&fyV`6cI7>z(7rJO9Ob(YrgxZ|gkP`H#+DId61N=l+g&zS;Rb=N0em?00uQ z&-pRu&z;w}uXBGRoG)>H+Bx%w&VF;}Q=RW|{-^Vb_jm4ZFXtz=Aq8<+c}@_{Ic^B4|n$aIA7-ctn;EXI{O`* z$2&jd{H60Ik96+uOy@_OzjxmJ(awIH^JC8QJ=QsXd*^eVpK|`(dF@8${tk1#%K2~3 z%Rk=P@9#Xt`Bmrtd!n=7&G|g%r<{Lq-sH*7{T=Iklk=O-OU&%-w|73%`CjKa&TBr^ zxxbOl*E_%Nyx5;Q`=QPkIKSY$_@6uby__#|e${!2r#t(h&SyK{@BEeXrq6WlZ>;kS z=ghO6<9BqfI=|?=>~o#{zRtgPe#v=}=R5lyoyR-RaQ?x0hZj2cH`)0a=Y?ME9KVb6 zZ=7FtUgo9Fen01_&cAp5(0P?+=l(`I-|qaP^U^PO_WL^D==^WzA%E%Y&vkyzx!)_D z;}3MMIlu3`&a0jMG0t~7x1Beh)!Co!{Fw7XuXT>!-T7+gx1DpZclM*4A8=myjn46V zJ5P81+IhP-JNpZqUvgghubt!fcfQ&A3+HYB*4a;S{=j+D*`4DraBevdc&l^#c;^?L zmwLN%e98G%=g*xtd#AG>@7#3m-|8HHvhx$pi@)1B{t)NiJOALk+uu9;Y0h(;H+rvg z{7~nEoF8<4%Xx$MvA;_9_fKQ#EWe++l&;dhPaOWda})c1>tp9ZAK3cz_yp&M^Y_l% z{-d)$*ZFzprT*DDzRURn=VzUN{-GVe*1IEJG7e?M>(JGe1r4L&VAaQ`(Gt-`12pGXLGtuA4F$1v-5cZU8H}NI6VL8N1VTM-r(Oh zzs4WsTyvh4I6VKj|IFv;E14#JG@aSp*7qyANY@gFpTE=ZIIr@Btw)a^>RfYv+j)gA zZ9VFDp&Oj<5xPy!qDx!YdOt}V{=Njg_J3?W@{!IrIlt??(pR1R-igEc;{GSmZTfRM zH^kPH{o0PFMXyWex3tHHCk}tUO<(Bzg7Z>yZ9N*lhx2cpn~B4pS9AY;zOnVx=+o#X z{aZS}m96j2#NqRsp5r|5TU(DFALD$d^T*C>{@2!{et){o`JSa)^!s#vYg^wBiNpD$ zhkVELL!aq9!}(k1LEm@wCngT(kNdlUuF*^XVC!$vYtf~Gt#8Z3;pdmzm``=CJI`@m z{YP7m`h%P=O&q?ybN`RgIeMMULdoZMk=}uB)1}1W`fh9Mo96tE^Q!Y%;TI{clK@ z>FekkeGlEF|CBiVynK6G?+?y{erD^_<0m@b=KQX6zXff5>bIfuobPtJL_bDX=~ohm z*F$>Ig={_Y_Ri-x|IztV=U*;t>(lmZ%bgntS>^xxc&i(D< ze3tVq&VO=lIsa^l&i((=`5@AOWS&@^cHk}CtFWf;!LJR|H}Ch=dYdD>uc*%Khk+> z;&6Sr|0n3oaGQU?GPb@vy)|8-_e>mKpXdvnXFC7rJgA?oPyHC@8xn{2Yux{fbekT$ ztgSD%v#obmx=0_EIJ`d5S3A#gUTQg8kH!yop5XjI;_&*!{l8Dw>D`vM^|k0xbaoe8 z?>ULX*GKwc=ef>}uF_O(N+2dxvX@Ijc?Hdox7Y5O~p z{byD~U&-X?V-ttxAALR_m#^XDO+Nl0AD5q}OGR7%-#NaqyLtIv+Ir>PoiB8L!g;Rq z!2Y&=?Qb8t#rYnivwPV5uhA9ytHj~!6TR~4wmx~g#Nq1;A3v0jH|U4>xIF(F);Ib1 zVTr@*6@51!Z_%^(xcnI(FYRgTU3yJBK6zcb&Buq+nZ0cMfpnH0L+9yAX-N)u1Ll@{@(}tGav0-cb@CK`P{_e`f&gE(M5XI z4Q)LYdN`dw+}3j#U8m1T9M1Phd;EUqFPt~r$kwOvW1Ocu|2=Uy-`xLF8{7Iy^f`2u zzK+fwVe5H>uF7CqnQHh=C|dweJ7-#WkLy!sZM{jtt>Ck|h~x&JwIfj)AGt-nm4P1oru zbesNt;_&=F&er>p^XgmLdi40=&eu7=;hf#d)}wway2SZzr>pd&hxZ>R zT0hSDkItVvud}VKSN);RmnRPIU%3Cr=_Wm3J6mt&B%6ObI!_-$m+3PThxO7AJAdcA z_4ZsJ$DiZ;sPlglhxKy&dOO(qnsklMoNViTlrGS-6NlFadgY-uzkI0k&CVY>uf1bu zKRR)Eec=ADrEBz3!?<30oy6hq1Jfg&r#a7d?zfZ8uYNb@a}$TZAI$yVOJ`59^Rvou zTTg-BlrGXmx&)om-=@$LVqK(gQSr;njCXWDwsO&ney=%<{2wx`Xn$9Hr-*LkLMW-psx{f2at^W8va&a(A9Mc3$m z(#5mw@y+(O{bk0P51|Y6uM&sX6Z$3R751^?(c`0>?{@yyd7FK0e)Z$%8t40#Zqm!` zXXA6{*m^fj96mqkvCa=WXZE-CYW%j&6P=$(9RB+Z?*D7LN*{B8?XN-K?L60cn-QJk z&vSm>dC3Fqc(wmwbc^#f=xoK#$Gdcqp8p`5uS)Oe{A=e~&MO?;*&pm&OB{Y4#QncP z*Xi93vGup;GMyc7>%Am#_<0Ncn)6B}n_rKQbe`_~iSzo0+WhKA(Phr}HeI9VKaA_8 z*GL@x{?G(l?-=JlI?sQ&tyklRJ741b+W+I~{^O*Y-~W%F2t_gxwj@(lZND^8SxKfO zOFs6b7Rmck(Yp!lAd=i~DE&Y3^n zxA*;aU9anUoik_7>&%&>&Dp(vrGA}(>L0|9;Rt>m$MKe&9Vd+&-J<^H!5%O1_{dxH z^Lu#wbk5QL>Zh_z0Knp9&hv5cc=Q>_--EGm$Q5SllrraSA`4v*QFG*8D#9_}HPEkHx!t{D{Y^ zJ+3xP{cZd?I847;IEH`4kw-P3i|^L>C?1G2csve2ru;S7H&L!NT;r3t1B{RhA1@gE+ae~*Mhhk2iRH-2M6EFV5LLAG81N zCGJep`@75ID@SF=yPtRBt8oAy#zB1M1L_xiLiH~7_%@HndmPU>>e%@Ah{ve6)8ivY ztDnUidE7B)_jqFbb;L9H1&_b=xadLExBNRiUg+`9IlJE{sefiv`_C8C{;0q~{0@%d zUvhRoU%34kwhuq(@mh~hd?-J^ug5Rs?CuZhZNmwC^;pd}jmPHfe*eZFdR%Lq`dR#H zkDv8;yT_-ES3etn74|);{j~-M@!p)>>jB(;g8G~9^?13*&cpfnojs1`?A|}2{vw>h z&B`@j=PAwa>YUy63qR%YMvv=0qW+eDwZ~6-ygp}l{i6QAIDjLMYCd87ERNtM*!Q&N z`vp#5=P~xjWW~FA{J6)PJ#H{DfBXQCXXothPwIb(Q}~+4HGk(B^&g9UcovT0_i+aA z%-Q{ZIYr}}OwxSJw|kuM_z#cUJ&`~Do}AtLRn&h4$FV=A`KNGq>^!UajKX0&-SY9W zoZah-3gtUbs=xUXk0*MZ^7y2u^2hhi**%|9|1liK)t=V;W4JL6PSt!a#?CbPwwxU& zjTdoWymeXnbh8^3TT^JOIa^SA2ox zzaVeHz8Ug<9LA?UtNIDtA!qmgL0tKxJznYYu@%}Mmfy?cCq3SnvwQ!5`ZcGje+)l} zllT>!nyLBh#{OAy{b?E>!RO)di;DL)&z6Vh?EbzuM_%OdevdDBPTObsqdZ>b@n1Q+ zzb{h%?CF|c2+zb(yaFfiZXA3`^DBB@Ut#m%#EhIsS1;=TpS?}O6|W&8KMg0IPo+<5li>x$u2F5kU>iw}7mn3=8r zfAJeVe%9mnJ+AV&-mLt3Jv<)m@#`LM_qf)J`SmXFc(BJ)JbuUHT^{>p=hyGx@y#AT z>haqif93J{q;HCWf-8~-a@v|PkAUJbuID z?H(WYxY6AF`rSMp?D1remwKG`_?UV5^;>y-wZ{*6yujlxa&~_o;PX^#eztzpN#jx+ zd|jW%sW|YK{2GqqO*s0t;swmkE8lNkE>FYGd-AUqPs%kG zQ2%{-Dt11U-@xHD@)jKWNY0o)mg_83z1TXr6?Q(6d*KX@;Pj`8m*Z4Qo`HiK4jvO-|s*c6kF1eIf6+_zwAu*Hl0Br92FWzmg|m z-`8>)`_uB@IQXr6WX9dz9bgO~qqB%VTlmPk9$k9*|2amGAs5zlPI?<$8-0kNzu9 z#PK8a2LbkD=P3Epx3c-}_c{FS+xh-(alZF2$@dRSvv$8>RUquXXhWn z`*7ea#V>td@ibnElT8(GvqJUa&E(5);vD&Q>~xY-IDqZ?!+BJ3yZ#7a8z05LxZ`v0 z7v8v1^Go2jSIN#}s^?!VXYjwSv)4EN#}zO5Q1RGIIh?cmeR`$5(Bp$1cU_Ym|9|;Y zJ>Ko{MIYtoPxAO%kK3-z&mZsc29MADI6pt)@jD(Ly)HlhYLBOT{JqC**5{9Zz~i+Z z*ZU+t|8|cnJwEJl_fPZ3zv%H_9`{P+=g;%_ACIrxke@%p?U!RJXSRIMGdRx?A&$T`J#?eI@dTIEqi(qkQKw#fRW1eg|jp2|p`8a=G%m z{33^X$hY7ao{3XeE4~Z+u8~{)s`2q_#5=I8hI zc$&vMJU-*E{P8z?JlEr2JZ}GY{`jcJYdt>xP=5Xu9#8T32anG?oIie?$6Gya@=t#L zFprmb{Ex?7{>>j>?(ydyH+E{|z5hc!Ug>e&YWexMc)Y~p6OPEw@8@yC>ov1b1Ghdtipaf4&?^9Olc>G462yB?Q6{!x!NdfcE^e*Uc@>_P?$CPjLhv!cpApG}Vvc z-Z{I!SK+Z9zv}UJk83o@*89Klft=m%W7NA2r}5*iv)2n5oWSWdnt#L7HNV8o$KFjGX4!Gyt?CV$8+4=e0 z^JMmA^Ygi%i|nh$8Hxwp&q4Op!*%ZS=pOgk*VTT-Q|@t=eZAm18&A9ML-zGi&W@9O zN3Pu{8~;CFR3zCh#C56d6B&K-Y` z$acJhCdnsvR6L5O;mi|?A9<~e!w zMf9H`j}FS|xLk$9bL7)IE1q~&Zr(*sy(WK$6K}|0U#xiWO}V109L4P~k<*K)*G-PU zC7*sN`Ag)zIJs1AbeZDGcjbc1<;-%qPItzyl-u^etL2(K8ULZY4`c-!G(HuOhhl#ld7LE|+qqzSn`L@2yx37G0KRJ4xT!s^a<-XSuA0a1kW}N&t zPFBbt^;dp!o;>?{IsA&e4M#@R${mmI-JrN{wA|`OIsUeMOjr)p*B`L{7RP(bf8oe_ zx!VBp)AIe;`CYd2dHfIA&gU82=O&H!?^WE+kG_5KLE=F??q=l&4k%tZP)`0OuewDJ z|0_4W4Lh}S+kb4S96v(75j)l8N*q2)zHX56{m00m+vODQdPmmo^9#o*9`^X@oZaJv z_y@$DTFS3JSmVw8a*jIY*Kne?@*Cf&{xP3?++8|8Qzy#JT<5OWr^pw1obdQFkH7c$ zaL(@a6!q-=N#W*0)Zckl{kq}QbMkFC^RgVpfmh{)=Ed@Q?5vZ2!0Ck24;hKRkbY)Z-65_T7`8 z-`nG<9)Im|lM(sj@ACL?yyK9x&hGs{{5AGpu6WTSsvqqo z55uwl$+aG(e_#0}oa!fE^%(K%<$rMOM!9mL;_;j0+aH%Rx5!`O)NS&Wlk|Qh29fVN zyT7B;IHVl=fzY%cCs&b z{EWiBQ{|O7+D@+aB-*dt z^5-~kk=%Z&@}u|3_hSDj`5l~mK(0AW`N0R}D{wL@|A>8K<=At|PfwP&;Lyu*!|94= z=E}F?*nD{*4lIx_f1Y{^2-YZ{+{rAfiI5|rG9EV5CbzahVCo1=Jox8s@Mt+KT`g3_Zj&741 zzpU~8FXTZvyWcl5@=L_c)#fVSch*U{{S(BACh|BODw0o|$NZYhTX3?4JZiq;kyi3j z>}xF_#EF1>-Yd!vogP0 zYs!yaB~Qlb-trd~zg9jop?rTI`3{`yE5C}v*U6t){tdG4b&XHnC{M+a0dgAqZk8Lo zq5RlDc?=HUDzC#%sodgC<);S8ALIBP^0AeQ2k(?;;>=xgvqg&ghsr~6a+q9+10&_% zajHyi`?vo?fH%k5kCmxVHysiAugYpQRdQ`5&!P)X}I6X&hwOHe$FUv!4VyQeH zJMYOK`E!*`%29F`%|Bd4B z;@D34s`pecwu^e^@8qFL#Z%wQYjC(q9`L^6fuH0PR>+y%@~t@dvz)^IU*!i@DnId? zoW!9&wcho-(PZ_)r>zRkHCq;@(CX*9{E=ui38Q@=FU&c zaq0;9m^I{AmqXZhv^)(bj*-8|p_=l!A8CB%SouL5t0k|)f!gvvAM1SVoFLa*r}2RX zvc3NyzijV+9JePw(^~OSpJ;sQT=@{rw3YAwRPj(Jd4;))+##iS_!7C@2J*YfYd@EL zcgVdq%PIWH7CAjk@x|Na#BlkvFXc#?`~nW&E8qQ9HtznuJX-$XYvr3S|3(f!sQ8;W z5|tnPR`K8%c{NVs+B+HlkmB8U$!Xl_dpR{$@iTsqW8>tHaA>@Ica`G4337uUWv5&| zj02Cz8}}$4dQ?8}iyV1OzB?laAD6HCP4-WcFZ`YSC**2>kROxp+bcUy$$#M_Uj3)y z$)^>M?UTdL$OjL|p(%3xf8|Vte5O+~_kAWgRjyV|_B|(Ggp>Fs9G$NC@kb~>^SnIc zNZCI_-d9~t-R2JhFxyeo_7lCuYmtPf$Ggvb^O)IWkwCUzhRo#qd9kMZeul)o8=m&^4UseW{| zT+~?hZUh*{8+5V}Jycox?m4C;P zesasE$`9Tw_r|e-@+cg-OP=F8+duG(oWTivR*~YtXBF>3ySy0 zG5jn};U92dhVq-V()cvK2Zv`Wz947!ei*KHw(`xrb9TRP%u@c-9&aGu;=b0*m;CFn z^OD9tm$Q36>Sg(DkGI));s=O_aNR(*zWeVb;`TYazlY;%a0Hj(D6YUUyd1}INgK`I znWy=^hf{c;>+JELoUiz)=g6^lWc&O%pUL+53t_uo7sVYIANgGQeQ@}9xy*I$^KkSj zxzG14=c-@e1ljt<8pzf!jmNq9+3~*96)$WnN6wIEw_|%7$!E2fGmYgHI8r2cJ5TX= zGkG2MpDj-)R@~o4e%p2Ke08q8nRv9LT+{;TvI&_`kcbQxcRyDv6nu7$Mwn9cb~@|EziTTsQhbR<%h<|HT%i& zrE+7}x$(>8^KkqkK=PZ9+0#9d_D2UZ~`B;_~+^u z=&$)^Hp>s=&{laJcDBj3KNHyYr?Xx06R%gj0DcJjb}0TV_J1Xhxk34%ujM;$lv6w9 z!#G?e7Y@+=4(^sO%G&);j|U!mYVP{X>?_Ro(@pdJ?z#DXqrE&JThIMZ4KfeNcVlO? zJRUc|&*EY{ANRoT;{G^=2jiVMiud7VxaLio&nDaeXK-s={XxyI3ogLd;I6n7NAUf) z98bd2@l2e+m3S5Y5O2lX@gDp$cA}b}bF;RmB|ZuF!A)=}J|9oSJ@5{EBknpz^@rgw z9*;-i3S5C-!IgM9PT>uB58j2_KBRv8ac_L=KyBY(d^*mIRek^$jFT_M9r3mJ03L)3 z$18sn4&x_q*#yOB;fZ(=-de8s8eHQM`3qcxf5FoqQ@q+O+McbrF3#Yl*gsME9dK9N z6G!j>JPzN3EAS&YfuF}~@auR7{s3q2HeCI2&F5!afUDiA?FrzMaS3jQ2jUBH6kmy_ z<6Ce7-;4L)$8l(q<}(uy#EbBB{1HyzFR}B4#{Y&J;G=HS_7vlKcrb2-6Sy-@;%jgU z55jx!1Gq*^{h!3ecn!ISZyIDu=HYJ2=os^952fZN~_d@pxR0r{d{&Ax_}; zaT0%yH{l;~t*PpN82fRZA=;j{xC!ooFTnkA2$$hoa5=sYPsdN-#dtPehnL_q{siyE zJ8_L^n*RY@gpZGC{#|in+#jEZ2jd=i93FtD;}JN4AHyje$9wQ1?0Zi0TZ@bE*Eopx z;{LeiP|bfhZip-Kxj2POa238D*PX8Z!*E;tFz$n=;|P8om*dqqj=#W3oWWK2s9~Ca zjpx3S}$mRdvFo1cDLpq!l&R; z+yaloK|CE_gDdgvcoTjQ@5PgG!3@o39&U@5;}HG~&&E}F7e0)Aan(CS zM?4WGt~FEjW4H&NgUj$zoWP&rb$A!viw|PoEY+`lkLKSJpNWIG8286L zaRlFlC*qNKE}n>!cn02zU&k$9)O=Rqu6Q#J;VSH(tNg!l0M{PD`+*zdFm8({V!J<4 zG*9)qSseGpmDuh_tigkc@4|L}VlRG>xNpAd+x?1`*zQ;Kz;?f4Ft+_S5!?NX1=#Li z9KiqGzj#Ic?E6|N_F}tVQu4OO+wn9I+x?U1V#U9tU)d7b?x!TN-A}2$RB^kX z(g0@|UyhF)spGB2JIX%=kHdC!1jH%D}IgqFkXqH*uGyT@PFU$uzg?4;4O@=wOsSrjSI0IKOM1s zUWem<$)Aqxe&RB0pV!!Xs&Drb7bj)=e3rj2+wr+-g>0Y4S}SGyd=;*e?ejGp+wolZ zf#P;N_rZ2Qu=;An?f4yt>y+vEss5qjcKmk4g~ZG8c{qhH$FtXH{0+Dg+x>!dw)d+N+xxW!+xwNq_I_nNuJN(vUqwGZw(Tj#c76y>ZoPZ0mjd?#aDZ&KLSml~gFydCdtvF*Lqm;yB9qW!UZ~ zZNhf{D1#@HUu%#0+xe&v+x6}!Y{zpP+xcZHw)4v&Z0n`(7uC1pIf(6eJ%H`_9Q>>D z?fknA+x1@WjN*3u7XBvN`J)Wm@f-YIaXWrXu^qn&Y@h$Fe<( zupR&Y{mQrFeH6Cqw_Vtd@6vf8DqIZ3wTaU!)Gl>s&CKB^uTs~8^QLx%wlZUw>_F^{Bied z{j0=weOsf2;`Y4E4s6fM3~Z^mJuee$CEN2cmDrw-S$wwQ_B_no*0MbhvlrX*FyVmW z4Vm9$Y|qD}ust8+YomO7KBfn@?}Ov8Js*?7_I%9Xb2R=O>xb?B>l$p=3wv-k@>`y( z@pk<%7~AtT3$We4t=?Ao_B>5jY|qn_VS7HNqMh>l+53g>!Uym}xNCdmPr(^%&(Cx$ zR(wA32wskt;f=WN`O3HJna z_c`B%>TlQgh1k~XVr=ViZ*1#v1lxK%5!?D(iEX{zfo*-Q-bwxKdM1Evy`7HjdS)@U z^>+`p^|!`Fs%PtOA-455h;9Atk8S-OjBWj0fNlNVi*5bw7*s!7e+Ob)f1}ve-|5)C zAFRW+9`D7r9#`+I`nKM7#kSry=%To-x3jUWw`;Jiw_CBTuY0krpR+GkJzFm)c9m_t zjAL6LmtngPx9_u2Z0lnJ+xnQqwmxRCt&f3js%Q6a!r0c!iP-MnRA5^_ zE3vJgDQxTK0c`7MgG<%V*3XvM*3V*W>t_kJ^|KGQ^|KV)`Z*Wd`neU`dg&`se_J2R zusuJv7~A!D3fu1=&Se^J@c_2(>!sMP-zQ^RZ-SR=ynX)+VLM-xV(T{!Tm1_B-}eD* z*Z-TaUH|XFc78d8?feq!uKC#Y{Je>4p!*)Hh z7ytME^isavziWwYe|E*T{k^eme-zvHPsVn>U50Icq_KV9tb2v}+x{uR_I;=V+xMIP zA?4fm#o5@-uZ34CZs*s@*!E`%+xk(3ZF>%3n_t0I`SUBnHor=2@8=$D^QpKxe?Dul zo!@KqR@~0#rP$8rJFuP44`BO#6Szj>?fXp_+x^xEw(Tv)_IX-{?fuSRyZ=z@TGhAp zbTYR6wFcY!-}ZmXxBb@#+xxp1+xnWp_WlO?XuPebseZD(pJms{wjL(1?Vl=a>zTj5 z^6mas9NT*3yIyhIf3vZzM+dNdzYE-;d|Q8l*w&Y}Va4tHR(ODH$KN4r>qYP;#qIOG z72El~<;{xQ=R1h){2j&i`3?+JzI{Kb#CALcZc*I6pOjBZH)42Xj4wdcs^NGV`d;WX}w(I8%w&%^0cPsx@ z>P;Lj+w=!*?zAszE}Q7n{vF=38$La;Kt&elDT^}vR zc73!4+xc<_w)+)(u>F2e{c-iP>(wG`{Y$W|=cU-TZxy!neFwJfEuN(MHvb5=>z}#U z*7H@^zAtaW_IMT|@4?vicM9A7PGj5OZJ*V6+ux*wJSXXS{@59*Mk1}lU#~N(!M~xTM&-Pydw(GF~w(nOZ*sjMG%+Pr2w+dUo6t?4S z2e#v_3fp}4Vmm&fan-luV=K1n;RD$E`(`TN`WIuX7sGaZ#j$Pw8f?c$8e6|Z_`mDz zS?XuoQ-ZBtA8hBVD7O0#F>Ldli|zPcjBP%lT{l%8p zzR&f>Yu)RGhR3`AzPhho?s<(ra0J(XQ1RkAil2ic_;MV_H{q@LKI}VDrcS?~02?%D3Y(T!Gi%_i#a(@^|A>T>oL!UyLutzI&B_BM#!RID+TlIQ|T$ z@W0r(PxYFXt6u>3#9=%V$M8&?#H(=z@5cW7RloKlsvp9|IErt@2^_;|{0{bwQoSl1 z#3wwe`Zc18cgB72ow#_c;?Lo7oWxu4ZoFoK^8JsgzW-r4g3Ix294J?O1rFnX@fut> zQS}NQQU0a46yJjv_PQ>L+cq{%BJ2Mrp|CH*5aTi=POYz%q z0$1S7%ZjhY#dGCfaRom8Y1Oa7J#lcJ@(18jJlu8mPiMvFD?TP`_fJP8Pp+R^pWne% zct6hIz+~kYoTB_YuphsKOYlw{!oTA__>^ZmS9|zXDtT1h)PuZ2haS)prWi&-(kZ#fz}@4`S=z2V4ILw*E0}{pVuqm&Dd@ z4Yq!1Z2b;k>*uSd`CGpLwtgkp`h~IeE5+6?imhJ-wtfk0{ZiQaRpFhyzfOJ4@5m`S zenQxfOR>!_ifw-7*yb0tBGae*jzm5VroM*!o4W&8Hk&zc{vji?Q`fVe6N{*009t zny=OOW9wgxtzQsZzdqRdMX>dYVe2;+Tm2-q{%f%HOJnPI09!v_L(Sj%1+eui!PYN~ ztzRj&eo<`wDzNoSVC$E{)~^a%edi3#&*BBx<`clyzZhHp5VroM*!oAY)r({6KNnm5 zB)0lnvDMFDtMBvY&%X#?$oU|M``{YQm2dO$W1CMAw)q6H&8H8x`9!eICx&f*&c)U* ziLKunZ2i*M`W?X5&)33pJYnlsf~{W|Tfb6l{i4|VRbcCvz_xuUZ2hXR^>bQke%7xB zwtjwW{fe>m3t{UQ!Pc)FTfaEAesi()OJeJ{6XMz}7E-tzQURzfzB**!opqn@<8;|Hat)r?B;} z!q(quoxgtzJPu&%SAuOmA#D9ivGtE)>tBJbe*#;*6t;d<*y?An)vpoI{H?wpTm2xm z{o4my{Rp=HW!U<~u=SgZtzQybzcjXf2e9??wb6X7Ujep$0c`zBu=NXL>lek=uL4`Y z1h#&QvGq$~>sN)XpL34pYyJG#`W0jA7sA%B54L_0Z2iiy^^0Tcm&Dd@E4F?aZ2b;k z>*qUH^S6FQ*!l&r^$TO`SB9-$3|qenZ2c10`mMp%FO99A(^m7deg)Y21+eui#?~){ ztzRj&eo<`w;@J8nvGv=EtzQ~jzXRC%`Pymz)~^U#zaX}LVQl@%u=R^#>sNuTUjkdd zHQ4&4@e%H~=o8$3A3VKEe}DN5>~Eg?dhHCw0sbEJc*~!y{5X!!k(XKgJ^2$H!)crd zxc|p}HE?@p`}OWd=C!1uX^P;*3Kw`YDwxPKNno4*h@!B6AtpIOevxAXoD z!6z}F$+$Q3S%SCXuW*0nccgnSGh1&EF2ZTt6FlE?+id>L_(ePvXa7uWHa>&>^D91?`JUqbnbX|%;S2E>cp(0c z{*U3k_zip{`y=~jRkQU*V8{KlgjvUI|KTLg{#ns%JcYA=7BlN0o{8i5V;rS__Rl6} z^B1wbC%J#NE9)L?@7Z_{$HV2gknOt_|3EzZXY#V+xAT6yfPchG@h>?0XUVep4VmBX z_!Q<-+x;^`+4yAK98bmBKNFUXzkqMTZJ7UP9KzW@dzH;U#C+ezN3cDc@Co=g+!oh% z|5^R)_?vMH{0G}pf}65`Z^5nbLuR&j20oMdFT?jR-|U|e$o9J*@543dU)MeDWaED7 zpM%e(e#lJyyKq-L5xGbW$qW4tRoHNCvp5_c{>ixb}uyDS2uq)KkCFTlh@-= zSGjj1#Y30MUtp)3+^8|*@m%bq-nnNIFH!z`I6(fTg^K&>Hwh;$SAPAo6i;-QUpDuU zn>JBAb+J4MC-Eyd(naxKarhE>cvFp!(ElKgk$+*4;tu(%ah&{6GsOe+i{Thf;S}|1 zHK!i&9yp9A;yC$hET8>%NsH`w_wU>K-2ZW3V{o9zT^QZhhd9<$uGUidnI>{$oF-n1 zgLoE>lfM#&9?|jhm5pEMelc@jC$>`kK&5=Cd4>D{cIL`&;?yhhPdM|8-1uzOOEdmD z9K};`Ec->#eQm_a#q#N`H9omi?u&y7`6V1p%75VaOLDt_#z$V2$Kucec>|8UCD&;~ zKHDG0zBd$q8%O8MRpzJV>gQ;D0Q+(5WyO2oB;$wRDDh`-s_s#_{jmu9mb#0I``UmV z{4>rhQM~54>L0JA@y&3E{7Y~U55NKZfca4!AAjQX*SYr2|Jtg4>I05f9M9gka9^+B z@JI4toLnVOZm03Fm2%7Wa%hE|z`jZH1?MTANy<;-*p>2!I5JVr;NUjR_ncylkA5Xz zjT7tje%y;gcrwncQ~Wi{zghd^r1MqJ|Fk^Be1-c()_qOHiK`W_#DS~iFL2QPyV}{; z(;ZYVy;l7aIQg+$>jL60X?!yrxK19A9nK%CaEN|;u`QqXj_~*Ela^nh`Lyb!@xfPg{+@NoA$Dqc?-jMIWzW3!LIx8L;C_j&* zx5|ZG6pue4ufTyXw7th%thjH0;>~g7b-9)PW~*MOenqq$H+e-q`LW37bt$oRdV8_6LRs<<|*1gvvKlt#W&z^Qt_j%*7(r*sy7$MRw=$M>*{Xl zcBkg*AIARna--gE+$|kE+5IBqzPe@YzLkOXI-kCS(`)4p*C?JTRKHnSyY++A`xuAu zpX58$j>y$-c&)}qx2WC>oIG2{_a+>}$NZ1{a}@84L-<}CZlm~{IDmKKBrfWsdNF)6 zjt4aUNgToN;vn9GeYjp<)pMwK8BP%&iKA@K3>?89;B;&C-;WcxX+PEXv%P(BhJKIW zDEZ592>)#3vHv>N%h3Ny9DGm5?+~1PRqKh8^>J*u@{6&5nS3pF$RC7Li)tAs>08>igHrt;`?G|HGlV@;Ds%M1I}8 zSx#GiNb@<$sTpU(2Cel<)sZ-h@-1 z%je%py`Az@oY)}0f&JgeC*H<<8Gk2^;E%9#lI9mIRetJZc{&a{I)A^5Bfr;nvadgJ zVy_$=r19}TUakRPCyT7qRzx!@yd-f^+AP$_T^{&Ys#Ea$b zIDv=aH2D=cLOh9+=WF~ImQQ@Y<#$y4q`~SJBp$$F>i5DSd?$7o|2Pg@pn9)j-|O;U z=7ikwPW4N@C6C65N_hoN;$!YoeiZk_5&oX=qc}ES<3GfSd2*{E8Xv$@aAdCHzu*}4 zj)|~8I%_>k;Z%h_zioypo_s-`i38=T_W_Pfked%vzJs5{8GI1O9#($o-O5kjC6B?G zQu%rF>+0WRxbjonUw8#OyXxkS?^^dT-}g?=xd_LyKRmdvQ8>!{pTNPL8vkw9?x7rg zyk{e>*61gJ|uax^)e3e{=BOl09aO@+w5h*KmH{0^-$SW+qLiyj|%v#wgQ~&TM@)_9osoV)?K9{e@ z&Q5t0_WvM1hogVUOL6=N&1V}Pr>0` z@>@8={@je?dlcV?lNtGx`_w^`zEiyBDD_L?7C7>~;yrQb zXL$&AevzNT;a}xN*vJ0dieo=1eh4QR-{=AM_t%PFW_If5w&zA1tR>%rQwily#PLP) zi`Y+mDUNPbd;?B@CRgED_J=X|^)F6wJfAXJ^9y8uD05$}u>Y{!6{qlZIQoy`!)!dq z`y)8R_QWmzhVmEVG*00l?{5`$-d4Wzpyn4@Di`43=W+mtx5*{gw_Oh7z>jhnj{Pae zY`jnVf3A(^{F1c%HjrSd+_)X?-Rqt_}-Y+k; z_#U|m$KH^A<*JvOBsa&Af8{H1W|=$=hrg0v!%@bkZ~*^?BhM)R)JN1W&iD&)@DIgr z!O`{d<2do7{1%QeeiP2n?+=`OTKOkFs(${Id@hd0Hm zk-rNkIw*e36YSq9a&zoIrsG0L^G3EQS54yUq-*M<9Jf6!{tKbXL73ICY%n^QFZP z%GG9QeDZ1aI}0aTYy4#vucP`au>U-b|H1MLM0;fv}QS*G#baAKkQ--Z33 zsNNJDzgGFnE&nIQzsJEs)vrBU^`mVRZ;yRxZO;wZIZ5>%ws=@h;J_-4--eUf2j$(@ zQFBy3wn6<``Wxk^aqt|~TZa8d%O@w4AK-bY9@v?u@ntwUS5DyA9QjKdf0XL=d|mZY z|0@0fb`HyL;$TDNe~QzOEB=Ssp6`2udiV?+dPDi`%z>kG`|BE}K&XbX8dj$A0O!0AqM6^=*c+Dp|xStPf^!H4Dk=GO9996D2; zkDW4k15QTdgE)Sc-1r^!%iJ$_$Ehpj;W*q#ejX>Dl2_vZ^?$|byA&^2ruvBqau=K? ze=v>~Dn7+LUVa~E9+CH8hxn=Qs=kkUU2x`c<==&a^q+n#@){gGSN_iO+sQ{J zRX@;KZiId3$w3_9_`lKO4=O$y`_GVHFkde($LTimS2z=p|G}{ia>MsEpKxROA{=cg zhq3Q!c??cmAkV@Pb&lfS<9JZ6v4Z!@FE__N=GOx!$0$AoM<0-%!WrJLML0fI z@om`GR6dMj9py$V)j!JqyaZ={Qv4pA*dafL<9H@c;M zJa!t&RXCdc4;kIpKRAHvexUJ5#y7_);z8{D_~hL98*qG&>b;Mn(@x37>#tV5*i@a5 zM`QnYxv*1-ov-E1ILd#|u@@(~-*McBs^{?EXSBvad?}9NFpe{RBu?Y!u%G-laTu?| zsb<=~U$N6oK5-56`JdblM{bh);8d}EKMr<~U%=t5djHR`pM04 zaDdzshi;T3*nhG7G*0!G-?BLK-EQuy_&+$t@z;1Q{c$(!F#dKNyFue8S^gmT4f93v zW;5IWmyKt88-A>Q!7G*D1;^Omx8l$+#UI6)o8{MV_&j+N4l=)kI7$D8>(tNJOZgY$ z%=L09j-Mkxj+1Qv8#uuJ*<$&_m468Pm|vsy>KD31@oqS9t~?k=O68|;ocS!qnNEs- zh0|__-ek_)Tz7H=c}ZSjlcCZDT*oa6B->|CYzXq;{>&&L^#x0Tp`r{X&-zq4F( zv+5`BklW)B=YyMZ@G`|?IDEhSE{;;~C+uVU3%00!ihA8}3=hY?o~kzsJMHBZ_Gka0 z0r&L}PPC9)ZdLur*>XP|8zPryUETffWm}(`8~-LAh`%B~!|`|gHq}dT{C31K=644U zH&^{>*xyS22s`Z0|Hs~$z&BQve?Q17AQnOPCG0yUY1*bL&{@jNI7}x@haF7QG;PDQ zNl4O}DIx@AN1-gTqjfpkm7;8C=1yFCZ@5ud}rezXUtgNx`d?+{Gk??rfDgS-X(@#cSG_W~$i z^S~W*IXowVhZZy63LZiGH71zc&%^z7o@e)lk6`^Bz@zAI_XQWhhl4xNzb*#*z~_Qn zP+qSGm*M|I;IU`9eSHn=2e0u0ho=bM4(vmH*jF*+M}Pxq4*#H%qrJQk?1%kdf;*mO z|DRCyyV?Fb;4$zQ|IFbTMSb53ob6%#x!|EBa|-N({;A**w6|A)M-iTT!NZ8pU%@R1 zzZf@){Q@Pl$J>Hi;NQOB;db`_C~y(+I}Y3d`K4e#!v8DqDEL`rAMsxSF2TP|OB|jS zgtrmwNBSQO9zy%G7(9mfTmUW|#^Jpc964@E-v#gO5{k#OHGGF!AJ4%%Q4#?ZVb>QQ{ zQSde3;RD$IGNljqJ_Ki>zv-)pALLEo7RV0;2f)WFeemT$vi)V?y}=)WXKu~%Ena8;E&+cHydn5V@HyMC{-x;H}H_~+pJ!PkJ7gRcj#`#1LQCh(r%Ti{F{^tK+|CT{M1Dr?v(%>=3F9Dwb z`@aXD0sZ&DgW&DoW%rBVDEK7scfdEny-UDXfo}p|2Yv{A4frMS4d9Q#zXX5zJ@)@? zq(=b!4)_4@W8hx!ec+S84}gck&%^z@zz0CS3|s)e2mT|t?tKo=Ti`vxKZbj=!OuY6 z1%47-1V0SE4E#9k->&q*Pl6NBFN5y_f8hfT&*jkH9sC^Rv%rUeyTI>(PXzxA_J0WO z0^bS#GxV2%=R*EII1TwmA98s940#Y7g?v6Z26;dDn~+FDkZ<%6hvz=H z9|E5Q`GMfOAKH1xKO(7Wg*sdjDkq&jarcUIP1b1k+Hbc;Z@e zJaav`5_NQILa24riY8G0OwczZpDy9Lu-um3sb>>}nH!9|2;ceDu*Z|8Tm_5+CTo8V!D=SQDsc^2vQI(QiF)zdvF(*M)hz2m_n zNRI~%azV2I}G z!$$1h80^m!O!obEvj4r1FGcuH2WP?8K)<+z-79X)_Omas{e!>E96gccdv3zqG06P6 zO^GSJ{P2HA!Q_8OH{17b#@vzyZ_Yf_!TgS3vOj|K-e?QvF@&!Hycy(&2qyPOW^j7! zy(Q~!2LGerI&e-f=?B6b-Z^w3xA1Q{qfd3zWdm-O)XXr!TBADDCdYQws#V#yg4*7n9N#62pmT$f*%cBV2zJi7QW|nWZ z8_QeZ-#*{~xD$L4?4Jt09sd17Fu9j~irqV9cV^$+%pH5M`&rmO8QcrLMljhgZ^r3! z(w@x218hIG7u)wEJST%&VERJDG=-&w*g8wgpPXn(PX8m>G ze;7Oj`$vK6z^8zhgKq#o0A2>(74EM__e6>MUW9xP@F@5o@G|fT;4JuRa2fn0xCH(b zJO_F=ej}HM^&-q8_i%goEO@xYd}TBA?_m9buQK~@ zW}fji=8jugf5Wdc4?V^5zkutmWBGOaK)#syTl+Fc_vG--*$?s?S-x2dbD+rb*TBW= z*!^3lvE26u)<1bVcum${ID@$*$-Ki%xc5c2|1P-W2IhNPSsuNC-8*l8=JLN-o|wg4 zyq39sHgjo9c7KgI%)WQn{!@Y}{jWm$zXN&8I&A;9-(daW$C%HX%RG8FbJqdPNfxWB=H%%k8vz!$;&+2CQsKM5{D|2u-IJdSP5@m;up-7CWWG2mYCS%OKw<2(*e zM>}&_T%=Ebp@q!;1oGn`c5fZ{za4l8?(GM@2=b%AS0Q}g5-h@ZGpEPz!Nt3nmn(g^ zw-(*|C(>sH?C&U;?3a(^@O%g^&0>D&5Xgs^FF%wy`aZj#J&fHu6yZBdFuCXJW&QZ! zEMEuy6$J}oGT-t|mXG*2y-$k~ zQ+!WD{I3*D?q~02{pFCC;s4qlEcd_4@;@n#a(r%xvwI!Te+)bf{+nQOKX4}de@`cK z$GOZuNH7omiQP+eG5b#Yq9`7|N5DhhVh$!*UcQ+5C*bUP%o}yHe0YHQGVoBE`B`x3 z80JlSSid97+%CE3EA=y{A@_@i4e0L{$m`(VA0Tfju>1?X>|QCyJXdnj=ZAhb*atol z`epe48^M%6e$~H1zl`v_3;ohb?0$QS^y!}g+-H{-OzB;En;fCPQ^2F(AAd@I-w`;UX8AAMQIXZ1zw ze{|hVBuBu3^_kO(easgreQ^;#{oN1t!Ttx}7Vx%xh~FBl9|e!D$$Tt$WCe%k32^j7 z<~PB0kk9OA_l7=T`H|p`5&oY1Ex6^0b!7OmY1SWZX8i}iqqOcV{&vWae1oDdiu!w` z;MI!0z)x6y8{{pJzXSQm3iXJ=99oJcQQW$F5k_(ae?() ze#v|k*a!FT2anv$^4Gx~;PnS!{~DGb4laSO0++91c^O>%1#|Oawja2G`8(j^)y$88 zN3UdVT*CTU@Zn%T_;|ropGQ#thaoRL$oB685C4|=4RFi7%o{Fc`?tgXR|Qjg79U{w z@!$^FzX0q9Uk`5SXZ;Vs!&&Bi2H8Cy_`Bea49gz`kEWTwcr5Ej7c(CO9xgCn3NGiE z{|at7hIyB7!T!F z^ik$C*gwX6JGc(=)sJWW>|-o%0~a4={uMX?E`duAv3#u)*naUz<|ud+d?`5l6w6-) zm!Du>P-OeV;HBUw_=ke2d<~;~+zWY2H`{+x**}VTqZ1Jx$iEJ5iLty}Fu8XX+&dTY zx-OPK3m!@`@AMsZuLJJ4fc@Yjz;$P`{>9+z>CE?mht6gG7+jjiyx_a+{s{Od;EqFB zz5-lsXP$Wy>z5B^z8E|fWquv(-~My*hqX^e_`y4a{Xv$`RB~_v9Nn7bCxVB-!(iX8 zEdMol6#N3X4)+nRc?$bK1ow9Yk178p)A$AN2b>9xeuMj)jZYQ!i#{LTZ#W;^f%gTT z1_$t-!I7syAN*r*5&Ex6rt$sfIs9v$&fyyY?*#U3j`RT!gS)_^&ru^qf8SGb@em#T zT?;OOA6D{hSpJ5RgV#NS{V#oi<-3E68!*oW*Zr0K8w8JR!SYMMW$<0#><%n{LFt1( z1&<*<{xjMCI@q5MF7D0t6W~$s$>8YS9G)A&zF#xHsPxxk`>TJC-S;6qb^?#lI)?aL z2+o3w-~g>-h`*nJ%d{>b{vHGSX&plRmBGUsvws_YpZ)9jGIKq6hE<%%^}y z|G|8llE2IRI(Ya??B2R(vHL?CG4BZ;hW-)Y(mE{vHaLLtH4Lspe*YFc0)7SDQeywV zd^Y>%-;&*H0(XE92m3aIe@YJiF}MW(e+M33m-Ux}{X4OL+YGUP!#glf2M2azUJ4fT znBwm;@Cfq%A;rI8`6uA9udsjqbJ+cCfO#f3Kz+#`1_{)QR$nUGbMda_J;8F0q;GqxL{tg!-z2ofv9B>D%ql>>maGCbKiN7C# zi};@U06el5r}vhZuzOMXHw`TIL5shOz%9_f8(ajx1Rmar-TVBd>|O~R0FP|V;Z1>k zn==oAvzszM2=;HpTn0yXVfQz=jNKmt?*lHO{3OBtJz4)O@G#noTft@UUzGiwS%2-z z*?m9U4}j~oW%=RYDEMS0hy5GCBjD%2rLEZh+h9M&Lu>w!{mVkWC3plJ0++tX_Gg2K z>zHHUz=xb(-v#?%{}ONu_$KfO#s?3ANB_z8OG*y^R)B}!XZhAY;_wzf;Q5pWaOorF zh2Y_TGWUU_n{s%+3myYs3Lg20-5*u@$iHRaz+Ppj79}D)OJv$#< z`YY$xo#46`nV(Yf<;-t`hqv2UrqB96W&cY%GVcs7?!?>z_JI!vN5KW9zx_tiz30F~ z_&#|T+=B7y7k-BLVm!AC*pKov9bA5o!+SJ%WJiwwN#HEnvmb#wP#*69m%vXd{Q!S| ze5mBlvin;WD^e$N7rqP%3mWt_)78=S>?*lWQpIREnp@G#_Wf_;#G@k-=B@@IE&5$U}@xMMd? z|4wie;XeUfhx^B`0GC@weem!^y;ducZh5QS@VD~x@|9uqqvi*K=-PO#OgGV8M3|vBZ zKLwAZSU+$byB|ROJHbP+e?GVl`uBs&$e)kE9bN3+p4TINFJg{^$B=#(flHA83LLnY z^|PP_9l@g+)}IXy{Fu2PTt1EYT%~^r^KIZP_<8UM@_V%r_AiR^wKI4O z{?Ao%`*TC6Bm{dD7iXRY9@&pM0gmp&e1g(HnE5jB*jJhFkX-cnuVDT=c)M$cz$3Gm4+Tf3Gk+UAHkvGk`X7Ubw`AVvHzNGB{{3y{M)25= znGXjCAU^?I2mTqjjQBhR9zpwFR*d}Kbd>$e!v4PCk>l9EZg3eq1g=B*_?5B``ODxj z@CNs=`+@V=y$E>hT;>FL2>NG(%aGp%u7mwIz#~YHwSLR_J-REqx3y#%Pa}WA;5yXL z!@(mcA15h&{|(8spY{Oe)$V2gBM9$il8Zh+!uJ($5#iY%oE>KS zac~rT0(b~K3=V*A1N$&u`xm$l39}g};{{e7Ij`cUXpY0cqVg4p~1nF}JcsbJNW$+lnyV38-KAq3?`!1Gok8|0{S1_BVQj z-7AAz!6V3@rQi;v&$ZwZe{T{S6;u|LSmGNF%rm_l^K(k>BE7T~VH*C|_5AhoS$FvXAmq2K&LA{DJM4_T=z< z9UOrFor;m3r-4Th-W$Mm@b77G6y@U+@F?UvjHWNJRf_2WYP4n{cdm>`bBUQ@=L(Ouz!n^!~e&?qwBJJuPgn}F|YBY@SoOdpN7rEegTce#9M}){&H|SZo@>BENT2(`0fg^Ga2fXh4IV>$w|t7jHwt+~ zGK~*Wp8LV0J8}4a4sO|l`9*Lv%)I&2oZcm*$6?@(?OA><*oXS_FnAc{eT`?>ei`zw zfPL`q2+6cR6!BXM9zuLB0Q>&U`F#sG3;E+A4qp82Se&Mt`&j z+yVI+;3DMLfa~DiL*N$V?;Bu0c-?2&|03Mm1MGwR03}CyrNJ%8zjMGNi0>`n4%mMN zJc{^!3@$>x-E-{!k5T@E;9r2JgL@IbcJS?xC&4$Myet7Pg#PK^XW-wZ;8B#f>%iNg ze2aZGqW+wP_&ovsF8q5HJOKU(d=Bid|0iLe_J_j$w&0(mJccCueD}eAEBHIGe;7Cl z{eJM@cjoeZBDjR|`UA;DUklo^t051={ky@(AUuBruZ{li74Q=(K9cEs2>yNHc}|aI zu)jU{9OyTJXCl210PpPQ@Wv$&9q z!v7DzK7@Du7dSusXdku*w}2y(Y5oN5NgKEW_Pf9(xc@EiD8hHHWa^Jm{(cD_Mt}D# zH~{&-!FAvr{>;$PVPGTd(l`yo$& zN5J1#jPb#3N+0|pI12p@O6-0V@~?r5;1qZi>2b1T+Bb##ybN+5^5bU3$d6|gqdczu zSN3lR@?F4wj0fg}OK7iBlF7d{IDLxXBFfu^(9fbhxL(=E_~Sls9l|fxEk*qv3$lCv z1_vPD_C=&OySyKh_@s4`Y7iVI{|W z+N_6_;AKZK zzXjg4oq4_2+5e@O-`ySDdpOJID8~F~3S2sZ<)?#B!+h`6N+0vP4=VW~tp5ghHs-t6 zdxQONxs>I5foEfVAPTnE)Q5+`5zJ5jSuy4_{{fC-J#MYHIDR8Vc5e%C;3Vd~!G~_cJRQ8w#>@wUhcVxF zG zV?J^1zjJttUt;+-VBdz!5y7-|V~obt;_q~@?;hsm;10a!_PMuNzlitQwgQjfJ&Gpq z7~Z2;Ab5kK@3iaLzjq)XI*0d5tW{?BM$cv52AqYw9vlT903JSE2G@5ucm&+5?1KwR z|0&+za~60A{3EchmCt`&11^E@1_yr4_Q$}Z&$0e;@EF+l4#&rL3(GeH`@wsG%Qv%p z26zm77`Oz^fa_rYWF;@L{R_b@e`3BG><8Zo_JJQ&_7UE{fTNJV0}g;!{|CpX4*X?s z8TNMp`wwIPr-OY*FdwBj&RhT&ALjJ@KDc}j^VLefm-Qb6kMuDA9UK6E{#_2=5O_Cm z6x;?bf&0N(@b|zi;48s?@Tk&1lKp=QJhX`UJtYTk_#TI+1-v)72%Za$f){~@!KZ=) z;Gcs#!1sd3z%PUSNUwF@XaC2N9KIdFBha4-9tHP;Tl!f46mSXhpMial-v{=CUjh$< z*ZhF}?*Q)%E`sNRhftql;8BG4cyJkfxzg|E@ZAN@b}~N>E<*n;CGTSSS|4(FvNteq z1s(!7fs3ebbHP4v7kFfZ?H>y+fqww@Cs=-svXA1Vg8}Ae<<^9%Kif8KY;xx4=;gz;E%x_NS_TpL3sr43~mAM z0}dd44+M{bj|O-Anf*T&JO(~p*+=*<+y6D#2m5~nk0AYCQVjP#0GCvL z{F~!5rt$;qgMUG=A3Oux0zL%Xf&RK*$-yUqv*1g>QSgn*ev0Gs7r)PI zM?dTD2yOw-0*^vJru2_y{ckCK$bSkhf$s+U!7qZdu>UEzi2iVE-{<7`wgVgi4}%W_ zm%zt^N5RA35x9R3*a!b#1D7FRXEpY36#d;U;4#F%6`Y0rPVfl$+u$MaCEx(uza2aV z`54%T`t=q#3i-yLCZl>Ogu|MU!a1oF4RL*TX6;P4bjS$|9L@UvY0 zz5*_R_Xn53M}YlsFAMg8PXgD0F9eUk{I@e^^KStxbG+vv|5!&?^YJ9oI zf73Wb=SuDNzoqe$8vjG%Iy!e{w?AFuZjF~{e745F(fC=7-`03dI_G8ge=m)fXgs3v zBN{K)*hlA1?d~6`aaQA#G`?8l>ovYt<7FDZtMM9sXLxqecwdcYNiI?p`0pr<^P2t{ z8egjMbsGOh<5x8n=Wy-m_ce_V)VN3ELCKZypQ!Qa8V_lFp=6&me!D{B>zS?ec|emt zt;v^b{4b5aw7oOFJ80aj@dAx|G(JvaaZc8ro|4~^?JZq`_w`=$6<{(VE^c8!nJxJ%_ci{v#%t{;^TYZc*^1f9pS?5=X*@&Y12k^e z_$ZCLH7;m;oW>_<{5_4&*Z6Xcuh959jc;ML(&Ju@AJ_PKjo;STx05q{H_&)1jrY=c zKaJZoK1$=X#@}YP^0RJ%&$l6&FOk`Z%*JHCOlA`@o08d#%;sdaAhRWzt;lRmW*aiw zlJS$-j?DICb|AAOnVrb&OlB7{yOP9-@u97*OVGT$TNjwSOgGRKkmHksqeoIs{X=0q~zA#*aBQ^=f3 z<}@;AlKCE)?~^%;%-Ljy$ec^&d@?^Ea{-wP$y`b1Dl%7-xrWTOWPU;BIx^Rjxq-|G znH$O6MCN8Pw~+ZInOn)+PUa3Wzan!NnY+o1lDUV>Z^_(C=67W7BXd8Q-;;TO%!6be zBJ(hrN60)%<}osVATvhhk7OPv^8}eE$vj2oX)@1{Sw`krGS89u6Pf49yg=s9Wd1^? zMCPw#UL^ApnU~4DLgrO6uaQ|!=5;b}ka?5LTV(!5=I>dBl9eo=g9nt%=2VkAoFK3e<4#M^H(x2l6i^D%Vb_5^BS2lnRm$i zgUq{R-Y0Vjh2>H*myx-g%n!-@h|Dka&V9BVi@-ZzkJZEa;2rFUJ)gz#i8e8F#h$wD$}1;M7COtZS1tbb8wCeznx z)9zoC9_Z^^%)jK4>8@lh)}880E|@EW8Vc+`kWLg*nY0S?oOE|)jtsRksIZ$KOea>> zZfIV7QBt`dZ5~)0Taw8wisfaXLNdPni{iOle2~LgpU5TSg=8#W$feRfA}qncy!c>e zQl+DojP-CLJ<#8o%ymg;)o+>3qmzjO+=U*ys}h_w7svZjUF50ttIXb1e>RgVP`=Jh zM1%G1BFE>bpTILR{aH%Sob)x^y0nmsCkpekB1!X(%#StBmtmpIk1jTppH9xY@PcGd zDo_5-%XAI&B~8w-moicurBwHzz1X5eHT0!AWo#BFb9oBZ%4T1q^r1VI?uzv%MG9An zrAjTOlFJvU_N4l{Y{8JBY_t`<*hI=uQza0|zGQzgU8sa2CB2A94N(o<1KJ*l+4Q&; zp@^wyG~1o1@WRk6MB zg}5N+lKq**$yj%e9LvTj*=-3W;*XqI$wCmBl`OOu;)T4S;6{TX8QK}#9tw||$;yIc zexR>Vn;lv7XC2%Y46CMMdM?$~lbjQEq{QOZU^7}<(fU%sA4n83IoY7P+KvW;wu&1a z$9}WWT{xIc=7WvmpECIm;ntm6@L2u4c(%1Q72MXPhU;|a9zIY-TOQmHqJcsIITYI5C77K;~q8}we zKA9`TQq&~IDYGdf>Pgla&!-Zo!gI(5{T590#&a=hgHwh4oJ4D@__3LKW9oo~J^F?J z76xJqW9>6z?K5Jn!3g{ptxBvvo?FDNc?~5o5EpG(tS6IBwo*Bxo~<{Y?&_niOVofG z9H5rIFp#r4-`16^mNocbtSsZ(4MnyT~A<6h6)oP3U6+^a0 z`;T%|NgXH;eA~jJX$=Nsqt+Jhr^YrAKV~3KbuUFVN!A?~l};KuFHU7>WNcIs)xVHS z4&=?QbWsJ*6VlUs%#hO`lPv zFV)jqNKl;myj6N~$)q{B{mHHrHT7O$$;Pws!8ipbYxF3aSwf!}p04Dni5%?AWtN!3 zBIBFy&nz-VIw&%rKi)%4cH9)0U{^Ak%`Y1C3Qe$^`qg-!X95T5t1p=^cqU&^N(YnF z)hscFM`o0FsR>G*aokDA7srpzc!xP3@1l;#Gns?=toXq4ju-W%Y3c;TK++g54z8y= zp?JEGI%Xj08R(F#Rmr%wOEmn?q^WXtcbh9;h?Cko??YVVGdZuC4yEisF571;jiLTj zS6b9UucB5jV%L-D>q@3`8Dq;Lweo%RDLSrOQmcnPn@t&0af?#aTZ={^#|&gr=618b zFTPk#A5gIJy+$87-N(to`fR)}IetnAt?|Ppw78kgCC#atOLis`iMV$*hCBP>RI-v? zvSBwm7N)i~P3^`K?}jcc@;lR)TAcJO&tXn7k>g%@=}|033JiUkCRai zP#do}LT}v6g5J2<)yV#iKPG5G0LN{}LIIh~R-yB3Ve8E$slE_5bz5N(Ttmg6l4b1U z!-+w&nQvbm&}CQ;2o^MJCkGnJ>F+F-Sj<^fYZ8IzQT@EK#b+~_&(CaFh9-00bK zH+qh$8uO`SI&G?(B<-WAQB#a)R*vQlOj6GQexqkA)0D`i`e}*5;B=GdKFkeKQ&+0r zqXA&Cv7cz_9!T`&Q>G+o>dh29YIKwLz`KdsEHR&BikSD1ys6Mj^JK=cRz!5Zlw+nU z91+Rp(b`J6M~f@v9tjJ%F=Zp-qr)TZBE2+OG}uM+Anr|2M2)jd^8O5sWAZ6ev5Ab+ zrwe($m%dXB?$c~pD&aNuZ0;P$^$jk`7>BUUiFjAiYb4y9=*=WDVoYHQgB&S)e62PM z1+R9qxjRK8zFf-K(l__SX;QH>lQY%qW^1Tm3Z!TV<7smZZSIRNNqcn*&2mWMQC3;O zqp-4qM`=|G#^TBf9_5u3`aK7*&Hbr#L9E!B`gl^v7Y1_~^=f- zALz^{3o%-{sLu`*!~|V?j22aBt}NL_>zQI{Iu>jai%FRQT0Co~r7F3m(kfNuM0_|K zPl4|%_MWjwYwjum$rg*%HT>`+&d7UO6ofW8y4 zzEHi05O7;W2vjX1v^T~&MXCj(@f@v9h_x|CYZh!xFHYq$X|bjtQ%pP zx5^C!n6_TYH0_P&{}&=78h}Yl)A>}_Ctk`XH7E<_u1Z*f)P|*~xXVob3~OFcRyta> zkJG35#0y(cBrT#e2@T0AW%DG5WtH+dEE={+NRWw^d75&e>5(XH09!Q|7Oa8`jhMt= zl~6Q`e(JOCADTt?@R?^_|&ksi?$)P zC=YWJ?V*_bW@%VRE5d0R(pV&#$*06FOB%}4*2?Z~s!aB;5BtE}>B@v`_L~AonLY^t zbhxro0aP{}0nCe?sUv z$``7w=sSyo!87$Rs4bOku8GaHv_)~1lFAC3s>8NytD*Xb>Q&q<`>PV1daD@prD$jLN_$WF$d}J3MviLX?W{c z;0Vo(7veGOu5O?dr^!@DfbH^`0S}oLQHMP(qWjai1}{JDa@|jdO!Lzr)BH?ivV+*t zo39K>8W+n6Nt#Hb>A9+Xzco(TwY4|I=Cn7_Bqg1|h(;6g*Z{i4`e}vO0?|JmIFQT@ zHYJxP`Ua?@GS0*W-Dcu~UNdp^YF0HSwt+jxL^xTX!s67dPxR4>(F}2_LUc>^T-V%e z%x1C!Vp%1|ZE9W&jU4m5atG!D{?(cjwij5<#b&BU`2kw@&tpnBmg%l?R5<50A8bs# zuv_AVS0eFh4wmbj_GcU}nFq!&)Vrlk^&WOx*P~|{ZB@+BdN$h6ST5O36$$=T>XA#i z5R?11z4G)KC29&;4aqtG=IOL=LY!_A)k4&yW+}ISE;)k|3dFmPrc*7kcsK3ak7a4w z7>zk=E9tu5?0I>oc-4S{bp(oDqIMn(Q`ItCR!o}E{@2yk|THZ>DPR3RbQlb{f zN>Hg0fmlOVlJ>~Bt?U@uLaIdKunGOO?;lI0WElw6ACSmXIS|Wj;s_?Ksm0|17olTM zBat+s_{d_QebLoBg;t~{C3CXLaprSQcEG(FST?=`dI)ootjJR&wSg7>myBwNHLDB&dNGX&KKK_@ml>ez3YDbo6T> zd(B6E7sbs!n`CcMs2Na8%CSzd#$fE&YaXO}c-BwnsACD+>2O*;c5ITiyi96crQ>_?u2_O+oJ0@5>aN=d6;(q^XJg%gm=Zsddg?p4y|^TyGtJHDUj+eM7R?4Gsq zjRGEhm)^Urq;;2SVfUZUm)llMyc(@4<(k?ISp&TMoKP9j!y?90z0NX1A6|(8IVT~% zAtvJs#U2eBhVi$NH4y8v55*eO$t7a=D#inJijBTqRau#g;W6E%Ks}!r2J#2eWJgXe z;Jp0AqKR}$cR8?AVXu5^#T<3i@y$h34x)~( z#B^VMj1TwQVpv`2f&mInf_E-DN~xPFjhn4SOXncNMVn3u=6aItnSop)Nu>ZiUOf#b zR^k(ph86R3bb3~73lwvAZvB9F{5;wXmq6Fla2Wb1LqS>j!N#hDtE!ifW#%&v+GLM5 zs*`9Ujdisv4YYH6fV$%GO1J8J#d=lHt0!!tx+O2ssMPvZ{}!;9c%JJLml(ym>6#@P zd{dArQ#}+BV%roERUvQds~$X>F0*^lO`Fis;>F~ZRG%ZR9}RJ$+VohwzTI8Ae;$dr$8zaC@WwLn*a(YiLTcvnGKbjWMeQDZGAP@ECnQH%qeLzpU9IZ(mH9M__FB2X%R#ih=t3g@J_r2LCcbv_F zw7xQD3g|u}zOYVB4psaM1>{5$&0dI&Csqt6ujy%yIRa1ZP*v*FB|IfWTm}#&ZF>73Y+(pu}$Yds!vR$T8+!9*EX9!5gKGsYNiu| z<75K0tF#tAAlBBrHN~xdO*Clj6F2mUw#zwUs`y<`D~Q(T-AbpQTlR_NR&gHBV=d4= z!lcU)^Z2H;jSp!<%iM*u5JK)$)~hO^Hd-P(<65a2@Yn2_o6XvMbS?$aS6z+KYiO^w zS&NSmYh*%gTNiIDuGv$AIW$T{d+7hm!UW41#osKnz+ooTG>y`4W zGQjZ>XBB0K9=U7Kisq6BEO-dBZpyc!j;+o-{Z=GnAt#{=zJy>MEo z#gEFy@0$H^Sn=>fY`6&q=@g|p4{M)#liP8Ew5gP~2xY~c0P1ts8fB>7s(R#I?>5YE z^igt{LHVJ7dWq|0C1RR03E!Rm2eMO1>p^+M2y2j4-)xc6Z!eN#= z_ee?$GaXwa`6tImnEXk7bOol-bU=?hQ>^=}RPbFUw=tS@oSPkuTI$0gCT?~#YN^63 zw>6rzxLrO_3}~xTO@+N4tvBzZGP%_dm6y?3i#0|)D`exir)^v?yQlRnw*FNVaTN=% z;k_d_8xKmybAvHkH*RuKUuH1{v1vLjN!R3L^<<#YO{;5cOZIT}Gz7EB(wt8_Mzy7J zd(11B&dZ{OeRGBYgaVecGn2HNha477gnJl5A)c0y#ee*i4TUVX=QtW5gX@l++x8gM z@9)?L;1G!mqut#Lx6+*yCYih}+F-AZuJkw9tC}sbhXuDtySv&jGub)NV{(?SkT%#n zgf=JJH`>|#RQE@_TW#d~j}5*yO{dokl8(#K>`se9tesVIh!2V9(qcb~yVsFvxt;+J z>yd-$HrhCC?lRbKR`%^5kYTa6Js6PpD0I_5>0`lsokNYA$i+gCnyjTMSo=11Tg?6g z9;^8cG0i}6kxv|;lVsnH&d?_wT@c+XR;vulE;UAyBBn`_8N+?~cbC9lr&sBD>uUZk&(yW>8@u%~T zYG?f9x^1<@laMgAmo=Jrq8U@seocb6w&apWhr&GPNoP)J!)bD9t8MeEocj%i`TZO< z{*^&+JECKASj-s*8`)lELwY6fnCg-Xtj=u-;!bz_A{Gas+9~^ol+!nBBc-U#F5xt6 zwv--)vwgIJy}+@8Ed|XSm$p=&qpAp>o6~Vx_gE+nX}DMvA9xgwKrFoQu&CIAGG2(p zeHzv`YJl#9pi8x4*@Cz%t4SRbkm=UsSXkwBt4cXKZ1`Duzc3S<5p+2`U72aI6&Rtc zzIZ}2`0bjiF``{becV-l0@}60aLQ%qW>>44=W`F4e5}P?#FJ?TnLfU@d0jn(wh3Lv zx;ClXXx1in9go`N?&Hma3MragN#&z-lY2pqRz-<5tu+Um#KQ}*`EtWoti3SUm$W58 zwOhPGWB=}&m<#sB;t9E+m7WQ?p)WsA$dRg&HxXB?50?p9R!iJ9SdOIWy*j$klh(cH zmAMrCb20`9T9FZ}k;)gkK9Ke-&=swd^5vs>gd-uMeVnvGf++KJ5yP~6B9&^jEwP3t zb6kIdvPjlv*?9|p8Nu~f3hy2 zuVC}%S&ch8MJybfh-_K&pYcG%#kN7T;$Oo-3-^!FqfwPY$HSnMZ5#xhM)6W&EK6Uh zG-#%)Ej^D`)i^A#3dn!Llm6NTOtpAg-0Zl#%AFeeY$>&j@b zdMdug#B+E@N8R$YgSu;gc4gZ}hYbe_L9>;;4p~yZWM-`Y6D`d&ehXN0EY5-_UhPz8 zoo#u~0TG3?QUwt#HCLm%*!(xbB~zeJ^r3!xo5c8vN3{z^W#PSh8s5 z?F`f;+1d`eXhO{Gh+8MzQ#3{my4R%IUH1-Y)ou0;sX0`x?@3v9U7wP&r1COq z{fPsoRKLvHlJYAY+D+D$)b-h@iq!4JC`;=4Sd=A|uLrvq?EWxR zMeO<}lqHr)RdxNpCFVC@^!LM@VzX`c_n$1=?oU5e#IBE}SYq4NN4BQG5_70bCBgK} zld^7l;mML49(St9#VbqI4+vOtE{RnyNoew_wd&xx8@k~!~F1)=7!7N?3M->OP8k^l!nJkOPY#Ts(ZYzq+IcO zT1n}6zN!SJaUWEIp7xfK`qlZ25`NWRP*Oj;cP#q5NlIILGRgYc`A}NrXSYhGzmcT0 zwdax4&)UmK*3ZsIk*uGc?;)w5wWpBO&)O?U__^u*H`rR-R zsCwr}>FZA%so(WiI@Is_!$#_N{Y@kFyZ)R}<#*>xM)fYxIH0c z*{Xg$NQqn?4pJi3;a3mXA}-GbDO=|5$nB9J*m8XzNXguu22wJ&SAi^<%Y#5lCQ{!p z+;n{gNZE6H0Z7T*9{;gq;@p+?LZ_06wnKmNN6Fk?`>|v$Z-Y8y+8aL(nR_8}ec8uh zPkYp-BCCGSN6Flt@~OzGU-3~gw+DPI8C|7Hj~qL;{VAE-vptr~<;5N)b9=0(BCCF< zN69<}=B}^vIP6g&w7=nJ$;{(E*XMW|XV50jW0S!U-)Ir*ly`lKnI!Dpa@;Jdv};_K zQ|b+Q@rqZhb1>F9&?)vX+1$6!gm6%3yho?kV`7jRr$a|{11291a%?7b4OX*mGer~s z!mps?fS{Y*Mq9|7+EoE`s9L*M^|ObFyF*!D^YL`r^)#Szl`k8#Pewx0)J-1`bkx%` ziRo21TXd1pBAr~X+=a{Z(i-KRT+|y+72A@n6@#jHigji3&a9vobA$HPzA9%dt$D7; zKM`=HHC|R(dUKP5^68V9Sle=RVzPiLy>W9BieYU5*BPv;Es~mep}gbL6m^#qrcV3r zrHJ>78@It@KY1vSl>5r9J1u#8n5a+MlCJ#_f!LSgekRfu2@Zhk#&&qFmm#jkD|hC! zY6_et&qe56PHQ$hwnOmMh*ja$i|zkHm{e(W-;IyNw3J*ghSrtl$;+>`efFA?sbX@* zD*u9f#UQQi(`n7BXRr{JX z+xo5*O|0*2c8VK0xs54Zy}#LMpW0)63v-nM?M!#P$Dk>w?Et3CZmQl(<8;BR!9sy) zmX{gGt0)}ah#L-q5x#9&Z8wt}*Iiny>NcQrL8n@~!c947$3&`BJw+&;bli{Qc=?Xb zQHmw-s^Eo!96aHq{j9WXNoWiwf2|xQ(E?P}?z&w(%DcpzclS7sA<;%K5jOiVBgz7i zc%e`wbYksGB_fZZT++caeAEw&AC^WAOLamuC7ek_$IfIRWww6?$yF7?dL-8T&ZFsw z{2}z5j7qL)>Y@!1Ot&7IQ#(v2cxclf>Bv2T_UCet9}P>A@x}6zu&M=5Xf%o2C1?jG zJ0t&96;Sk~)MvY0vJQvPwRtOz-(ZVUq_jL6Vw<8{i)j;^6Hqk=Zr5gD^P9_xJ|yl- z`Vdl*i3;x6W71_@*mhkYcdW0=rE=RfqRN}lf7ly-h^Ri^C2vc1e)q5}EFQR^qqE{w zBU{N~Ati(3EC3!h5(R1!cRf{HwJp9^ezfmCQNPM(hN^?hyHzJ^H&(?nmvDtzUBZ<; zfD*>B`?rxdHwFV@r+gwY)qM46X`BvL?UytKQQNEQ z^v`9OSOY*ZCzXEUhcOtUa_RzzOY zVQ<_a4zieM)XZ`*7t`Zt6rA>XZE-K6SHY&{O zLT1|@HY+Hcj5%CU)_g!Fvnbw6CxvWnqDn1R6*L@EtH^`R zv4LF5E#v4}cTu6@>L{#B-a>`Wm+{GKvr1lFn($w10~@$Lb~g$#qe>aS4kqv8H#UUOv0fi^D;m&|HI{DL^zw^B#oO84+-c-I zqKcoO!W!@4BXR$QOcDEcq8Y&f`8Ft_M7Ep;o4n_Ha3mDI~SzNw=; zJZfSs+F^V&9;$FFC(xpED%K?rW*@s!`5N3x(dK`8Ad_B48uajym%X^In0>S_j=5+> z;$4g5>4doAjb?QComw|FBp59*ETZodIgl}{rMfE*gt{ecgk7WeQVOXAZuK*}#>YnU z@{ua{KDxP2^+@tiIFEB&2V%|aGo1~Pueur&Pt)VIMVBB#FG1I+Sa-&`Wf}Cuk#*0; zOX;D!#mHgDK~PoqpjXLUv3_X|AKp=++d;eO#bmRd>IqGaMJRxBAl81V3z2icZXPQ| zu@>$bW2Hz%eo=C8Nha4NI(3&IhJwyaRu>?+WpfAv>MTDEq+;djDvF|dC$Lh?s@qfL zY@S~Xs=-;>=S^2Zc;$E~d*&)724_|rBv~D>RQOu z*qSV)ItS=gPOl_}vUo*FeL$j2y3`*iS1wJXB9!PING}pY4t$V178|0nBM!kHH(zAO zGZCR|B@A`nxEawU6?J7#moc&&$n{xmy?P|V#c6t8iW5DRt|{5Ycr&KgY&;m|;=H>$ zPj9%Xa}`sUCd-b+qlBvwnJS6iqni-MK#r90_%;iv0f2J8QXS9J$=q{o? zEY*drUe8*q9Ekf}DK)4nxYU(~aZc*hcwn&V%XpI9rFs&Hs$-PZp2$pgiB&}2>p>6D zxyYJDqH?S~W^rnaH{Zchof~SrLU)SU3a6TE3C~k-Vc13!Ew<+`*UUyu})mT=IK8qO4ZWK30l^Wj{n~IyA>C=4&Xjy6-L)>g^Xy z;S^=XOE(Ktm&ol{K9}e>WN?@Rp_(5n80xM@7gu40BVJp`D;GJ7Yn#NIHau6^G{<&Z zRxGkW30-_$StqLV-Nn&}Sku91fv?x0?@il8o64(Dfc94Q(e2QDF9~Ov>zpH2Lh0!I z+(cE$s}4aZK+`?qX3!YjJJVxbeijV|`Ab@k_iMK{*S5@Mg`KXBXD`&Sh!5e8>xapn zt0xWg1=UYqZ=AdI#BP>$3-`!&W7Vs%O9C{)zhr-Bva3sscxAB?9=kPUw1_Nf0?(kd z%PV!LuJ(zoWLAz<`yw|mh&z{Dnnt-U7m_P@SedD|?_7~n8RA@$vwn4~$u+h1r)Uo- ztpvHRI$H7|HvNh=*M8lErJ!~Nb9cPzc_CWQ$_aH_oK=WJ;>k;KQ`Mwjz-7g$9+Adu z)2c_xB^t_)C3$}3Z4y_@EAeo)&!Wjv#lg1nXsL&3oSmg|9LrSRSEIxJysS8#SEgNJ zVp;o7CRc;JIzSFwyTo#YqspkF(I`3_`W{NF_CfAS@+?i#3hH*%?PONU;6W+6lcq04 z6^AOiy~bMJiw{Q;y4t;OlHH^DB&*#{1f^31m*%JC?XqscX;!6}9^|9fAA~0~3>dF^ zIcu?~@@PfQxR%By$1b;U$>ZMyxmTqhhH^az8h zeCp%edNABA5MiXF6*o`q2547;;iXRBilRr6qdVs)vbv&0Xm}>CMzVkOs3O`d9y^sE zjc!G=hV3BAp&Iss(5OlzT%p#x*OY#wual>dWhvAzG_$mFwP<03QA`Ef-ku?NA|_&W z%|k`&Kw(kqK-I6#4ivwteJJjGt5uvVE!WM}Ra&mQtE;r4Y7xtRpRcZE*o0lBHmCBK zt4mU<@EbO3SGhLN^{|COO~3kGS2Nw#r|TJae;XCY^SNGqrRX=xSGj1~tyHDhuI8KN zu47vz*UFQ2f86+r?YvB4Rt(ReCL&+iIP9g#pCQ%zu=VJecU9?{4OCjGx2nbahA7Y8 ztEBQMj}1zv`bzey0JO`^ATb(D)AEyJf4Z((y~)~~R*kLNQ_LQr^}0X5DhwW1=Q5#E^^X!S{oObv`m(HUhh0$UCY>H;t)Geb6&`+vq zwyQR3>+%`mDl2o~s?NUX_VvRrx?Df~qRAVl^XXD!>Zpl3vqIYdO$m5Jq51@k76zAV zRdo%jquNFP)f!Zcyjn4rJ@L95oH*H`NyL(*s%vDm=YFKClj=$P!<4{lT}(18wH6x3=QeP;HL>zDH^h{H)&zvM9yN_MyK)5ccXluc8&G#!qu zGtTvV@gf{lXlojc`Q=QhW69s9(iPA5(&STtUiLAmB=df1t_;0^5|J2AkGP6$e1^z}#QHmJ(-I>+x`V{MN`z>8ZhU~=ru9nd z5G9dVprL%Dk*Oh#LL&Z^by$OULPc1v(jQ(n7+I<5po%_6>M{(&UzC2rFgOq$T%(c8Y`L z^emt$Tw$@Ljd!Sd^=x5LzsB#Eq#EDLD_7zSK?`deRZVLBR9RDWa9{Lw=4u_L3{Z;? zlo7_5QoZOCM`5tF&fsZ7AAP;VsP5BsSaROQq^D{&FO3)*9a@!uw_K}C!D~PPvG%N+ z{LRy`a-M$k?B*Ion$?hHq$i#grB!(xOf&e~nC#0Z9edJEioJu`UfLH%J8Q{JIvQe% zabu-C(Uv{(y*9;cZ``a%!y-rBFtp!|vMsT1us20UL_n^;jWhCStSDA?KfATSVpAY> zQoTu9rlhwrvgYIw#ahj9i$ZCPH7VBAZZx8ZQFENlq&|XN=eDuN*fqy-Q+C6S;{b+yY!X$5Mq-sfm{Kz$;;!w&H8>g(-fNrlJyod& z*|yz!sV<@WEoxAuoY%MKn_Ly8iJJ{kL&RFNF$K71r&2=CpvWb0V^%fGuNiSk+4%iY zvq&v{FTWwQ^n{u{v@ZLsD+Oz|DISLy1ff7zWP$?A1)0bAQ5tQS7F`AIG2dNw_M$-#vrnF=2s6^zuAvpxM`Y&;qz^fq0^A*}bD4Yf`gujWqx6xvmY*Gva!D8;$)w9 z`b(PW{PrE5o5=*;%o_3AxfwWu5m}2DlP1Y!r*_c*Kz4EUKJ%GVu8iRX%yEVy_ zHqI0&9Svoxll3BP-2Rm8mjN!xwi;sqJKW$t^(~oxIss{NUpyNwzogxJ=7^Mw8gG_! zp)t$3-karI^$l{7b>g}tQ}~5EJz$*Xl^owxlER(``vxd!;+f>}6&`iTA znxg7S8NHw~hE~hH5HynlnkIvS$R)X>*%S*_pl!@v3f=VHsVO7nx2Qa-?d1Z^02+%D zyC81v^>Tr(oToRK3@Mq;cuyTRQ)9DOWT#%;>0RK1+rD)t< z;iAct3srZ=RcV@Ed9G6RxIeB+*K^~ZuC3iSr;GJ{TUB!Hig8_D^-i>|P<>^cuHmw= zNmsEJ{_QLBT2{MlDT;_s&(Pvzf({U>&r9)>ZIqXfcgt@wQFQ5ES-WJQQ@rs$X#ieQVx9KcbM{~8suT(cr5W?v7S3rqXxhR#^V?$6=eVmzlyi26)J9x-*RnH{7>EU9 z;+S$J+nQ|(qGiqT;LcrvHx0z7ku|u01#7bcuhMzAkWJAtSMrzvYTDexz+H@o3z%dx zhauO~8S74axFEin-B;gqgsla`J(FJjNPbO;$gS-sDBNjn* z36C)$#3^mMR>#YY1g%IEydok`iHqq$4_`1PXx31R?`Dl&v3o|IYq38AVat-Bno2ag z!9x#^;vK|}7BS`IUigB@c-eQm=9_9YWYSPx2FQIwyr88*%MtgzozH)aYL|uTK6g8)6sEbZVd)K*; zT97iQe27|xU?flOBkQ7`sNW;Z;dZe;A~tIk z24iz(x)+?V_08guUE#{Ai8+aACjr*#<$8$0JCR1o&O{d#4`VOeP}w)<5vWFc^u!?! zcOM;UVsui28dWrtYe@G+y@mchb6U{Nt1^3NDI*s*t2No9AWucP2d;^>4)EYj>?81S z59^sU2jkgkH6eIQlAViapM$aXMC{??!%*%4jHu$6IW|R&jM>FzyNfun9X-hU?sMx~=+Lh|VJ~+*x`!cD34?XLpJ})esuw#0#0^T8C3#5O5N3L| zgZC-fRy~YEnNU+@qml51h8(f}OqaaA*5E!((z(W;W@%l2rx{qc-|NL(p{qd561ob+ z{Ggkl!Q50e&OX*yWEvCwW?9lpw$yA7GvRK*Y^1tost}EIZ;4UX?-3S{W}2QtHM^Nj zc*x8Zw=wGxcX_JWJ?|QGa(|6$_B9qV#;`PryNpZ;(#HE;b@&lg<8$xnvJ%*5msyB5v|F+s!BP1IFP&M9eXp?b0LP9%&`!pUrmV#vxNm zHg{$+v>r@b+Fa{Lv%DMM=yr3mKTE?f(|1#|y#CB=Th7Ot#oj}IdTLTUPic%;zkEZ@ zC{~*S-HUFs9Q7J=ONt|AG4E;8{BB*ENXq*=Xo5<9^W<`w9G$Si@ga4uy*S4-oj!@^ z1~$59tBu}qu-(4a9+vl+$pbOg*&ut)xqBjBxsi{uOtvS%IceG&mg*80Daoj4Cz;0a z)^W2O-Pgv~_tPbGq0V@o2Ge4rL%L@UUByMeRbNa;x9iL6=xjY+CH{_}xjggp83rwc zRFhNot55RqJcUo!aRjWl=7AE8+?$jFJ zOF8N~IG&rkq)SBWv#TR~kyMl3iAJN7W-LUxKnfDMt32 zH1H_HHSVrq{>%zlO<@iNkj`Q!&MM`+ z!KDf0eJD6h?53X48&9WcGOUd@xQZPP6Df`+rzQ}puvjqi=rO9lxLm)!9Ut%V+e>_= zn`RiA=q0@A@&n(kz;Tew1?;~Ur2TPvk@n4CgHbPS{uH;%1cR;V#i?8-Ew%@VtEa0s z8nrKswTTNj#2>x=Cu~_a0@J=J=?H!1(M_>514K&= zq2AWMKPB`x^n|v@DoY3bXwPe^$3FhIDezj1IKelSqAg;@cL`3VSkXCtdZxo8GrN-c zI87eQD}!Y5n-XQ1b{vbh7R9{t6sno2H0|xBJNS(?lP+cNp+mrC1+nl!R~~2ZWc?Ir zu|%xs17d)#C7(jMUD*yYm0~4c^QGNs<{~OKVbY>&Z@#a!tIPJ%ZL_ThBAs|FbDx7SlBR>5w1>`1)xWvt&pv6r5< zZHoOuZe!%?5o>Gf!kCyFkn5Ax{ax#w=>jWEhW$J#nA8n(|h ze=E`E^1OJ7!K1kMrFwelLPZY^F?tb|!dzv925oc~M^L6xTalsrzEa(^JH#}erRzFK zL+l?hYS7J?;vyM&tMvrR!~f_vxV)8>E`0KcctPCymg)A;z_qq!4SJwX9*~-9sTZQ1 z*y*0BS1LlXa}^ie80$kwG$h@ap_)Q%g}6-y&(hF6#Z#xEhj6Me?~$dV^(Qq?6}goy zxs*<1PNh%ako-!suIHXI-)R&to^tcZ^#NLsrgzpna=o7RxDImvXKWAZ4 zj9!bLf)S${b_{K)rdw-_IZsdF$`KN+@OUUy)JLOvPaAldnBaOO~ zqFodhJ5RBWOk7@!^$3sX%kAuyM;50}8xj^h3@1)%5Jp6zZ=V)YsqCYegGG z3xRnsbN)Bjri8q-RQ2cgVy99GukKd zkcXOmTE$z9E}fuz#nhRTsZ*pH`4}J%IX#jADb_MORUrN>fNp zDpGW%G2I1b{Pb#ae7}3^RX&H!dJ*TRoQIXhm6$Y->@J14R!-=V-~S z*sKjcJT$F9;=Oib&NN$^xMa+%sr3#<-|2#Wnpd+oXdbGT_o(<@s#-lVtA=nNnik@z z)2M_R-D7A>lKOb(6l!KH`1ItG^bFI~iI3dcGKJzp&xg}XB~vDU8mHRoQzIWZ zokBT87o(bH9O+_IaUgRFMRuwkNNVKchEphq_~_$Qi%@v#M5t+2ve2HSsS^A9FxDBc zCYt6pwkJ*WDdHjY*o4@GgGf^-8F6rG3dKllU!isRDHS90w&^CCm^K$?T6H%I#WmKZ zKDWv1SX2{^lue-|rb$^NDu@-@JwG9 z#obRay~OyI@=uU^Ad`P$OcujDD`bGn*SZT|f1XdSv+2_XwLejpwCuz-^r!05pDoSP zm~6xOl}5F6gYM7s4Uy9V$pW)Ip4ev^4|jitXW|c{wL}a)If91`#-)yTXl}sY_9=)2F*f;*q+%=w0HWkn-GS zsQRd1mfC43r9u&R705W=1f~Ph-0zTuxIEQ0*7a%=gCm*q3mX}tA6{uiZ+K^h=A6zt zc7z7)bI-b6-k=*j-J)&%WepberA!YO)%~`@QyY|=(S5UQQakYlBlggjR_-pxIx}AM z@__U`3p`Irn_KVl7METZ=h*#B_Pyyhu!ZMTz!g$bvv+~~WGL`_=JS#9#^$q;`?JLY zyR_7!{`~H~8(}xvB9+DRA=dys0{VQ;>7~%;W8Qe4E&&?BVJZ!>!1)qno} z?m)IMsl|z#-jN)#i|4sw$V}3YSHBMTv*nt-(dw&^pFZ@k)#Zg;{@3{~V6~5UD4KdHpa4+xjGKd`ON4FFqdj_lNzP z!}T?`r&jpU$Lni&DMY|i2wKXlZy9N)%n_PMV=YkcG8s}kS_-7j#f!`hsh*hMr9nPR z=bLS%U)X_I%k&P)-HP1N|O+ z9I{OpcqucspsqK&H0DoVQdvv zJB)3l2k()7X!;zcEarFN%5JI8VauU@AHK}`d=_68^}F!pl=0?$IvVJ(x29 z0-5%aiwhh9$u6LK7fD+B4%qQqL7=-fP|-qA73le8<@dQ~&kair-{W}HUOw+NSI3xa zhR_jan1HVX9`jAN)H2}=Ov{X;7u_0lh=GRa-@s@1>#p2f{R&OY9u{hCAONE0 zWmnZ6MiFzyjDdzk$qx~978#7PfH<`V=|SgT5EdG(Io;?Bg}J8TRrQEhsOm9uMjtqW z_&0E%?gtdB4*pmKz90hJ?+3#hz&Tz;3m%uK2l;bMWB zrOQxjsmE9?n$Yjld)-u9?+s9M@2x6)gzj5P6d(VyzSQ|_oxoATY&;I7W9;OXsbgr4 zmelVuQ*2u;Q^i5G%oTGuImTQul#cRUEGbNumumF(@b&wA7sGbjcd<~--{thpX0xhh z>qZsH1GQ*L9IjTBj2p35K0MsOYF$@`i9{RmfUQcEhwPwNIoKDfR*uXuW}>5oZ<-q{ zC~Ha8k2A80Jt{mlgsbr1?l)UJ@(`WXNAQ)9N}C+ePc8OnzD08Fs`23FVGrxCu+YVA za3k8gqIY)K?KgMMNbqL6T-;P@1S@xWzunB~%>l&ck@r|zZryqH;vqJc7PW;lL$w&* zZ;-vuk=<4ZWnG(O(VWX(eg4&YwxX>Fa0*iD@B_09ZYO6?iK!>%L zf2s_J1#H^Y{0p*8Qdj8?h_M;bcUQfiW{+2uJM#y9#`9K9-G2Ts4#;Mpdarl5ZK9ty z9?UoQk9H})OKOL3=B%rz`fYVhGZ+SN3AwHnk$=)JoRDExLau8?WJEj6?kar!orGN1 zO33PMHD8gn9(*f$h6ZHuIEccNOI?Tp?vCOmz_#Pa>lz znX;qP;7k}wE|y{9Vlh+COok^th1~}qblS?fc)oZ0BbceMT3;}f6Frh-I{hR2F~PJj zX%}D870QiyJ6mkNMnujRrSo`66FjIEC%BQ7<>mfxC8BGwsjEfwpQ^=jR=y!4O5-vN z;G|}P>V{_iaj3SBd30SZp%-RLEcL-kz-RTX1Q5(YivmGAL6AeBEk%XI@C3)}EfEJ`#*4RU@ z`Bd(6SiN|m9<4eeNc=I1?fkWWT1L=;<8VnnWalHbTMzG!hIKI`A_M}m^t|dqO~WSC zv@TNq?Wlcowz18)A;>QV3w{a3>29V-7Otvm=woYa{P&yH zEEe#NzCqAAfw%NnXIG4djvJCq9XAlIof@32$XVk)yU=6=A+af@}li?s;$oMfBUP9?d0(JM9 zjE&!}z2OC?tg)gM6~nj{s-8qyTB}3HQ)$;lqhL&++eKrHBFwHBL>$|QPdB!*jEX6` z@ybE-&ohQ-Sno>lLquP)jSWt?3&p3gDt}TVJI~0s1gX}f4h^kPbg<&r;pF76!(n8B z9XI9%FDtT>NUG*-I|Xl_o(YaH0tt*X1PRc{=1O9FRs!Y5K%SX0cqAMWpynwggU2+d z_ANTM?4)6dVZ>pHfn0~1Mb}6~Yh%)N{E4)sMKt<(J=;E(wPGy|Knx=efC*-+&qhko zli+X=z@hP;O#$ zr7A7;Q?F-!sBWwsZ;b?9_I#+XHzoIC#vTb<=R#X8opIgjbtzeCG(8#Dwm6y|%H6q8 z#ZftQWE(kjKoW=J*L!FHSBHJA}i(l0)1&331Ds>J(<2Vp@g|14Tk@y zeg+AHQ3ow+>xtFUQ*tt#Nbq7cn^(7+72Vs&Z|_AEUMv`#2qxCa{WjaE_jjgpKs&3T3FjU z(oNu;!uuo^sl1KFVa9rD$_1)JeJ?fT!jxwbTKRZeT^$7L%utt0WHV-F6R;#9eBMGd z2#o7;34y|EcJMs!N?fBh*>u9GF*Nm{s1xCq*V3NjD4u!Xx`uxSxNHqQ){ zN%)>NB1{H@AV}!pKW~?k8QGKz{T#hHT*0H4j*P94Q2sXC-BycY*5!6$?UK= z@E6BYz}6s9M^XdBAg=$Zp}AYV!3{-ip#Wgki};jlaJDy}wD(;YcvB$^yo>Qjaa>IU zQrqVu{rC>{P=UCuk%&Y6*yoURjf6D4Tkc^uSH(u(f5h-UMjr1|a@FjrCi9a65%{&p zQqx&8^=aNbJ$4sNCrI6Ar-FQQKUj(qQYd)FueUb`dAxm<(1EdYcctC-RZVDZvtWF& z+35p`yaau~(45C-D!oBE+`(R)pA2+lG+ZNLw)yD`hK&KlM91R~v?4MruXzjd+_+ z3yN&lX+z4`McUBLuUjCzv>Em=8 zkUlE60hx;i%?sBYMq4P^^Jg2BIXbpMnbTq$lsVe8K^ebt3zR$Zw1L?ZN*kCxGqi!( zQ$h=vSN>b!>>;2H&h3?LaBe$jfva`iHbAd=wgJLoVS;hm0KEp(26(y0odP-`C4j%^ zFg2JG7h(>T(2fb*NDQ;6Z|XSfb#+ zsM6>{IGC1apFUrlv$PI4-VZ)+%CmSv4`QS^M41q$F!VkL@s#ue@<2qhQfky*NJ4XC z@G0)O5?V0%iE}>NIyB4iM`ySb(~aK<5vSJ~vVpas4BFz+^KoISWO#Jo1sxy*P$1u3e@fm3~1dXCBsWD&2W?a-QMUanuiI zED6ft)xuGRQBOl0B78sGE?^*6?~gHzzI15e0KS3xh{6EGxfViXjw~D`n5o_g&3Xds ztP2nh+{zpzcg$f;W!$-(5>7rLl0N6K0y@=%1?CLHOGu=#5`BhYCFF19Fj|6!F!of# zip&{?6`2zYD>CO3R%A{itVp}$7!OuXGAQjKV^Hp>5rR44#>%YRippT%G`UUOA{`kA z8E?ZLR2Z&3masCDb&=!Rg9(GP$B?khA39i}^^Y)$Sc}^KArwX$#Hn?Ma7ZUHSwn9B zVukMH!V29vB`mB@CA`#~L0G9%K^Rx#i*04LLI&&94i4+LO$O_%^b9sQkA%Rr-J3&C zzs)P1aT<|Td!*t^=PnH24n&==v9^{Ax@4LoQ&^a^Zvml#G7bK;+}+Lg^V=MyzNG~9 znNBXOH#JWV>hf{DpMA?g)%rza2enDwaK7Ez+dFQZ1ndvNI$fxDu8>@-r*9AUD_s8E zSI{&Y8^*3ar)-mZy0Dr`hM;Xg>TiIL|L*I8#xdKv)y&^7;UjEr{eP?N=IxU1%OaCf zQ_sggBh4(X2UiQPT;`geSVr9-HLzOrEG&uTHo}E^O|R>m-OkqQYPI`-$DjUnh$MbJ zUIX$c#VlGU4==7y-E5|LcDT~bwZTaMMS37VHs|O8lHJw!GmTRV)X{9K4^d5h z@%&o7stJ8kIZ5O2auGe!L7r) zC*dFsLU){j;ca>S9Hb|;G&C)lb~=wkjRm2X#lnc<;VWGHrHr}fI`6%mH+DG3zHyLg z>S`;ci5)NyIT9%v#TSw)dL>=RriVc9k)l`U;+*T$#4bs(-d=Rb9FlE>gN1zlIM1PQ zP@dZakZkA*RhHr4A*J2j-DZ9M{z}#7Kr_m2Xg0gX`FfdiKl_TnzpHui6@fRGR|LLW zUg4#Y)fzmh*r%MjpR=F=dv@7oK?8={K!Yx{fd-vw0cDoDHrUV(*A14rh;xJBZDh>- z+zQ=|wo`DK`#DRSTisgv$nQ+M$)2Ts$t-iNv<)=(_vUD4+|N1i#N^V#Ok!qfg^vs` zt?;I^I7{iNUn;twvcl_=Y~|U*|hK^SaI4gytTt9VYQz%$CYHsX=y~b zn9wp<8Cy$0W8Qw?S{hWg`^0;MkdrMF=W8MtZ z0_Kc3Env>9(+pM{dfMQe>8AzG?UgNKQeUKNrWcrdS^yLGbLN{(>Vt3#MXv$1^d&vO z`leev$ow1~v(ti{cRzP+UfKhn#zcb%ei|Xc{oJt^lKZ(Us^EThs7$G4+ezwv_BciW z1@32G6RN$OTH=0oINTw~kOcR$$4cGLzAAM;yQ)ZiW{vr}!2Rs;+;R`x&%TZ;!knhF z0|)MBkH?kV2#=|>tWI=4JEEfd*;jglR0sES7Ktn_;ey8B%>Dcn#Mu4ZgxlbLZbA#B z7IDsJTeNs<^RgWvI^Nfd2Y)#a&C?ON`#HyPtNXbLF>*gQfyVA<59{^j!2Rqhld}+; zmvK@ZWBl{DekIsr8pnOyxtEt zcRzdjzTO{W7`}99;Q*dM`KKf8t+-OnD#cZl6P=8ZY` zvqh@i&#u6`pKU?le)c7B&oHX`UM?@G-OmoIc0b#a(EaR+0{62k3f#}GC~)AoqQL#^ ziUKE-D>BEC@B`V{*RaSPHCUOAtzl)M``NbOC>NnfuulGWWA9bSD?qkUOV@h4ra~m%1|u zD|IRen}U)1*>X^yIv54+es-|j{cKBv^GHY{c0W7l+K-#KpHq<3{hY!G?q>lgbw8&- z&asSBj(0!jp+fg_3RUX|>Ef(?l}dC!r_^Nka|)MpKMRl<_p=Box}OEejQd%D%($OZ z$gKN01gc!K*m#_8gIj&Zs;g+0zw+|LQplUk}B$?&IV9m#&0S-)|O^&I!J z=lI3$XHUubSaWCG`ULv*YSJxSu`gcK5RbbwktQe*Q&%l|oAkUuU#H z_ZEby%ek$8aTS4Im}3O4U0&gZmGw?LQmKW@*CZD#>Y6$|y3x0MO=97SY69z#tKl{W z#r>b%U7iqE?4EPSi$){sS|kQNyB-c`+|kb)AZ;1Iy$$mGv{`DiOx-XkA9I9--@U_01q4}b&T?*0jb**H+aJ3opg|C*)7rt7Kp7+&> zZ`G)&ZGbzHnF3yl!2EHpy6vd{?O%0eTA zE#n3USI7(wbzuW@}Yk9jLqS?n17^Oyu?epG<4eOZh&BaWC&J9ZFzZCPSx19Pgk4EyV>?jwS7f_lE^b;lM9ts z^b(C&h>I|BIXZEud?CGpWyv69YL5zv(Wfh_3tVBX|Du@U`mg2wRk>PT?dUxSJZ5oo znB7$61KzYkY<*qh3ka^*A<^Ee(*Ih6YbyF+S>EAl;r7u$mG+Ikk{&X%OlweAj(lIN z91k9?s!D^;H><-PIMMJyd9_APt+;T7Q2(@aJ-ZW1aeLu5h27(Zf-9x$lANv03Mt{J z6Btg@wlBf^dQr(uQi87?z)+_-9V+2;sD#s@lA2Eaed*a~vheyQOci}>xe6h_->NxM z?{bVSV$P8-+DsD5ttMqFke_dLSR_a^DE8}Ma{CW&XP_B0TaU?!l}5K)B;c0gS^OfH{p?Fsnr|WudQdBjdQdBmYycpP zkFMqYmzdi$^iY$?ck%wQobztee&B?H6|#CPZNo`5A9z+x;wY-F@WMUG93wRxO;Z}; z@)|)%J#f@O5`W$DBit8stW5p{oREc&2q3t_dCyb%&^ zn~>GR9HZI|M=JzZl=t6j6hVz3>XX_)UMF?@a|PA-HPd9$#{kR72|F@j`F0NR$jhnI zn*Fpm*F+$TIFhMI8^Ibg+kWsd4O_OxeIG{7)@8V`wfEcQW{cNSVodQ{YEr}rvPoYd zpY<0AF(}+xDEK<_Hcwo-tFX<}aUreCeF+o>8Ve*t8M zfEOhJC?*Gei;#BwcfAla-Wu0@L-4iEn;n*Lp{SAmWxOpRR9f=YJe}u(?)6&uQn@Kh z3Jc9iHt$>^pA*n*0LW3}nPV8&6e&%*Z8j(kN!ntfkpjn*%>bB{T)HpqG(A>%Tg~u- zgjnU4y-;cQj8NVMRKwa(d1N39OdZ=}R(^lL3*fcn4(sSuWN>|^n4mZoSP)k!47pbkJiJCT* z;+!;9nK?<7d4^1FI^j&YJmGX*hY3e;@`R(B)(NM9%vmCxa6zR`%+5b1)i#cDW;POD z<7^B7XqL#cF#-~1V+4`TMggEqXJZ5v%tj->wU7%1r7gz3{xAJl#PaWpf*mm^gMe@< zkS}F>o-gJ5o+;k&Rt)0u+HHjvMfaSm#IA;h&)1Z2tj`Xs{inmadQZnANT%}V^;fcO zeX4fIzfTtK55>b+slOp#+N!#oZ|*C^%_BNuUzwum1+3(V!+|w;JzJfg@9^C3zM9^N zsAo!pdngg;t+hxe4Zkhyqb0;qF}q(vyqIQH@p+?rFul9?FaM=b{kO~A{bpDFRUaFt z7d4Zd+SmZV`t}K%7GeeGRi>Lc662qsfc~?ZeL*7^4;Mc^nAgNdRCETzEg90!*VmhK zgjs1f1FP|QRrC-r-X>?5yjx4z58nU*SjhVMStlsiS4w@TzQT`$CrZINzRyq(4y6M% zk+1MM8UKQAAi^%xWwqBXNqo>Bm(^-&h{Y&ZK2nZ&z*r$goD zM(vzt^Mgk67jj{M=b$ghDnWm~F6o<2F5QV7FiRAu$r)V<-yZ0_@;BA(>;Z>7!bUji za#2mMuW7PSo}mkR6{p&suOpNTKdl_n*wW^RKW;a75o*+=gfe)8T&yw75G$Q{Rx0EdP7y$k5&dTM`ykJD%-F#JeQ1ke|=KEq6wibLeUO!VF zBifn#R-@gRrJ{LdVD)6Nap$nFjP+rUq{uWsnQBVcOMcuhpVUc$)xfpQJ19zM$1 zVXGs}18Qb}RD;jA+s#)WE6;~4`Ba|hX-yPMT;Epkw8!L0r%gCrJM~oa&)^J5%Rc4)d!2ZxGDD)*iRB+jT!dd&{di8jD52v@8gSGM!1oHPj!SP#7 zbtW~;t6Em1drFNpd?NfrPs&bhc$uGmZN^@@W#Mb+VIQoKvr84Eskki%O9o5P%{F|* zUft0iUM$jDhW?s;k}18?PbU;Eu^?=*pTJ;6^=B{)%$@x@Y`agFYhF|BIlV~t)W++P zH+zHW(BMbRxK+KfI91Zaz_y!iAvYt>&0FNZ-fkWfh8p^UP$lfD+rio9KE{LOF`MN( zjIG)KM(?Zj&HmQC!AIqKlUK-^x9=Bb!)Ko{SeyFeX<80v=l5?T41!AaK^x+pMp6B| zd^#J&8*{KSO)=pZbKF1QeL!Bs2fLhNrZNAtmXHk37O{KH4e#==eoO=_k%+NFeARowTtEF>W$n^ zd5hn48=?yXBkf+U^h5A?i4{8RC)#Ijt3NPJ#x!PA`jGK=3}_vLF(h5SSs#Zn6PG&mvhF2gKMIH)p_|)EKU8sN zg!)SuI|Zp~3(e`}Turo3h%AxQm-7Yj0r75+^DpV3BXoBMdIMt~cnQ5g3Os+(&o0y6 z^|6mEHh1NsdRWdY%{HBOo~6?`;ix&}gk%1B?R@3;28}Cj!-KNiB1{azq@>Nc9V3#D zgE{t_kj3Ggc5&nb_WPUpLL(>vh(0~X-dEyxyivS6zq^~lSU8_zTd&B_+qED?^#&pit4d-OypBjr& zR2O|2yzwfsj1I&S^??`?-Bl3 zJ}kF;JX7Gx?1FcH>eWwwEFLjPP}*rd(cd@UzLhY8A~qfOYxa-jLyt=DX1gy?$aS+2 zV2J*o-+sX%VX5iYC7MS<*zF-@wr~jJc!a37ujE&zU-7gL{W`mXB*qmMy*lx;B0}`v zYy4Qj3A$JUYO&J4(=Yl=LBGI8i_f=M?H=(>&8NAxP}kQhgqgf5uU8uiqr1M_VC=6A z0>*kqe<4;C|J_v;uIT6=m;$&}g)H*;`IXEQujo`b{|aCu&ml6gpzkcF2xgt%f;j!W zL-*+CJv`j_Ne^-9Um$Z|m1Mpw!NCEyH@27~JBWu@2(-p5SZ@E%`G=2hr=!6uJWBBO z73yaTR*C}3YmXY7RKdw^4ds8m$KdSzFNou>$-pA0*`lAs7X2i)@DuVw|6IF@Jq-&g z@LgV&aKo+9&fx*8gY2Lr`GY@q`pyz+?GV#%8_eUY?Pj(xQ^pl7j9F46YZy;T|Mhid z2``LWAEQh00>Hk*4VG_ERKU^(Ec+6VZvZeJ_-4NLu=WN2I#dTJ51Z|mSBu9LBE9y9 ztMZBhzqYSVe#V;LoqYT45%$j$nE1&Py*s&tEI2vbqe)~^IH7O#7m5=-xjHOYi<2LI zI6;`$$t$9P>j*#0@9&>S=#x=wPBvG+{;;2IF|kf8P2GT_udNNLuOn4mxDxh&3*6Wv zv3ss>%~V_W_n8aKw|qJ>n$7o1#J+AHPu{|PK#OI20`NQR{qGUu_8CS{^n15Gv7t{V z^Z)+ulLvKT%p0#xo`=1zzCITf>qcKPgY(pCQHGWC3ra8;s0lFS!HOT83O=IbxvkDt zHxyTVd-q%d5O8>C2db5}t3Q{D-cR>itPBLTVFZ+Rd(oNa&33uCsm?DhlnSQ6#lsXT zbu>`$YJ7m|8V;3t+~Jj-9wcP-)yOMN^oLuj2*lIwWIbEc|MN8^X5~u1=L*9(-h{*@ z)#Z8xc)q;c>^YmwZ!3_cWp(p-f1<`esNx6ZCmmIsJdFRM1?*q&t`6ioh+zndo?ZlV z+;+v`<=RGOT)e|YS6T_$dheEjb1S&N{jvZZHGsPjG2r`;=DHU-jsmBccNHP}#WiVf zS=mtQtE=27VJmpNs>(s%4nbxx^(IPE9~VWBG+eYT8;bRqhtOb{n5u^-WTX_&weQKpszdo;ajY|NbTU#tBk_SRiy zVqB;~PsKAcUue=�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 literal 0 HcmV?d00001 diff --git a/mybulma/node_modules/node-sass/vendor/darwin-x64-111/darwin-x64-111_binding.node b/mybulma/node_modules/node-sass/vendor/darwin-x64-111/darwin-x64-111_binding.node new file mode 100644 index 0000000000000000000000000000000000000000..4844bd719c09f37d87579935f17871d78352acb6 GIT binary patch literal 2801600 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

I#sB=mW<>nYRx#6X{FA~W693?5m!tg8fNxIh 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

cDJ9bBt{mVU$qxg4337rjD@i-*F@~&Gl$XP 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�vr-F+B~#*>6|wJC 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

g|vZ{XG1oUD{r-xXK3ZI46(}VP`PH}0Y+nt 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 z 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%0AaH%$81f8(r>qURA@w*HI8 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

vOp=sVUUN=0b?)5EtVhP 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�#)t$>(DY-hwvP7RQ><>Dt=iCe*c#dZ`Ir zt^47HCe$fRVWCXdxpaxB-T9{`8) zUy*D!0(>`Xl)9T7^2~F9gyyOZ=Sz)?T#;nn52KuX&KZ8{T#N#jseF?Mm^T|uK&$%H$k2D8+p|DAF%PMY2#2vSeI)jz^C(Dce$XR zEOCc4LRyI5fMHia(fw309CTDSY>u-X0x5@J_cQ_Z6PHc6J!is2^SWl1nIKQhoGo36 zJj-B3)je}06sc`@0hTSvN%O$z%LQE{m+>O*gRXZw7dT1k4vztI>`cRp_zFW#uQhFt z`M=J>bVs4z8l;mqzkJg6*Qgy)J24#wQ1)AR4_}YE9`#kFtrE0#ci={<8fQ#chug#d zb*Ezh-pf&Rxe4Q93KYx-^+Y(4-O)#*J7t~Cfop?ah-uqkepGE3hpwsy;8`af&kZnO zUX_;dqfV_HKIu{C?J{|+i~PgA&0tN#+@ZV$?cy!vQ@E$9Aw=gmB#Faf$6#dKpfy9v za9u;nXnhN^aQ4^z23@V=105zU+MmUagseDu6g zP(WeUg;5+Sw^--s^(=6@;P4v7ga>_*D(_sPO7m%@rtReLL)E6jdz|B8$485u%wMZ% zd+IN=B_JYa(gwLiihd&%4!H@(^CEeMk`sMM+13I@JD~%J2WDhEjRq#Q{!QZ)!cJ|UeGM0Ow`464@|^jvTH?4uY=onKmzc)COn_>uX%I87FMB=&x_RHr7(a;0qu z@<4+?IfyBYB_{pKo@fG@r1gWJAdWx<*DIKJOxS4nG?#Sl%LDh9#)r6QoyL2*uzcI| z;bN#Ko-kQ4cdeA@2Qk0|8`$t4pFG+|D0HHY#5&nFuB0VRV4;=G=pt({yCn|xv9V-s zQ0yBm0JaKkZGjUl?G-H`=6Lg4fITLJ75O2^-rCS~hZpPk5{Esg84QMTr?PNBq_=k# z#Gkl|rqSuY5hMruY;*7^#%*a%1xDP|=D=9k!<$3=@!n}h_szJS&462%rR@~nvZi!g z*brfEin#2iG|26p-h{@x;~qAqAzm@Q0YHlW2QR`5WLLg`L!5#uU!Y|%e9Q}UHzs)E zd72cok3BDifTHJVUC=+^dFaA<@8@Z2*t_gGIuZ`{e~xa1{l}lBp0RfJvot!^fAASP z8}Gl-nktiGZ?&bnNx^GvX;5;cq%F-%4vuY07gMa9wsb#5oPUmbrTR;slPmV>=jdpf zch56$<+G+eLyyve51*#t=_3DW%1;m8Y(r;jS=p`VcCAs7nlTY1h-B#;FT9znKM0rj zujn->=c4Z-^;6dnl{&hnsPv5}lAJ2mDha;IX86$NMp?k3`JO@=l;n&TXqe@GLNK@l zR%>8(k&H6=ssSp|8LAg>_+mAlH+x7euPw1rpyJai;;m}`c_Z9I%# zt{IQ>5ueY*Ehx3*>B$n){rks*-v!uCPlZ>R@W$3K>b590Sct2XR4hp#bOYz`9aTfT zTD5R>rWV3jt#~%Fec(vV7Bj5ZWlTE=WjiJ^*uS)k zj2-{KxOki0VZ5sb>pPeO7AgYNKI>Hu?dn$bGjyv%+;GrghfxLOwZlO2RmVUy68)b@ zs654mm9C9A2mGAahJ(+TT@1fcx$?>9j%8LlAIexJ#>Nz;&14L>M*ncX?=gS9>yDhe zuhv|Nw*B!0Zj~sY4YmMQuV4_Jx+`uhe}k1aPkISu{5!1YYXniM;VY8?yka(3S1JG+ z=QyK4o@bV)dci6_Q#HZ9v{Y@h&Vaet06kz2Msl@Jjf?K94(K-4(>(L+W@vT32Vd<9gLUq8BR8j<%pu;3q7F#269Q!9w@BpUjwzKot~(un+&bpD;PU9X|Ys~s9y3&2fYgG=6DdU z;mKIBd>hfW{?FGXA9YOufP+3Rpj;kiD^@u0u_Y~Vu)(UdaYd`EdA~0J|KA*^M=Vub zTLI#CJaq$Sn`<`c3D#-}0PA1XETmLxNucT(<toBpBiRS4P^;M`3u6Iy0!IQq!k%mKE&pX6@ z7q;37fQK*FY@}?}Qqit!n0y3kHbDZj%xMn*XN>a|=v8iW4;UnO8OC}Sq$gvEi}Fna zAjK7c-~)|lim3oBnmEcgTBp0YI~(*0Mko5!D@ci^4QFpgfNvSYA~++Uf<;PUz-3Y> z@1-Wg&uW?)w*&@X)$WdiEgZ=g;{e?J3aS;&S`-URRm<`){5UOeFIMV}XNABjWDNiX zqO#<{$wy#Ni^GXXJhb(jO7-{rf2fTs}pI8VU13N2`LLF zg5WHMO9?c}CBQ{IL5LoSa9OZNMxf$JK9LG6u2_ri@_6Th*VjtEn?gBW17x?`yj~!m zXZm!+^d1eb$EFltO@H#ZRI0T3r2O_$g(^nCs zLq;-Azrd-IeS>sabYXztjr2s;2C2w{nR=FGWd~`6l{qE=kF138K^o$doWJvY_VpNm z{rG_xD)jqGV&pL}UeKLD+z)eoLGdgCK8paQqH#Lyn+``1A0Y>34;Gt{sr#(>l- z0@VL?(|~@jz~x;pPj%pv{PNrz@V}pstR(WerlB2Bd7~Z2Qh~0E;A1FKA{FqgiGFJr z)#NQ$G8}P*3G(C@Fg#Dwl6T>I)UEv>&epSv6Tl{AjZOf%xA8>~^l%FYl+5Lg*TzG8 zV&No`smA+YNr(CypwHnhyJtLLBFUibJ|e`mI8gt1kK*7QPckUEcX^C?an#rHZo$zw z7KgXPe6Md<80xnQ3=Fh2;V)u}Mn7c0MSU`pn$|9kv=S(T9OKY$ax8o;vNd36GT?kM zl}Z1ey=wXx2i>dD3jJ7y17!fZJDKgmeYce~00PHEv&b^O6(fK>XBoxPGfO~SuurL1 zsblK~_n^n`4tYQzj64_-fTdw9>{6ZrKz@Jx1(66(cd!eIw+5=!>omNfAq4k%S}JSY`ccJ2VsZL zLN^7hLEim>W-2YfUA$BEVg);{z6idvUb+|CyHR?b5;(@`QowoOH>A= z7!zzZUbqD8cVyvkmwwt%RD|;cAiB-aGb%visn>1DLo2T@b4Sx4R39 zfEUnhrPX?9Sk(2n^QMC@*P*o z0>51!$DxaD^=VL&U0#bOCbhkiL4#84iVT{V()Ix`j42=}mwj-8{WEx|IdEBZ9yOEC zbG?~-p0mwh5)ylxNoz}KGq7EX`OP5Ai2PRap>M>{(e5654KS z3OKcWr4dz&whtS^>StFpqHJ&5F%4;*7uJ31>QB8{k5<|C%BHl#ZhN$e^an0)LU#gf zuQaBsc&f(KJ>0fyV=4(BMgEC#{7e>A#f#NhAi=SFH>8!3w!<3G!^nPI-IK&0HlXXt zq9PN71a{X3bR@NHH7rNz_NDrCJ-sb#G({PuFooeck1*JQ$F;zqufM!GY!TMX=5PkJ zMmC4G!0OT*x=ibQGmu?byP<(_TC4E5+?w7D?i*1(rkT{Q8MFmbq!}Q*)i4K%cTP8= z-EQypMs(8MZgC^(X?Z6!0usM%??$xL>#b@?o4jogG^CR;-jarNBc^S616mg1GhtQ= zixG_h3x!^WR>UWbt4D|8w_z9;B=eP-U|SGl>(jWDov7<-s&`gH>XP>2@k~0J;oXu+ zS2Efhtxv=1csJFjNp;!)HhZMbF--mP8Q&YmM6LzFyUr>Ps5*I(2Z~l7MAdTr>FpNX zaW*Z3sn2M--hxMS(=`@dG`-M=Z*XaQEcjxWLp(6pd2hRcduvevUAllqO_uxdOR?ba zEnvJa5vz?2trNG3k~oCEe?p{ zk<#C=pVM0Aq%qDQrsBEIzUYEz9d(-qu~8VqT-Y{EVg8X4UT*eMf%}IAa zz;i_N;|!~(z7>TIs3$U(scbY(S5aBMg4yM`QWsmdeyTL9!_K!_HXynyn;ez-bN|TR32G5%JWBt_91UM7CXddW3nEWR z+73__hyym^{5&NNDv(PGWV18SfM_^$D00<7!zJ7K0f%-1tdfpWz@%A$9+iuf@73=e z-_xf@h~C4$cKBEGY?B!Tt==rS-p9tVI#<06j(}UetV9XT^s+;$J0$kZxg3Io z@WSTax`()WRtbHGLy}5zEEtkUYyS|*&wNi z0()s%caT{cgHY>P;g#BF;ojp0li(;^>qeJ^$%_-96pY-BUf?GqW?ZJDUR*IV^w$Nq_+$DT%TuOO|BWlC5NgBgt~o z(K)td*}@`6BIlfQ&N*j*0EnC;kuyN#aNn8*d1XDa@44rkd!K{nA-ASFRd-ic{q_If z_x*ak&AA#rz;(IWj!?bRX|2DNI-J&SS&`>?+LW+dkk&dl@ewKTY3}T_)-4hYOlw0U ztsbW!?z(rB5fi|YoGM#whNu|z2dA{Pe&T7K);^YaoTqJxZ#DX*v_2^{p$*L>PUnjm znSlItUGhy1K9_G^$=5FBfA(;Ak@T(Bf3LK(e^Y0_iPJ!J-9vf_p0Vk`=;=9zhu`dw z(PD;)gmm6C6SXvnM`u?E&)5H+<3In85{tH@))Gr~if&$4C~f)BI4ET__3uJSlN3?{j~%I{*P6CmAP)>W|*Y!{j{CIPvr$& z{HluO{v_??-1;BXT~zzQ=lpEHcK@1Kif*=6hXm@2m|ZafjVL_9^@gJEKQ+R)xr0#Z z98-J9KMcV)RCX6ev)PVVNI#3qzHHyi?-;VdVJ&)sM9$D16$>o=p^g<+yLSKIb*x)YbznSq=R#q(z#Uc z&kaaK(<}3}uH<6LJjoi3^tHcw%h~UV_mq`%R4XG}2{zCo91VJ%^AgvQJS_o!pJD4b zs{tysFRbKQiS_h`5(jZ+NjOxjR@d2Ou+yhIl{+M~sq#fqjEj^VM~qnE>udYLPQA01 zn%xKiie{J>*K~h1a0^5U8W%!D2MdLT?iDiD`Xg$#*sI#sf5qfuC zrI;VH$HCu5=`e|%>WI_n=0KWr<2~w% zW4Q@<7L)Qy_g9L|c^zrYwtTyDU9mTxSjY4HI3$uS1&NFGMZdyQNF?VA-BG|ditKsy zME7FvLS1pBSW@%2SdOeKww1^c4aAKS@1we6T&XHAElsViD-M==z?#OC$=$H7%Ip=D zVpW;?@b8v8ToJRGvZ{# zsmWlK*lYj5>!L=T=m#aP3nuvE8*-#o&}i*2hGThzlrbI`TsRl%$K2%VAkQ%L9XkM;u@F zR2`<-=ij_vpP9PdvHDEa74sSZE~psXfWVQzye{$NHWx^6Vfj$uPFOAWR^mo>H`GBN z!@gK5wmRMbXj`sN%_3L!D+WI20}fjlX|tk2bdz5D5{y6>^_$zC-Hp*8>P;*Wi+!J( zgT90Sx-LlFC`RR|&6094BjzEtJ1_1{C!1MZ-YW%c;*BpyIY-`s*qBIdBM)&-S?@CK zX-?hFW!gu{vh~H<@svFYN!(Nm6ok{syP(U`!ND>yHMeLG*^u+=N~6_m-eW5Ln4VRRENs0>R%irqd;ZU&EhP2;t|=-8kuN zw>y2AXPbxn(;J*e+EkyKRjxB47w&~$lP8u(-o*dVTY6+`>E{Kc?3(I1ck;wh&zM*U zF*AiY^3-VAsEqa?S~e)7ZScz$=4u}X_8js_1&n9|V#yBq$bKepMNEztP0FCU=JqQT zvlD&|$!Qbzu0pXoMemARsKuH=-%au4#Q@)6hm zqiv|0ykQnsLrF#FBg> zuvkf*b<%3MFjs5|y9lP73)>&1cqrbpBmyBSAr_wD%SrHt@rOy}8NQ!Vpfwyq7hU^o zN{os)hm%mH-4#jHmuBO{By2)UyAW0u&8=`LLG^z22+pqw{a;11eV@IjW?Tw;OI<3gF4bSTeOewkM;_TC*k_MJtH+4!Ht`PHxC$7&=E2Z1 z9Yh)in;01CAIG-&H;IG^$6``(Y>g6Ov2SOO9c`gRsMS`5JGucvrm+ZA$ z2n7))2L_I?C0f8*YPV+3M@33=Ccx4Q~n}5PHf?nENYkADY zT95?7IvOpXkntYOl%uuu!!(W{@pFcPEfjL$^CPDnrR9WKJ+7 zH75=0I*%q4$4a>tvirKCzv&Nk#W=HYm?W$d9gAbhj4vYAYc^d4Xv&h{6pmRE;e<~t z`>e|fQvy^PAC6oDwGe(>yM`_M2l)xq|2p_`$7?k_stLLW@M5ms0<-p<4kEp_jZOYm zt`CV{R}py{sH>dFWA!BN>Mgp9qv@jV-9_tOZvoG4ih%%E?J+0Db%3_de_j$bs%r&};))J2s;!qvJNbj|risDVEf@SjEkbTDzi_IwI{bu|+L_gEM zYLVNlTW!B&EpgKnzj>QHFRQg+r>Tha$QF?wWdJTx!|i7heYc+wDa)4ohHN~1Lqn@S zZR7vy@n3sCiB!o9EyJg@NlOFsI<6%iS**zm`Fu9$keP-Ul6zZfq#uQmyz-A^Q~Df2 zawv=2x*T#TcQfq;nEU2b?kd|S{#V=8^f&TB2=?;Zc#6mC!KDyWyn7;q!hpR+MZ;D3 zx?$t#{KR;mUNU`tnEo?~I^lIK_XS>XJp~1Fr5@bKBgu*E4dF5L#bZU{a;WqPB8g@W z$w`nA z{W@okNyPRq#1wRVM%*4zjBta*6aR7Cr>1)%ctHZq#5?llyLz@uyL@sttZ;FGyzwsv&ji%iwhTc-}Js&lktD(Z9d@ZIA6?TEy zY6ucgX3eK#%4BVbme`wvcd9u+=Hpp$w4p}vtOO|^Q#+G{5@T1>qO;}qPl9NBXJktB zw~GmxO?7feUHROx&X8=<4VZ1`yKOrlTNG*gJSlEVXKDhoLjkK#cugPYh=I|Pg-I;t z!8CTeU(F0YJut85h&cfR>8zL>n_y~nNxr&0_9g^|xO;))b6z&3%s`l(teI zqNNZIK<4Q{5v_&ZLvoNZ)IV;85^G9uAIBDz5#smnAwLj)XFpjE?6RXsB0A=h65Pk` z9Ha=G#PAYv)p=(Lsu_{CNG701i!8xXFwe!}c{IASj+o}lNp)za`~coY;C@t&0cxKw z7dOxYsY8dd?!fJc*`q4N>R1sq$75xkDrl)a9a4PUp2PYiAqUhEopSQ$lxwGRta0U{ zebT;PCWa(^4B5F!Ye2c!leDjviHpf1YC5ONut^W4?5h>xO3J=lfmVgY(Y!Kk9i=91 z!%OIt>$7fKo?CUg4q6qjudhJ$+}wqBN$57KINB+&zdb6xs`l z(5*$0@88*A&Bzi(;;Rp|rgu%;x$>}by)}KNfGTAqgjX3`JL<{ZD@k~p{SSgD)H7LmCLV<{|8 zF{_3vYCQb0k~~Hq*e=k8q4o%jEzTQl=CFo;FAXl~dtZL}J*sPw6M$>=lDIbIRl+aE z>%G82nG%Fkf3pQ(;G>pA1LC2TLaA^#t0;#Ep5(e)!gc$3qQ;h|`QmK%q(e+^eC@Rg z{y`36PHePQN88K+IoV4O6J;Bqzl^`Nf)z#5sNve{E3@_!2+kU#)oMQckOJE53dJyM z9)(=WF}Y`05@Gcs?9#N`Pl@2N19i+p`%$Z1)_=zipqI z4;=SwLdp|=}tWt2CbL?PWQyC*Bp} zU3-`&-v2AE^s*hp*$%A_^yDREgbj2kuBju~zX6J!@DMI&@AZr#e6|{o#I>-ClI&sI zJ>-e~?ys*##fK5t4z>G7#aD&+s(G9A;tD8{J;xua%N74XdS45A-#`9{Z$Yyj!7S98 zW%th&KT*7dkKrYJiwKBjor4bg**4XFpMcianOys$f2=fWxh8Eb&)%EgRTp0;UNKa& zXvJvl6$PQNz!o3Vpa<0M_jzRAe6IMXth6}?=O3y8sNAAixEFW*-~0WM5P#(F)y21d zi~^@-!3Nx@{TV`Py0wfnnfm*+=c{}P8?;!TOwyPKdg&H@q`%Itmvsv~-A$bfWv~5X zaLcR&wThu6q12qgCQsbyWb%%z`^0>7n|h>{2byA)?wrQ@)18wcB0`BSCO&WLI8wES zb2Nl9mvtDE9*H57=|Y|jsnsjxNm*7y?X_|R7VS6G-F=&9HB6H%LMLg|@vIvEssA)2 zex$~X$C_GT)ac6ZI>7KpVT2mvC~pXbyW-;y{heyMIwmdJ3enaFFZUH(Z2ugY4CPq+ zV(qrvY+v>_z{lWLdurA!sGwQw>kBQn_Pqf9{yN+GYSw)CuKxquqo(TN4>Yznu}h+R_%MBz;#)pgepN{p3$urBtF&YL$z&uSF{tN zoqxj+U*$_AkEmMf!1BO|u~_h&)xMs^p{_Sz@oJ+VZWkX&wJ{n5zXA#0+ENG|8-WLo1*tfTAfSKFSK z{S}k`<#VC)F|lX6JfY(qpZ3Gt+ULHJ=guj6X%;KJ{+~U+w(6by!EFt)-=a^i?V|Zi zii0#d>>15sfV`+KGg!9{=}3EW+u8dn&vI&f#=}4VmEygGJCeLoJ=FPnn1{MdCr+sD zUy8TEEc*W-{sg`ezh4)BDa2pOxujR40!6t=aGwydrXv@&H=$=rG&OGN36?QE3}>fG z883&UMQW&F=f#NqnzmK@j!j~sA7d@d*CJ;j`zqY+IW2P9Tj}E*kW`@;!z@{IsBOWA&C?wZpkrVVoceaShXpiC{-PKIZQYN zbDbPl$je@}=(vNz);foUU3THj`zdbioY2HyIG31XoR8p`t3JP6v!Jf5C3*SFclre( zzF>V%e7RoscPcA?XLZy>YkJDhEZhx$$Enr(0!%$tYap4Ne;ZjEhdNStK2EGlE>MZV z!jx}^vTGqzotW3`wm>AP))Ckyr+kBaxmlG;4xc z=$}T4w-Ei61(RahWm&u?rcL#VN5!-|UK#sui$)&>;z(4LJNi!dII4lp^O)G?d(<5C zfm;2}dl+$EA=m%L?pz|C=<;?k-KV%uk#^b$@b`XVln*Hur$QcDX_HK~M!jmfhl}8U z6znh5wpz~QBCOK08X>NU&RH(0++irTviNl<2QFBH#wxryupfjzEB zoQv70BeDizO>`w5u;-XWfEMDMME=b}@gh;Ms!&^(V^Y64C%96Gcx>_ULa`uyL8oeR zrg(0lwlCu^Wj&rR@kWm?u&JL@Acq!;;|2DpLUFyo>`{nz{48eUPdgm%*%Q3XZ~MHn zpS4o2N`0Ft))?K9VOC?wK}`-+$n8IVxlIa1U5Wm!c#GkXeSaxh3(;C`w9s_zV2OXB zCrn_{gAJjTDKNjBk26Pi9x&P|^{s=t51RC2y&+?|;qNeUJ+x44XUP!QgS87;dqZqn z9kOs>ZVc67G7L$q?Qy0&qt?^R5VdWru2#u(-(|4>SIK0#fTV#c32t41*0Vi+{AaL36oB7jH5S|Gl-G!Az5^@~3Ka)sL8ibS5`BUd2$cD6;!Y zL3eIyeNI#}z;Jv+@oOP|?EtsysHU==no6a2Kpp==voQM3=@JpBn|e3ZSoUw79s5;c zyBWr5$RaCkFXXNv!wpx{$3|V*1J`sp0k5V0^Ox7JFMdk?8cF#0S3KU4 znhR!dvWB_-R15D`5ow9JF;8c7sJ&igJD+|3NwQSvq+|zIX+A`{otnzi-A9+m+>H3l z*0r0+uZq?@3fc+qk`~u!;b+LBXp)&_kH)N(-Ii>rR7u+^1DX@vN8mw`U~0FO;$c;U z7?WA{nL1*vZjDzrAbCWc3~sS@zv7nOBKR*jV`pjJTE&0i6m-GqY6XTlrrIF0{mJ?Z z(UyM3Z@Z~OuEE;&$t?Ch`V~>l1I+Hr>#iI9Yf;T5{=o0oTFR~=(H2ACZ=yJJ{ssH~ zhUP#+>!7P#1l<&eWR8XM)?;kGKzvH!L9*|w&?fxOa!T>$)kc839_PTjrF@1h_|KF(nUuZ4FSA_VAecQyh9~rJveM8|@ zq2hrSo=yka#6!bXHgL%9X|hPin9m+p@5k0WL;P2FvQqAJp6ZZS+}k>{sdrKr=d~8w z6{V21fV##+t#*-vkoIcLyGR;Fjn5B;(Ww9(?Xu;}9fsGzC-=DnFLX@EK{j|n$Q=ep z)O42yNCv*U&1bFap$xI#QZ?Pf@1FFD)_6Ojw59S5XgAG0reX?)(8$7 zp@qr)IbH>3KF}R9W-is8nK1@wYjlk7!$Gn9xxS1Ymk@|aV5>R9n59h{a>8IszKDr~ z)=!ql#mew8S~kSBAL9*hZ8CYCL)d{?JreB|7Zc>qwjvf0wLd`%J$jb2wGZsYxGDp4 zHrY9Y1vE*uiAA>>VBG^L@!uL;OoPXXu1ztZM;9UFuD!LGSSPJZ0VI)kb3xR_UyxqH ztm=$TylJB;ILvY;BdOVAnv9+uZIeh&H#;m4x>p+q)^gXgZDZApaA$OHOuG?Mk6@u? zQeI}ArwyZAlk1Lmm9XP8&zv6<9ikm6caE78Vp^}5IW9)%-Go>^G{(B|cFaT}|4Gd3 z@VjmM&vZHevu*#;w=D%T)|b7%7vE-%;@;~r)vI--Gf~+F7KD(Q*c}){5uV9yEk#9F z9aBr~8)W&0&aXwA_%Fnl-^tdM*VgeVd{rrJeiIK!Z_Q)TJzPuidoF`;cE3VFp@nl; z6K(6VK=?Zct(o6=%q!iMC{*n}O$8HcwQ{V!UAaUTf3Mnv$Al&fRjbMKn)f?xVrW-w z`ky)GeXKlOOIqf%qQ@rYM3mMFqVuDT1oHBoLOv=D>p}qz>7!XS{qrWKKtC(7+rd^3 z=HMx|%5N&yES?kk=vqxTqexScjB8oc<~p=dWks-be$ zf}t4hqFbRk9L{-uBlygI)O2c!j0S4SJxh0?V?jK=lSE^p6*!DR2970hJ3LM!-^Fsr zJje#eRD?MvkDA%8c{(n3xh5$n4!R~ab4gwtSE%dZEXQO7_Rd*pk|J@Km;0Qj?Ny<$ zbJim`p|1antUoV-y z6w2#H8UoX$X1bXmO0d*Q6D|M5l8=>z)MBk8&W6WxLlB{f#t(A#@c6i1b=Jmk89%?3 zAk^^-zOH53Yqvv)tlEg!;)CcN!qe3bAfgd{h~vk=VtDz?|D$g-DoTVXiFDCLLp2y@ zualddW23!v@eTYk{j_?BkuB5yF1t-;zpZ-T5r2VSmNs?PY8_;gd_JG(OdoUHp6=s* zmh^;2nhEx+109o`T__=`lR1>wLrpcXll@ft%^$NzO9LlN>+8lkC34o5UHjZK)D}gkLj^V%d*dT~-umhv*55 zn1#xovZ?t*lhc$#U6p(4ERbrC<0&blLXw;NALZCMESRDL2?!T0uO+}w+MVL8`Rym< z$+T=Nt(^$bD3$AdF-VVPB+ss~V=VuN**&#&aaPm8fS8iZ#5~*W*lalFra0T#Nc;#9 z18E&fpxxx}OMs;|*Czl`*=rNP)a(&)alG3f*X!Rt}_;E%3)hHmrJuKaHu(9G-T`UP@HA;0VtW&#igS(QnXSw5iq}<14G;|i%`1&G<;@}g z1Dk0v41TAJS=KwOy)fgw@H<(#q*~c%xr0c?VLhem)P4%;8Rll^ktqG?b%y$GT9n~v zuvR~NuPw6vAse4H0Rm>+wYrOwZ@3}(>ed=Q_16t=y9#CcW6?tjbyuh5oQ>WyAL!!C zd=4zoP1gB`lvS}!w>ufc!fdu((H*Mqst^|Y|Bu?ojkBLuYMhC&@7`lb%t{N~)K$jA z5r(8@qfw4-@I~X)XMLn`b}gUc?d;dwP8Pv4y9X%?b(JxZI2bj%jPjAnU3uZNW0G0_ zL0#6OqqNv59SW^7ZEEkWgZ54YBmYM(3FQAN54)$I=2QGgYju*a4GGj@q_HZz6@Y>o zuXTw77tQOyOcZublVl{kLhBY+x%$}9%MEVFNWfFXC-p>n96i*NmsrPmjVV9$Fwaj! zgD9vIc6tzP=iz_S`Liicoh1oYm%?6{qKU@xD z*=KG4>8IGMd3a5A_mX6u69-2Js}Z-e=S>8ts;u@7oZ>EZo!cN6;Py0bQ<)EVICPBhHv zA^J{)@KVTU3Pd4&Z2kw zRcvup(+OwBtN2;H-LK;HRyC-`tbP>_u{Y~g!Zb~(c@&bvUKPVluiLADeAGU7OnL7W z0{`B*SC}|e%~ea*v?6Zn-KrMz!m8$cSRStyoo#OinliSkIbq8s)g+Ph(3hFu_|%+o z{BhO133;_8FI|z+ADTlYh_iZ0&CHi}EOe+v45z3o92Z^}8zBdozV@^A~$CE-(^kZ_>MeUwPg<^3e87PS<| zbNqcRMElg6oM%%?u0^*k<;|%QJ=4voS)Z2snv<8pTi;xC%gwpiTujJy);1T1b6w8R zAy1BMDQ4x_=;J)fGds2veKJ1f1sU&L3o$JJCzD%>7x{cEa|#k;nv3-X%^y{X!-eWG z^emDeSBaTL-u^1Fw@B4=DwZRv#H3=cN0pdgTu5lASXB=xu^%@R=StLl_AHebnu(dE z-hpOfZ)x_RGP$mqm{jJ?Z6>ytsrS^rT#jre#+7?Ln~BZk&8c}&E*~^S?Z$(Px2fVA z)QqhoKWZx0)$!If6&LEL^9-w$vzm(KmEOpv;#8%o>0ejgYa$lZ_0BaBSL^z_nux*m zB&@v^_2kMX;&?r8MibGkzD>=+`tGzQ;$r<6{z0C643T*ZrOe+-m800VtE8JGqUF#064g8`VfT4h+?2>o(J6%{1RC zBp1>JaFq!$EgbnUE_Q?^%8D1l{tZy`VR@7UDz*c&Z@V313_EK(n@PIud~+D$3vO(C zoG&b~3ROl|&SFT6*d%V+6!9M^kbp`(Hb6$G87)bbSKH3!g5c_(#Q-$cpnMi$acW*t zx+M|H_fXn{D;^wCQ%ZBZgZ+(>>hn|I-~Zpo{aXA$h#$m=Nc}RmhsPvcw3E=4?jlcj zS+@xxJu+OdsMA7{nk^ycKm=DzjC~-+Js>NW>0Kb%S6Cf&H0O)p=~$ z*;Dea_u#=e@)~xs^TuETTMjc_?fw2W{$Uk}3!V@+(_2E1++hS~(CjmsPLqgi`oyx9 zhu)v8G}OFLA`E>^50etol0?srTZ!WyiCJ7&IYYt;E;ui&2s!)0vOiq#ub zX!qMVi?YwRH@+qzej!iuUcn{BS!{S8CX@iqNmdHRSJsgMFsm9cz-%}x$zWvPO^OX+ zIWDF0*LF>bIqoYD6A1DK^n?A8MyxC*%IM|<%%fm+LTr&PPM<3>0nmgDo&yqMf+xGN zzxQt69C0e<;2ydXbGYu^81s5?e^~1s-L{vXwWTHzQ*IZbWoAkobEX5QY zV73wMsld{9Ukmt*d7UtRC_;H_=qkH&oD>-$GEKfO-fNltO)&axf~oeIW~>OpkD6i+ z4dV*841e?MEPEGdi(VINS@E_O$4#5j9^cMt6fc2AwFXJr>N71|MX{@KLXk zuq=9^jp*yi+ildNMTe_L)Mm0;8uf?1CZ_u??HL>RAG829SnpDEu_ESw*ixK~xy%U9 zV?MfLSJ+xUrT&j_R!`~z-7mcMtc1?r&w8F=#3=1oNesDdcNM+8QMfVZ0vMo)NQibukDYM z^e?8CR*L`P&aVW&V2`V0b>MCx)wJ%ehVP}P7S&N1#nx8hr#6SyK~ln}+?B;(CA29? z6mqKV0+`)l2ZS?k+4jnEvA~Hz+xy6ol%G3gpcyB+x${YM?fT?&d+1uT0oz8>m&(Oh z&s|v}xq@!vD#V&pFrz|TO4(o|XQX5OD#Uj3LsgLRqj-GFOW0zZ1WLX>S$RK+Y{0LeH9JPCbwuYvM8c{tzYpooGKGAI9SmVfH(_zv zC1g|nAnTdQe*Xgie~|z%G6&weUi3Js=G-B$#B>ML)m7u$)NBgnbdIugb6C;CBj_3x zy{tC(m@O<9RoJVRvRiM5y5fN*#Ix z{>wG}l~Im3V+6gFhpxqC%AvO?&oisw%Y0xtl!sWOvQv>7`#eFcua%7(;mv>f^cl7R zn?kx1&3z7HMo*Jsey8q&#=noAhJ`G2bTX6zqk5gnHys;?s%WSRO39@VQC^;(!XjX? z;OXQ)pIPE#Er(FTBQ3y3u~tt!i-E?gJ`@AzX=9Dt4+Zm>LreuO=xr6x4zxX1@#H{z zVC4Wo#KqE=)mk`lJrEyXEg2aBc`M> zyN(M59b$lell#ym4Mms1Xb(ln>^c<4cmUd?r-nr|FI;twMW6j`%4co)%qKB!)kk>Q zozGFT#;tl76@4OqO!-Eniu{$Eq@=u8;!ofo@8O?5ZNtTE8!l(turu2RYG}i0Afch; z?ra-KW!c4y5+R#uehH7wCToaxCnoNNtKd5xw7*Mvg(JrYEEB5k2ZX=ANX^Jd)l!rh zBHyIEPgZ>#kd_yUhr0IHU%o7*Vu#in_?Lcq^a^TqdgLrgVD-0069_eY0-<*d=Ptb{ zB#0q0X)yYuSVa^C%V)&a0pJK7j(q`jd&-jobtCQl8yw-F8- z=MG8IOnX8jF*RK0RAUrigX`!{*zrvb#Aqj&+JJyXqFV!&s?|H{i`#B1_USAWpVTFC zSG~I~av)XIZ1;ThD=vCDD;g0vkP8|S?TOB41mX8{eHxQL@fYmVKjyEfFXqJjDfPvs zm>g0cgCyFkzUUo)`)osyAo20_#nyz6+{(R#f2C6N$Z-xWC9Xu~{S^C~{_0iXp`*uC=Au?^Iu0DwenEi4G;vkL!s^C2vn^C}xz(1NFpYl(HL% zg>@v)ZG9cd)jzDW(yr~Z@ZG-GQr>bwj@jFJA$ow%eL1$B3ly36@6(v}gR4sYS0 z?5;UPJo{_Gb#i`a?K=Yh~hz<%7oIS@syzJNRW9VXf2{f|ZI`IHFMY~M5elOCC9{nH+%r9YADSvrX*v z?RJEk12&Gsmu>&it8#%OzVsEI>ntrkkB}3BA`N%AI;lSskn*$~VJB)E{-+b5d+@m5=4LyFopv?748+E3o7}tz=aJ zfb9)j;ZVrEn}?xWawd<*^d&$S)=YhEp%@zR9~Y38V!k$q)RWjPXouR}SBPcouo(nfM%XVPAi z5vP)JJ~b(ynz<=^4QI%coM%-YF28I$35H_ZeZijBj+nc9q%B}bT-sA~dw*ME7Vhr1 zSg@6#hdbE%+KhL_P0L@~mIaM7r!6{(=QOIuI_1;e5*r+!@@Xd+^p@!7UQioukgNO+ zG2IJRz6mARo%g1=?**gZB!X=3eN&u@$}ZGIeaZv;;L01~mak6nIPhP*PKvfN^m3=i zt%+}lt8rC7Bk5x)PfnHfd_x>fSw~+NBhspVPo96Zjo6eaTlcznl(G80E|%vvrhaIV z-=z)A>9PlH#JXZ@a~rX|S8K7O{A>N&i1`)PmDXZyy&tf3YJI=^ zyX0GQ9=?NKeqCx#H*}x26T2IgY;GsUHjbWqM=WaW4}VweZ|vTGN1SO~e()X9sY!(L z#3phRTbopJ)X660XWkYyO;rm=Hw|{ZEfzNoHoPPDG?f$H7QLED&M>)I@bNohbu)Fg zZp{mBzbyv0a3{1C8(Z45-x9N{<OjKIOfw+%s>9VXw(`t;Lkrf<>*x zveyDK9qf257}Z*wcrEDHTHJgs=+j!%w3eKqck2as7gfJb3QUoIajz+4cV?vyhDG@? zYqt&1+eDV-i|E&vGUF3ATV9-WmBcs4pDA3t5RCsK0yTUStCF`7+;ie~tS$U1LS z(%+7g`;ccL=#h8did0xc*C?odb z|Hu<}q&qQBZ1H?*PI&I|43vl>2+`N0Hs$ud1g_vJzAeYp}5k=PoE!eDblS@X77* zrJ`@BAvNbhdCyD8&Jv+~(Ugyi7y;!RSY%e-pu zp!rAWm?!FU&eJ)OD+S_3j`?wcxSd-~bJyg>;5v58{EG67d}m+2Se);y%NJ|%39+jF zv4A9Y3|xl{dncVB6!ZqD87kr|w?YxhPeMfhMAxtyR`!Jhv?b1ki>4Le%ZN~(VJmkw ziDuU3i`5bPNIrUpK_8?&Wzm^@v0p|gpOUzQNwI8C$wynPA7^9OTArb;C6MtqCGF>V zVp%HID_?9+72V9R;5xuQtMUTcvpX-~x@YnN&U`n|Vb7;|8)+@=ZUT@xt3i#Qe}?Yk z3R|u-nAN}z4I#oOfqRTJ+RP4dXUclc9@7RG9Lb8boS94%dKGl$9!3BicDT{}5>ca2 zhMHxeU<&qs$U&X&N~rk~Tqw0fMy`pIZ74(M&`^TZ;X6X3^#jG?M%cZ|V+t2t#8Ypp zT;P+P*KQPHXC?L_!Qo288fUq3Q~}}T>IsEnT_kpk{7141aPAl{F``f`_hhF+M#<{- zMSKAJY2i8FRUZGK1mfz{n0>4O5t=CJlApw?pObMsRk94~YYIw)*pVNw^;mv(M9<#i zaGjYDe29^_*GSwont#{`$^>7(=ohZ)N|v5*qNWM(lIV%X2(!Mm2n9H|i2CsncUvPo zl8JSgZIS4}M!dszeQ})nlQlLk3leMUi=9F9Vf97V9Emc_=A7u5h9uQ3>e56!OL~18 ziQcKQAq~ZxluvnIN?u1#CRc5}liPe?eG=))RrSQPOoo~v`H6A$#Ps~;Ptd?9sG??3 zVWNLSv9&O9qk%YEC{H#J9g5ysNKJ`4!^0A{Pkk|>G|{!bSX8R?W_Fj#^`!AFZ8se2 zwnCkAX+`2xU9qF0`7)CB)^Sx$ox42C8Ff`_m(;zZ9IL#;%Nok#lni@LL)c5LxX8)S zGoH_}uwBzooUz@xWC5}j3wCS7Zr^~US#D?a@H~5b9kD8~ryxEP3vgG=iA5+Mj9H^9 z>DOuYIiGMJRET{!B^%K0OQw+3d69g7If{R&XiZ&lJ#DY95Sw!|T`R?<-1zxA;&E=h zS#`wtJf+*SJKsk6=32gk2VrrMJGdcvgKZ4yIVE-v1Z_%!OZCN&QlIjgQg>&4@u1XZ zpGW1AyXaaW7gUHr70&Dm-0YI0W>(Bsx2x`V6WP=_e+>c&j5E3m{j{sGmYOXr7D~hp z%V(T9WBGKWE@5YT0W^Z54~v2Pxs#Xz+!BWI;gQtTV!rP$q7Bkj#t`bA=1J6w7kRrl zPlv$nT*!Fr+$#{*ecU{IGYstM*?0s229P4yU8$!YC)1E@S{b zihS&JROXcefMQ|{HVgvHbB*XFli}JvY_iBQF2KDHWvE{s+Vkmn5Y4)BQ?oQ6fQ%j4 z=e1RPJ$HIqe8b(C7XM=ROA{k^R{^KfeJU;*MSIeuG00h&22NKvH;F~*1H6Nqup}+I zg}ur6cf+c@KkN-jv2OjdJ-JAPL=YAk;YxsaTgiKl@Q2JhjM}S=%*#clS&qxaX(g#& z?F9>R!IY_ThiI@SS1j>;u6Qk|n4cDXV-27+#Qgp#vir)8DbQPr13on&C*_ERi3ASf z?TL1?b5L3$lK=94HfittDTL~Un({+0*WHOp-hYIenMQ-|DZKOk?Ic!nWhd?;`u znPK0~!Gq+D$st52sd;1tBS<$D_PD??dz3aQC0;l|&lI;58=n*xTnQwmeI&R74T1-3* z5{F|fG}{p+-WThby&3v)NA9H`OLxsCG`s|mk5AOure=yE@1mDzRDR-v%#U_Mmk6x} zyiBGyDJptelA76;)6rLO*P(caz-WvJ;Fkw4e6h_*a@YgcWAlKBga$Y!0>i z!y2m)ZH(zw6Z~_B6@R5eI5OB}&89H-gKXIW;S4)5!NFc?_sm9)ObtHj+x>rioy;JY zq;Tpw2h??5SP|&PJ+jy7PwpW{jLv%c7TWC|gV46s(nnqAdoQ&FA`Fs;HRn8{5SooZ z#CqLE*Y>n-ZlwkmPgo%hz++4?*3$Bep$IY&-Ao6am1*P-4-=8K(Uj?%%^gn0K57;z zUSjqdKY6__3*=6kKbA$b_UD5la1Ko5K)M)%G%`jk4VmDdPK4wm7idUisd|hJHiL*l zpa-a@SxDnwm<^|@=eUnk;wHZ7i0*a*N8C93bI9smu*dRtxYme?N}KWRI-e*wn13DX z4q4G>DZF{+)f6k;>BhmdO31T6jZeo$_~#@uU|Jg)31+65o+BSAfq|xd(unt{eFjIj zsiV8c9FFcE`#xCEn7l|uykZ06LcAQ1?728kyLZAT_|q{*u1twOIgLWO5Z3492qYyR^Wf`*A&)gwdIj0!mi z;m%}Lmp7U=cHd6(1}9n`_CG99`nAhTL{Ai((0sD(86|l0%+Vz{b5+d>$GKL7LiG{$ z9~H^$L-iu!?!a=4BsLT=&r7`1TcmxiSPbwKv1gHI;;G*2`PAI;9G0PTqAtAuGf}@Y z9_*;RT_|Sw_PS#6z_(8##1xo&3&o-!PR+@{!S);#Q^cW3v29%OM%>@RIyWH~6yg@L zhZc*WIrdo0o*Z+4q6YcYJj!vfCOafyvWSW4(r1W1rQM79qC;+QHeZa&m3#BWwp@EK zI%|10*6aK{b74L%BA=S8dG-Wl9V!?EeYu0yw$3`KkSXINt6CEP$0Vbu#={OYU*IW* zbcQlcNbZpE|K&Cbq#$x#qUut)Tf&V}`*aRVjv5)RH%N*-;VRq`HTG2QWSZl512*EM zP}TWRfzzHj@6yt0=J~ZCCpxvxT|1LUHkB*(#R1cH7dVD=Z z23k-*6=ls+^;j<_de0^HOq9@~<&@7v z<%+tZtM5}D)N9r|c`J7N^aFb;P=~+*?Q7O-n*OV{;|@%*$2#Z_9Oe))AL;{Y`ZUdfChBh*Nnc z)>OZYN?E!gqeLujWhDF5WcG4{zJ}I{0cRzirpg>;zY5(pZoOV>YHj-uQkE`Br5 zo{lY?`O=*F;zCA&c9s{}PwR^NMK(6_hT`bhdg4^EPq|Bp+o_)DTQZKL=9Ni~T2m&^ zlp(_$f!kK*aL}o;7oXZz;AXQ9FsAJFnzsu{SxwocPmLnLzQYyIZBxj?(T%zmIN@Gq z&V?AsAM6VU9c(wx-3Ao%&Orlx=kfKxwO6 zIpSKA@vFP-1bHpLL?HZrB)leIG0c(<@lA*83=QBdXP zkBI^yatB7Cj<ACdO}_mhrccdT(|sOAX2!maLPyv|sfxHf zHJ8ImxA0lmoRZ0Ax0$+y-30Qxzzc~bO&SF)UK35o7=E;7i!a6p}Q z(;V_3lc8>*!RpdR5xKu^K8Am#N2pn#gGtXGdroWNA5xk|c6+4TbX8ub`zvtO>Hb`F zfI{|-G~lLG&pdI!Ogv^ED}x-|1$a|=Vo})Ln#U?7Seqw0q1}~%oD&=>paK80M|aURJ;c1C^nxg7N% zcXaX9{*y4vQsP739)!AI5POmoa|569uE0B#6fXkFK4S@nC&iqkgMI9XO@@Px*(sy>7?-rg?ixq*w}SC# zzF5sKp|53)rW2^=rvCBVCo6h4=8~3qLDEpgRlB2=J$?oEDg*HbJu{AEnfiD-%L_Ao z@)cZ`->0)!_VQQ6bE^*r_O{deUJ(=RX_R-N*YS!t;J_0{m&Ya}=VFx%Ma+)c?I}lp z$~W%Y4_iUI1sgmzuy29-3dkuX1}E~*wi5Fa%BmTg%-z#UEKMqWzE>$4YB)T@t1sTw- zk-N2}c+jY%cS~`wvE8|)SllGhvl^eG98oQ%G?h17iVaO2$~&8?xZ~v(lJh@kA=$HI z%k|Xo{NI58@FM{6#nVk~sFwObK}L(Og|s_b>Rt%Dx%hlYyQrrCOU^cmNeH{kfYtW9 z&pMG^XSs_s@tr2i$(Bt}EBg)-qOA~ZZMyRhN>E*?`Lw=1#)~3SDrw?dSXrQVjVang zoH+3)== zA>Oh9*I(1@^9pF_s)$E|ytdr*fqJEcU!*eV2WD+4k`=BxhrT%ODQ;lxI5L!&0IZ zvAd;@SDCm=gSEzU3iN6x!uau1W&s8tZz88YX z^w%|d(L;r3JxIB>o*ADvw}~M}!5kE%?uqX5$!s(-msOryHK?g`;z9ps^g*Kg;|QZv z-;d)T?yZdi5N1?C8o6wIkMfaF)zbi4M?iU<=@D|T3Ab98P~Z!oU7KuGf6|VQNQf7< z+)PN{ac{;5FH34pyAs57kBEnAz?_In&B{pm#+X7gQGOKh2f0cDIuqD@d>dtP!~HKbYO7GwtqbU1tH#aho)g_4@g6vlBlZ9(4vo1 z5Cd!y(TvyaE3p1pp``#AM5sBbU*_;FDA*?v45%gvPM`2M1!2Zt;>p`x95mO(J2~LTZ07Nieo`_w;cQ$E;VOj z{w7i@p&FgSP_<{L#pAd=Iwb}s%zh~`JrSX1QDUHS2=E>nh}X#n?8DglmJMO+w?6Fu zk(%9K$At0ws^oU|2Rbf%tdZ>gmD&AWcp*P=Py`*K*-*_-X(}1)RV_mKzM_2A?)zm3 zBZ~R{Hjbl*uq%PK=q~AKrs>X%tac3qiIchw5@NDpGsLbk%o>DH3`tF=ki&Q}EW|*| z!ggc!l&Zb2ivKF0_`=OYs|H`fQiv%E(`nw(5+9zKKT$+6j772CI9z%eIb&JVCwTjI&@~sC{;aJak-+hm-`{ zG&7%?jpjPlBF_08Q7%Mz1nkQ(t%xP`b1i2asaAC7OjvXcxzt<^1^ty)Y;!yVyG>Pd z*OX_-v12(qP)N0ue%Lj#(8E{^n?$L{g(K`UGko&1dxkOu>yG~tgIHH<)ePtTb>-wH zetkLxyQHvJiuD+#wOC*s(Ll6cu~lb!W~*^ zSl_4Sa@wt5R2M_`UJ_S@oP7v% zhFtbv6#6-Pjxn>44|VN+2pb`IVUt7%ZLV3&q>2-bDCqDEW9Tlm*BTCF!;xF{#DivD@NY$SNRAl_sJ^#P1YQQarSCy2*TI32pf?A z!8O+#;gT>k4V(H+x+KNRVcoflB!Z!8h=`G-f!wb*Nd{x|)u_4@@{Rz8Fw@8Qf7qdX zD2#c+b>nBX$Ut&+>Fz2BKzeq#Q1!phRl?!VXUlSCIqF=xhXsTJ1m&e_xyb$rQ7lAp z<|y`}*;^Ao>C4{#S$&>>dsROJKKQ>x5J3A^bD{Fg6QO+hJW8@=t$khP?pDrAwA?T} z`|0Kaow4w5vgfXw9b;{XKg%_Hra>$_(#rsUYD0#bt()}W1-hEqRXa+>kI@0JS;5WJ zY*uhbw1{G6Y35j+F<;pNwfkkV_-Y#&jY*n4LFZ#MJL-&?fBka%f5wR>vd4Ljl4mok ztFbbK3ZIS7V6(pMGrQvtb23$q*K%`>roCgX(zG9%EB;-M*XGDFLow3}w}VE}G57Zw zg6JDz1kp?lKEEM#UBLzWuVT0R&94;TTFb`6J`MXP?9Gzt_C%ypVSV zUR(znzgkm3r7cWBFV9g&v_of1ktzovEQUghhU?&*=4?=jIL&n`doB|l|9Hkf6h9Z@ z=gtUla9WN6>u6Prk#W*(a=i{QY{n#Vpdt7lxMT+3GE2`(|??np^LQSD7dOz;93dL}~7I0>0nm)3*Ko zegEP2Kz_PontfKK8huqU4dh)N{-HzvJE^xW6}T5OB5L6GkmsFz_^EY=%; zx?OquyJ_j|Iz}Vghv;Ppmo58r`=5cpP;x}}urQVw_pn#<7~n_f9?S#2WD+;c<8fIe z)@9=#$8 z|MHqu+4pX@4~bvW-l3WYba;}M(=UXd1d=hcmBY5}Mi~TwYsQYxp5y=Qaj8EwA+EL8 zY{Wn&Yc}QC8teG%{YSn!Tqgv6MG+WSAGgz9X-AG{?N`Bc1WUEjk-D~1i&OqYLk32B ztfGorbrZzpF5OiLfy@g!sSo47vqnZ2rlPIcN7MeIc%Y{Jntm}~GnxOEXdJLkGxuoP zW+f0)ds|#Hsmafm|GoAzUxq#sEx^|wccxgJ(pZJRwo>woGGM?Vr< zUDYX^;+xKbK>XG|4pB)wY=twkKLR{K5^`v zX#vhPg`_?2c={F)Tco5`Qmalbo% zmL%+T{OO#mcZ=gXq%t@7vj*tF5KZfxF6+aeHR<$HTrH2&#nT69+JU@G4|ds@DVxq^ zZ)DPUY2cpx-1P%AF`%G$6PI0HkUoWT=|(|uUw#cL%q-{EM}=kW`Sr9gbC#1mFDe*C z<=W!t0RB8GDO=8|dsJkG^6N-N<{T$`P?0*qpSg9)F0t);oyxXt zLv_o>vu$9#%qX_)tyi{=6yAgC%Pssm)*v#yKe~qvGo5Mf-iBr4X>Ru>nUz$oZR!tY zmrt5T2JmM|v&1DThqox6O9OYcEE>zNF4bk%`)b;iSIai^;|i~(CsDb$b@5{=Pqa=y z;_Cg{6o1UGrEM}7`Sr9-*$IC2c|-2t*RZykB^+?RZP^MApV_W-F_pL4l^tN0!EdKO zVd~!dcJVHL9ep>q7Y?;M?*`{tEUo`sd<%aDeLkfcf9&(64|%$CzEC!fZ=?NtWyAQh z_r0=y{2Bknva|med+#1U)wDnUzt-BbXZFmV_xruy*NVIwZ&3(?5V}lBg)j&qjC+VP z2%+Oli9#5J5XL_AaKHi@`dVC+hzs`O<-tXsL zx7T{DwfF4Xdac*GNU5)P>39n)+_hr~xMH`C=fQ`&bu0i6kL-99OxwNVKJe!59dp2( zJvwdzKkU(Q4OqNq$7SHUWXA>I^JK?l@Wfsn-%nR6yLZP|;N87DJ^}ab)A1g-U{uFj z;Jr~DOTbh6c03Pq`*kb;KknD@D0plCj{CsFqdVq+83%OS1in0=;~MbNfgP8DI}hr( z08AUxF&TU?rsMkym0ECc$5-HnLpnYIs}JdT54?G3$6Mf`RL2r<`C%Q;gYsb=3&4wq zcRUK_9MN$fn0jQ#9I)cZj+?-fM|E5Su0OitGVsIE9T$LQ$8<~v5035l{sN^gJGSF1 z@WrtmpMb^3b-V}eIKJa8aKX5aC7?L2X%UC&k`wB$0WX~3eb1pf|HN1cEIu)O2e|j7 z@a-J2FHdUzglDoFPwO$8lj!TyI^F_LpWcxJ4^F834DUaqK++#Xfrk&mK1}E+PXE)u*Dg5c#&JEz%j9O=^e`%Pc zdaUB)e;t!z`RU zRkcm!2I$vM+>Fa3JoN%U+=F;A&gDr1{STBX~*q+2bp;`>{W! zu^IC^Z?)}*nE()4mwD|gL+iiJhm~-Q{nx_vOB(rD=C5M(P{enQ@_i&apPcUNZsneW z7)0YFpV#}V6f?mq&m1kk@;$UQ59NG$){$qJd}rDB`3o=1CZ=TD*!*Aa*tg-sz+v3- z2FFjlrRw7c|Kb&&ee3aRb(I=iyY?S)3eE%6S=;%yn)P1xmk!~+aFK5KM5|f4jU)yX zxcBIWm0A@m5g+RA*cw>Q3`<>LaWk4_Ie7GA^7fq!N?7)@mYQeb3>^FR-oNapYmZU~ znun3~3Km~3spluv@U~VL={AJl?AJqOZ)){qCE^Xgp0BlYuBCqP?~)f;zKi86EPGa^ zws{sV1nj(}?*4T>{`&+4ySr)Wb%=j|J6I*-453&l*5%+81!b*U^yYV4))L*Gv#iy+ zh5f9xh5zv2ylGj_TJ}qpT5PrQ{hc)}E%mWwmo2r*vZn{EA1!-I!1~L7j(?>e|6S*9 z(u5X}Lh#e7nC| z+xS1fUfZ|&9n$Mp{kNsssL9(_b3~DdX&EN}Xh9lsXOB|2a4D z>$Jb@h%Z(56)nSt_z#K=A8-d$ZC@#MmqNmP)$l$)!b-%ue3ig?oijtLb9EOEEGwD# zD{rC_Uf}HKG^wCQ|^Zl*5S3=fO zi)BBpPp$e-g4V)-TMSy|KzL=)dYki=C3=EkO3n<1DRg6yYUc&pNPH=N);}Ek8^`*}Sx@AbhvnyM_f@+xw+tC7Olz-E zkrhfkrh>fRJgE{D(>0#TF4Q&=SzU(>10Q2FX6p9c{`0l{yjG8Cdx2I3{j2lX|Mttb zm_u!@c1I$I4cm~QT5Wf++uiQGmYk=Y=Z53%E&Akee0y3;hvOKUhd8F9Iqwg_D6Us| zSDt8S=?$Tt>^>E0&ktu>@Yd|-9KJB$;cUY0tIl{njE0>>gL%^GwQ?8v!llT0(Vpzi ziMB5pf+6hI>`$$uNVaYhc9+#TR932EK=i@-4K6049wp_&2Iu49@_7TtKkr2gyU3ef z>rEr&g2t|khRWZWa5`8%YT{}7qUJ8Sp)AqcaP3g+O}gB=lRVH8{d|ZNTCi@!nAv$Y zA$N7{ea;9*r0j=>NVZ!OdfwEn;npE)UbklUU+5N{K1AN=wjm?D-L@m*sdbz;60A*( z^e@-x^8H}>Ze3?df;IQhrO>@$db{V1l#4cw zuG&q`+r;@SAs27LHS~>5?o>DLBDp?~sTm{X?ag?Y{$R6B*u7zM`_AEvg*CCiX!C}v zhpXkAH?#lc=Fv}w$&Z_(_RU+IM#R-|-`+5{mGj&nxu)-czYUc)`nErmkV)I@#r~3Q z8Xg{`R&LYG{tw$kuN)*dZ@VM=*KgNOXU*TP{o%p#;daNe|M!0O1qu1CUo-pXZ||)d zq;lK)`}c1j{re#KVEcaT|FDDo!$7%g$0k~S%Z?2n4^)rt*v$TmJ4TBG<=Y*%V}EXc zj`5@cZI2C zB2$%xez66sy{cu{aY>@Y}21t4dxCjcMY*QluLKEU)o*0x$`1o zZX9mYDN}YS1c+L=d*zL!x~8rD=ir|u#T9Qpe+B-g@HdUW>hI)#U+dv5)%?fSdf@%X zJ#mXqwYrXVBK~vXtfZqTybODzY@nt z7;#gTa|3>6@utM*q74{Gn4!Z&T&FSL>bxxD5tN;wT6pn(ST(NlT?eMtGJn$y6*-?3 zrqmGDept;C!A8!mmARzh3!3FmhhN2zrt;nT-D;P+vX1MGOf+MNNw`ZR`)qP)VI2ys_4{KJpV;MYIbMo=8v1)w{(p{M6e6(WjBX2x*J^Q6TzAv-^FZ`N<}Co*gFjMLYUPtNVo= zew39kgW+47-AjXBzR7(#=-12QV{=;FyF$@fEiP_6E^T&~hni`B$ z4no3fzIQr#yUkhICZD$1Q`b@DwggA7OZ3}rEVeU@r?RfjrwllB-JNS*SLf+&GPRq- z%&=MAqHlDQ+1<9{i($77DEDKx-~ME!=Mf?f-}|Ec71>|PpTGI%|E-mC>4nO-;Tb8=d~uYepPI8QHfMXx>$@e`jhwFq?Rz3j9r0d^VieuP{*$3D`14#A zihdJef^C;OTuc^ExW&cdl}~cFg`>|#QBmaY!*o)AF@hdTF)q~WzlBQ^%Y8k{L_m89Q`H0al6p}viZ7C9oG|Yc zAB3H6UF@nImh!zn;pD6nu{xGNS8oL_b#XRc!kLb%VuPdHW7Kd%J zb^Kis41JHfG=iB|gqVEL!LWEp1y3%r&_y zju__Pd0q3FnI(ld*SbES8B^eys*tqJDipxx5{;f9I;7bo=M7T41$*=&JJq?aN*De4zbx zS6ytkzvQYVcKb8b9c+KxRc{5`A9B_8q4v97^eZ!IF07LpmJUUq_6)X>lUas4`m>AzJwzmG@uiW_!c-WmO(`34yg zo#}g>Y^@Sx-3*mPF7&(nMl4L^s%m)14oN8pyaHthW# zt>ZGgxUTuTdii@L;#)srYJKxJ_1MVyIr6?Q(*^a-Oe%P-67gyM;>sn;ub(x&nLEs* zitJt)5~`i2lO3K_hOn3g*W!@hIppO7Ee*O~aA}5~6 zujw7dowSl3IqA4B__(IxCfxXUH4b~xTPz3b$hj7kSM&A$M0r;R{R>SY=)cmjoWVPR zp|=p@Pev%)ZTPu9FUZpsbtWd`V3EF7pQFydbUka1J&bGhuuKXxFJeGAIP6u{6m?wk zEOr|1<9IlI8D$8!G28ssaH=9>!~0aXH*DS``|zmsB;$mu@BkTba0>KPAj)v}%Ypxl zq5aSA*?i~d6}?)?UhTKwo0q#&Mdtn$7o1_drrxi;PkfU>ds)OExMXI)nZobpoe`F$_Md0`Hn#{SK>PU1 zgiKM5+z75v$5!G;a<$~8L9f4*1!r~L!XWPTBXr>`%lFhV+ltH!%6*o9xzF0`@h1GB z?JfwiUa<2xORL$=qu5;pori)i$?Jed-u>Ra38Ay<+#fObsB6Bm8#eJfpkv(*cX#E1 z7jc<}o{PG&F6XehU2%`-An$dLH>JxOopZX%8;xPCKhA4%$Z~NL(a$$IUv`m8n!~qr z;WgT!%4eGSAo6YVrhn}s3tJpCTkOx^Sk)GZ8Jbo_8QxznRNL1&i;I50+Pu z4;DV*_(1;}8@&PfUn%JgOME660}GnB3>dex7ApTtEE58 zMsdRp6Lng~`SkedL1{#uA8ym)-AKD&3}(7$=?BYj1Wa|+G8&fPSU=p2Wq15AoCb^Q zAO{xK)iMvpyK7klb8s2-*2CZimZ023J?&b$!cq?{aafE|4=k*&B?aRhc+-bDnDOH` z;Ogavd(v*0-4OXOxe@Yx_R>;@(i{0VlMX#78`Bnw9*%;sO|={evv53= zKJ*Jr!x^vyZ-L3pSW^WS;6j+&oc@O17Fs@o8Mqpz;#yj`FC@0q(g()2qCS{~qhNY# z`X83yM40bOJutTo%NRg!TP^ebbhs2Iw`2VlDE+XGfn^wF0gcr5TDrr`4zvrF;ZRuG zQOg*Z>`y%~HGuX&Zy@!+47>%F;RCQZh~<)CEem$5S3=$I<_{!xOahgvm7L4a}Ux`QnF9rypT)0`xc8mg^7ola05$lKFrS3QuO0_vR(npkMg^M-h9qmW_Xu)dF=}m zPaxM1!!a=T4CfKdJd0ddScJYX{ye`^n0$fr26``Yp56&xLLS5)lEnRR5qU7qNY0Ud z{2LrEm|8}8n0%A--RIjJA7-3p-=UolYa$r|%P<8?f2V!0SYp@%Cf=jJVBvkr!}1E+ z17jaj|6R!Wi1xtTN-as4`Ivr!X>QROnEaIApCA4VIez#b{Qh8y*QyoJ`-1+5u`=@R zroOK@jxhE$=Lw8|L%;Z8Oys6R?>pKBv;XAy!Q#J=1Jgffaqgl1)wBy{e?$&U+bmuS z3yvjAp}0Ie#H0w&`VeX=&#EI5(BwI?bbTVrq_+dVwx4cAsxWMh>^F~{agoT?~CJ?4?wPh~MFgYOeGX1&0 zmf1z}@d7;I72^MfeoK&FLLSV0jy&d-dtV_3=Kn?bHNW5RoDLHf#{94p3d$&Es;3(W z!(vlV`n*BDEUneK;oM<1BlgQ*CxuxC(;Fp)$)Odf)Km_ITo-rKZiY*2c`{ISUQc^rDe_zB2` zxisZ{o*I{9wr_O zO8Q;e%?E_fVEM_QMBjtY(*H2FI4DVoPbirIGrZhq-{-jUs{am*eTtqd$o~U!J|v!x z0&`&o&WEK?NXC2wqbz*^6Kx@xxRUhsc)9tQdV7XsI?Nmwl5tEjTPd*7O^Z7T@|4F|s4@m+hOCia? z?7JbE4db|tSmmdG7?SuZ^k>dM9^%kjTK+|tnFKB0BS#z=0X+*})G!gi#S+X!SQyri zk2(_jf&PbanD=mg2;+^8WMQF+2_`Vs;>bcjzLj|q(CgyJYM5Bpk(Sly(c#EAnCVS9 zSlWa^0GR8;locpDIJ}FY*N)T!W5Y0shxuI{8S^u8_HblA%KncAUc}Bpi+XnR+bpUB;?ic2`N^t8p1jUO~MuhtZE0BHx|p2jfhh zSqc-+A}8FH?~urWi6X8*U;#Q2@?kR68|GehWF*YIh8{5gx+4=|374WXVEk{6%!Y{) zi|hJ)pMHgzkI>hp-j5v_<@2BD1@kP_4gMUK zQC*Pdu-*ksZV-{4-H6{JA_bV=9mgK)QvY5N>E697*VTwjge5o~CJu_oESQ6H{q!-E zgRvtbGI~AY;aFHcmU7TLDI$wu{IrNT?dW@TL=rG_eMH8=GV_L~!`K`?3Ho6^^?e3Q zxEbl%gMQ~D;ZT_8Tl7j;d?F&NVdg3Hj*;)_h>V08{3WM+@(FRgPn?oWgZX#)>7UcS^*JtIM0h5l{x6XOi(gS5mcORFAOAi50ps0WNo~M!UC)(?Fx|tI zTm0|_uB?ECo~{IXQhq~My28??EOrOeo4K+O<~MgmHbm|guJnPjwJS&Z+?KVYU~B~P zU||00Dr2^yzB8ke z*qZiDj>=4!nHrVVFm*oi`;yLbVdJ64;OR`5WRV$X8_Hjczaf~qDJng;C0`ydB(QLQ zRJ`rT|8SIdO60LX;w+yyPn`!-_$*lr6Hi8^1Y=J{kFS#yEa3lSHq0$2 zetY`&1N4XGAEL5q2k6$x;vMOq);by0AH6ogU|@iMUgFLbCi~aP?17ZqrA}rJqW(SV zWChIcQzyv;`S!1qDX@4@ofKd!RmWrz>N~Pd`orwebuu27$Kfy*#!jh|F+E|3 zb9x*e9jtdo(u5|8WK@vw+d#VjbgUdHZ*zE-_tVJuKDIhY7yZUN&Cvvpvq zp*DuCyzO-n-SyD3~2tFKL+GoqAwt zk9wI8b4l{U_+IGar;n?ryid$vO0bLru-Ja|!$tLcE2f@H zkn4xxG?>fMkFdZ}BLzQvdA+QJas~SCPd?ZkCa&aoz&z~dhw*wp0v6$DSjIp7OqjZs z_W0rJIG&@)e-q~o#Phby_QMZS4=g>z`2q`{q2B@I{{lI%@MXPBf!+@smjmf%n1E@F z8b-sM)ga?xK7hA0$atva{CEat7s5n+gS_LXZ-7U0SlEm)(}T#jLxYSOLw^q;KPFIr%VEgD+ItGj z-`yYuSh|lTEFmuR-9kWP%@FNqb=a9}QB1UKx3?%#55V zN23q3apu8vz>}WGAg9ig5wN%}j_IIm;7JMQdwUWaOZ~$=DI7<+y*(LwJnh)elN^j6 zh#Pw-hj`+RqrZ;!cowC;w1=Sza{tUUA&BE#SqV$ikar^GS?wqelXIv)O}OAm@+8VF zV&ojA7n6Q6^}puHBA8{;QTJ2Oe>w3mzQU6<%&;y}Y&^#cKS8%Z2{%gYRMP8NBo1ab zZIq>_q5qbRk~p1weH&#glG>#P8K8%V2zTqx3w3{9{>a85U zBk2$G-#1Cmi;=^$*$FV#-YmCV!tshV%L-UnzgbqpTt~CCWQpGhH!U!;6)QNv#2(Gk z=TgcY*(~|Xe0^Cp$mf)1c?XuW%@VjAy=M^*3$vSL`V9Je4(=sj7WYjned3;?{}t$y zM-Lc#q*)gG;lDOZ{7U#d^}$@RS-h)g-_m9o2UBk%eTVFukH#MqiEG zmE?o@&uI_Lm1z%*;VLqE4e4K_zt3-Im(OpTWehBS*DMoZidBT*w4w(I15tiNoU4 zEix0vpJ|cVFbn7T;b&VIPeOnA4oog?VLXZ7%gZg&^*WA2v4wFY^m?U5M*HE{amwlQ zZOTCpCk4H)M?N;1DH#8ddSLP+^1<9EEwT`1ac|??K)-#CJScc0NW#R|Ei%>*f72op zVQzJctn|4{E8`8s@7pTQt@Oiwt&A%W5BtFQVXbl`^bT*834ZvlbkAKfY=ZzCTZ z0}EqYr2u2cwn`DEk89<-KXQ+6mC-Ogj(Ys?Nv$$!HsO<7WiCvfO*xpqmDP0bW3-aCbRCLd=T%aFd1r-0`wd_ zUco$E=EsNIWCe_SZ9Houucb{E!FZ20SqW1cFh+bY{j_15^oH3!ZIXfBW^H`iCI1#} zG7rj@ZBm5gt#CEzhj(g|*nN~A-X{HEVV5=;0c9lhz|20#f%*O0`0k9H(QPstCJt(o zrLYKBz}%QNSq(D>w@J(Wls}|Rdcx8XZPFjckH?oQEKeZ*0pibYlc6wwPMb`CxpOgB zhS@CTAEdoFQt1s#_<&775BDmgVEM*2ITFThZj zBed^*u=sTw-_PmKALtLr zS9NR)=IZ$of5cy`@&*#l^b*V4Si*%(#7gy%V7`wyi7iB>wh*h-S5&#LSg~zICAXDe zd^@r7{lqD6FIIYxsO%sKrW0Znb`ljEDq40H#~UUpF-)xDa8ae<#Ep<(afGP&E@CD3 zlwe^`%I+m9vzO@HUX9jLT`epRd72@QsM9wvYuO)oFC@+V+9Q|`6 z_1`4H(#;ai-b#25I^2m4bLpG8$hu3yrMt*;H*LCy^hZd4l=R0)e+(J(k@utolTV4x zJ|#|aq3H5LvAkzQXP!asvl7lfN7)wy6EtxOi#Z;P$@`)NV=swLy+pf<5>CB>Zc9X^ zmWW+mB7CYz`*qPTP7=K+<`gO4qZ-~T~NhH4v*~>(-Z;BL`lm2&++`GbeGV1w2 zLV5mDAHt6Wr)9JqyN}%G5=eg`fkasX-j@<6@t6Nf0-3MT`D^s~mgDy=a z+(U&*9V(pesqE5*Dk!~FsJO8Tr#4km+Fa2PYz+8I?1s!eR7jH8ZXBqrC51Jf&jisZe1m_88}rZ#H$`sX~dll)IZL^Y^Gw`d-rRqul+<_8w5d+yg3* zdyqU2p~pi?G0P#8=Pxx+MN*HbNbXVE@hEjM^(*mL>?IyY4)z<~Q}9`3$Fa@GV1JQ% zQH66asZi!srLe28(%4kwv8TY6LS^4nx(o|U`6#mVP8K_g+)AahpAh$n(&^7sq{Lqm zYvkPLN+rKgQYusaD`ls?Rx159{qv2ovfrve;yV>6f2ZuiDy0kmV!kbw%=z!>qn}kE zE?V=`35e13~Oh5+`w$^D|2lB84V?nKxK^@4# z0!)R-AJT!iLp=`RFyS!eBb1L&-le=td5A4XAQq*3l=wR0>j>8quGaytLF+_=4iuqy z5aqD#2xJ^d`bE50lNvZ`OeVEW>yU^|$Ci4i=%;O8!>z!#pg*SR4Aap&u+l z>4F|z&;!Q0qDNO9$if1YZuD0-`UQIHP|rHl19R&le_iBvM}BwY!q|GqT@Sf1-i{va z$m@Z;9>{|Qn2M1eqh2WMqu2WA1=Af`=Q^kddK*x0PwMSSJj7NcklK)P8&VF+M&#Rw ze7%s{3%L+`5gqSMewc&Fjp>(-secpd-voVO5qg`V@21oX^P6g?&_^q5L$tSgUNFUc@EJ|@=)X+ zN}HjV(%j=HbC{O+;p`tyn-15!TT|yzT9sk$XziAdru;FKKL(D~P6@k}%yC-fjw2tG z<0*GM{WOlYjzcy~oj~{mbT|>YCz1{eunZG_(h^I$=!AbSG+eFn15Ko-ox#F<*9&ZJ#uX%#yQ9bp+} zCu)_Sh;DyI)}J|#&eke@Hf@AOD1XrkTN+(}CFn8zxSXNQlaM({hhkGmpTaRbSK9?_ zZPMovKb5+sA{*vm36`hoKzSN+&!^4j(`J~ufIJrvhUE*io4ODkE~GuM1ik6#Ivw3E z(t*^)q+LuJEWq3)IvCH=)~wbU=v|78OW|eIe;McY#@FjZg{upnO4NccDYrXyXS`hZ4^a_pA=(7U@v-IUUMi z160QTCynh-4!fTsHa`jMe3DC$|EjiQODXr74#i%FZy;-#whPP1hs{s>yH?mNM*}$>n&gy z8w*LO7!oVTkW8|fXBu8r3OpKT*CmbFrimErph!>lHx!-TkbJ$wmfj+zjmf*I*x5MG zD}9M$K71^}GiE~U^boNVF6TMx3c@o5+bm?w z=6UQ6QTaP~9-AX}j_1JAT#@o!;_wWJ5s0|iyx6Jx#Ew6J9uJAiK1A7hVwWD}Z$A44 z$}JF^XF(NznrG2xBoKdAbn02L3X8<%`H#ggB~*HmdS6DrV&xf-2J>8SJI@DmRFG#I zN#3o3*}Ij>-_0||-O4H5!!yA>%1P#V26=$z0(@!3=PR9@&vOLK@*I=o8OFCY&GL+b zhc8Li> z9JkZ9*NZ`4-qCeFVHh<}3f z)IZmk@LMfuRVbks_Gd+G%Hr6MrLYN;@A>^H3wvhltirI)Qc`bmE?O$LuEn#0707nC zbfLQ?>2_?WVpb@#zQuTkB{6Ke(i>V*z^1FP34eX?BC&z!HOLBN5>}uz*b2mlSUNStvNJ=;H;np*S*kG1ax%lMU~B|&BXFHD!V0E$ zfxE$xmQx&QS;ajpC$^_$rLhf5?PaOr-j*)zXW4R)6)O6FW2{i@P|6=_N&awT9&SnI z7j%SfTW(wC7YSR6d>X1Z>*QvQ+*o%AHOAv&lcnQmIMApF{jP z$idx4_FVevJnB8q5^p-?aCPTh1TUi8Wt6+j!oCu@SCQ`;`r{fakjGxFl(Qnq8!buS zhTeA}i)nw}1MEL!=`#L0a5AQ|k5C@6s)_O*wd};>$i!&9P@u1#v{d>@@;qr-u>}^_ zN6U9BXvLWmm0${@_qiqUvK7gdEzS%6enz$vz};p*GHq~7K#E84cQm$T*I+L;2OG4z zush2KR4E^j*usEsccv1H19sxYfFxcHgtA5QEeVA3uLeTN*8`GW#szSBKzYl_{~r5a zu>S>lzoP87$or0ZRtN0ZPXQJGDc}}>lLbHx$V38`6b+L!r!mA6Ul@`!FG9I& zNW9Ci4Z1R9C1$aIeF(eqkj2WMjKzken8!)@z3_pMlX@@|%sq(R(!5ZpFfU}~uth4( z4_T!rLSgSo!ixw$$NmfKzZ|lQuafumkV?HCa^i1rFW*8#_9-u@g*g;)JuCI##id|scjvd+t#tN+dJU| zwne2Kolty$W2Xi?k{nLH5!AhhV_^{;82nRA}5k5N{if6)h`W(_(el|0MxSPVE(yhef za4>gQ*v{P(wlnu4_x`Y*creWKRydS;3^`A*UkpqB4eI%vzn{W9(?pn?6A4K>+?=__ zJ7R~Eh)8i~KHTk!O$~NNiM_EM+K;r+5%CTsd{iWqIwoSrj*HmoapXHGVyDJO?852n zPh|fu5j#1Vyv$n8utri2TcRv>L`iIhV%P=c7qGvGxR)b=L=nD0{x^xo7AXB5GFC+F z{D+ZHnaPH+Z;< zcCBQctBam1cp|XMEv{Ye?%LAs+FlP=C)RhZR0sL73(E9#?evDOo!iK@3%#(j*%+Ic zOcuQ@$^9`nr+SHq^HrdACP?f7dP!aP9m+*Uk}xSrP7o+30Wt*DtWSNmtYLLpA0rX z$q8<#aE2R+ok@Mz{&?8^hm##{D?FMsSQ^(h?j(y`g*>BMQTlB?tsPs=)$5**d4*MZl?S>2352g5$ zoVB7BtKu;KC5j!AZ|f7a(tV?WLf@z^_ll2HWQGwQN&X}@ zJ_kfCZ)_BMH|%?kk8;tDs(dY$c0YepjpvS?t1jdk?+=MAb(p_6>f`a{KBgk>lP*FL{(-^)XLw9%(>|L05(exQMQ1- z3y}3R^%`ls&dLw1vrEJ3tjvfy zJHKn4l^j`TV?SiYl64Z>zs@R*#>OU9XT=Y%li~?=R{Bra9*rmcv^qO=Mx7;R)p5lnYI{%5K8Me2R2&Q8BvXL+xn*HY@m z)+firgVOtT_<$a@hD3KCiP<*z{!nMSVYD%Ou#(bg8#e>(%T0de~HKfE`9p!W&_K zfz3@3JDYO9dMkmwOmc9&6~hiDiOoy=fckLiKx|7U)?1~?^}+bL^;Y@3`al*t6S=D1 z%CY`j`VQn^*AZJ-Zxx;paQlyioBb zFOa&8vbZcQ;(4?%-6gnDpxua3VH)sqNHh?{0&qfv7s8Q!OYE+p%JWOoW zsJyKjt@755!Q?i`*oK?scEoMh7>@NLeuu_jddEhc>ffkx{TrRq0MZ6F>cYTACzWVa z=|rRU1~;nY;6|Mt+!)O5MBbsq4{dZ3J2&d|&W%=jICTwgib`#YJx?FX_Ys|e z**@4mZBG2==!1<{eoN8bR-|twL0mv9Z)*vA+faTxxV;3+JBZHqN3Q|c9u2}4X)xna zLqwN{QRi^RxOSoayHM|L=rt0%tUb{?iH+0V$QUImy)W&@j;lDD`VNqA@j%AG#z@dR zSgdl2JVy|BB=sCcn~uR&>KG9@Rcdkg`d}K@)=DgD0OVIZciIy&rkX$OE!e#Ws4DwtdR^loN z#Aad>HB;>JED7YV6G`62-`65}?3S`Wa~yuAUwJTIy6Bc^n0FQpQ& zyccptDV-msRB=BB?)Fz!d4JMIE1emQ?xU5JJwSRQVuf@pTo*!UAKVF?`?T z-%^reJT&$mwrcNF{xfA`kEOgXRV4c*eejjCu*s4VHd*;^RV4PEQt=;^ol-iGS6an1 z6wd9%GC% z#+YOWd1mVHh5nv}1$4*9e!X^PbncPk~ zSlUTj*h;&x*kb0p)QyCXBn*k+P3%~4ts2M`{EK8&Bn4%dMa_9&?%bRcmg zWslW?!g1s~QLFTcS~6*5jYpU9+Rjd3?Db5_pUvNejGs=|0q-KMu%(dXC5)qH87pOd z;QVFCzns3gT1V z|DVd+`TrvCcl4-R%W|*rrF4z`@jLbTv+dTV+)-;;ZnL#4_bp$z*GA93u4Or9*REB4 zyRT(AMhe!dzP~Xlu{Qm3>sppO;r~+Z5B%=d`+qEt+3;)CA6Kkpxr5iT+=gpe?jMZ8 zuJL$x*8iQw|IT&c-2Y2Gzf+D;>Hp~Gr}yWtyzGac{f#zPx54#X-m88teg5J;Q}@gA zo$1?I{O{<4-`@Y|^9RbEyO!m4U(0f>YgrC2Cu`NdTi3GO32Rwyo3$+WBbF{}eZK$B z`Eb|&Mc(g}JN1|4{B!pAwq=iYt36$B?`pVU;tOM|;oQh7OD11#cr~0c@rl!`;VjFp`de;gHJqHpGdNpn77x+C!xDB= zzZYNr>DT#-Pyae!Ej_XD_v35nMU!3&*O+*?wNmf@py{Xdy_IB%n{atEJ=l_fNl=HV5Gw1#L3iqo*r59>fo?k`(kAQbo z_4sF4)Z5=mlg#;Gm^AH68y3&3rsoaIhKY-+@r8R$c@q}H(gxM|+}VbBlJ>WhNzYBM zhD(OBp-DI4f?@3DYJB0QDl@fmCM+gBXY|M#{nCc1e6?J{Fk@IY`727T#lKXnDmQMJ zTE7}jo?PYF+pEl&&i_WNWw2{-*v_ErOHNN+RDwmo3x%;Z&*+%XJQ-0MY)%b+z-({xUJky@umQ@vOjEwAY4=LgZ~e@1UuMcJ zJH0Arm8o~M(PLh%oRO0>$9<-eGd5E#*W0u|Vfx!K=k4riMn5CJx9Pv6(LZPUH)dEi zbd21UM&2}2zUy^Wd7~exGH%%K)M|K@IbV98R1JFvrT%*aKcs9a`VjfW9B{8@Je(2^3JM;r%kGIk?HrbH&w%({j?{T`(S73 zvm^MeW1AnS@)^UT;ai3)3_mwqWvK0Hxu{{AVa#w7!@hhi z!`lq=hL0L9GO4No+jU^v;Z zWZIWB{UD~l;-(*ZJ5_zQGVE_S%rI$qpy82*CmK#LoNPGV@Jhp+;T*#U3?DaKWVpoe z9m5X|%ZA?@2EtW+>kYdab{O_C+}1E*xU1nP!$S3=w;0}SIL~l_ z;bOzr4NHcf7=B~;lc8g-BTa_g4L35ZoQ(g=zxzzS`G#@BXAE~R9BR0S;b_Cd4aXUt zW|%R&z;K4)^@c^mw+vSper~wRP`lOR6*X)#j2UiX*w=8N;RwUM4aXQBZJ0JZ({PI6 z#fCEtZ!(-~_>f`2@Oi_fhRY3C8h&NC+AtWcw#PG^ZhmL$m~cxNdBZD>9y!A~h7TA%Zn(&BiQzkj9~zbozc&n+-(9_7cIWEJ z=p9&P!Z2yx7t7{-FnxSAJ!e?Bq#8~$N73IB4_28r%o!F9h53m77B|cn-?yv3`94Yg&G+r;Z@v$}%7%|PfAf95`J3-+twMaDRW=6SD;qwM{LS}WRN3$; zmH{=a+G{d^P?u?f3R${$e|9al_P@YB+0H4gKeT;h5@v(J*7qC-3P0Ci&M~Q#tR_U+1rd z)>JP3WG&~fxyEwEU+1rd)>JO{W-aHhxu$a2cYmF~7Ftue@`tsYRaQRkvKz0jUax!q z=6S!C?wR!3cZ-^oT6(#zT0XJCuiqDH=}A+*v-I>D(z9zw&ztnx_luf->ETsoi8+5Vl~IgPi<#eL(y%7aU&F}X@PSa_A8lXO z$XgTho#dgU{HwL^WYfOdajm5nH#WbUU8?#g4Qq1!HJkh`Y4}Imho6T^ z`8BcFNxqsMHFkFVCUtWB@|&3U?P}U#Sd-_k4d!p9wLCxZUr{N)CKfu$=dZO^soxy8 z&f1slqO!+uAZvIx2iyx9oxUiPzXU51|6LX#9tLaf=XYDI?(!S(o)%F#Q{P-TfZlAvf zn!gnd|LF0{8hL9XK36LB{5GHG{aT;S+E?zReeuoB@iX${d;VHpY^!P*zhssA|7iO% zM&6p3>m*<8xYgL%_0#jJ_s!p4KfNu?@iX$VzpS*QCeOF?^tYnnA8nuPRV}|J#yZJY z)1$`D+Sjv__LWWhl16^nuqMx6+tA-~hJUnu*}bdf*Tj4$`D%L9*jf7$owTnQH|M93 z@9k67rzX!|L($*LhJUnuNh5DfOm~v6rbmsPwQt`}+Lzz5+P<8TU;It`{Iw$e&0EX% zdDt0O%CCXGJ@W76tF^1f&f0fWC+*8_Rc&9&$j=(qq)ytG z>|1SL*~m}sSJkH`&tLo0-(s7sUHkGz-kMnKB;UXFF#5^&-;d)TyEZ_)6N{{D(a z-kMnMBwwvvHFnm%2RmtBaXWK;IjGu>q+v~-zh$d{{9O6tL?*2az%}zVJcM(`)jcKTfRq?f3$st!>Z-h#8M~uYTwN~ z^Bvvy*X(b#_U7zr`2YI7yiZwxby*{#vavRVzm-kC z+VjRx)8BrYFQH~vT9wB8n6VSnX+Ot*w%EYx@sJ~{IXy#vEp>k@nd6X)Rl|SycpOzN zS6Bl}ouvQ!cpP1olQ66u59V4{^!%g8qjnr>?XMk&l#!n{to85cHS}-6*wy~Ff0KjE z@42S8p}$7Gzr{PM#AkdZ{73sYKGw)t1CyPk*ZMbQ#*1qGT4TnPtMzZ<_-cKn8r^C* z8?Ca|Uun}{d1D`2X&nDjiE4ku##Qqt4YP*j9jfv9|Bt;l0c@kX7C`UVPJkAQDO+g! zTGP_kol4$fx9`0=aU944f`|hY+9J!gl8AT_lI$dXudT8GCJ-35;6NZl*i0ZnEC~*) zXn>foi4al)AqYr{OIQ?Ev*w?3@42IykwzLh=F|Uv9hjq;d(OG%o_p?k?(%B^3)M$m zyP(Sl;rw(ik`*tXK2)NU`pD;Rllo9eA9CHd)JJfF&_}#e$ispHdI&~IA8~?(>ce%G z;Fk}2Z1D2wBT95qAM72GGR?;SDD@Gu(MNKk(1$B5LP+ZA8fM0 z%cl=1r__flk3Ld6#C*T3k7W82frIV=sqWBX8WjYhoE~rP6diioA7-4kakk2eYi*;vK&eKsH62H zL6QgV!{9+Ff=L=TM`@m}P<_<>N$|@D;SLTSuN5z!K2)MBR39FTeaLzzNZ+M?@l zBrGd%{2=x9XVRC{lhkKyiqMCP;tN{i{Wl>;l*Uzs+FOkH<%0`HD)CFmehX}`25j_EcLLQPmiY&j;={9e z@K5~#>7_t@z@0^$J|9$V@T7gjDO~D9LajKrKH^0p+$Hhe=Hjpv@ss^bsRy~<49)`L zh)(Ap%6bI8te=vkZ)AcY2^#kaEc^L~=v0v(N#a*_9?3y4PWb?Lr*Zj`2MXwP{UzKF z#p&|Fqzzt1e(=<#=YvWW!QW~9rM|_*(ep#&KFQGFEo#z9N~OE+#e?N zng=Fq!li!f+CM3$WBZZoLMh#{{IUy#oEkyvIMG!l_G@^SP{{HzG9>= zsV6QRrms=xBSG?%T_og|`Y8LEcyA(Ds6K+kFCSEG@T444FLwTl1f@^4%;(ij7wMDd zP+0vHa9<=>MS@_V>5G%x`C!rpPo`_M%AeGi%wL)RDVzLnI$7waR26!Fd&xMd5%LijNc%!YK#4f2B0i}LQ4-xH~v=@mLJw@mzN%G;HZTKhk6C=HN4j11G z)sKhx<%2;RywTQA^i7#^0i}LiHu}*{rSc{9BB7jLsV2RQuzZzWLiBkc+=Iylw&IVr zeq_E&ElK@&Z1fZVtF9RD5F7nbpUN~V|Q#S$Z&A7hsbz2$>tHh409 z9txM~lrXlR;P13QEc1IK>BBld7X7`@N0j1=%Xm)~@uX@5guARo{Z?T8P`Xsm<%2Fe zJgVrDB)@gPUF;7+{wAVN5R`gkB!8S>q4rvLg^)iVY_h?_dsXqTm&PShUc3Vt|Dps_ z1g+zermIMQ%LSDFE19olhl+j!X9f@Xof*C(rPQ0?0`idFie^bl0pn)~ea0!i6hYV3 zf->J{$?$G?2ARLhPh^;$>aG96avw4Rl8x?ZVY6D9tm zrB`XsQL^U@`)$dscQ_|q=#5~ZddEB2@h=~Y+2BdNkCr_rDIQ(#)NaZAu+=-|PdBzMqBS}rAWs}_0GzK{-nMo zwAS0w-s3j*-ZV3}-kV6@u@UMW?m*yKoDaHe@J3tjO?#>L(mZ;X`cB&DTci3VDARkL z&`*q@Rwdq(1PiwF>xo|;n6L>SZGE#Fgghg)bG!OH_6w>%ej;G-M*^1pfWA}3(nR_$ zB{`x5Qv{P_*V?y)oQ3K;dZVDr2Q?eK(bji@;u)#FqeqhdZW8H|^-5Wl_^wq5=&BX4 zuA1;k-%-+c6VWFKHc|gOL3&od?M&a%#{~ZvjqmIF1YJJZWP>-_`gXy6JNPH{oqAln zt4|1M+h3vf)6TwK|3T@VAYlAg0+!VY==o0pN$pH+7xlO*(|xnh6I&%<^l$;=1oPQ> ze52rB_lAfeNqq7_c8iE71CRP=qt#DzQ9M%bo=-^=p9$EskC0y-OM03lhrhm34}IFTG9hZz32Yn4> zTb$xa+%DvbQGPSH>kR+m;$AzJDiP`ML3t0M$fMs_Gde0s~7gH!)ys{?B519}2 znWch4-$9~px|8&Nmw<7q*VuQ&d%kj}4TyN_{vl#;trc|npvMMJ>N`r|vi_DZ@pTcO z({XT&_|&Zva(Sq}V>EA*`i9^aB)+MHcvqhlFup}V&t?IW#HWnr9bEg1@3Ndp{W8j@ z=-ndTU_a@z!3IrMQ<-11b&dGZtG&(mldV<*3 zkSZ7Fgi8E`Jb#_q$|uhibShuo^A6`a(|6f8 zXZ3~0AwQ2peo{Zt0`X%G@!33Q=}$W3=W)od^ayAA)Ex4wbI32{kYCUtzdEYl^4YiM zke|%&1mTy_{D3S^GCW1$*7iY$mwrp=SN1ck^y8{UxYZvn>0LJTQOSs4g6{ut-5}1- zj^89;kit_m9+Y@>eS}9)o?|MZj(4-bOAxd~%Tj+5c3b)^ojXp@wS~?fzgs{V{#C*F zJtLDt{U?$CtJ2$-7O%8hvhV0Q!j7bUN&Amcc!KOqhP&uKqI~7O?%U4lH_3OH_$D3` z_qHVo%J90Q=^WYvXg}`+0j0c&UyAsw=U11~eNT0p1YZw9?K^@#AK$}V>2#nhGCoG% zrQA}^AjQWho>GE|qjJY5=_P-c4gVPN&!>NnLGE1rYZ-5l?zxhDRl0{jhD#{-K|Ae# z*zLcT=?og=#5h#iXD#KB;}#jeq>CBo9Hmb(AQ+^3nzTByqu&ZB_y0&J@zhgAc$DxY zyP*6*u$0<^IE~8^1SLNSC0>fcOQ(_?#3xDVlX!D2@wgUH{ZHi}dYYi`q4q{XiN`2B zMNqP{@=dN5eCwzk^AME$B$RkT3Relr{BgNOxsiA>KJ}k{JY*TqS=SfJbVyj2XIvxo z5hZ;fT`qf-_%Vn0afk6I9r7z(B=SFB`713?*NeH*BlQ%cb|&}}ao zNdYBZ{5tU-`&dBjZ2{|wiBC+tM_&>!cmqM=EBX8j3Vk`%gGzdKivMNd$?{N2{R#Q* zA^WrIztmB5yNYLw+v0hcci3f)4pb z9rDv0@=G}6mvG2W)?cz;sox(=?Y5kM)#zQ~$7w#-DSnd1xlZw$=srw&?{Jjv7q*i} z-d8K{A@XN2}!!w$SJ_>)rSC*9(_she4kLd5 zCZNP?I*PuZDPSxjpr_xAC-Lj<72mZ71XKye2(r!Md)W&DmJ*coWiL|rO9BSB3+PD- z=-NTw|1O~Vih#*o0!F{KFV~agCt-@hSxVs5m1M`0_;yg+U(l5n3s}YkOi_MV%TG+& z*R{f)tl=vtJWlo|!^>1>{Tmm}ry^ah@j%cazb1$Lq@3(hA!qz?p@#&)B*Ey9#dq!J z0!lmy*{?`{zZS4;vVgJwHsjY#74KRjeLqb=*BJt;vjmJ0Ob|>FjGjq&Z2~6#B%tdO z0h=xpux_J(+KmDxZV}KG6HvElYT-{T{V(xdT|@rGI`QthO}v*)5brX6sox;UH|w_S z^^h_A3JjTGv^4Ea!V$_rW$bI331kYAlcehG*Cf)4qWU1?6QU3;N9k22T($IhEe03+OsYz~~YIwciOCYZ5Tw6VTHvU@|IT zoM4K+m$r!SW$gmi{h9Cyx(L6Npwt_iFYuZc3FtaUK@TuJ}t^B;>gKQ?uRZb|k<53krq(|4a|5cZ6NUcN2V5K)rsW`5XD}`Zdj0O1mO^ zli_6)9$#8=`=7|pXTRN`qg&&(P`{3=1$WbrQXWVw*> zYBur8@Y4Sveb|g2>L^^!i_3TVce7rW8ie=1!o^phee z`%j*S#dmA}sVpJBCpQZy`%j7I#Cz~50j>QfSHJk4um2SPE8&fD|4Cgh`0j20iQO&u z*!7>vUJ&6)f_i=bf3*K3?I}w3)3i>cU)ujiWS_F1rQ0F>ko%!@Jy{T}<2ma-EbDkq zJ1jjOLsp)!xg1&7g~|PnPUE-kx0LbgVq4FT)dR#2YkKU?kCkNcJo_3Xo_bU6bjth) z{%2Z0x$29gLw=e=ey%=e@+BPdi#p`T{>xc<6At;g9P%r>*;#r$4*3Ng@(ViT7k9`{ zb;z%Dm9zB59P(>&$S>)TU(6vt_8VvR!ftVv-ZH2Bs32={9+Sp{vR;z?mc;#saLjmI zKp8Hf>rwGN@rXHGrSB5&U-19dcv9By39>i&uF|{R{6&z$qtfok4kdlGE?pjETZ2%B zdko>&p2Uey@sOBcku(xNRv>;E;p1))%rQC7E$3I{I_Dx80Yw-kD1oH2&bQ0`GZIQX zyZQDc$x}z`wI%;3&2KlY67$$Gf_gc-MSL$MSVr^ea-Lm6Ip1DK^X&S3JH5;K_9V@_ z%Vb9XKiRLw*uJX26$mAe7-Mh0FC-@_Q+zL(<6a2?IY&&mhSw@g%IX>>IK6 z%O$@$Lp-_kBk`jS@ueKGJo5{#wW6Jm9#8kgTIOjr`W`2klz1ly{4#=d1e*v(32Fr6 z1d{~WRH7$XN3e-tl%Pg1PB2N3ok;Wq>j*Xxj1trc#t9~m6?E|_0w(D@^AJCRbp)FT zCXW%}r9>Z<;q<+ZzI*6hqwpAg56XBYKZ5KeikDy=!6t%Hf*Qe~%ny1`5@gc^A4cJ> z(6Gg3=ySmhv8#_DOan?NH*!B)%nF;>GV4_89yF zrN?5A^85c8_*;?A(%%W_BB=ddyxXO-l;{{iiRYsCI)Y`E@FsfqSiVd8LSY%nYe!d? zC)|$C>GuTjm-ZE%WNClsT_wAcb|&%5C|t9IOFY(}eHnPGiFuJlVfdEd3{hb5m9cCI}wpv05=&*k|y63Tv= z#FOx!?Hn8_m(%k>q(19NpLYBEm(qS2>;C;t86m+NrjT9Mn*;vyxU{{RL%!O#Gfx$A zHMI)3gy4My2MO*V_%6Xc1b^WdbZrE$A-IO%Lj<2Cm?C)43_*`&lCV+xy)H*KQf--M>J3DYJ7OM|6nObG7V zG;YFa_3*MU{3~rbeB!hT|1UqvCY%Oh@YugMVY>YJT@bM;{rKL5(lCj>Lb zhC(5O;J9=mnht~y)8T(es}VQz_qe7hs3=S=n$|I>L`vcW$R!})_APZy$|WMwC6J%Y z{|5nhcJB34S2U!G@&Vz#!7`p*6Pga>`3lJll4R4N9CFhG+v0E>gkWZ(G0MDz5SctZ zosj)H4sh3hj{}Yqo6u-Mx%I$GRhmwnaxzqf2i1AKr%yeuF;e06y4|&2Z+Mn35q6@{cZk;Kh!V{kZU9Jf_`tHV@4-C=`8hzB9(J#jJV6&{2enR zv%LOLs53Ol-O$aViS3_@DRU)_)!7yCcFypId>u3W97_+X2tkyAcE5px4C4}(H~YeY z7H>Eb3Uthz(lWIXq;3I`y^)YF5D8CdX=s3NwZ68t&K6&!GlU-+Oi>`4$`%l?fknp| zc~`Yys(_$8(AvO^A>&&*Tm3EFktr=LZnxLl-W-njB7Sc~U`F>f;dXSjdxKqoi?Y>r zf~0<5dvn(eZveC>M9L;Lh-r$qrrFo(ZSjR8CgE%GD^Fbd^YkfGb7UW+a!?Z)q$Ab@ zI>TO2q#pu%5988LpW->Lg+nSa#Om(}w-j=y@ea(Sxw|hMNZu5o1UfnVwZ9Tgr z|E5wcR-_HqY1+Y>dW4qzo~9n44IZiu7HQi4TJKTX@IhKs(c=4R!v|=oVofX7;)5eI!^5TkdD zHmJnMATER``0Q7-{t|6qj5buH4e@9Hf!e@f@se@c;FvqLKIQ&RU(bHpz}K~bePBO>Huyb|1_X;2&4u)=jTiMQ>*GZ~j*mH3 z8`?)3=Be!)1K*E@WW~oGs||c(J^q6Cq5a||$7=m!wBh}=zJ23g=NLslhS2re-1Td< zp0BUJcRfj)VWQFaeNwO{vZ7NEDT}?rcY}3thOIsi)LM`Zxs-a3sJL3&;Jfu>hp#>J z+nkJVV5dH)6heM)cOVq$^0l$(z`p8TDr61lO1)jxdc*hxn@fIQg+KUpr@B_vq9r^~ z!KbRM1$>06mN-D`EmpNY9z66j73>-U_EjHH`&Dh|D2@bmvUld(x!#~Z6z=TswFM&c zyxlGqjo%}+qka=`Ci!Rhy4oVsx;p&FL!H^?XHji8ts>_shsxI10*%3}+1{C5zECSv zDBnO$!S`0EMuVW@)_HBM@Y>bvZ4Pw6M;48yS?~@wHW0@^A*!s0+N&A(O$-HEXZojj z+^$9}wx{^oy8NE*26ye8kS_=#L*vr{b!S%#RN@WL%805uD+`a?&3Q~|4|awk_Dp#8 z0*6|}o(^?=*jc7I32+wKd^27~3< z>%cr+zVN(`7Vpf?4u1pKU01hvman6=&F>96W>GoKAL$Bp$btYJs;L!IeI4bl$z2^S z*viR}DbT-~GPS(BrixoAB*SqW*-MebM3&dI2EsvKq-7R#1VwrwolrIKf(yxZ!K?W0 zIMo$X{c}borJ03&1X+^F{*5v)Aj<)^}! zLE0|nHCV2@+W3(hbfe3w8*(L9zixL!2Q-VF9atW*{)Hxi4?>_mZ^QSR360aeQ=tnE zC7{9Wf`N#4W?N^ouMH!iu5U)=P?fE6sLH4updl_5#bQLV;J|3~WZ4TrX8FSZ9D;;L zQzIury-#)CNV3O`gTOZLjF7M04@1$BtJjUGYV*$x0J~8zy1h$QgT z4Mo=&*ww~qX-(!H8mVQ(5$cgsp5o5pxVT@(M<@ zUy@|GhBA3Ylf++^Y&phB`DG*GFG;qXgRs29>C|7Abh(Cj`K6Q8Bb4sAk@Nywfw10o z<9syLG$Z2W#(vi5bp)u!9f>FvAj#;}`6H2_mg{1anqQ#_n4uOq>}r@B4Ee)h7!AWb zZcJ9(ikA8v&R?dAwD?#pd8nqr)N(P*25KpnmMpzn8~!tIDbjq*BMG-_0`Q#4M;b7e zV9}xHP0g1*9n6viIs!O4=XCL2hjfN?V0?XI8p}SO69RJs9bOzo@pzIy%99?C4?DNu zSqO9df$h%Za!>NZbUC!qGC_U&_pAt?QwN+$yLz&OeV2CA`zR+Wb6C zJ=+|{)(FlsoXPZx*+H;`R8yYVL{;fMsjD;MZ{@LRVj|jJgGAB@6F2QXq4WjL1gvcA z3gYBx*r5HMf6Fal71$ompvkm}2w!s+VU?uv8l+ABHcyO=&>w}lHc2bAa-Gu{`Q)Ux z9%prZ9WY0W<#B!joT2IoE&MO;yEweb^{<55mX_x?<`)_r`xhmaCB%5=xmfd{d9e>&x z?@9jVu9;lyfgj}NP2F_h-AAnRr_GO>)oZ z>2`TqGa)py3mXK^Iext(X=-Fwg%b@p%hwuHHQJx{#^RKPop`lUJkgm{KXD{q?W8~m zIyZrCzerVX)2KZbMo{SrqW938xmT)Mxr|1MK1t4@ZAhAI3s+x<(uNz+9f?G7jhw+##pBwSg{NLDzSJ ziQV{y_CN#|g+kwuF!v~0beajN#uM^Ok)!&GJZ<1KTq)LDV#d{*EhyVd_2k8l)Do8g z<6N5&l&wPfMlD=`+x{r-&se=(T`E^jxG9^}JQdh7Iys{BLOwLG|hte|l+G`fdU<(X&VG0a-*|Nwb)7nkg zXC;t!Qvrp0|CrDK2*r z@zk!iHe>9GbfS~Cl9#(Dv;}AR>S2*phrca6wKLLi7A&6x;d|4<57_2ZUmPzPg#OPHX)K zX_gk#K-!JS!?2onf35#Wa}vbFuP1`7K;nE^XODQ%Z{k2L2@MTj^xM1tdRX#mTJ9?= zopc8T>WaJ4`Sc@bBDDUm#m7P(4epBzsv)O(Lt5|ty3~9TVtGK6VK2UcC;Qv@X@#1vVj)SmJO77%PtqlrUBh{EIeV;MS9yzF5P5h+o#W_ zg3>LVVZ#P;Mmqp;3udjQJHKQJ#1Pd#5{9w?-=kPEmhagRo121>kk=2>`q1OY@qbmT z|EwlFh^maPtrSzW7xPg23wgDrkMtH-qe z1u2q<&X&&NG40oFC=Z=sY|Lw(Kjp!QFv?W+}Vp)Gl4No>N-_JI`qz0)tPJ zJg0U9x*Ie-ttLIEc}WbhSUjh;q;fhk({pM|lHYS`ODYG1Y0v2pc~0#~grm>kIqjpK zaXu1*FS6g_Ikh9rWe(A4pSQfgTr*F zIcL%g4%2>%!_JxVaprb~M=>rZ%`{hpE^~dir!* zWTV4$Kp*_&EF`%drgkyOW|ilG)nRHwWO11G9+Fcoi=(vv14osfVMdA<8*-T1Nu+mc zc{;2PQ#-2kYzoGqJ4|)-Jl;t2v=y=#h}$GC52q|06l6De^T^m`>xA$WlDpMm0`vJs zpR?)IRVm`UaGn}FQmQ^AS6K9$c26fIXn;WzM>MU+hJ8EZc&|K8H+@QJWOm5IY znxG{D-3zK_FI<#uu(Rmz=D}Us#W}FmJTpR^)9%flRc2CyJ2RerKxOo0st1^gYkI{E zi`JMz44xFTk8R7bR)~vq7Ubzg^ zHsx9Uh=Whr<7aao{?<;fC5ME;XsCZvii@4X6rh!^OmMtY!kgVudHrHNPgu2MW{}rCHb{%D8s$L--iekY$LMdkT>eV zUs&RH?)Z`?k?F}zlNRjk(r3j<<$LGjvbxT638kNAg#M_(8*S9Rmwv9yCQPVdwB1~N z`jjj2&*SEbeb;OpQhmAHTuI%{#cBVU&k2gE&zd@w;;ZoGh+lkaz$GD2t-{hgIQVP) zlyGMogf+Ay2i1lH9$^4fIx^z++Te=A2iaMgU3fVjx53WpGlZA>f&n<#Nr>bwpWew& z8*69}M&=3Rm@RU}Bsh<#GweS`ociM7>FBpbuMv2#h;*8Nh9CB*!KRMv3K5**cARQX z@Xhw)0X7Yuc2BowayOng`!QXH)_ zoja-{ezzM=P=aNnuyqZR1Cdp6{h|L_Y=@Z3SCayhL3<|U?nZxP3gyA%fWNJ^9*_8J z2w>z%dpf>d+hiRk0o>KnCn%-G$tPerWMG+r<8~k8k4VCtDN5yJQx0jW$Fm=&!cJH- zA34+$(hTQhQ!SONr-7Srv@~7dGLtag6Y7j~MqmY?nW`rjRi-wjX{FsOxC0oELKA0z z8P<0h5(vu?(Cj97(FkfAVPCTk4i@u+?gQ|_UCaG-;sm{k{#m~60JxSgpt3R0>Tj4a z0~R228}*=7*VgM<5s5@F^VD=2%3TfN7GKZ@DPZ)$bjKU$`!nfl!Awt_(*ZdRrwy9B9_Lj!A%m_56LXD!ixJ1xUv%B=Y*PNk=la#EhB>h z9?I&tftRe3D>7`Rk~bA;K9!Sv5!^73wIf#PyrAn_l6g}$U}PMcSC6asv(;#cEO@fJ zG-wFp#Tu1TMZGi3->Lp?e`uQD*Lq?{+q}jgtWOhlnCQ7B)8vM!HrF&fMO#drf&A%u z&D{76Wh1W2OP0z;R?DrKuRzZcPm2Vt4V{HxfNJ@xx7aIU;s)Ieb#Lqt)N1jZ`pzyO~IylrDYPK0=K?Q zz{5bNz;>O2Wk_cZZ?;k<-j$QV9NW@G(wso-ghC>wlM!;+hE4RGA7l0)UjTl^lvKMs#5<*j%1@%;FAQ3a^RVD9&K!(M<$MY&i5 zV9Iwx*+y0OW+M&Dx`FDlOdPlH&FAOemxcCZD3MNNi)GT5)81tfv8isx)bwXkR7`>1 zD&I28OA)U!;~8jR(_F10!2=oLHNZuj*eiMi*$~M5Il^Ej!t_o;$dw(*Y;?3@As5|H zHaeka+o~NEmdc>3of4M&!+A=E4H#6y-8I-+Vmo6P*l^_NA;PZFPO03P47DdSy!O-( z9M_+vU2h3^0=yYl4MchiM^y-qwbzIsP1o5d4lAWBJuS`1Q5Jt(9#HRtoe9+N4jf{> z(jntu)XbH}kcF0|D(O_5=;zwW#j>*yBIG%3>gRv9df&dmc zG^$M7+lg&z^x5*7c-YJr=K#C;7I%KjgJ~r?hDET)2gjJDuj&vrO!QEb?Kop&Txu@Z z^jO&Bnla2Jj%wyp%}*Tl^JB+mK-VbJFbx|*acc&&8QHPB!hUZSY|V_V--uB?(;tC& zL_+!q2^QVMQL-~(n}Z*#>-utOCb2Yv`PK{U84644&w-NT_+nSKV(PM%Q{MK+ZDT0U zbwFGJF$~znFp1{*5;}soq{Zv)fL@a~7=oKzL`5=a!7%QW$iDv}N3E0`1!h%nLTMO; zF%T*|&t;0d)6+}b4OLSm!H zue}}ER`My9{!w5nhsp6#;N@#fCwaikuL7=}YVB-?3$3~XEq<;WsB1E>m&jHFXRUw} zx%kUO4dy~>X%h`j(u|b#I<88uHw32%LgmFT=@NuP`3YrRoid?T!!<5&?%xz>O1V_UIo*baZn!lAtY*5HLo<_!wpbXJiz7r2H`XN7SOWs@4EJOUl&VopfqGM1 z0c}Yb4jP9mubKl9FJv0O69(q4L!bfPhY`$sv(s1Nft?Lvib>0kQq_VEm#p_7iFnRAe4z?3Q8LAa!NRL9lBTMQpt_OiXm2Lo& zVFT$f{h}5QUX27{a|7Jz(3hsdgra99 zASU(=0sfhAMk+9DnT34%(;;vae47_8GMbBrtN1xxJRJ(HbDC-({e4ErZxJn#4ut+- zT5K=u9K|RH4dHktlGoRARu`Otg<(l+7?oBG8%l?f1>@IL`YX3;{5CAUwa$YZrl8-6 z7s27@=n-7=?Y{7AxG0au*CRfGV~{Rsn&AtyA+9O{B5$S3+O3~lS|AhvaKJT$=?sFJFW6@O7A8@jxPckA53@`P-ou#Mhp0!#oDge|jOs zaH<{Df-_-(k;q9EaWV0bAxBM_dg7#p>PjT)#qYt+Irv+{->4D`P9J^OGoHWWA)rXr zk8j})=*)LSMCS7k>GuKt4r|7Y@g~H_5G8z2zKVn=<*P{e5WT{X6k|-$Ye$Q~9;Ww* z$mr;IP@qT%EE})=MKeg~AK-%o^10OItTzJ@_d_*J8?y0P`i4{(^Mw>i}5 zYn25rW(;W+v#Q9V-}qg|7B_yJ1NTxQ<^X+!gIMssH87h_ZUYJW-VTSK&V^11pRh%O zK~sR_oiu#~+v7$&Wcu3GA-|{SJM3@og8o8h2(kH};$>sl81Lz<5~n`k{0A>va&Q=` zbavOlFgWv9L%;5PO=$}><3}&s`bY`e&&|#$E@xMbsR6GKZW#%C%3VB|=E=Qt#4Tzb zcX=aHkxPg@u@5>?aTQBj#2HC5duE?%a9lxS52NG?r}ty+-ghe7@U`je_KsstVOv*> z{bycEv}*NO_O%LjOGzc`AM0jY_bF!&?pw|NzF(D8Iyi&yte-*@aQD}0&V<|kyzIiQ z#pC%eoGSA|hY^oM^wj(}1mXz?0rvLR;#z@v@nErw|AKR)TV{KX(~&$a?9IVqR?M?l zUIhZImSl7pIf^wbUo7XI^7{v7oy0?Yhd!P{GnXSde zEb(*3id<~tm%d4`9Uw-4nNAf9{hlM8%Ko?`BW$Us9r71iC1RE(2W@@682z zj~tNW4!?5`&VFm&Wh=*m1U&A7(tGDO3Qq6(Z@Afm-zX`GU61LF-?F#qU3*}T^nO;F zJ-vw)klrN3UBXg#fdob6u6kbWv8@LR6M110E0UF*xL%cga-i7Z><`h01qT6P6)dL2 z+1bt(81Ca(8m^=CcH<4K4W_yP9O=TP3G3%lrS58|A$2NWXeO?L;`fGE3unU=4{Rkf z%~3a&i^Fn0EG=QleiU6@k1Et2;0a(C9OPzaf0GrBM4&wf!R4ROUXlE8Ri&sWc@o^_ z*2a(!oSyykn^1xuL=kFmcqdynIN~b;msLPXFjk1hB?Rn)Z;o6E^A9dz+9Rk0?QyP( zCr}mfXV99Ui@5UOR`B|>zJsx@Vrvk2GomH@Zoge~Vo*}!P?Bzq@_FQ)3&JrjisIX!j*|R-|2H4e) zlu+lu%dQv%LQ9X8U40m-?~4sUtv(CXW5=`S4y$6<9FhH+V7BSImF%t`;xQ6z=qJ@I z@k>@jPHML6u*uLzz}(n%BrBfjYrDf2mRS1JjJukAAxIfAl`Anr;}e03KMk~905{5{E#&-;xoRJKZp32f8aCr z20TmRZ=|5>% z9AD{+dCk?J8y0rUdR49|gT-QO!M7_}&$m(2W_GD>f%nhYF0&861@&Kwr*StvqwnG~ z^%15NGMFv>HY`zNsqe6oX;}R@9_|c&=a_=sar`O^$x)RbbX;IMC*MWi(HzKoYcGdUY zZY<%jEgo+pO`DhqS;K?71AcY%$U`gT4n8MhjBU0C8M_HKdLT0JNh?u=%W%dzg_WX#Lt@)uv zvW3^9WUnGKJXnc6{6joSn0@*SY!kNru$J}wyPIi0s$p;bIMeDr`=Qn97W_Mu+cz

i& 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 z%0A>ELF_ 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

ciBuIB3#-N@S-?rkJ|+S(k`!_kw0 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 T$)B#C%N5e|;uVJfL;w7Lz)}?T literal 0 HcmV?d00001 diff --git a/mybulma/node_modules/node-sass/vendor/darwin-x64-93/binding.node b/mybulma/node_modules/node-sass/vendor/darwin-x64-93/binding.node new file mode 100644 index 0000000000000000000000000000000000000000..fd3136eab3c3ecfed833d515e70c1763baf67c01 GIT binary patch literal 2801136 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%0A*{XDOYK8wHc8! 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

9UA0eZ$O$m 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

27JIJO_bKkSEt7o8%+Eo|6( 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ℜ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

!pT59+V=c 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�+Exf4q3&l(I0 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 z zs)io~id@iqfU!gJWby!D zx!&kSNz{66{QbsdNEIua=6+)(!~3RI;bXfb!=v4A+>=Eq0<7BY5gJjqy5HDeBdOoZ zJswt!iR=d@0_0@$ej`rr@)o&2r5hW)3;=sL12@gK{o^nm@~_R}$ph%@y(R~mZrwv8 z@(3%tI3pW*fAm8S-XC3?MYS0iMXk-T?>Yx0@n0hs(#K%E2^WK0fg7+)e?z97g`_F0 zN8(FqcrC)Ze4p?T^&Z|aH!Au$Doo>0i1#H!`3Pk!QTZ3ae>xjs4E}%3`d{Jy&iG^F zUyY=Re<{Ai{~?4u7XB&rt>TNzV!9kR!k%!S1oP>6{+Z=nZFL8GSht*k;S@SZJZ%RZ zqULoty-XQMn{xyCwJ>$uo6gC&#$x5;Ld^Bmn0L&J4jMxrU|G%d*@3ibE>STGmT@J@ zhfe?VvV<|_`6e)=v!yH9e)kmWMuPH=`^3p#Cjl_@E1b05s(+X`)xBJemCcQurt)NC z+7>M5sWT!)?V`*WXT6*_Dc5|qblIHlA{ZuFye0sGVUR&p1uX+{Sf4!S31WzdPQA-s z8;x-{2D4bM=HlrO_KJyNwz@`}`kRV)0-R@Jn8-aygdy!u#v(JmVf&v1aH0!ihBpAZ zd^TV6bxkU1wi>Ph0-?PS-ch1F?9oKQnv4+T0B$w@l4a*LOB|5jQH^A`*!Mlr)y16x ztNs>=zosp;E-sw znb;3hszFh|{kf|kab_^%y5K5oRE6>g2c~|2bKD83{&6rw(jyg|DQ$;j!=hqWV<$4t z^FKYDlOk-L-7#DiI8aw^a0;ru2!3Ap6^(HZUuD(501#`F?Vw;aXM7w$R-i6ZUdd&Z z%ceohX%w{YLVq$|ABKuZzV6&LyFaITm`<@a{&<$KLvw^39FUomTDmGP>Cd|TjEkTB z7?h{-poQ{B>c?Btjw3|zynQ=)JFwYJoLuB9JL=a_-x|Nqn0#l@! ztM<=amE;));)RDg{a&dLtf0n)3q6hWcs34voZ#~XeRzZkIb8ts+w3QCVU_KF_85`F zzL&%4;Q>5m&I#FiyYNiSnYjSWJZ+0Tp3aChP-2b12($|HzzMvrBry3E_+JILsrd4S z&e7-dH}Bhm6&?s~`+E#<>kg(`xBL~S=zKxQjX(7UR!VMQ4By_>@e(W6?h9nuKJg;! z7IMyu?T0Y|ebd?6f?T@nAB%rNlR02-hXzhrHEjX{&cG&yG7loNGXFf9P3vnJO9eJD zknzQfB?YD6t{nx}BKef3*uKCig}wqu-un5~xZ$`8c;Mykf^x8~BlN}bxUty;$X;=l zL2aZ$Egi&&qE-yl$S!spa6?@S{5oLSE_qQS$~XoUB6@h#L7WPQ(&uAiNmP(O8ePgy z7eujz^|7e6x+qYB*Ud%45d#Ax=kN#6D*!=NIxsO+Y(ADw5~p0iIjOvEUgR*(n-^3U z_%^W_f?o1mJ4x2S87a87qK!DE0G2}TM&)v?V~LC?*0f7^uhwgKYzyhnFvra(=*DV)G)!`s_jm29Q}9ez-==6 zYsiGNv$cUr50N8zRM#!DimlsINB;NgHjr|N8#0;`MQD7R2MJFBEr^MYlDdIt(I&OZ zkZodPb(7_9Zfz8-HW5$z)X~BK8;L1?tTzr?_e&|zTl7MEboyUpVM0H2X9@@GnJ2Ju zsYl0eW_;f(JmKFTZ5i!y%qA&wbsSxnT%+i^uP=Fjhawb@^w{V1!bu_shP_Ipr2ExIm6LeZ8D1d?5?BovJYuYeOoaw(!;UjQT#$et)vkvR4kz`O)D zc@t5#)-8ug$rE~$d{NCBxMqZ5%Je5$m=~MlYM}5Ju{A(HQv)LZPy26nR6kI$k?E+= zic^twsE9~N%lO9`1_}QYg2e2&ma+XR)iPWtw&BNu=s94}v^)7o8fSkb8sS8|i)uI# z8x?^yPe{v{09SeO1Z(V}Hkk-ypQ!Q;#>oYj&iCy!Au~Ot^iJR2@0|C`86e6m-wyjt z6iD{$F-5@;KHXXONhd4AAq9g*<$@+>-CwceI=>NHI2?|n;;F>!I|P`%BY6ZVuLUus zLM)N*8usr9VlP)@HKmChSe;8X_S?gi{OkqFQ~i}yzmq)fU(+P22NUpio=z$f@1VvT z`#dFEqIgd}5^vU7EZ!ds{de%*b5y*W?ZF!Fo`QEX@b0JZ4u(YU^kZ0E}*S9Y)s3Z2%FW5Lw%LD zRX;@$+Z#fsLCU&(5LsW_(=xHsVtU~$38Q-9*AXl<01gOS1a)}S2ny92_j=)u8Hamv zbU7X8%j4HKKJZ|DV+v+Cn;6>O0%VxiJEtD(lI+nrhChztuodq63vhzFAoLi*3)UgSiR>-w>;V+mJ9qunCW8k0Pk;prhQ zs0I<`ZsfrTS4TV$dI20wfH^wA&I0Se@W8$E~y0!Bhp1i`q+S!GEY(3(B%{;pdzTvaD z^i??dnp|kUm-m{GK|4HLzA=S$Gjh_yy%8yk9pVod@JR#u-2N52ZRAn6D%F7_jEM67 zDG)eFxj%Ytap;XSRDxV&SSu-Fh8@5lAKCP`%asdk-610(-41kN@eGsB?~oFJE%p}x z)Ir0X*d`@KYqMX6Z*bovgu0-g?F z!5*cZ@%$-yATY%_Br$!u-jb|4>`UM+`z7k#F-7bS`#hc7Fv*SSALH^cGMoRh_;YE* z%OT?Yu8vsr@*RTThMCuL!`n*+NaPRPmwY{+hlqS{_%6q3U>=3rVqZ(%8(A=$swMGF zw?-CaS|cydvPRC&wMNayj>hF)Ym~fcVvSOA8dPf@bg*kf!9qQrqhvLG$o?R8twW4Fp_Ng^Jza2px*Kr85 z1I*Z3=LN*y{^_fd;OmC^(&y=G?>j|;LlNjI`a^3jS<+r$10CE=6b;1rC3~ z+t^k=KF>SJ;qI2VJ_*Ytv8S&@u$;qOcmq*o;X@W=zXt~@;c@CfvLU4k9B+psiNM<~ zaEhVFrHDpZ(>Z{_V;Mm6r_slQ^;4y93;O?mw3Cn^R6wDv1w84In#x1JRm!<`{_txt zTgx9_&iVqWAL5R^j7pM+gL?VHQDtg_D~LH(J842BE<>b z1z5`};vgfhW8tt^C)N^iY{G-b2`k$8;!6>pPl10sp9gu**$wZ2`AR_J z`DD>_gmh=d^9x>S=)~*?)q(r1z{~R$yZ?TaXmJD#y${}ucY4|WgA5v=I3w&Hpyf@% z_~3oqS77b@0kK)*Q%{a(*|`1M{?59!=orxPW1@E$QZSPh>4F{^*W{b}yNB{-Az7}p zzsT83#ux_e;jEjUjxGn12m$unT#=T*Py)v!nY(VcwhB!i=j>L;8=(zBhg@0DMb5sitd~#jtCuhr=_GCFJnkUNa zFqOfE06vkWZa6g6dTN%Vy(Rc0~b%%8#1O~%l_Jy4&jn1H zO~w^ioQ2WBZ1lZO6?}TG{^sa!7Qa-G^0j^CNm7B+MwkkmJ{vSz)#JNDC>9O(=bpzd z8#k)zK1y;P-|`()jJAAd%?o~KT{C^8eGf|X9rTDU`~^xhvi&>j>RkwN<~HZE%m6>H za~$KG*@+vZPHQ@}i5#$bfL*U>zlQ}NVR&p~&Ns3H4<~U_1nqVULbo6d2%L84cjBh6 zRgWc`m?Km!|74Ul9g++CzbCTM@3lwb%O-d&stc+Ona-Z@S|-Bc_Jpra-hCF7PUMhN z_-I!GpKx9#`_3-k4LSA@q@_`CpA+Tb#@PIuPf+=9#FzPhaZ)t@LjU>txpnS7r`S8; zCz5?R#`GA39I+px_RpbE!;}8}aVRo%{(;d}4&&W-Cd?- zL1N5EA{)d1Ky0h76($tYbgLOt7?|1RYB-o@-LV~)*Fn_a>eDDcc7^IXP{VDkVbt!t zV7M<1#p@ue-dE0f)-^LS?FWE8YyH|Q|3$3_Rjs#(?iGw|j;k4u8(L25#kQNj2?C?K zmb@)s28Z*l4!ny5IkX35wAP)628Wj})JFeHOU{hyGL!(K>gLE$QvMWrV4VMi6G7J)3d?Enp+&<5D8_N;NQf-;`+&>EtL z@cJzpiIdJWTBoNn!O#a-e#54+bJVtRuVQ|Gj0*?k3LU2RMU&ev`I3%oRbcD zPUd2rB;k24^dlHBGCo27G^GuvGxL!aduwzNZ5*E!`Om;kI#(O(_X7PQe`SBM;~BEu zwEGTlJUH%Ev_W*7Hx7lg31qC9dz`}_$vQ^)7Z>`k#^@Ro=Q0qVFS2D{u7b^Fup}Mq za^0zS&BhcF4-jxf?(ad{q?bKaMSNU%1ki9V5fq>$${)r}VXd!4X2EPg7*wAIeE?V! z2Q(l&k(<5fzp^-@&@al7H{FZqJ@&=ywFNzp0_g|0+! z(w7;k`WbiZ`eA+W5Dn@CWwz=m8zS|i2>;%xQa|tGPKCW5Y%BFc9j$nw`AgQ1s>V$! z*k%SR*1;|p4*c+_)w3{KJ*Y-G#^bp)d|{NRQa?~|EJ|R*<4`|@282g&R*IZs?&|6B zAIG6xk?O%tK{M+X(V7Gm$k;?gnJ2S&=O2G6Lkuq_2xGDo3*+Zt?t89r1Cp(f5Z0oQI$W}h0DU6+bm$H0|@o33iTXAmFQ3x z^SlNUQANge+f-ftNjSRZY4cnjN`pL#RyX7&-k$fNk|Ay2pBX-fHLffthR*MvW4enGcP0mZd+mkrhhrumE;Wjxl@y!a zA3YC7fE)>gGmbhqaQO~l#2_6e2MruCj^&7PH^v1QWxB_IXI;6=8oO=fC~1yx*w8Wwr}7q~O{2&5!#OTkvOG`<|X!IH}cYr~`5sZL|BZ>feFIbRjhZ zq}A2pI)^<3Wg-QuA@CsBaMTL|XSHd0P8G6{A-~5dABHS59kj?;MuP^t1fjD$^cay6 z`Qe(>p~N7xl0%VCr+ZfDSMXF3t7Apcpjc7VCtehpOe0c=SD18vG>Bbl1Lx17>^NFz zf1!ulVxt;*$VK(beGp7&M9u6G8f}9G%Z`Rj7xfo1xr$Ku0~k}X@N;9yw8)TYs0ulZ zA^)aB#*CSSnT|pxu$$+S5V9DzwG<7-ibjO98Xn+g{JTmW1D2B_(?V5$Wpkfegd8K{RDt^i}DJh zv^}F6JlxWj~7;*q<2RP2ErEPfy%WfU7Rh(^2pV1LA%H zK-^D&nQ%V=F7fvh#3A;6g2b$X2`o-|?j&HL?kC*KBDAJlMj!kDUJ?ao84&jq0OEcE z%!K<1aEZU400-PpfEjZ?VIp$D{RB9kiPA%oBTnr71aXMHpDvJg#Bs`w6#5Am}Dl_Y-h6L{56>`w3;RG6LE%B4Eug z{HLzdd!pc7r}q}KkC^FVo*?E)V)hfWznBBX94zJ#F*C&+CgyN4&k%E@n4`r!Q_Qhq zW{Ejo%yY$@AZCu3=ZQH*%=5*}6?2-H`C`rx(<$bKV!FhfCFX1~FBS7LG3SaoPt2>t zyjsj_#9S!mA~BbUxm3(jF|QS~T+B)_tHrDl(=Fx-F;|Isy_h$OxmHZCnCrx>7xR~5 zt`~EIn74{~o0yGa-Y(`HV%{a@-D3V$%zMQAy_ij6{z=R~i}`?<8^wG`%tyq0Ow496 zpA_?HF*l33Ma<{Kd_l~uVg|+BCgyfAcZk_0=4)cUF6K@#+r@lS%(umSN6bB9{->Dl ziTQz;9b$eg=BHwQE~YK!7h>)c^D8ks#r#&x@5S6N=0P!k5c5Yde-_h$aZ=am$BCIN zW_K}D#q23&Z!!CbnJ(rDVxA;sKQa4@IZ({OVh#~AQ_Nvv4j1zbF-M9yTFf)W94ls) znB&DfSIh}w=7@Qom{Y_&U(8%Fr-_*_<_s}8{_8sZLNQ%p&JuIBn3sxqnV56MoG0d0 zVqPugHDWFlbCH-!#9S(7shHP_SuSR!nAKu(oZ5A|Tg(+=t`hTlF>e%et(aah*NIs# z<}bxuFXjd@Zx!=4F&o9aUCcYgyi3fx#r&<9_lWs>F`LBvlbC-N^8qn8iusV3kBIr0 zn9X87Ddy8+ZWeQkn9qs%f|y&y42ro;%UN`LQq%$tO((*n4@$Xp(%v+6T)d0N9hoB zK_P4sI!a3jQEPMQLxeDRag=^bs3)NlFkTNi2o)0A58{+o652=T5kemm+Cyj$p=3;i zLOj=4I-AgTLVqE|vwWqy2sIP>lF$Q$&cq}ubPu62Le!yB+C+#;j-~GsT1#jo&P|5g zgdQeD74oG$F!v5EBs7!ITtc@JqLQN07YMPEOW!4wL#Q8?NJ3)?okwUmp%sJ%5_*yl zPac=J*7Vq;@do>vmksz9}{XKw1?35 zgmx0j?+<7@q2CdDj?i90&4jpjA9{e${~>e_p%)0j@3SNsG{0LIs4}gl;5s zEunh}EhO|Dp}B;16LJwc8OKvX(+HhMD2LE|LSqTtNQjDmOFtwukkAi=(h2p$5tVdHS2JznAE5VS@j;3H~OY`Q~VUlm1w3hv?z&CNc3f>Ca3^kFuUWlip-yjo8O) z`|rm5@t41=?><#q9kb4zQ(Rj+E_-%uiDyaGf;lDSC5zovH4%Cl|2bt9)#W9}^3Tbe zbJ>DfRZB`D@e5mEweH zo<%^w1kJvzrg$-_sq-6GRI;S3c!9yfP}lfR$}g({LS-wCr~n=RoQq0UFRdxAC|N)p zVoGSz&o5bAUR(nzR8_|Kn)JtI<<-`fEvsY|7!)UBZ&cCVQYNnlcTQ1pbsTvOy(Ug8t1PZry`W%KbxjFK9jOJK--OGL?yckJDD;iB`UDcq(-E^r~_rf^`1lr+aGMRTT>~%S5s_^gCDkC$QMWX;oF_CB-pZ zpwl~N4#Z96vKT~llG;C8`=d^4-Ni9-Bq9DKo+@|Al9(#h{<^(h;wh@k=LNvZP5r33;Netg>|A`U*i)CrqRF6qN z>OZSwS*#RM@yBOH;wK0i?LR)^Ux-FjQ(aZA6VdsfljmM=X;qbbK_W#H{k4Qt&gahZ zuzkk`=1k`Pn;Bu*3W<4|BgE{eT{&@Kfb>PzIxze>Z3q2#xcUj_74cE zLQO2FD03(9)G^{8t-VQ>#|WRm{|37#J>tuAOnDHEs2j!6^NZu(*ydx}d%}2Uf)baY zaa>?nj-LL}_(R1!M);%fqsr?T;g44TlEE>;N99*UzWrC}=NNW5qQu8Y|H$#LCe<;* zC-hHIx*j8ZcA~s6F;w`N@n}K?X@6(&5j{g}edNrpDVbYb?kPD&{YL4*SSk2t;*Xi5 zeDR6=%={!vyO{Y*zP1|S z&VuQeUN*aMcKjfnL-_b466hC+o*2`FGdb$~652=1_&hNJBQ7k?mH5Fj_4O`N-;QPK z>sYA1!AsRQH#$Fc$gfhlJG8s;Us$2sJFeCKdVU*Rpxt$NZ-T!=r)TEDP1 znQ-26+fO7t9p2QlX;0>B_{4k-{-z!0YW|6|i(HL|&fmz3 zBfi?dN%Ko2T_ZO%UwBRVOn6hjx*a*pSNrE0zBKvk@&=7OD2~U^xSMaTp_7hp@G^49 z$ejrNwEXhwc&0oKO&61HB)p-&!BgX9@-g{Gz6tze_{n@7nh%1eoolQ>#y>&6I&?dZ$YpIe`5U^J z`tTZgr}-jRx8qzbM;01-T&?h2n3%tA*9$eCxjLN5FKFb2=En$~HU7Cq{+RM;d6B8> zt;5heTjk$m>fMB&r0HkA3Hcj-GxeC6K(D5R_F=*qI!E|X=htNT)U*pzE?s}#JdKYI zZ_+dE+t_n2QQ>k8JvH9J1b&Us%kZbB*Fw|I66n{V`OUT!j4MnZaqpA)~j{0mJz zYrEIT@wqx3gTIj@T7DXQyoRr|f3B`yuc51^cZaFh1p1ru1T`IkIz5xVL(|`3+ED`k z7``+8h@neR=VRoANzb%@!&gQgc?)x~^uM@d5oRh5tlE`b=P6lPTIMcsEM8q)=_tO= zQ!GXWRwFAB;(AX_iDOYo*)o`AwFvB3gk_cGG%K-!xum$f0;^%LijSvcMHyBT-Ht^y zRVynUi##>ut5;T4EpaR^UQ*(gK#Q>p;I1k0)FQ{ys>NKz0#sE~Tu!rcX?fMkk{T5f z*4nc2<&MQQWfiqmm5wFFHOs|^fS^lY8CQ5JYmkZ9YKm8Dpd}%PMOZRn=5EmX%i3x>W>{&Jm@b6q`QlJQy8Xx6I5^D$qG7xG~K*3WWU2O_B^`>l^*vi6M z6e`48P0F?Il9F<%8S#xEQc;5JDl`j~qt#S8(0Zy+F!igzzLckeElW2lY6GrYDLxJ#l^K{m5$2d6~)(9Dc%9R+5!IIA}hXVL&{uIQ@qHb8}6GZmM#TU<8es+R+oD!9Mx4T!EHiO zO+ID{$;AnV+vATO#JJ2u7cDo3>NS|Y40Eh%<86sg6m zt*BaF;?PW|KB}@I2})2uy4-Gvui9$a*o|;Oas-M4lC;h4rhsF8bEjDnAh+0k7TDVD z$i+rCHcA}172M%-qfqSzo%?n-Ql!j&7Lj@%{O0fm%YTI?xzJC>DKEdnih zaNkiSd)u(BEOVENQRQ(vu=(hy!FH~rq{30M%2B<_u^5~UhH*Qp7bBfzj+$bKKpLn5 zG~8N8t;2b}V>$k3Rh{KHYh}rzMtc9_>)Ll`277B;1413j}19zSs|ChS= z0I#Cj`o`DHDVaH$`@L?PiOK|n0@B1Hs| zs&qsUP(Y*zh)59-M2dh^0R`zz5D~uL+B0*`Nl3W9|L=XC|MMLR7q&q?{!M$y&;v}XiTp)rhhf2s*UO4#@NDnaS=+wAAxKDzSPCf{mPBmg*pWaGi;6)7ds0?mSMeTDL`K8Z#}lemuhQhT7drNP zy+)^hB|cm$Ii+@H<2R^Ewd!bMHLBU~^@a&l+j!J^<1u>UwSQGb>#J9*omBIMj&y0w zdbnNPCBB3bzqL|dsgG|1d~4yG%5d_{oYqH*x)g=pz4yn(q`}?^b*v^Nm@lk*<&U9{ z4Dffb{3F`;Mfdx(G*bD0P5ov16F|>QVbShW?6Yt9;QQ0J$SThAr@t@0ls?q3jk7A$ z(w9Eip5wP~TXrO?1}lF_`-k72U0U7RrhRdp%uKJhK{kkf=S*-5ytCjJyF#nZtOxco z=4XP`z!jub=awy5Q;d~X&>5txkON8-S*ko>#{Xq`hCfcJ@hV}DELne<=^Oa%{UuWS z$Gg;cS?No54uf3w_*%Xnr3&|@f228l7+%fw&+mWMzgt=EFVa_Py)sM?Ww+1k4KyD*wn37m}I)hM9;bl-Rg z^Vog;NrNjGJjV=Ir!v|v)~|usR+>^%5C|H@*KLU@Fb2j5@Rqf{ylDa6M4)0uu2S=D zwzs5xt3*yCgOSd%^ZJ`))?b=lmEq46SWanwISbzn?~cGGTK2&;=XJtc4grv;Ad_Ux3jRqxXoJDX?)Uyqx~~?DeIVV>#(fcfV3)bKA=) zKhXcIL@tZ(HT^~J`FhM8DtcT_e_t_rC=!(@&qyDD@BWeU;dI~_Tl-;MV}H%-@}R91 zHCgHF80ou!?a1!crR<&9-!N1EOvep>UEJzrwBey99mMCf5#IlmCTrIIaPZh`KQ=bP z_dRYt*NgQ1yL@Tnd(Lg;Bai2+ zOnyW7HHzseJKkH$f6zaZ<)pvg-`C7ic6y(mpTA(ypUX{*ZuK;u7XD)sE9wb{Szmwr zSZ(+R@Otni3M|y9|55fz5)6*np3?c*zn}yaMAf^TeYj&IKhY;)=K>1pQv$gX&0AjCWpIcbaBJY(v;WT^S7HXs~z28{wr@omml0DM4S8>l? zzzYAzT7R|8APY_^1*evRtCfP2O*qSZ{>yxp-M$k3*1kq^mU7aU@pnZm4Hzz1Nzv=3Y1ZBtjT+NL}m}6ajdrepLa?3NF z)60#woXzj6juKz2LN)MZ$-dv~PkZlo%EJ(|a7(A=`){pW{D_sGOw|M?!Txu5W{B~)2DzHYOuqTGN6 zTjQA?I6r0MRGE`w=1=!#W(Jm!i8Dhm^0aE5?JcP?DZ78B=EB#1bH9JOxG$W7Uw{8Y3>efch3Le*%V)?vH_Z4UW_zZZ@t-_ywC6h$KI6+r;$!+1GI(YR^A?<5#jA0}A|gFu=^Qj4#`IO4x&rueZh#G5C0! zh==932Y&$rHvJVW|0TX4j2} z75`v;e+kivr4?TpZ~|cCSfcSv^x)VApL_G<6?w4bd9w071=%k_vZJD2ojcsGt{2ML4(Tf8&El zFbnnd6`7l3SX0a-=GjG*0hMHXD}RSV7+fu&C9F_6eoz=z@{5aLCd=(CBpK6^22+(~ zfGnaXbBp<0X%Wm?sYQjIQ?uDQA-`)%=bk;u7?0$~S`|TvME{d&qJ^B+v{vSDXNs(G zOA&Do7(G)iaV z#oavBt9ufQ3kp0qGut)S1O5!fB*KYEObB%V)70KD8+Oml=lreOJd^oU(|@utG1HU4 zBhu8v8?x9$O_cTY&MNZc_F=t5ZcYk1%tqVX98XpuJV87?Z~)T77FQ3CIvifCT;1W{ z1TPuP640FunqpQMnS3QcTih$xQ_#iJiAT7TQC4=YC(C2-zh$MgO8IN4t*SDCDrMy0 zu9`Ni|bi6}9Zqv$!u-N(Z?5bh$6~+1#v`5s9dx zOwVJOG7hkih#2RSA2T8aig(E8ATnyiLgaId`B~kc$jj}X(;P?XP^BoPEzhCVcu!Hc zf?nNoJUkis=s!Gkatl+aIUhSM?8PVXeMyS~(i&E5#uiYlBDkk??^`mHzgRHp@U6)4 zu;+j$7eBd$p0wH?Z*5N<4@$4=FF%E+rXBx0$v@5brzyb)pdJ4_$v@5brz!d7<0S(r z(Rgbz*bdb_5A_*1=Wj=r$27e&E{FrZ#CHO)CBCdFp{8bu0ll`+HHEkgp?=2Hy$pwx zd`~ebxhEG#`7zMB@Q+EMHio6&T!%)D7DBNmj+myiR*H<0xP&56vXv8+n7O$=k%wP6 zUxG2s0XXzTULh8!H4cHT4w%>WxmZ@bq7BpyOl9GsL=86ldxTF9JNG<{-5cvDFUM149#8c^ z2+j52s)nMXT#R!8HUr#U0Wa2!&bFvwvtG(!dUVZ5b;7SE{F{``3%)i!g@UaihSZX+_ zynYAHMNh_H?0c9TOa?Wve9_QoaZgDRg4io95H1LW0wYX6Hq%p0ndbFJFJWP4TB>^R{2rCYJo;A;<`|8hA_JnmdIGt|rA@=luOEYLC z%PeJJi?1YbAph%#jDoCHBd&^_S`X}8!4L<|N#|VbmSR;irDenscdU5ex+vIHEO~hPV+Eu95)_5K9sgr-O`A1u z(ejBW|EtyC{@(hjHf^8&?{@8<>F|$d|M}eWS=pUoV(Z#1@1>W!_sB2k`EQJUuUC5a z>HBJ$H@!~XdXGF>AKrjI|5LH7EE*&l#1sfE$7abstSLTc&ihkl6^qT9JzvE{cybCl zi%zD1MPP3LPmXo7P)S-BSP$=4MJXh%#3`{xn86LsEV}h~A7Uuygd4mBa zm>W-aZa#dQyD>tU2~y~3-#ZW(a+nYRn9Q3*1VbZ+uy(-6)Hdc02q<(CMYWk(H-;*( z=q85Xb^pZrP{2|jq~Jt~;n8bQLO=a{p?TZZZQFUCY1*uH%Z`-70)GlM&G(p|(4OuE z1wF+g%EmDgEKjWJ403t!A(o5zRv8bqDz0H@U^?Tzok9=Xn>%;&u(Zib$4F(Y>>5_F ziE#df(1N`*54wfiq6~T(S;5`pfOCNWi2j11!MgHbTNR6(sU)Zc@CB*3Y#<#xkBKz_ z0oAZ1DO$-z^nz%YmBUvLWq2sVmy`qjMC!hTMa9@Dg~}rX*Om!)F{l<&U&2A1hRlII zQnxl7j;nZl`W$%cckR%wbz}0t3HgOC9qEPaUU}V%lQFf{1ayS(pTln3K06i z)Wq)a`MLk5uGkX0<6G1#8^>32=!LdVx9>>p`-1cB(cb56NcTBL&Ux_%nQ30;P_pRZ<%>IQ72DV zs6_HT<+2%6+n7<~&NJiyHObFo4Yt^-ut+^7VKvmpoVvNc2I5m2ye3Ko`#fWO>^rZl zBtySYGBIOiS%o0H8R!dS4_+H$R{#SdxDDQ%SnbEcwLuw@Ey|D#H56E${Lb7cCi7WP zAr^XSRL81mB`9>j&Vq^YNkoCW`2Cw7lSOM^{_7hJlXNV5L)c>Cg7*92QZx-hWy$!` z@*9~7eu5Ya9kI-@jDR3A<;lszsV8G!WfARvw7A4_6x$63q6grWiMi(`>?H%fh)}k(hi7Oc%>A3ucO* zOeM`Uo@~BpGQ~hqqm)iYKI#O$8~WABw@g3^ao)>AFECZ<2wvRKh4G4J)uTrcuZA9+ zxZ{15D*$2$1Ztg^&D0CHfW-KMs?l==y?nUQ#GF3nop32BgRG3XKboL=cN56!?GzhehA40c)y(BxgxHt1p5M6+pIJA@@bQ-=5 z)7&MkE@nV?=F4mC*0?D>3tJeJ6)4=;*bT zdQAp_#jZ|#4(pZFUN~l#gM(|v3AAL3UrvU@VNOABtOGK}(ocVSirZs_S_)W*t=k}A z$#tkRnm7@MiSR*Oy$`^GGvAY;AvZE4r{k?RPKkGea9b~}8frBl z>Q>Y}scN@gxri@}kk;2!KHujr z+!ySt+ZU3R!)p3ue_oV|%oqf;PbBw^2G`evRp>mj;zbw4X9m_2PUXS; zXpBg166NIj-i;CUCFZ%v>RW_O-6|(AgqR^T?7P0sKp_gb%LGx5H80*Yo)|M0CnJF! zzB~mzvpVO&&|}TN5sO2WMzHbH#flGTTo-T_VB!6>S%VXB5ETZ(`{PAM5YGE!%*ha# z=#K?Gy~E=HDMA`fGwUEgiVnxVrT9{8#(df+DqhvYEl2 z7YUNV`w`AMdQ1g@Alt<_6KT+sz+Ti~nFXd7_BHcK2}U8EN~RO@oc#ZI*8@87pq`gV z#xhIS-2c~m9@vWqb-iS|yxin&xqXtc%b4h16FUShi73XhF}5Bil7_MTX|N>BW`X&E zxv(Igb1^K$#@f7BTUl#DTr|W=K6vV3KMsMJW;~Uu0OgqKe1D}J27|MpCPqD2dq#kG zftd^~GXnU@W-}uX-mGGf5>l9vo%>MjJ+!bghbV!BZZJA>&^a!N@BaGLm-YBew-|lIafE0$D zZ%V;J&(syIHcer3;=b6d zfJn?<^Q;KttVuPgQ(!6iC5u3IUKy|A)C0lBm|UWIG(oHtv`svXI(*GD<6eTht`WvO z4tIh%oFdE8oZ-ppRa}6OY{-!>LluX;i9^f|dyRgl1KX_};M%ODxEg}*%)rjw19$Bp zS729s8Sd*+Cy}jFZBHkW6EDn;a(;{j)&e6ZH`M6h{jIG@ujchMk{D|!l?@4vlj1>D?~?&arm|$=mZ-#QU!-Kk6RW0R-35h!u_iz< z0OcF&_OVKYF3(dpB`w9nf~3d^3`w@y3gspWf>RFk#<)@fS6f(xr7#Iqtr=`~6e!ZvpQlmW{F91s3i<_z%x3^Xo^%xLzxML|{s1%~^}5=t?DNs!Nql1n(JAdY=icr1ElbDtPu%7!D1$$2^OzU#$# ze7lQ9z)fA5MH#r@O#C?xK}akChu1KK7@>IcC4?48sM~zzF_DEWq((v}J0;e=AZ2JD ztYSV1%D+Ye$y#8x8a_KFHfz%w1$u}kb;dn8@D9z$fT+p~OdPN=gOD`v%ucC<{*yKV zTBR)L>CKyq@MhTA#63hFzIq50*t~g&-(bQv?jN!)A2Mu*2sE!RGKQ~-Mf2zd>PWRI zjnY!mD4GA`DKvZ~h6t*#6k^L*rh)UBz$8WwR+h1sa-e4rCljtg!lyO)FE}{7R)$RW)XRU%yQb= zg5mVJFv0j|z58QPhDDZPzho~%+%4BV2liHs$15Ij_zJ8qYG+&%EnshE(M;9_!aGuA zAn}|0SU%>PM_quPq|SX|vaMMprXETmyOv#i+E1C*- zW)n%!2_Edgwzn1j>mFk&{PCh+Vkms23%@j9{|%EbtbanxVzCjr3(*bU@(sT#4i(*p zOUlc*4J#XN=4|-ETk>NfA3JL^0Czg}LBmvn=TGuQ*W`gqVz2Pb;+i6u6DEr+B7aTu zQYvvj6|Z#o9>WVVldUpL*mxCl9cg{MX;0w8l_Vrt5sz_1i~4D49Bc)O)Gd&2&_qd z_Y%W71%AlvUC5(m*%kz530K(^Pg9I#Z^QFec;6J_!m@03Zq8wY9FIC*1c#X{?p6S6 zOqMY1i7k!k1CsETnOB@b&EVJ|%o3&(BX9?!#09W}pC#i#am0HRRIISNvN^zL3;RF{ zr640?mWP`h_=iO@amdbBgwSf4g%}M-3-X2fzfIc~Q2&=vEKpD&F6?W*as(9wyA4M$ z_RYm2^IJ&JI9%IT#P(=#w)uEty;+ecnteiqlGxLUJRsv3opM-HwmR|26;K)&7)qF) z4Nq^_y5Zd*)Fo`m;Z_QTokhKwMj7m?t6On#&y3X6A|y-3&89doQqUvSa`X|+N#!C^ z+v6_Mp2ew8m^a=PrSMg7RfN+Cj(R{FnCUB=lF7J-tr2c!!=-GvoUKh(8z^POU(I6K zRv@O|^C(e}&%}m&yBS<3Ohdf?R=Fm)D--NC%Z{xA2`-pf@B;Y(!LY%>hQe-XY+Uqt zw^|GgPX+IY@JXsIoWcSVCH6}!Bk=Vy0d>wg z&#>h|QKM!JYm4?7b$dC?CghQN=EktF#~aD-~Ia&F^X7DH9{j{ zZBD|PiAdPheSgi2;7M)`ur-^)ObH$~U^EkJmN6!lsOU+`P3fBAsoJHWpyvJK<2Tfr z>AXGrV4K5jnpR@poYlyHdxtTT+zHnH8GmDrX}IzC^L&kE)2opd%ywW)ttmyY%f*a1 z+qcC6g{njtxJ?~)b}pD$VYi3Ag(-pY7mj?>3Av8{b`>ViH^HT5FQD20ix@mfxiF;XL+1-=v>f~UG^~lD9hwre6yY6VKX*5Z0usa zc|5VD0EIk>*o$CDw&ec=gVE+|E=!D~Fue2MF5?4qQ7B{#pYlBaX6w+#4IGMT7zx1=Vti#`7hs{&Gn8JA$g>Pw{yIh?9xT zpb3U2M~x(CqWG>;kEwUE8o*~}fI}Qpx)47u8eFhI&<7+B=)Q03Qqt^@|N9G%F>kjQV)Wm^+n z*2?99@ky%z1sZqeTDuYmeFj`VU_-WO2)lraU4k#zHN-If^*-WB%FgQw(<5KjjZ=JP z7!E|js8J%gPP!+loZ!+WJZh99ep|vtyH#^)-@JVXYSy-Shh#53*(}*xKdp`_2#dx* zFfx3mv4_J$(Bxsk2b*4Oxj79zeR1&Dm(Ih2GW>;@x?qnYkE#W`LZGV_=U6kLNXRtZ z41Hnjy_;r!O+l z3;9_c(N0&e7D6dS!bO^`J!JBZVYZnFH%N^kHMrS%ly*u2c?)H$p^eGq-U@!&bfG;;J6BsV`(lg%hHx^)ELJ-TSpzsDi63|bxXE<`kXHPKZd<}1R^SubW zIa+0mesT^Nm1JvVMITBAncP^(Kq$sB4~Be28A9=C{7p^xI`Jjy8QA;_lZ7CLBQcm? zG=V2UXdVLE83032f@g6+oE6Xo+VvvbK938rJ^eh?&vXlAhecQ>cxf8QE?6&PNQ)kr zMtIkYJ-tt{;n;2h9=_wAH-D2RLz2cK$HiubOd;Im%Svk4B?FVT6e4KZP2>v!c<URDNQ!0S`!Rp5-Z-qC|(x6y^1oqXotXb`vKVT)vaUhS-h2 z3cv>{aYuu=#Q@|B_{lz%Vo0FNWjQYkN1$?$kCq4EU zf>7bVTp-u^Y$+A^(gvzK(}%_&V%BzO>~|I<)JHGA>4|nN|GPuWHqD=-b}ietZQX$n22iUu z&D%cp6mCrH(2mc@@J0K^75lhrA2;sfq=>j<-*?YGu43@rv!Bxwf0U&sQswkSw&oq$ zKhyT943zkfrmb7GpcnJ$#X@?qn6Iw48ZNd{Aub6G6}`|r8HqbUIc2WHg2G16Jcgro zCbF5@NKbxEPYp1_hW|YeOrN|Sy?XeW5D#lDai655(NjcEIdL#MjTnB2o+WxV=sSu2 z^$5|sl5@30Q>51aF)oC<5_NSBk*G(CxSs`O1y7eEc1iT9lz|XY7m9qukx2~^05}A@ zHod66Em3Y0E6*cPA<<*n5taTKv_qxLn3XEMazrB9BRi+K=%5_k-$jF*&bum&a7JHK zX}WWwoipE?8YOApO7TbS(ja^Me!GM`BK)2dO)CMcl+?f`CWrbCvCPYot4`q7BIZLL0s~^iWNmAdI>0`+`K&GYA2S$bH*Z(AKBxpbNt2Rca zg_7D|rsYykF*afJ9?E-9a<7qSu2k!PA?z)b_m<>dBGF`DdH07^r@s^ZUHi>OnX$v{ zv{6!5+v&KZ&bHG)**U>Z!{rq=bL^^#IgdOXMEwRi@D~ak+U6j7%Q+AgjS31~6hu>k za;!1c=ux6agZqJX7JaEiCs51@TgX%=&9^Jlopi&lyzitx?LV30IQ1#1dE2;U4r#U& zH`O6clH(UTq(9{N*$!#4Er#e5TkxNDT4Sq8bjqfzaiEy^8+K{4T_-wd4<6;9Q}!a` zIw;ZJsku@|YDd&Ac(IE*Vw8a_^IXzdIexfH8fL?toXc(Qu`W7ckH4!*YaDUEsnUMO zk7&)OK{c+cbRY=Vbgob;4|UO4HSSkcTBxGxy{h}FN+(rx)ND87+o2%BSN&X}i$Ur~ z3f&C)hdE}^v_>I()wfmJrKkf?u7VXP#v~epOZckCWm+IRznAF~SzO%HSP{6&iY-60K;pC;NTtEVvhvihTwme|y9ob&Vv6M@cs}7W@P`fVC5Gm}qL=&VzA_?MkdWq=! zuFK!b&S`b&itHR*m-g5y{9cE)*h7cbrQHtal)Ci0!+E|A?QvE(f$*Tvi*;yOaM0Uc zS{oelXBr&}Q9h|dH$$|2b?Ez0b$T6I?vC4#F8$f;=>v~;E1lMRwDajSEv?}f+Y4ll@u#IW7zG~c6uk?1cxL>`}gc|B3 zFYT_OzUQTJNzVQ0G$|?K0NRrjc`=Qq)pCxgL$hjyj;up7YCG?w)4bZDchhN4ZH~QB zJL+sIO-a`FrP3$Kk!w=v>tv>TcT(I7Q)y&s^t@D>nYtJY)tWkd>|eTa5^?SX{a;Loa4$=pQyezOs4k1zk|pJUy(pf9vLOmm(l<(@ZQvwlJv1e zm|%RB$x-x^q)mvRy|Q*8obl>(IL)zzkB*?R_PCR7>5e__N4GT75q2b;K6SV^h0|7t zb|Z{_bZEQ7=og3nP8i*GfF^Hn#x4q{ADyln;dI#mhZnx#`=`Ci~s=w!6u0H|=ttEHw@$-TRs8 z-c1|Ry#<2qjknVf**U~cBjwo^-K$6A(8+ORXXCELdG1Nt1#d zt0U>VVD*nEx*4pVi=y{5b$1jk)wGRKv`LFz8bwDneG;ZOMEO06ZiJ|3qiC30Js&}{ z-P$h^w9_54E`lb8so(3gEKK`Wr=wvpb99;)u1?qKt8i_KP8Y&su0+t_h~Ge)7>bC8Bzy>qHRb68mV8T(M?7B zJdKX1+Uzv?(WTt;(yZV*i_&Ocup7(!RB!{L_qB*WQ|X-M*q%z4wKs?^hPd~n)2LA8 zyq8vl^83k9?N}9*T;EtO`4XuC`*e$wuc{;6*vrRq|;9^8py`Nhm_yb>Gng)X^^D~+IQ$@1?42(W3}yRv^G}ToJQATy_eJIXq+~} zOTWiygS|ArqIUpDV5K@B9s}at3sPxpJbL?0e8k*TnpoK}IhCeW<}LjLkNa0Iec@3+ zYkn5*;}f*0sdP7?&Wu$0G|_!4g}zKg*54B&uBFhHDvn=LXh)S-i8fbtAHyJ4RX|6_ zRO9zG)wHuIG_QJ{iz#%lx_fg9ovDtTGiyX_NTEwL97|K^dJW{fnB<gg-m(c44HZd@0Y=ys=H;{CDj63cw2g3EL7lQ1!_UmBI-2Ke~GZk zvh%h~)8&6#xOu@&*fgKkMm3_>)xnKuqNHDKNJ}Kwz($~mQExS*eUcmRwIBR{_kj^;0CmYhapz!VW zX_!)RNqw5FxbePC(Z<)Og)ZepBiidy4>qDRF88*^G%(n`t1-vFgF4=hDChah%Se5 zIbS**~n?WNYop&CklTqQ*8`3+`)u%P0L($&74QX+V3-7yQlusMb z&kwm)G@z9g+z7c*!Mmv;?TuCDHlQ_e%GpM=KTf^Th_1%D_co^S6_wkKXl+G)A6&^j zxdCmj6pCE^oE!m%FRdV>qOVmN9nyPZiMWp z;+=sJsjAI;lonP~j?|}})s(aK>1;Lk?hJaXx^ksHEw9e+cdKht9;J;nLXqoM4e#Lk zbgCx5uYOornnB+_9J;C@{rs@|(}pyqmNFM3SSw;t1`V%WbxK3pRoi>LA$^)0`f)=# zpB&o15zSBW{**xzQx{_YK% znL&HfHPm`GJ!Isgw6>0W=p(eeuKr^^+ETY6W~QD#;1QZuuhxf;&^PszJ@sgJy~!#g z9dPnd95tlWC@^#_`U5AwmZHC~)1Ok>Vmme(1@9+i=PWy&l{;bm+SKbduyCA^^XgQc zsCw{i$XdPcNpx6hYJ}G$+}`>)OGeMCXJqQsglLB300%Hvf^arKuJyi+K9+}ZDWaUp z1dbq2{Z^(|+>2%KdRQjkNVQJNbX|h*C(=}-9HJceY8#E0YHhXAItj~WiR}K&Mn~mZ z>uof`X54s>c7;+OqCOsMkdq{f*DWhdCzc&qdU?Lqa^^AlZ@{q37u-R;$c%^jvt)^U z#(vU?sFQQBL|s4$NctPm-_%nQ4VN6?WJgOqM47q~4hHfaqI;2f0Vx){w>Tb5FT7#80FM%-2^^wwW&sQ^V5}_KSo# zv>Ww2vRG0sI6%3a^PCVJ!sa_^fUOp|^b0oEVFwMgM{RV_*LG!+llI%yyAC>LUjp_{ zR~$cTwHY?1C6Haahb z4Ygq-blw7qkf$RJKBzZ@AW`>J#z@o$$_gVaLhPX`nB{-+Li`t2kVsozcqD<2c5siE zDZk<*89d)Q^crP9M4gE`E3+l~w}RF2Cch1n(nVYz$oG!m(JuPUp{`QtZKs0wIZl0(O6#2JZeWp9MaUmc z_gR%D1*sQRni=%2VEv8ph3X+D_+d({BB@oY;@%rk zju~GrY}6C{p+t=xU8os&Bcq=3!po`8*Y48sW=jWoT@CaBx#f#5UrG zed8Er^!H7AUMZw(11C%O;s0;g977CyM+cNL+09FgN%=ThUcUcncyv(^V^Z&)QsrcsHEFT*|dj~4{r$rM>x6e%X1LNj4;AU|-?J(1UbiL$w zSE7O^ADnKZgneX%ME$IN$Ea87MwP)fm4Sohv#a;H|1+ypxHs(Y`Djd>3Ugt1$QIui(t(i^tR ztnt<^%3x;0p!NJwV&&6OiT7@!Z4U`C%XR^C0p0Cf$p(ruUwQ#$Ozj}GtP`@pVQU^T z)PV%rGP`ZEtWLJu7Rl;xyKR%K4z=5k$m$K7?F#E;Y`0}(rqg!Ec{^RQJMP-0>vmW+ zB$8hzn%3P{XEcF~H&CG*Z&sD4iwm@^XPVib5W=vvwP9@AJ#VyeYE!9>H{_Ph)-+_V z&30B&XV`3`WOaniHbYi#$+nN=lPGzV-2qk7dv?cMyEN4vVbq#r)j7426wy-MCrNFv zi}$gu$K+@GhYNjeASIoV)N`^8+Tk6tZJG>8);3oLpFP6n7z;+*=9p!ZCfUq_(Xt&c zoBcuAkxkSwveXJY<>!*^JsJABLSO0krnZtA{w}Fs+ieSF^((vWx~zU_w{5qnzu9fq zZ0csaZLD40iLtehM2T}8j)e|d>~O4gNXr~%b)9^5g-G@!EkiP@M!OTBfCle}uQJXi zO_z9^_)u2fvRO$O{|wua4UEc5Xd*rc3&o9NRKqn?CNDINMp%fjP1!zz3;-g|VN+3G zBelI%m?*0>9^M0|fGqgNeC~j3j#au`j+yVE?K0Sk#kQEq4%%b`;?hxjN!d3FQJ*DU!ot($2BEt z>MWoq9~1q*e?3`zkn^%cd09l;B6|`oGjFuuk8r&-^IFd3%Mjsp)u^mEm#M?i{2H$_|O9NeQAvSXBu?#U`bhTFi=i?ngZd|=cEO3G-AkHk{X z5(xxS#CrtoSD;3lE3x(I3rT^U6y?4nL$(8L^^fCy<7JNTUk;BWh<>jqP~6QIv%OAo zoRgrgUtqQ+!H7S~@gdt}#3-LIhB~IO{G1KX2^GF^IeH{N)C+M9?9Y*%y`&0 z5PyefQTa*2E@kb>F*E>W4Um+BGO);jY1t?(G~4hX94HUBBk5(Lmlc>B2S|>uB^oNd zWR9CyhrlqbLtxGVsjdi*z_px|qMYKr{55K|O>|6*bJ^)1)TRhQdlV=Go^=eB=*9Nt z7(FOYg3#M2f7{bamvPHT7V|yRem#64$$c}H@v>9%iYGY2|u3eeqrlAfH8d@Ke zHs4K`f}kX#F)qg}H;s2;s_AgBW1gE%1cO}Bu8?{kxM^_cYVM6_OC#U{;hVhN35pCn zStZw5?4P$QGTXfzFF`WGdYJcMZ7L+VMmo347brTS%J=A4R5!i{Z)W7u%}3=Fv9JSut>odHU7mx*X;^4 zD|hU?vUuLYp*}$^vNFw1J7ieS%={rjub@nos5KZMe314jXnfF4n{qys#@X1icG0d} z4yE7hbCGXqP}=oS+AhZVSJiPblrE_}&MSi*S3_Y<=C)1^srPFreHRiq&R7zlsL3#c zZ;`q{O)l5@z)8n>oLAUt&vMdFJkFokQ)f7#SIc4pdGa)<-hAUc5cvm6wI|zYv4nLn zSx$zt%4QkExXhLcXNsQ!#@U>cRSwJvbgWb5+F)0<@SLo))&30L3^u&(v)5kcpaFs7 zyc2col^j#}qpTRslsI0R1sRyNhP+Y`($puB@PN~^E1?H76gG@Y#m@BzP z1i>uZ>|Is{&30P&(L$Pgr_txm_;Uz$E|CEY za;f7qn(tEAYxJor{!sSws_R|Jg*|w+)NHVg?nu}l@xd4<&nf*V3v3wP zp~({j@G?l^Ny#;Cm;^Jiavabko9i7sF4){6(4lRCBh&$B#Hz6p4Gwy8DHM`xT-rTs zSqEL=Q-K}t1#5%eq~*b3m#{!i2D=u$NpES&r?11x6LRb|+7J?fkn zqP6j;aBfWW*;ipueCWWNw5o#ZI;uTZLAmw@9gKC2c!OrgX&iJZ&NUSL-uQ~zF+eLS zY9sL2Ur`x_Qs1kjOaZj0k~STW?<%=D@M@*73#e*OeBzlA68#yke1_~3D~H_$r8!(# zn-6G~NBabi9UhH~zTk2Hz~h#n9>!x|f-(x@b}1ol2HJQt(S2|XToJ0c_KikGRool# zxLQS-f>B&iRrw9jw^g;RcwDaP=D=~)!VUpiTU{IQ1|6-gjD3@?S8x3jR_gg0%1N|q zQJLuu|RL6Xb#gWvg z>wvDNhOY#)IW6oxJSKScUFi1MIvqx1fJWA>v>4FJdhWr9+g~qYKQdgZ7yJpJ;g7UE ziLp5RXh%%gvHF#^zDoBRXd7Rn_cN3=uhFuMR%_p+UmNPT`_lQwOQqj=W*(3E@KyTy zappw_Gz}k&f!*6w`Rq-)(p0_rI?Zk7I@gajG;{ylj|MhZCcQ~tHCImbql3-0YyId> zb2ma}v`~M4l_s`ScA_QITY_Jw@1MwB@fsa@veMDMG^ABK?)nFR(IeJLsQ-RXngnFu+OE>dessFMcJ>V#^o(-i4VwJS-~L3N)gAPs z=-u58`f>F2yMMUn0hg})Bm5?YW7e~-`G8J5tMo@*yZ-4~325(g$`YRN=auDnEPp;? z9Ul9h4_kqGx%|9~p@}cJCjuD`zo7h#z^h*IJ4Szk zGT-`F`!VR|$C>JQJT_#8?L}LbWkpOvVLxPP>yUj^wl*7apJXdj@%S>k&1EFn+FAJs z?Y!GrnS;lqoS^A=EXWC-g2&pNr`96nh%UiDy-qi~ejzPEACBi$+VDF4nFpsTy7#jC zyWTXW`+N-TiXQHFdeee@_tsZvRX$V@;|sK{y=h*7Yf*3dyr9MDKGeUb`}bmcyC)*g z_S8o7raL`d7hj>#|88-8t<`&^_r z?Fhy@ybeEt!=2NyCJHWM>Tgl>ovMBkNh4h9nJ7BtQs7u~(-kx>npT0SilTMF_dvkc zy50SwXl0moD3ZPoJB!j5MFicBrW?AtDU$j}atR|N!|*;e5?jlxNDWO`90_*-{-A9g zi5=oTlhhlq8%UUauus};*uUgX7(APH8a5?c7L*-!Z4Yb{j#Hh{Q%J)NO1@4(kf{IB2L#hs>%SC!FurvV@NIMNwnegkodwTv6};gSCO7|CjX3oT{1u;Z70}DUDw#+ z6^42FMLO;)J4)#3TsLI8D1{x6F8?Am98l!GBfu$NJ?=$L(628i=eKKv3!dA+(+c%!9yD6#HC=d6;OukzMi}|*xF9;R3 zEe9MwyFt3c2jg}y?1<#rc}J!}^54h7^0!mI?0~LC(WfD7x5A?{%cbA@L#EGMtaBNq z=|2IOt}*aih`tHHh)_;;$gR%@aKX*Mx^R6MfZgGu0A2qX9xb2g3=ECZHvyO&bsE6k zXnhWVcVal^r-$@G0B$@40iAZn>OX^gnLOG`j`^*OT-^0EX3M;K0NB zDgfsmX5fq3`Xm6mYIAeur|369G}feW(c{we{Q%~sakAgM`ey(}q%&}+j{Yuy3w0P+ zS5LnNT;5%e{dzxsRR12p`bRltYy zcLLb|7{`3rL|+78b(0eSrZ&?@0a)COW9~KA&tW}{Yr(+DmijgTzqMpw%ai&?01iFL zz`|DgZ~*ICG4S@^^S=v2fPGJMvX9&8 zC$FFj?Ko!aGx}EmW0K@*lz=3D={s7KB%fJ`U>BpdV-}M{=GhWcw0a*3| z1A{y2?*o|Fkt;p>Fa6FXneP0Hft{W79|4@`#L1Rs>#G55%4Xob9DOo?k8-#<{k!P5 zpv)iNg=0>2)qenRvnvBz^Yj$}e#~RwIz>sQ&W(^eJ zXM-hu3&5>|1vq)Aq|XER@lXN&IZV=r03179fG0*s`YC87u8$BPI7fXczyl)%_|a%d zp8)WS(E=R(wxr*J2hNPQ1$bqwr2hzT@H+zBH%`*m0X#EKfUDk>^!EYocvpb$zbEN; zeu2ZtdjcFV33&m&J4t}2CrkQjfVU(~>2og?vr+&E9t_W;~KPsDyWAN>Wm zdcFWh!l~jNfFCRn;H8CDvL`SuVhDS4jE-fX7z|@Y9u;P=H^r6ySu_n9!e~9$YQJ z-`8M50gn1Ybm8<`OenxxYenog>oK7K53d)kTDAcbdP1hn8$|5Hjgr0*;DU`JcEBb{ zp9S#UO#(c(S<(jpyt`Q>-nCWIkHf_E(^dg4+a~Gj0dC%A6tzRrKLEI3hXDWhR?`23 zKgO7y0z9@$(hmc?x=Vl?cT4&jfctj~@WVZlJ_X?FJpvrLPtt#f{_}%<0=%?e(hmR} z_=5oV9FX+S0seeIfS(_d^!EU6J0$T^ns!*yZyb?n$zd_wV~=8U9|0r%tAQPLLz{P3axZ(Wk~w*Zd3EWpE8B>n6mnJ!%s z;Fs4VeJj8{*917{hNOQ8@beo29DY;MhXR~>Q_RuTTateIAl%q~7qRN}D?8{oHhMB+JjC4C^k&+i&V^_TS%2T)Xh!LOVjAnRWOyf;9A-wl%W=>Sg-65#S7 zvVQjmm>`A-aMCbYKLT*!Fah2fF6&BW~0c-1+;+8>fkG$>TNT7{N}Dr2hC-caR4bviHJXSjo>SEq&U;7_X4 zs4!(%6?!)eMj@Qz_^vwbj&R(mM*AbaM&qVLDpwQ1pHD~oH$*!wR-?_)8xTJ1A>~LS zz5UQEgnt_AI9`ob#In|LPh3@0bu%vhP!*b1QQeB)__!kp(wNHeV-xA)%CV;t=tgC2 zYXS}RXv-34qDT86f#!M?jLZ^`fQ*KCge}3t77+T8oo!Sp0QhH!s?s^M@(4(D!d~v#K;)! z;WHLu%6|^Vln(~qX@rA0U5RF`l(nN3pps>;>YGZfQE@m(fR;~kxxT4De*`NFE72e= z6)b}0nd71FweWEsni8V-_t5rGWlAO56Iva-O=#@s%Cy?8osP#j0c}+!njJPDg>R40 z-g$_Ah|q7x(1nPm8y}*t^q32AbWqoC#nLU^u{V}RM{3{4(vC>ShFIDcsV|GA5mAoG zvGi$F#I*{vF={l*`7TCV{16?DQ71n{zr=ix^HxS5!dq(S{yItf2n0`J5z+{M3g&4x zQ9BMmMzhtvqS63+>~a;d+lzSr&ha#k8Gh`12Jgdy;@7FPL~-MM;vPj=0XID*VyQ}_ zRDOR~GMoPLLe;66qJ&JqoB~)2<}a zFuUtyBF(ewM-w6IKKV%%TIgu}RU(~rCazAD#s|f|pGXswYJ(G{pOlBzSEdPSwNsU( z#V*&bO0?TmX=x=I9IW)OgmVkwzgDDSnrmN0TA;aCR;1rGWkF?H7oyyaqun9el{g%W zaU*1HsB3OzI*zp$M?bq=W8>(9FgHTJ4b$$#(l22l=VEDCxa({z{SdAlj-_A2lUBsi zvIzI`SUMG<%#Woz5n-1SXq2vRNTBI@?9>E0sV9v{fVdp(WnmmwP2!PD8@XXELnqxRj(G~214il-Yv?%|c` zM@6|3PbU?i*f=$IT4g$+YJ)4&1yz|+nQp1>Z!6OQD}!7g`70eQ4pY9@-Jk0eizy?x2WjhvMkli1>wZbS?tu`i`#O ztw?k93hUzNik>hW?~#>0iK8P?oab~DrkAcoD?h~2AJNFaASU5VENzb&2~6ByLHi2B zR3Ub4EcK67SH{xFSPk!!W3>-sX>RNWp|%E2;4B`LBJh%iFpEQtlD63n$4u>GI}B@a z6YbI#nZx(UZk$TGBWu&`IR5BB$Y<=%VGSRT-{XR?E59jN+wKzz3<$ySgj{5=J`ose z*Y+wfR78BK;ILKLr_eSyBB4G%?+6>E&>hDC3_O>iQ!S!e`Ywqc3&SdD!*r9wyHYk$ zwlXl7`pZGnT~N%t3E9!6{Hns_*AleV7JrYuZB=MF4&kJt3Olw7Ua|e1uF1i))ajlT zOb4CH$zW(al!d{xAjpmP?LlFi5UXk^W}W&uYu8a%Uup|Kn~0TedPV)#4e?(&>4uOW zebG%bZR(gXRHh;Pmx>!VrU^k|3qxscP;CED+8q=< zU85_CiiEe74=`wxf}?*5rcZ;DehH=@gB=Jz9=wf5K-Av{6cQ>XDSRz#Na9$?c$<5E z1Rb_%^CIYst#}yp1@E8WV=kEP+!tKjz(K)KaKs&O(IkgD$VFQm+GH1w zm&EONVJg%C>_*_mL>+Ke+=!4MZ6Zntir(v@!HVlo%q82IX`8B?fr3hfZid?wD*W8F zjXM2fgl>+JPS7hr792#hsZP0OOd{` z{-!*?l(OtsW%YfUpN>JY<2R@;WWTOX zrzeP>2tEt&_Nq~yBFJo2Ri6?y8{7tjVb5(N;K_=?kPC2A~~TSepjvtMdCV~4Yq;V0F@E* zRIwRbC>KiZoosXi?hO-e=%Z!e7?%Tr#hr}&N{5MG8yF5nX87<341?=-7<7kxy7W6a z=!Y=+L5|rRMz`dkrD53cH7xz>Hf3Qrt+$7-a?=sJ8}EPGwP6T%Xv^KS$r*Yz0*4y3 z3lTIXNIM)s8-hajM$oCCr*1~jOx3+Bf<9N(Z4q=(RmVlpMb(LOuJ>@75FsvgVgwBh zR^Jb&DZ$RS!|7PC`c^oUcIpy0&Cr|+a5PoZ2D)*yP=jH5Vu<@lD9sD`%qjW=z8nPQ zMfGALnjhPcPleJbUnd z-g7EAOZ!2PYfw0C4$|;`H%J5WOjopD!*EnIWM>$iR$QCHa0P(&MHr+XZB7_%!dcod zI-rK$z}}*^Sf zVvyqfqWP2ST9?i-V(vYh5fIlidix+2BhR(T7TR!Du_w zFDv5|gR-JBjSkY*RKhV4^>{@(8>Ie#p$}5OsYoMLH->n>>H^a;*`<6`89QL`@p$?w zSVPG9V9&P7eAahwJbkFSHdUryHRbDgIu{arrxNVR8bTI@)&uu;J~Zr1C7SAXt*8VZ zUIkPCyIVu}#4z{XO7uyXy0H>{7Osw~ME{4i_W+OMw$_FZW_D&Vv)G;89d2P+cB)d9 zs+NmfVk>TOixVfVl5dt`k?K^hlt@*I>RqBl_1>sn`Mp?5 z&i(FlbD#VF&&TJHfW=?{3&;Adn6Y z@SFtN5K#LhK!_6a5~zES-;1XaLE~IJEegiYOrVoNV@^B`3(2d?Lrum)m<`ML&akx> z(plJ;7Y}bkV`&_%iCyFvHpBPJ%O>=#iu9#v?SZ=Ml;d>H#j|AEy!XpwW z+pR-}pWv>K_z|~vXFSdKm;=JJ*&}*~DcjCjaa7>f zPsGEyQy}G(Ukn6Ege@KhX^rh36$T=}8XBgNF=A|pcE#vd-~t{H=L0k`FalkSet8|d zFp?X_fSXwnGr--kllhAQHDb+xJvsy2wGIp+zoStv^^ed*s{%luK@Qg*jTSgK&_nkf z+A@v0Xjf|HZR|dQNB+t@?7>QCZ1d1k#@7IfqnOv-=w9=(n^vgeh?@?oR=FE5sLl#E zt#^pUh&znwZWz||!ERchnLRApq8S5`uJLR)ozhJJH-;-S%o*-g+=L!5KLDPA0MQKjM9?4oRwuW(^!rOk2CUbD1DK5GO!8I;Rl ze{n!IG`c!qzVyTKa+1W1%L0cRGh?MINW1pZrP2U8Jie^sqz>CdTg>;QC z6m&&5A;9K2ZKRhu&0Q`!<}}M()SHW97ft12h6}7E8M)Zbb90!Bat+bj1%-|4o(W4S zzX*BK)F3_Pnf;=|FWUMm>O|B@bTjC?-e`VzMc*p76EhH>uj=PG07()UwbP-)6K%f( z3;QfhZ08v4z_(u4#3Bxc9v7VXrt5q-M+-H$7T(aOMFj|ykDI6B{;7=b@BmX~LOfrr z06sKZH6MClHZ>~UknH#lHJy67tCrfyu6y9m7k59buPy3Z*# zx~SS|E^^TXZr&F_$y!x{PIFNqsE1LfOi-y|t`&5~5Q{JbOxH9)(@c(maM{%QqB~6h z^rP=8D=J2C7~M7lWTesVsLgY%DxjU2q4ts8;P9{1X}iM!d(8pIL!`)e+zyVOSDiFg z;YV~TQLJ*EPAbLYci=5_a{=o*V)FbdaJgd78 zadgm1Sx)YD#@4Z7#!rT5qePBAVB%~n@PY=EE5{Y*!Z36Vd}j!f8TN129pYdtjnhO< z7+Mc!uQ286&7oBpz>_wISUFE!8)CDJq+TJm#Fca<$WFNgt_~HcXM${vSjzC@p4)tc znaksu9)g#7YIP7~EUCAHY`8abREX|-<<)UMdr*jqe6QSv@ab<-5vI|02E~5mVfA*|0=Ji)Zmi`;Co}di$pYYsL}^08nit_l_52E z;=bBZ-(@~Sh4(DaRpHs`x(oXh_Aixm)LP9tm|7P zGB4VOIQp3AW4<_wDJ_659w=(*zk-SEKVP34y*?>=y}P^)FxdZ->vgbaf?3Y-`V1!> z(0GXxWEXrX249qZX}psoeVP-WCY~Fw7f%I8;c3#2&auV5$L>6S&VMJ%8_#N(x?aRr zS<~MC`a9({i4*)j7aO)6JI^w zILv{7$S`qQ!t$Sgau3fiUZ;kbOVD=S*!VNGem5Ei3k=FS#6+3ID0D#_f5_vBihcr{ zozH+@s!8)bRw_ib_mzP%abLV?*Tw$M`XdfpIxWk@|_6`(LFOiCz>_bovhg>Zcw| z;u#JyW0Xb}inT_E(l~Y~D4|q-4Io)nrW{dY;ovmZ!4ElTnM0;*a!9pk^!Z<---C-u zl#CuXfK#4s-+>Rh&JQ`MT9>R>^1Zzs#hZ&MCgx-TFWoE5z1#p` z#J~=qRP}c;s6q|E!}qQlS;m1U4&HXsZiltQNrQE7v6J%k;2b9%){O~Hhy{mb>!aoV zZ{NfJHs4z{?`xfWUr^xVeVvTHueH(lbxeoG##pIAV`I+Ls6^#>cjr_K>GxIl0611T zINn{EL#7;b~6nePIW@ z{MDSAdz(^QqPF6cgW3zMZ{3&xWd9g54oIAhyHo{dgjJwIP_ux%8Y#W&YWk&C&3(Wq zw-+UggJvBpPlz^n=%jS|@TnM~Qr z1U5Brj)(TWpCVJnD6@Y2F2glt0Pypw0OaN`@AiOgl>H|9{I5pWLKjBS+tx$_fFEn0 z0r-1x81z$&!*BkS7IPY}Uh{6@v_qFG<$c}8fZphogat>PGXG`g5cEj2yvKFzl64is z)y^6%RWK0s(btdbDlk#ka4@~G5Qg(z7KCzghQh%}xI&Ma4WoeW9d6KcC&%i$(`ldK z*dp=+_>i~-73(^V*4Nba9F9z)#-YQ=z|4bO`lGDpv{#G4qJCcU=D^)w=MWms>gHu9 z&2;h;PAYL)$DAm3rR*KFsUcoAa4gIXbbNs#z-+e(a5)E!SB;$xK%C&GljBJ0s?%bJ zGyz8MaZ`KfY9rI(E)VCanlvy~N*{gbhW}nm!ph=ipfkZg#VJQY!YU;+#=u5~;}cz| zBH@r4275v`$1JuTMh`7h~w6QXTF7d~mr&}dsW{Hrb9Wn10>pnA6>5!RVU zju#Lw))HZVIj{AVNb4JV;#>pU_ZY;das!3W;|7Xc!3~tN?nzrl;+;z;xJiI{Gd$-E z76&mq7fcrdb1xD$DWSsxQZ9esqGARz+ zOT@?U#7B@Z`B#W9G7|3rN^aCfyqB5yK+s$>9`V&K1C?%e8K`NG%Rup!E`gFSx}M08 z|1bI_+84cb*)j8V*-8J)eu<+mz~L!*`u-|b$u;aLd?G7Y*^@C<=L<0(K4Q#*&9D*@ zD)4@CR+y^@sOeTKZMH(NP^8Ka@B81$70rNJB!KPbjTK_gT@_E3vdFB}4}{eR@5YpP%F79C!^ zmO_V7?xM{O{~Q4i8ZY)!g_M+rIHIB(Ko?#C`{Klko}4j)DdXy6S$^!5u3?^Y8V z6+di8h6S#QQ-&lwy>C2{6AGTa9c2+^#qM^{FAdE6zcn!N|HBV4Vj|PgN!X5q_GcgS zgTV6!GeAK%DN0JWR`K_6Kyf6g>CP$;x@1`pYvm?Gj838tV>c#YlOdoWT*-nG>cfQf5n9QOs|i%e6Q)FHjA7&I zP9t&OW%ylUN<21Af8aBmP91rF`cXWW%x&$!h_@EOzr5kKS49Ht<^sC7 z%bagXqK7;PrD~C39!-LBnGZ~)^``rHBIxNfq?EY4BcUpF3B(_`yakCgPWX$GXu0rD zNrbjh0Jxp)=1UVP$L&9fH{cfQ66w5~S4XI;$G<7FRtO(n93UXfMDF=O&Z^R&e&aj}z-)34laOZPL>%wMN+&v3UITqBro88h} zc)*>qALb-aJmUQ=S<4V>T~zo)`#vNn5#RR1TKZQFR`4mHFfbsBoAa=&DN?n4Pw_&= znWjcCE~^|`6^LXVkdWx8F6J08pYj`6XPu48uoyav}6_AH^fuYmjx8b^IAYr5#v(ih$UHp_qd9KFb9&p7^@X{QSb_G?4S2y^m zz-=ME)SZ&&qqFXK#1~oy3M{q^lu`yLh(!l1*^DDr*C+k+1Ht(B5ntzqM;u?`hRp{% zD@^6V9N1(P8>+N?Rh)Ih!Xz%aX{+k5a#NARxd=HO*q!HSe1e;%=&p5Gesvhp=$6xe z+D#+5anMb34YA&Zrd#7MSDPSwI08j076G&VF{smAlVl^%huI*Kkpx2!5Ee0hL;yY_ z!6JJUKHg1LigU6XF5A`&H{|Zv*>2jSnth%IwMPElz> z5|wMwLnjn{3S&GWf0c2H;gJd=_2uun`x zQ0kA(M*xDsaR~O=v3Url$MAj#7RLkzAUGIf4ETYD1)^zF0)akAD+>sCsr3y8#^A@S zpfU9aIvxzH#*f}1aR%*L84|tl>qto4LDL6?#Z?3|!r~Z$yh;T+_8Vs!UiJ$OB&xWeLtT0Xv6dk2#On-!;tTG zBXJd~m?@3z-3V4S5ktPDNljDlqF1&xHToeKl@+*!k`{ri1y7x&%O6!);?bXJd9%P& z^vaQD?p>X!sCnvbe}bCZv8{u_d@hSw--h6H)`ICV)$3;oENhW{X;E%DSF|` zOJdbGYM-BoZeOW+KglZohdS@&=!L^Ci)G)aw_X-UzEu0XlGXPg>bQ2%3!B=BCEutg z+KF9Xs<+x@UHncR`>Ln>8#?obcivZO&o}Fre5tN~Q|$j--S_5gcK92$_-*;c+8zwck!LEZg6U*18z z{=PP@gWByET3!cr)-SB39n|t)i2M%f&R^Cl#a$nW)g9F3AJp34L9O~gEa;#<`anXJ z`g~|rw^wsMlnT%VA6duSt5ZI<*0xs{e2fX{(#K*>do}x$%w3H3AZ@C6P2qIKWj(xxxu)LHpk zZ4#E_Q@{NK(DlEwZgixTzqfXFq%FTk_Uw-0N=F*rvGu?|PaSX zw5mJN#y?pVooL^mkbQ6`ajz4N@6>wqpJ{(5nf=P2quFo#8Nw~~{);v1Yr6awtKZl3 z@Gr=}=&xe>*R=hwEjD~jJ-?Ru$9@ydKk=JE_%ZKq*6wdL}^HPW`-MTYtGFFJQ2)iM?-JRj4xlquI$FI#jSc_E%yJSmG zHX4qHmJbe}frC=1MeKVi)62i#rZKtJ%w_abqM!N)`so|<0>lhf>#C2|C<0dMY&8I} zq&f;#*yS)c``{=4Y$c!!TEoj;C_UVVy>vtmtnyNCr#ZxtY~VbN?u z96^4g;Wi%_pJfT9rhB;$#;q0;e6UiRg%<3;)+CEo2|m}NK5icX5YycP@zrhvzVY|m z21>~HG~8m*Ru42t@(=BHWwT!#!JN*LkosHDL=LMfZ#%i(hH^3!DdVdC7()W^= zKiKDU2r4zRnwJK_r(qg!3u(?;D!JlmPN@nbgM$q}z`rWSw926BDg=fG9ECVxTm z3}eL?wAP4O`vu)K8jt#d2D%~>e?vE1&Ig~-Y$1?yqcFCAOxK0Ar9FfVv7xh7YKVEl|Q3+bH;u*4gIrkLjFk&HtDl*ka7b zG$f|==FhO72u}HsCI{@^A5yS*IWpxt$(vZ$zD z;3jIUC#ru*T{E>A@6(uu)~;VtWkY-BFKI)g$hBY4$wqK%rE87DJK9rj6S4avnx2(< z`W?12%k1(N-OaLY|BU)Jd#TskRMpJ9_ZAIl&X50$Mzt{e{fxG?u#j@Qg>TrqG_Iw% z^(HN8X`g(PdbZ*x-=eZseDs@iyp`zpCS|v_kTScq`_daU^r_m&U-6X4f1k#;v2OgF z7Pb-PKc_8i#QdMri8h(}Kc^i}2M7F|&OB`&dykGiW0$>0L!Pzr-lLVzS&QGH{m*N2 z-=>P^Ur12`^+ zCcH!EUbg$aLq)HI*1k()+C|pCP21aXTs_tRz!vU|`B!M~T)a;_1Wnr9P*#4JPK44WB3~feh_Hcco7gVodYOAF+hTms~Ed9aCsO|szN7^BFZ5k z>ri_7XXs#THAd?|D;Pj7taAt;7p}weSfe|RO{fO%55{acw2oq9l7dpq%49mPtVYTV z2j7tnRiUvr9rk+&NHARUQh=U8+eypyP<|@y)PKOz=d_{9fcr#gGOY1{JyWiW=Ron| zl6c~I!djh-y%WEeg7@Ydj}5llkNABz&rbqeXbtj|T6|49ZSb16(`biRn%Qpn`1A~# z=C|Ocu+E>jJOh)O?^-&Q*}+K}bkcrxPX-mo7(Fv+R=|MY#i4)+{MV^~eJF(rgXYx~ zIvV8bQvhCmYDXGnhb2aROe`Oq1U~t9;T0KcS0zD4mU@XragfevNxTJ+)`SFW8IV5- zFJNz&Ab>&d8p#|2)K&zWSF8tL!{{kty^Ga1KzuXB5sN+YZdjeMdvt_=fg7Nkdw~Oh znZ`q#^|mKH)RS9V-IR|59^CYZCk%D7iH12J&;Y}m2SAmAi^Uo=c|hbMXOg z;OhR1oj4rTm1ROZ@JSQM3edbumg&!;@2^eGxP$uO^(>+v^c5;)GpKhLu$WUSjFB<> zB&U%?RF){x(s@wPKmvPI$;DI4_n$^>h}!65;ZuRT{u~4BX)fb~BwetEZ~M43UC4Zo z>skM#9#~wmC3Wp$CZOZkzy!*^#3c9DoG44qdPRdxx=fK0!+)v=7UpO@Vg$S^0R@Bq zXOx8N;FEe@rMB1@#=_3?g;b)BX2u~&?h{+-paab44yzHg9u6D~<2&yFq|yL({EWhv zIRI$jv!HZUHE0vpsas^VvficyK)_FeIM3oY#%Yj&G4qltp;TwV;msP|mYQBa?ii&S z&^qR;Xf?fXs7OvKtF%D!M7J!{BgOk-GRvs)sdDV?Fs8Pu5qV>87wAElI-w~qz-0T{X zNHC-fG*ZupfWNkm#n2FwPY(b?%BSME4^sjXhq)}IEW`mgHk5st$azv&`2h(k><^5Y z`}r|J%n$B!I0nRHJqXfB%Lbb3v?XpJ-D?jHQ-RmK5~QtO>nN`J`27$a^6|<5Rr$oO z0FCflNLlQ6FAC5iTcG^yw)>n-6*de^HP7Fmo;gROHi6L^4nRPxg89~K@CnF-VRJvw za2nlIjdF?02K?diJ*}fQ`i65gm|T{lvsNjw^I;xUIcENuDhG z&_Ryh!qf%46kH6n^xGz;U@xqABb^4UBjcUY)vD0Yka4cj^T`;hRiidL3k*q=6|j(* zfRW>*7vK&C0&ovZNDaUt%JKL?{CBLTnV9QvX4UhFdz|bO7$|08Y&h|u%lRDkhkO{M zCCaHx)i9p6t8&Qn*Tf(v6jh~&AJzrz>u2?^e-snsbN^SYOXxB7PTEpSqEo;|ChwMc z{~d1qf8rOMoh$ zaJZ*Bfy;AE#wVzy4t3HA%{>rUC(YGgn&DIX0!pBZ!A>}7aNN|>DUnLi_D8@jigz5v z0^HXmbgWe8eK~E>2md&Zno>)gBWA90P$xc58jf6NR9I#O5)J~6snShF$f;X(0aVfd zU-MaV6wgz4luAFyK?O88z%T%Ujs|dEk*hTNZ; z!$4Fj#>EgI*Tza9k`&iP9M+}s${_W?p<1z6$pm;tMrg(o5Mye_UVLAgu^f4H<8qMt zIN#kDro&DQiUJ<#6QqmWz^y$E>rjxU8ci@g?2|_e&~g{gjfH~X&Fc55Jek@zZS>tRKFe~XkjQrTcO7N{Xzp~C5&YK*s&(-KGQOo@v$he+ZVqd)MHngQnjty*Ka zTs@L(n>BTQ(4Dz&>-fHmn;?y22C#rY_yG%8s{G`Hjx{prt`1aaL-=E=I%eNTs^^#v zKNowKj>C?ur2q{&1kks~9f2V_s%i`ocfMp}e_TGaVlTrV!suqw?}IQa4r9Jea0Ft` zGaQS!3B!1{;$6#WwjvKKxT*MXe#3CMAtFVUTr_ zc}4m~isRDqF3~u{bpb!GX?hEoCC)o_e6v@bCw}~9H-az;je_)03X3T7SGnL=WdW#p zLz3~HRRUvNFmf2ZTu>GGhr>rqwX$9CvBJ!~-4VFt0z%T5<$^KI4?FBi%^L3l0O@BC zn00?|0YHWY6Kk0cyTg6m-xEk#rv+GOp%b8#{Z4-mfitiyEC{{%FCedTe-7N&3~Q*1 z1{t_zwc#Hr!M@gD7mOKxD6CBDCU75S8urGfbqcs9Ggx85dl16o<9>ZB3eA@=lLO2N z%v~jW0gNn)Sb%q|7?|9TEBXK@y3)Y>Hdpmy#GF-qlbkfr(Qpwk5n6B$#{p|ElmZT- zOD`~dHzn*1>n?oBn6=FUlu8;p$`x~(^i_Ek1dVE>rx);N8>eP9CUwbecPCTHxgQep<#&D0$9sfs}5B3H!?gBe>cJ<%yW?!&LJu4&tgbMZS;j znWDcBI}i7Lc+|P9>o5knEEs^QUD{qR4HA5fmvV(Q$BXIc>Ag0Lw_VZRYaR+g`Ms{Kq!zb4d^c z1|&m55U^XWVF6ejrz!$o5pa=%J$s}o=E8#k<2ni65*+R%+nq6^5~<2*Y=M6RPsmH8 z)!bMUq2oN^YJ~C(8&`K5k(sb?x?%<;QZd|i5^0l5T!>H?(cm;}-oiKrw-mQIH(4_7 z6-yg-lcgzi$0Ihw&S~)-NU?%flWDuZlHpR@bW92z^ofnhbjQcH zz_#rV?oGya+uJvV*7~K1z9_~z7DsDiq&DDqz=CJN-k^mY_$g`6o*WYJCO8*rG%A6{ zhAr&FXNHk{AuO=ppBvjKHy&htl|R~5vG0i5`iG{{=dou}Aw{_QrecHO>6VHGFti2R zK*gAsOpg?^GzH_0k4ypX&%G@fc0mg%_yor$(;Bc8Cd&oAC|Q26m0rsNUqFQiRHXmlt zY!|OigFx#(n@$&ng_PlLt6MEv=r($#ONV8|FSxzyGiZoM6r@w3$6AI>uE#$zorYWD zWE#!3_?&cFWBK8zRAq^hbV(d=E)Blr{*CEyXSPPxg6=P7a5CNX8MomT>^DYWi|vn{ zo!tqt&HC^O*Atwqa%q97I4Cb2)29t6e8 zR2m%e&q<|T_e0jyH0U_|{lJe9Yc8!#1+n}=ExZYVIE+m9YEf>Sbq>!J=igt8 z4#p=huZ{C0d08zODRO@^4&Gu~Be1v1azGJL<>v~N2IML-x#4&rUj?~OvJMips@A8b*P(=K!V}I0-)l7h^$GV zeQp8Qp_?89u#N#1zmi1rEPf65TIRZBn&Fjh-K%}(m_(eIXCY<3-@KYgy=-$R;0?BC z9`f71JBhT%ZrK&XHpW~DU`PyR&*g!*p-FH)w~(+Zn0zpWx`vvRV;qMB;zPqt4kXj1 za0KyXv0?+z5U>d*(S_L9ZAnxXCr(9ZU)&XEO~1X58Hn&N4V&9RYAsN}sT|ATN_7&F zD>Z)7ptG7}XS<>EVJ1y<@*yTH^}mPypVt}$9&hQoevXS)-i9NB8lkL=dqHWO^FP}l4yLwxpj-Z>)m{}i$(vcbI(A~c@EECS+ zqO2aqiYTcE=|e29M;Fz^@-&v`(D$W7t_iM71LWMEoCYx?@+g%C>Y}I~4(JT@$fSIy zD6B`zoWV);Ftysf>H)@LSJlPQoK|UFctl#~(`dTT@Hx#A5)+v1@fFminI18rF0J;6 zoVuWeFfl2VS?+uFz*xr1GiaCB?3)474?j|7`^2Mk+UWbqE|l*VH`D2w-#V2}Lvd_t zIvuxL-_D@%0qa&BS{M-9>d@YRSWt&<1hOX9p>sj=etp=6`H(u46E;`Wrj22Nl*3`O zs5adXTLrbHJ$PtsnjQP>n)-A!PF%&r6mRUTMS1adNi7AYcF*W zkiRuw; z19a`YPA7B?C7jg({gZzv_rLBtr)Q3J9%05ilrbqxq9-u48YE>+q!5 z%UrW0!^M&x}Q#(Y<2F^(i zD#lkjpbRkJ(|4AA4%P7%Wij&Bv@s2EA_#cQSnL3j%a{R$7YhSFm#ti9NV+3kl;yKG z|CLs)14QA)CN*D`oA{lo^rsl$u*!j3cLZijZwu|APF1>rocDF9_^r7&nV!cv4sRY) z!SDw^hYjq_qnMSI*3g($KjAI>9#9h4BAM%U7?MgghD))-z8l6nLdW4l3Jr_H-bX(G zcN(V{2<<)BfliynFW^aX1V0uFN5CBph+*DPWgLz5Wo&~?;0u9KVy>;>>Oy-I%GnY~ zf`aNo0Ez+{AJ%Tdt`I)-V_&3Z8RJxXNA7=zGtWZoo8eO+9j`r;RLHV`f7Uz?9$xD9 z#xvJ-G`fI^LkJeZbpXLSK+q8Y*gXuvL6(+}+a9u%M+?FCs?_Vd5)cYi8@&K9gD6eK z3XP9l49tWkwb$8B-Us;xI03Ki%{6&p0RIB>CKvL?@rEWZPd1?Hq(T?(ic*SPkS&J_ zQ4M3rIFWJ&!A8NS&j%Z<^g5wKmixe3G}8Nd_Y%+r`>=nw<@J8jY>*_sCOb3cqH8lbzF_Rj)l*n zz)f++qji8v#Jzy&J>H%N+rYGVJO~|0_--;LxdV|6XjXoTIE!2}Q!pM*rq~y-9lD*e z47ui|eR~_X6r@YXvz2wkQsi1!S7hVychnUZp&+WLi$0*C^`nSjcZ8EUBuuZTgoaQhWG zWN*FNX&#>B)N3eZ>FdTew0*-H-Pr+blQzF8Gi-Xh!zlci`3_L;)brPxZ0EdR8+qu& zWxw8u4E;a;z8CK5^GP=}w_khF6IVvHho+6LeBOBvlv?NhV;in4`JK2u8>8lTsEzt} z6f5u}r=ysJU~)$(&y@cmnqk5p`5L4R{!{eV$v^R31$a-LG?{q16G#Q9>Z{Zv*oY4Q z%Q!sc{J*8{!jIj5yNDu+zwLMm*$O-3VX8ZeWw?<2&(xbJVA?+iBJ;v-EcHBo?dujL zMlb2XI_^UL+1czLQ0c&^e+m~t+j|F%pVo(UoP{AWv@es$t&0O#>KeEO4IIcOqo(pXHm(nkl8g)<$>Mil$Q6!c*x=p+uisE)9x#f*zCgvJnYS1E z1w?+@E)0@~quC`Cc|MnE573$`xooKiw3s-aLq7Vf0)}IF<$QM5B-rLMMYqk2S|tw0 z|L=b*$uKk--OZ}ej$P15Lq%FXYi9Y#_pYUrJHUJ*s$9KKW)+Qpp+s?s-i!quUDA!_e zVShk7gNLdJz~QbaXsp68DGQ3F2<`+!gAg1IbsmYKaUlFpINio}?t%FIcrNSToS>aS zKjcQV9SCklv?U03CB|QppGhKgt*4R_WxRWG7gX9kCHiAR$_MD#6j3DaOcetWY)lQE z!PhoFt@B0HH!~d-6=ZZig81ZG1M!6O>u8Hn%;Gx7QOxLi;w;`!m-=Elf_e2r5Ad=# z)<2JTJ-^ZK?&G=lH2vLG1go-SA5=HfWK(-Impj(6Ejm|0LpG`ToV#q<$dH1^qTc!TEc~i|M_Yux>+xr=OKRbT}^htxp#AMy~ocxRpQ6>pZ^gu z_xlFOBI(ZiVhMsNzX%OO(Epd6hvF0H`2qT|$FDkfLHyCL{)BP&Yi%tqU;Fio*q(g& zw?lZTg&)cKuYTN>f$Wj4eS-d>37=_OQU27=Q2*A?>`jQD{>+daIjy}WpJrxz)I7R_ zJp>O}*`ZSlyZ*IYh-UrGUX3Q)_*?;#@4l`hOL zhe_A245}U4*Bus5)N;7HJkx3$2vQH=mXX=4(+W9__GGfObG=xndH4zZATpJK7r{%L$A`;Idq#jE5}EQwvQG1n+HX{}{Bt?1(`5YIKUx})7L8$I>{N6o z!a)cp^PVpd(&T~FG z9pG%aw3fOw#J5JbTe}2C@qHmyrcp2Va$H<%#X%iYWf`Y3=)MKl5kUC);ab4m#?7it zivm{vTC^^(3psPbygGyO!?1)=@AyC7s6{v97Sx{ocn!cV6{(`%lzzPqqPLc$8 z_mb$IN8C)3II)4r=q7#ugmadJX_Wemy(x6S$1j6>$FE;VgDFLaU&dtHGrks>39T(D zG%zNz12Br1e0(BhAwDL9?u5LB;HeCE+zh=`>~imu@i88f00(*58k}|r?iYnanL13d zi!DhS06@fHCAiN5i;uZkav!L`zvGnJVmI{be6AZj@h-%-a}|s+V+}qU`d`B}!GeB` zuk^rQh)?rSvFSp*%=`*+rOV0(bA~GjZi%ZdD7d=`Yor@w;Xy#u7YYl5MObiLJ0^m6 z1>F{KA(iiOS`F`zt9wKG0(0GNCa^EAWK|e?@RqvO2sjyWtPzOi_}a#RCy8YZX^JN1 zH-w=)sh}bC)b+~^fawTctPiVw;816X43B^2|xqGoiRTceu+0b^g!!mHz> z8`5#}`<)Ge<9LKT6>dJJ5pDNqDF3+i`<%wK%lEs1jcJAdupF5I4OhnoAW?uM#-351 zZU@DX`qVvy1&E5nqN)jvjs3D`QyLhDX`RaBlFEnIqr%jFsBuxcSYMacrb|!iZMC%3&~Mbj zyOMo10<$;jI0Ii)KkP)-DL-`oyebA}6n;Jier4je4Ks?^ZG#X`Y_VyuWgp4 z*qT;&^s8BP((+7dO(kAySu?8edI~Wxyk?&kG|b2Io6`)xxw#p2w=JX;+I(#@x?yt+ zo9;1n?lq^&F~J#6Q9-~zur-*3%s#DYM<5={d>~xbih2YsB#a4~m90Q0WF2Znl|gZ? zCEW{J2V2s(5FgwU7$;HInudqHOIpyfX#7aH$#yg?RzrGu+%w~vQQvq_5tPRBVXff< zAaYw%aRRSyMF$f6lb@pQktVaBqH_`6wKc6u)FvT4QQU4tTa!|!w4#a0R_~UyHrcw? zl6EJjY-m9_DKdUIC4NW?)+g0Jtrg8m6=f}HYbu}9iYihQ3R_Z-Gz;+sX`-YR?N4iR z7R^uB5FeExCN-lS8BIpFz!2oyThhf^#`G4nv9>tYgihDi4mY8$b<|5u=xW^$FEpW^ znIEr4N&^!qV;dOTn$Xe)d`%Nt(_j(aB7pmIn^5=0@G*I;mXc$+HvIrNl>drkvk~CC zS)1nJixr!@OnAp2zJHvqS-s$ zpqjK6fZ;_Kciqqo+u-Xt1GR<+rf_>DxNpFc=AnazeG-$J`4YHzhPw)#(eed7P4u+> z9=(7S4D~(s?`lV_pm+Ume!B_kwBN|1#{YngPfZ(#GQzrCI{`kO-@3~M^<;@Vq!H3W z{00oW0*daZis7K6x?yvi?GQ*g1iPmRsGqoO!tFT|E}GXhv&;l}V&-h=O5|AvE2{39 zBcVuby9=;vNluyvPG2tQ8o7)YaUXQO+qu9=Qg?U^m}6%eUc^@za(b<4d(8iJ7N$E2 z{nj9zy!qvmw!cR0h}wziFo3e(!h867)b*&ZDs7dZt-Av^Qq?$P!aCd@{;xY71Mpss zqRUMf7gL~MKBy=DYz|x-^g>MA2J@q8!#H$RH2}{#>3D8{0rRS~j30Gs z=W{D>ZE=haajo72e|<4?8|u>}390P1{p{p)COs zIg>WXB~tVosc^_mIGz{DGnAa@L&~-mDB1}fKs+!b<7qT7A#c$>gN&y0y>PDA`6iuK z>py$^TvAc7Uok;Ba9p`k^IY)q$8)Xb(Aa53oMt|Lt~_w7doBUDz!I?DFI2oR#jaCQ zx&ybMT8J-K&0cUeRG%6TQ>^Bm3-p3!A!VX2rh8x_7Nb3Qi_blhYrlER4IoJ-NDTXP z&nY+R@En5g8-EV;q6>|fJjp}n-3tOK!?(eW(*$Ecm5Lb|{B)a4UlDkfqVdtL&``L* zxpL*mh&~T=s(6O6OzVM@6d1P7=#R9=sy_ihA<$1fK{3H37bH$th157kS^0P@|CkSZ zV4M?M0l1*Tq430+qS@dlQ0AkjWO@JH82|6iko)h_{+%wkHWZf-!IxQA z6<}d$4O^fF5#Ow0TEJQ;&(ncL8vl|CIP0y--T5X*(nQYAIyU1`@bkxfP>bRdOI*d- zYBh-A*2j^wh_mSq04AU0lbE!PxMw5#*=X?ED@n2rdB!hP;_oEwSJ;F`~-0XD!5+3yko*f!>75Vb6*~~zcfC?Me8))(}m^Ro(~s8J@JIe zin(j0L_dfDCfLA+|M=w5HbS8jZ6wyows9pbX#xwaY(^JZgV`-{u#b%;bAw{vXaTTQ zXlo0cXlbu#0Wrs$-vaD0A*{#`LH5>$raQb?$Co(lLCs(=j60Qu10ub>vmpM&RWyxG z|BWCy*k_xAM=@?ob1E?6rZxx0!XDln;*a-EGrDia?Q90zx-4y{@Rl{DE*t@AM`#-W~U_F%9vG@eKe{^gnnJW+1!r1sviOT=@bmi{WElpt~`_6VKD6pndFl zDFhTfPwRsI0nbAh&U-&kTf^RE&(V=^u>W&(BkVu^EcJ}Fv!A8WvHpY4(AjwZjn-6| z6nm>J-AxK!YfFQYBPDHVW^!yDdPNd)GO6r`kY*`S3gHb)4Y40fh(Ui z?HPKM7JT?L4Nn*OPg8z+@Mar2Tg%FBMYn5>iqwpWAVDNc=Xl}GT>U|~#D7JvK{*$F z7pb4RhN#rhHASUwM3LlFu~td&RW`$iHaE%w7R~n*(x4<~ygBgB~MS5nC{;{9{euAc6utj%7izzhEcagvB5%IrKDm>0-+l?hwrEw;?=5!t24C_ z#%h(W0gt)PnTpX^&iOQx_DHj655qUp1f@9^a4=K~Bu_D=LAs_PvQKiGu-a=`c%{Ow zvCwjb^;TZOf~N4x3b2*v(QAqZ>*g&5+ngsi$+Od&wAPL@_FkJx#-^~~5yo~i4e<;5yHCW%l9I#Lkp!Qj>a%fk#s-K}-9pZ+A4m*r0Ag>(;lCL@jqLJwTL_*~$F06EI z#5v&S#5Np!#_VGFmCBV*K6fm$()m!vGBGx$Fl{DdxHbBR`+bl3>s@!`+B!Maib&^X5#1@b(z zJk<+U@tLX#_NAq2qjd(%#RljBdpH_lJuY%Qz|=B_8_2(eOOu3r*4Lt#{8tu4%L6+U z%G(?*Z(+2&Y0>fqN6P~!9OXei>EUR39CmOA7%U`42l+StSe_R%6cl#Mh5~5;dpTN1 z>f>Y6_(Ta$bPkoQ$e7f|D9HsX5S(&{_&6WFIGnrP>X8KOdw^NO8ihD`Lm;$FQ=mzT z=F5!YEt19?^ig}X0PuU9;-+w*=oUCuvD*f)tw~rThUj3tl+T!oGNa{!Ea?*STv5Oe z=|((P3030Ep~vL{EBr!RIpE$mRw?Wg?_34qohVk=B$hZ^!Pz_k#Cs{)G==q-{x3%q z4PWR91u&3HiuOQZRsR~OHSP37Mcrg*?OwsysY#2adPMb-M>^Fk7+0fsZX|frAZJrHw0EUCsM_0r>ysI6Y#i;@S!jzvHPJ zINMyaK~Jz&O8{8^s%9ajT1x^|&nTw`JmE^G33{bUr~80Gmz*yGFfo^p#k-c}B@L(&eQ>>lq6wb#rH(Wl>U!QG?z^znP5?Z7 zxn?6}tCos(UBl!fP_qdVm}O3T061fuuRyPIn|r_@xyvxtyC6LoOI(z18UQJ-00bXs zL{m%!V9~@;zR^0}&E46cS1>x!uU<`p&#@c1^sJ;1Zj^Q3L& zdjj*zrxTxyizR3)R8(jykQB#QWOoWWFES0xi%K5y99NUe(g8J$D@g`%vOOu8#%jq> z&#lzZ;yJptK8054E%zsbu}Y%ZmOC4RKV&SoKsG&-H(s4cQw(c#B1}kGI1vPAF4;t4|ZNQBFRJu(6nPx6UWU~$D-beG3F7ree!^4%25@fskz-RAWI`8?Cdv%#qA z^Id^cg@1`%^F03=mwUA*;}RnVo^vP(y!&0z_V7=zcL*~KA1+&B=?-JHIPARRK2ary;L zmFyd&%c2Vd1aG7#vNlLX9?aCUEGs)mE3C{h0eEC3j1STfpXB_V=d-WJ0PM#P#89E% zR}v$SF?ke2qhl6F1@QkoXY`O~FnjQ&XDe>RM=Bv4bu{Zg%^A;X8x{5|qe5XFyxSC( z%e+SwR>)Gy6*v{T5ud7P>yaYojE9Pbd8eC-IitU-<*ICm>VMKHHDgwC+Q7!j1eo4R zSq9vo9h?pX8V4-hlu8gk&X=&ovG0fXW-~IF<@@T?8LPkrJtZXHE25yQn5_!II&K zD@>3lzkuO+nwGo^-=l8r2XVHZRh$4eDQk2B(7lZ>f}n?6IG|)MZ@e}h+7k;WkxVt- z2TMBC-vE6MciBDT0TW3EZTAr&uEl}+$9oh9=XjDq$-T>C%!{MGmUjz|#<4iO9p-y| z!@^L%RbXJCtqFe-Q#AS^11{>5nbfp)aio<%8RQs;ev@P2Ymu!1Lz4mLi>XZd_v}^E z$2jO-jaKN#G8`xa(A~*w7w)^QqyZ2(CYnW-@vRsE>^aLQmY!Jx>Vkbry-FQhH@F8q zes{jCjbiM|tX^4qToDBjXQsJ^zZa zU)o*lDN(}QkXyF1&;^cx=iSP|ESoh7r?IF4 z?f|>g44|#y*GTPL~4C11ASH&1EhofvC)|5Z_|N^)+G5 z?;}^RXdNH^)c?q&U%w#t{q`-ax|m8#y2e_p#s7*}43ZiJ^5!ko4OJJYJI9z{v+=?u zV80^^hr9IChN2>zCjilHhMrLY8c)40guUTTXbR*rG#~Y+JGJ3G*S33YoD!xml|Uc{?DBfhGq=4`mmY@fin=s7+_t(7-HEj?)xl9eZTr>%fV3R>a}xON`Zx|< zY^zU$lI-$YG%=~|l?)n`Vpn9)#FVxVfMHAlLAmUM6YQVCL(PH9s`IFse4gvg%6e;Q&)fL&3d%TwpTW#9d_HJO{70?c@w%5XnUnGUBy#1 zrtaakT^mzL_$cyEjN@mrs48Bp&H@RJ-Mb;JjI}27UeI&0&kMW;Ta2s5P=Vv;|g| z=FnwY=bM4-%GwPLgwtAu$K}@aW^mt#>M_lve$AjQkRr_h;jM-_NW62p5$$$+w>P4b z?skhCQBTV|p%IYyZF@JOrCx7UL)zqRd!QkmjPaH=3|J`i zGPEK-X!-kK256A2C&&9b&g@`m(Td#FeY*>2;Oy8c|g_4i#$-Y`XH*7>rZdD=#H~#8BBdf z)AbfSnwze%=%VR`K74~q+hf5O!yMv)!OnZz4cuFc3h2@WG-|Tkk6(%fhi?JneIZvf zt+#>i*6e9u-S%#d`n%?Fx~xe2@GzC%#2Tvlj!K8T&_xhxYF=o7A82tv6pxhthW(t@ zGAE631~C=Sb@oLUMC+*AG>DDD80NyZX$td?l<;!1mkQLU8{KrBWnninRRNwOnjdFa zJ@u_9bU;0ku}o#7ak`4i@)gW3$CbL+y7g0~Ssl*wRT^}_VmACn9XUw3scF^PkK0-K zY>#Dr?8J^ncV!QvyRre%UD@QQ%%A&5_D)cXIO9?JN9JhwN-=qK-dqrQO44?KvOpZL z3Fqf2aZrI=QXre1fd)jwp+k|Y4jL}m&JQ@W6JV8elmaHr3iPO4qSZNLXr`APQtfG8c3G{n-eQ<+R#|L}7Fued zTzk01Ht3C)d)Qg$-!}T#RKvH(!*&@0@qwl_&%>6Q2I2=z-%JndC(Pv#B!m~PH_Jqe z1vsL{-3V8wd6r`mI_|S)z<}tp4uFi#uOa75TPw2JJR4j3C-2}(_M0v&xKXf?to{`j zyN4qxU2K3_f4GZb^62kkQyg)(OqQdGvnHFY#g&9J`49AH<$!R;cA{oo9g*b?<;pYV|lD63*L!ESZ87^JEGY6vFw^sXMLDK z2e>B8${cn64|DGUCdYA}>sEJ9_jLDEPxs91%Z^soOE=KZCSRk$dSl7=bUrS86W^6=SbuX5INkpW9p40N*zvXx2(wXJZ(x?E=X$~ocM?o_%wHRTI&`G2Bx*4kyejW5O>`> z%7_VINlulmHbYd5`h!#2T0ikLPir4bJkHa$#J3v#Qd*ysn$U)35~uUUj7&iOx-R)9 z2cOF~ujFf&@;`exyh!?1>%Ui8+P|r@-^6L4y6z#p1kc!XVD$7H!^3ZO$Y?RcL_#`m znu%JP#G|t-gy-vj&+(uCM~Ow-QEQ2%Iz>0HE0nf<(IUdu5J-{{heLMH2$0)e5h}!# zc^-1v<%n4Z4-xTdcKp~<46N+Er2blh0{_RVzRFxTaWhQP_kP;W;HUC}E`C+Ta(|Nc za&G+(>MpAN;B$VqU%P)zEJZh4t3v|yMa-@kfkqUb;Ce$*_n#W!+uT7Yb&jb$m8T|AyNf%ZXe30?}S9P{P-;~_oC;`YU&Pv9bN zaU@oLoFq4J3lJ;G@i*j)e#roV&T&Zq`d5>|@_aEN{k4^lT++cgOzB*z_vZ#AqUn|S zT32$hWS(S=M*7-cz2)rp#Cyt0I;xeCtppor5sn7E&UuOJNS>Aezt6CBoYepo+80*x zti*bHLy3bpvm_iUR;%mmGT7DaJ+0jw42_@b$I*V5i<$OU-VC07Wy* zi)*^S8n^|bgbhgyQFmn{G@{n9>tHff)`tL@7*$_PbINM!iye-N1J}s-(*|O@OdM$d z=c;sZ12|U%&e}(`W359*ndSXCiL=d@W2*eJ&Xk93&CPIbiTbaNohx$z!##j)H3Jc~(r zrTZ(z=DdzHW?R19xvtooPpsp4ejF0XmV(5^`l4T9DI}8fh3+We8%6fKdZK%=ccHF0 zQY@)?Tr5Y{728VWhz8gIw`g^)_$aEtws!;jCaHe{c9|55lb`cOEU`KxR>X^jW<-aC zd%i&IOW1o00Ix?_HTFr_Wc-?%a%L1`w>j$2w8J$zp#tpXGr;!y}F_d#Vo8?DKEl zug^@~?pS@M>WX;{02fpYZb0D3UtX7Za+?bzxUhVva3`!5dn<7xyBq4Dk6~Xd6!%A-YMgeF;XOi~7xN&+f)(5cMXOh{e87%|Ty609_ZP zZWN<()MiP!m=W_3+npEprjyMqF7K5BHu1)nqnsn}Kx|B;wvmT8r>u9G_B5w%=Q8c1 zWZC*+?Rd(bgd}dN1q#CHEK|Qn3`KOh-}Dtb-L9PxAPLCaF}JB`H-eE?v1+Q zYQ`R0DQ@LQcGRI?`_yzUEZ-P69@Zgz=! zvwKTWBk~!ZZt8EYhRQ}RI|!^~p(+5%P=Vm@8Pn;K!LQ*@D}?a#=5CyHw%eV)%(KnI z{pk(PBWQg%)CoI82qsAo(pgqWE^9C>QA zY*a>j5G@;&(Kh&H3v;y(1A7knqyk2?0kLFtirERjhUByf zdsm@YouiV_?#+?=Nlu&NQ`0-?;og8}$)3Z~-pX9jJ6CebVYvtSQu&B$|IxRvV4e9J zl0-t@!E1Wih@k5H#E5aLBSVpMB$o-vYk4G5l4v{3f&Y{iH_bR_8e&O45m>CG&N^u| zT$n4igk1zv&V}udQalvzSrUN|l@JTh@Z}_U!}!Cb@(kZkDbN}Yp^L74HYG+yoWn_| z((Z~R>dQ9bDXYB5wH(pjclp>y`u6=?8&V4tfo z>tZfTO&8wJ@wh!O7riY>2IKBI5o%`UShH}}~Ae8?-{K<4t)EMrS3wcRovhALKA#yk^|EMu9ug@@lh>~<%wLD+tZaS}G6 zrCkUsi{@6il%RS)dj#j#g#NFh*}l)-Q!_4wy`?S{R+s9p+&(RjDOm%zx5`xFbW@ox z8k04tt4ZKf-D~x~$z^!{w3fI5#v_kx5$vVA^WH$wwn=hJ$1E;shMmkz)SYpErfyylLG@s z*b*&ZEwx*-=c6K}ITK;BYbtrpL+uwJ7_;J1mvurNs?9&)89^`Yt+hPnVl7AlVI7T@ zPsn)@a(6k{r1o-BA(*l0j_73Bz>T(8c27z7ji7#T*^2a)Vs_Xk``6BJYJEh(leR=e z59Gvw4Iw8UVKkkH&78f~Keg9ne^{v68#Bljpt}>usiE5)9F?Ku6EY_llA4o-b)82O ziesf*3)y{L(ckokx?-GJI7|}OiH^mwWX2Z}>ouFM0yJewa0VF-4x#P7O9@PZh19&l4Z-H5RP6v@*+r}n;E7ym_ud9eW z4b)Xm~;0*4`ne( zwfnr@1LhjtMQe%232~?nVWjt3PDSx1RKYU&Zpgl4iN$7=@_sXZ9ipFUU$w|>)~&W* zvX;1Mir>6Vo|n~Hu+vmTdSr{pk1_xksp0lBiN4!Uh?Hf^eM2@LzM-MjpSJOT_4u#7 zpG2x;hL+(|+N7m{c^%ghk1W>Yg?v66bjVCY49UGMHPVm5NM89zvMGHIAvu)AZCwtz zl)IVs0?d7LDtDFb6aTC2YWf@bAOw5)Z9K)}_25#7Dc(I1LSew(qN3rdeBH3|bbewy zP%oK2KTQ9bM4j-umiq!PxSoOnxl#{q~lemoBn zYf=dgTEUn+ao4Ihki?YXQsnoyhSQXX*gktswo8xYgD}XayoE(~KAHU59wWD?bV)`z zRodh7#ca<-&+vlhQ`5xpGtV|{DmO`f0KgXNvcx=cO)&-X+) zgMh47@1aeIdm`B^J%f!WG5jCAtW!R*LQufsfaV2Hntw5_n;%Hu(wvJMhw&5jo%Jo^d zEzhkwT?eg-*Vk8|dT#DQJ0+jBXYT@u?!$xvw;SJE0gJ+i1@0ci77FbJMd;R|$oKDT zux4b5BJtG+TGP8G?p%3Tx!#&SQ^BFw8H?C~b1eiNJ$xmEe2tnV>38oj1|LI@O>2q^ zlL;Cq2@~`!TTSk`Fc+G3jZ0k4>O%GwGY5p*b2Cmh^8wc9SGdF*tkHxjEO_ART;Cwx za7^L@X#O-pMtYUSbGXrlOfAnt0W;|bW^<0;Z%Le6cdXP+WQ)k$gs~KsrXWn&dCv0TcBtY9{ADyzkCP8?P%Pqn|or@U!S*0paq zAg#U=%+et`NT65aw9*;6c0vm%chb#?y4GFAn$f1flY|s1j8r9Jsong2d`kIm*51hD2b88|L#iT#0?rx*1PnD80?CK_^Ej@V}8ELItygNZp}W~g-yAmj8v0MO5k6auN8(!8MM?Is?H=;Pe)rc` zqvFE|Y=_$YqvESVeAT>7dT|Am$e!a5)#ZwRAib{zz3(4?#J8YXk6;#R&9eLFik~Q6 z!pHCuzC{E?v(7;W{cM|RzfVBx>rAfw(LYuiwOo_7mS^wH@2ZQh6R#MmS+rub_KJc~ zSYV5fY0v{|_xn6DZ$4N2Q&!rXgYys7090<#EZmE`{_p+%NQgi3_v+$XKSqI5vtR>m z)cy=1HQic9noRxu+VfSugbiA(PbO*11HE*MKGI)j*UP#Ep6;g3g|gTFF}P(`f?CB; zl2B^SV3Q~AbTWBI)_r0=x=lS&%L7fZN_S3U{prrh5D}q77ZabibsVW$!#Ns4naeti zNsq*k$#fylhSchn@}w-Qq4rw20*m$=>h8YHvl^yJ7NL_g>UdU-|I~jP5z4hyG4AT^*AaZG~v-gO~dXF1CM;Oono-eX(|1ZniJ` z8{lJbt35Sq7F5tI_VtC9Tl-!Be}A2AeKl)7eAoYhZBo1@#B0_!#ap;Hx&CW{!{6{( z3%*aGyJmq5@1x$^YRyHjV5{~$P~f_(Q9_lVFwf}L3lg8|^r6}|zAM@Z(ayhNh_CV` zl1Egnbzpg5#8@nN&T3!J;!xKcuz0w^tGcz;Ah6E`#u^q#;>iYGm3Fif?~r5EXZig# zT(g}t8wJ;1_>_3B=$=@jOGqv^vHob}?vORnL?oAUbTX~+Cf3n)_N#5r%l?W<|MI!e z`Iy+VU7pbKj!*kxZtZj5$aCkEy)=uJUjNUYUt9G~{@}I-*>BOO*LKl-CdEM-9rlc7 zF+g5aml>>EhjgSpx$W$Im1j9MKI7q^|4Q**!W~IosUGTlJ5y< z5Pt&Sh~KY^zZBvxI_M8?u?eS$4Pw})Jdhr}jyTR&+Y(+)@A9%YV zH$sgvUMEG--jJ#vYz7EmPevma1dHiGkeY2J$Z@pE`tmbREDIN3@wDUNJj$SAISRqQ zkwod7V7&*5TBS!{>b#-O<_5@PpK)aePdsu>YNkYj_T){9$U9Q(j;I=BRR~JVmBA^3 z5>oCZ`M5mI?bN>9+UL{(fU*+3-r$IKZ3!IkU>xKmmBZTyc{MRg1JtPE97Ob zT6Ek&VQZbk!Y;dT=KU16c1~#GFPuxvG0sPD%vGOXu31o5){?yZ^nC?^Dr${?(1o(SDG0KM&i&G&Ft+Yv|TBBYy-NQxjKMM92YFjO5 zauHVPS&b0aMCY%kp>O6!Ruqx(;~T7BCPnStg(N7mw-<_MzT8CifxsSDB+kWb)Dc;O zuqL_^57=`|B0vjqP9pzip?HxfSXHR4%Q30noD*CrL_D_mc%fL3zMxYzIa55hP}`UB zm$Dwumw2Pc7ueL#DUd@8#qk1rRH3+DVD>0PJAM|k@uwY*_v{H?=C^&`+0R<3SEatq z6l;v`$S|w1A{B3 z$`qJi&c~UfI}aG`l={{|-3LwjvEGm|-SBsqxE@+4wzFgi?7`ZFti2(&tqxf@FgJ$k zFd2p<*7i74o>A**W{BE0R#&TJy6-aB|EpxOTtL!5l?1o0!0fQVV_wrr)SRmFW%J1Z z_1vi=ki|dR+@QJKql-5ghyUJM&S0iVR{2vky6Q*FK{}J09Is-iSQOd)rJy@EwLT}R z8DKcRq4>2BzjlDzbyQQ?PEDoKJD`q#p;;Jx=X8k()J?scYApM=&W`;mvEHvF%D(M2 zp7dfyWMq+*wij~Okl}`_>0_g=?15{#oPgI-|M|=7*B3t}e~l!3{3{;sNX-Q^I9bD7 zf2xIdtBAD3+?b~`I@DgTvYpSq|0G!|bW*Z|t27@X-A+yA>F%RTWNt=$X6xEbyC(?j!J^NHDeAO7XBNLX62Q`%E3N zR=38h8<0GrP6oGFyI*ljZxQ?#oUyYsZ>{3La0@zz zE`n}~L$XR&I*J=~W|6*zJZ&(j{`XJYTVK!>8%BA!ul-Oxce(kqZlczUPZ*nZ(Y3al zFveAD4c{;7XJ|ifr-(x8-j}F{@mRBXF34vyM_$$?3h1BcKlpdw;16qUdXPoG`cNYq z@DSrK;fnSG#iPid4h!`&AqQ;0C!z2{#&}bHOafrDi^fieEqN3#s#Q*TPFMmt+8$0) zW{r*V?QmO_=h**R`)pg&-#}hz!7c!Qnp_XUKv#I7RWM3W-!~Krp`R(20FN*w{{9D+ z9LGLkHHE9^`-k~~;KcK*i+5?pH_+(d{VR53U)>y|n}gKilso-bUH#$T%;lU%?cZ3= z){NH_M)V}QPDsLNW_#Vdub4i+yZ>+0{x7r^;wwUY#lCIg+m8%aslK7`s!;Jj3s0v5 zZQ`NfDjPUt_cU3gW6WodtM_ATo+19LJ6S1rI!|@TEADNb+0;9!i}PBG?TS*!T0mW6 zqE@@eK}dVG=3OKWqsHe4!{}6ij&|8{<_^Q_;FJ5@ffqU^gH@;df8^L~FbqQF6$rniY2XSyX&v2REs4-W%*A_~c=@tasJct8TmH zzStD;xTkk_5N;x7U0atBYK;?N8TVtA7yB2ZUe*)bxP`5I=VAS>m6a3kYRvgqX75p_ z7%dy(+K=%DxHg%*&LQl;tR9K>ii-*IXIl}Ah}xf^g&sZ2+1dy8VqBGhIh*X9!2+73 z+Qgz;4Y2Nkl=yEAE~dfbMAxPm(4&hGa@XEkOstdEr2vx1ySX6h;x9-qVODiUC*HKt z6dYzb6LQ5RC-+WDw0EmU<-%u)_Dzceu8Y|FUH6?K92Kbo2>yw*FQZ29*-xM_c+UBh z7#?*eq{NhH>q%*ZVmy*V>}DwrBjmPR?Hub=Qdt3EU7>LY>(-%lpj|`n2EP}O;ofRP*VZpm!81iRFFkZ@rE8dPA zgc7*v4j_zWxrd>-S_(8g(*EUkoO>$kNbNfmIscAFU-**y6=6_4q2-(;U$vfx$Ky(N zG^sr%vRsP-l-i1cz&S?zK>Kq7oyY@*+$%9{c}T7E@0cd#2j*p7!)eFdg>%PwLHWFA zZb6>jn?|{R%vl=K5IkEP6BA?3!Wcg1A2CYB&7pBIB5sb4Yn(~_%Z?LREuy>bE@s>` zOxOwwjgi#sF-=C#jTYPsYkHTGAS>!&eMib zuE}-ByGq#cnP<+Ai4M_@lsm`F2{El#%p4aZ^lm~d9~xubcspjIkpCoRcKF@4{b#zI z|JkzJui@#TG!ec@chN{)%dCmKsHZioTHvP{W^FCG{ zt|cvVTG3+@b0SJ>1=0D@Mgn>HP9YzahIOF;hxE~`n*MncQ=p%f*zI7e2XpWgTje*E zYZlK5eRQp+F&T{Ilw-Bn2gtu`70M0dP+Y19j6dy-G_viBje`3DOM$Cq-kue6cv1n&69_s^Vlc)`P@O*^18o7`h^dsee4j zcX`IjkL6y)C8MQQnDCCU6hF{kClYmEx0jjF865mIR}EhL>`=5DA=OYhYr#+qchRlT z91iC^zY%<9KWaKPMMeX)KAOpvexE&s+k?&%;V;*FKV=BU& zlSj>L*E}5;yIhkL6bD_CnzL{@D?Z1F+#4&mu)2N2PSKE&~3U@^RW=Ks+*8Wkl%ltjAdqM;g$v)9SZ&au&6 zy7&funSNS5#K@Luf0x}Rv)@*|?})#^FH4&`YqbutNj{%Xbf%9vZcq1dKTCSTBh3W+ z)q##l&MuUYRC4AH+zT|V)p%MhKGUAz0A9}Ba48(AXSTge`7Kzp{~k3brwjq$MKYuQ6b6A{f}~N92QK`fdqt$me&&CC+$vg*8KJp@?=^zmex*$ zXq3wJz8Iv(GLmQ4*fEy>!|a~gx;U%pU_eYsW@4W0c5F5rb5oq{Y$Se!h=H^YCD3m2 z_a(qmo9h#RsO+@~U~2Y=xVYh&gYh6lQ^ykGwqMOrdjgLuo(L9ZZ&5w(hFK1>b6pqT zR>>70J+X|ssl|D$z4RnVo_TtlnhpAQYwzt1fjRXxhtKAhZ81ELXu%y6j~sC5U}gQsudh{}-C(8(2g#v)ft2hf>_ls- ziLWg}%?sVyjD>5&H}XXr;q|82X*krJFdDLTcPP%X`f@0ZSFyc`QN_7O{Dbz>>_9AU zgt?*pVSG5wDgw%y1M+yI_UC;`5vGU1^32xdc*X0gqy~rvf##J)n)2q5|AEc47zV%7 z#VqR`)?S$LUih7?TvDxUwA?`?Dw_SxY{jumFg}STLa?VEYnGbaFWj+TM=qBs@ zL&~byrrVtiVqrGhuILWccU1_B{r^Ypcr<*mv(SBxa=rZt5!I;Rr)gv(YF= zH~6A)>a#x5IJ=fl@pkrWZYPW2ncahwg}Ta^NF0osT}Jsx<*vN&*)hqi|DY~w(NS9L zln#YfnKrfe)iLjn}%wfs5vK zU?vJXr%5srUZHi1t6Y6-=;a2tVIEF>!%5nboa9;6m?M{_yaSA5WFd_}St^_T+shMSI6DQ7MkRGn5ah3r1x z5(q-^pM8vEQEp~)p6DJ)lI!WLmpMWL1TQ`SdS_IEg&gL~oB4?9CLuI@5I7Grq-skX z$Y6Chzn+IN_ZTCwcb?=t!}5-QcE2s@nXKoHLIC1JLKrS+z??w_$aInUYj1sBN&Ifp z5Dyye7M_iWCGP&(wzt82!t~XA+}H=Tru6WBy1NN|blq7SQtAxwb0-?+^bma~LiwWM z^i@4b&E)FdS@JT?y_a6}n)qI$B`Bn6a^h>aygby>4r{8Wr!G6Z24~T`{VKM&s_BF? z<5m2u-tJfNdaD{#V^+V4huE9-Dq)(Y)I18wVXunerq}INKt5`pJEpw%3W0y`+$&6+ zs^+RCYg!Sv^=?&*d0|y^J}i${i_W&U15FuQ)ts>9l4_Djdg#kcaC~Y`IsUk6-h{l` zk{GT$)RMK3w;66(#2tjjoRq^`;rq4^v=aS2Ii?kelL+Nao`XbOUtgVJj{jvSc_U+P zpBCautmI~Mu{a(Xhk9MyMfK)(JbAc<=#ua$Pe?e>B;jM2jy5;6vY%V6`I%}JY!?`YJ=#VEzwiL7S zZ1iy+<(VB@iar^i@`8+au7wzu|C7lr#fyBtl{p28G0nyLg65B^#Nk5q7?0ol-Q4(iE}0DK6{qR3(dsLQtv=Bv9~mP zP?=oUOiU{C<~9@C%hY>nUoJ;B6XVLgp3TJO^5)dMD3=eKqIToK#oJWz4Qj^Lksmb` z>*{#xnu-f`)Om(g%2`dt@=9-HQ*o+N)%33`?==w%>U!szh^uw|T}{N`dJ@*&ih6Qo z6LGwrH=~K@R^O)PV10L56LGPAjB@t|RR~7bG*qqa*U0VNMBHsua=oz_(0IA5?Vsb& zW~HlM&=SXS?dyKe1a7tTya1F*(4E{yM&bggv5jh^90!K#vvr&4vSylZ6_N|-0=UYA zm==zF7#BOj5@p2;VgClG`LH}n0u|eV*|*(}F@~MBoy{cOcD^|b@dY=wJb3t(R&td=?YfwH5u{bp^DczC?<$EaY z!4(gVs41m6-ogIHNcH)t@9+Qb<9;oEAjA)1M5KP1+rwj$F4{@xN_UZ`yR6%UkRBN> zSk!4DNzIm!b0C5%CdNJx;~tQe%k(ag>?^E}IvV!(L;wprDm1Hoo?OB0_IV$Iw7`57pKn^nE+@)2G0QrF~O7F*x!4%Z;m(> zb8rt`i8);NZj5=owoP9Z%w*q>ZHeTy^hp#IywxhN`!7fD1(XA z&6Ecb)iJA(=V@;xC{MJimVqt~tNLMK5F)A{F*4Dmj%zNg$xV9UXqI9M4lvt@_EcbL zyRQX&#=K4#KNO+7HFTBTIZld<5Sb?57w@&q{w5gxHo;W;Ofyyl;YUrehlX*5TZX^+ zb(Xygv_-FrwXAqsi{qxvXpe7aHHw$OqFRF_cbO5$*0%IjGDkJ(+D7qx*SALGpj8d} znU1{PN<4Agk6Ve+u79Ex5l#CL^GL*A-Ab&C$a$@hj`gYOB!dsKWB91oNLUuV&_?w2 z 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

d;3fH-zXpE%-6qGT!peX=9&_(XHX^5aHI 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 z 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 z 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 z

woP&&zXv7|6rUaHaC!`C14T@2f8-^D^Tf0whjo6V}4ts7M&57eS1akyGhGH%3L z`S5T9t94x)CK7GL1GXwv9IzdBUri1hwWxgZw??nkG#j)a_i2kmyfZrw5Tnd8LGwbVT0^_j_kHVDC^oJi{@PR z>hrJGvpqdHJTY$7_Ox6^RL3;a5m=;KD)9*LR$E2F13Ij|{8ME(EMU{F=3kI)lDbNF zK#a|ZzPsxEGJCqN+?hYh|%&I3SyW>b=?Fwuye;crf2QJlUoEb5c8mGiO~z z)$ghsn!zxDOUQMti2RFw;e-sk5^`NDA|u*ic3sK zi)ZWU@ndtWvb_)CgjT|8v6<&QyQ?UF;R-2BVXBL`corE&$&?+P24})hahMDeOM@pwm{)#q+(}AHht8)%t>=oam7x)9Ihtj|rxQNxS%xu262wyV+v%H6n7c zD4oYkn&3gTIKhpqEU)&5YY|S0zRv6C4gWKS`-M{34(OOMb>|_FF$Q?SyB&+&>jbn8uSpkE^`2pgwp`Z zjCk%d0Feaz2R9_6%TI?@C3S=Wh$P(HEXjMP2DBi}vc?{I!>4ke!|KHg^=Q=*LE?{5 zZ0E22(=vh%9EVHtAv+(b-FkR;G^~pm5g`zerRP-_Y8p17rgf3>?}yF4T8N_&0?4Bg zLipS3Y)9>zvyE-W4MBb}Snw+-PWLlKvT#-1Kp$IUG^bLZ}3B0ApI=f;t zbli|^>bQYu?bP6WMa~-c*@Y$}2&v71l}i7ZZP&1Ci$t_4Us{L`MA|vOLYizks$_-J zfI~=)4xyW2V{Yny3?h@+Rfol)H0HtQBi%0Ad(%08B7jeKt~xo&;asEa~NHu6K?S*hXob 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�G< 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 ei3=V6^!Q-h!tj6S&;JMS5pm@J literal 0 HcmV?d00001 diff --git a/mybulma/node_modules/node-sass/vendor/linux-x64-111/binding.node b/mybulma/node_modules/node-sass/vendor/linux-x64-111/binding.node new file mode 100644 index 0000000000000000000000000000000000000000..b1ed682e3bb43d0dfe1d1c72a33a80dcbb583538 GIT binary patch literal 3473024 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 z%0ApQVE@mLsQph^u39Sl+aOh$r5a?Z_LPbR?*yr)TB;6~>SI!&Vm7h&OOgI01W;)^P+wXAk9CUn9tMk8&*$u*a2YxoTV8 zxmI^I-1{@Ep|Zc%BoM=wMyt-Qmg~#q!B+hp8)ay(ydc+omaB&4njXisT)Dajxtd$9 zA5gKF3wMJHvM&l!rC6#ZmWto^^XJ(BmA&`MfFGMjsUKr4*U2jTlOWYXOLdE-+PO?D zm>r~g!csN2RPTezZ@~{m!gYU;tDogcvRo4=8?CtqC5YbU*!ykvevsJZSKWA0Gh`x*zl-}12P%C}sns_f5#REsUuZI65z1^L6S+$V$Z94oi3l{;t2vE;r#Q37#YkiUg1_v#?L zu9dqE^@(xd_x%F#pQnYZp)BnZP4auFzOCGP^y0JbLB!`(#Aj^~UIIAd)6eSL_O4j_ zxRljECLF->IbcZxwPfZ+Od8h`XlRQ}^=Cq9xU?uy-ZoFso<5eQ*UiTH{_8%?S{L?i_Dy$%-gNzldR^a7710aAXV#_ z=9WQ3JS>Rfp$Bj{G=V)K!Z$Dat;#}Wf|qoKy`lVffksBU4^b3stg z$=1&K5Wu*!f&gg!8$}rMw6j$)J4diV6Ze%CD)*xx$9!;z|5ony1tRz5Al0OQk-M!x zIEDu~ZnAQZw{j<{+-rkWSN)6J2`cxjAjk1m?p)M3#-WMI-G^f6i^G=T$Bsi|mAf*? zF&7++LoX|L^L+7YT97LLU*vAg7mmR}j$T&oU#KXwcdW|o7^G?>a=qFryEt9y9jng| zRaHk&cYRLp%2F4ew5ra8Dl-;0vWxRYka#JGqhBP>l+#rFi$RVFR(xYCe#txH@54c= zJ1BP}GV}F1v_4SF7Uv1a{TCd|ugOYqVNhhURs1dr5<@88N5H3Df>e?FshG9wT_ECW zSsNAnhwQ*7s%2*@!J8GL+ zN@e||Klf8AwoJMJZnsP(&BEos?;8ycXqu))Z#Sx<&;GB6sr_TDCdX>}9&oFv-oI+X zsBZXuMMU+fpy*LnbUiD2?mSX0iOTJitl2~LPu^bs$YFIy`iy6+}a7D)-BoFR? zu=jV{`_JutUwi+)z3*)A-?sP7?fp!9f1$m9!rs@i_mA596YTvkdw<|<)qk74|JmNZ z|AxXlTlnV|{;GvvZsCgw4=pPfpZV~qCJ=OJj3sm|VG#(!L=3cu-Kar~z(^~(n}u(% z@LK|sv*qQ|hL)zp(zF1Lc^Nm+ACdKAeBYIj=Mj)z3ly<+8g{mu=h9y8Y;zFDy1M}Z zFzeU1biZe)UEC*DMi?_i;g3TT;8QHT*yIupBhz7|TD}#=mzhC;Glu-WpZ5s6#AJ$`v^jQ0 zno*dRWZDSrK~ptG%Z=eOQ=hc4$KNHUhR{`*EpNJ!)2G<~JgTz-I*P};zv33P%`5_0 z7;nd?U3uWj@6z(|&6)*>Sz7*qvSR})y2UsIRAbbCN9lA3Z{uFLC<|>0?dflW`EIn znP2afKu5)sAf~pTs z5f_pBvE*GXTz=Vm9~auGqz#p((D=eFmOgBrp}3!*11TjfCdu@VB-6-T=(t1q7$RlT z5Zz3^TPaLV+41a6iRnyWx&=z=!rLo@7A5DO0RnR~tcsizM|wg$DV;ZsN%{k>V9kb; zD|!6IXoNr1w%&1`e|mN=Y!(B>l=cF>GgsXYITI;K(;=3D<3Jy&qMC*fUlcoqnQI0U zxeG{tQ(jNt7l)DgUO$Vx2O{aAk$EcXJheL3Nay+N@-gb?wA#Z&c>2ppqTel7VG|hz zRkx|Y&xrKp_GiSM4>J&mvy$2;McUySLT1O&%?2G)b?BUc#nC50`{U7677lAjA06urcb|cq*Wg zdqpk9`%!yyfXW04_R=5k3Fw)RGAz+ZQ{i);HmZZm$W=$U(w0DAtXW?Ig0UR(DkTPS z<1DTRaNamxZiWF)hnfS<8QRRJ$?H^L1287KirF|&sdC4thH656&}1ofq^7T42c8ip zQ#{7)ptwRSj`foUzc*W`Mg^(v1QllC92~2up2v@==QVD0g`5^a2^UyBAEEeAPfyiz zdXVbxJFT7yQ~Z>O*^Bjt&-=|FV2s9EF(*R|#XUWOe=E#H{3ZVPR~Xwz>SvjLDo58X zw%_SnF;7t0#~DRqvP@GY%9q8B?R^EANH{atDx3v@n2*(5Srzt#nl(8~CQjxr%(L-! z3|~$?Xxq0cg2kPBn(K%IY;yaj5*FTM$Ti0oP(kwV9b^~RA3DVgqU+N zLx_#dnD$)upny-{#37c8C8id@jL{D-3wl>z#4a-ju}y{HC>t*9GE0?awM-0nu1HSv zmzXcPm-RzN(e-i`v0LH3^uj*nW;vio)fS7Q4QExo+-POHtzYsr3ock^p zXdlBpRdyk*c3>FI>DygFu_fkuAw6i$p>?r&U72YU5LsdxS-Sl%(Nq8P!(J$P-3xc4 zbF(~nox2s_G-8!<;CO>h7QQicfr;Y#Og!@7P9RPN3~|2CQG}y!?@JO zXNf^rZh;nAPv%V%(i*jWEmg%F1~JKIqfF7L%RtVgUepJFLvQdLQ}=>jlMBwkj4?eV zyLDWY;yvA>8f$<|GS?2GT&z=z^5)<^eXZ;^5`|0h^FPiq$C^~uLX-qLbPMf}^ISY- z-np9D@c=b%FOC)(VsTp`;R1VqU6tj938rL_s|%8KrAbzdtr8MQwuz} zs0KtebCL+C=w5i(v;$-04Rmtoxk(rwsSnPp>US#|1kU^F*EZjwC-VxtkJPVbKE*BE zMn;?C$Sflm!m;oL-0X%VJ$E)6w^%^(^FDg^V}q2$F-uIew`e;DYo}NbtzsN_!ghZP zWQ=OFVnjJKrY_zUD#7yeIe>AS#8-#1&mh76+d$ZQ=(_AvO-ocRGZGZhpE1thb%mS( z=(Jh7lDI|m3N#haOoev#pmhOltkA|WsPAi@XA_t=bX{&Vj8h`Ta0q!wzj#38BG1R< z{Bw~>W;ZHL zoyBM);B1`YIQlY6KOv5Oj-}5ceaPASM{vGZXwf|tJwzs1-gIyX(IKZdXKdbTxy1Cc zY;{DNJvXQi@~&2vaEkO{dy-Zaifo;x5^G0)wi9<`HdxyyVwgZFFAOu+5- z(T*o@d8~~p7JyaHQF82f(^Rt;B`*35N67O}pdro5HOI|HlnTZ#JVfK$kJ>^t|CD`# zW^*mod`mUNQZ-Skuaqj^Qcbc{oh;Rwk!cwJLszZa- zt}>;%U8zpDRCO%XmzHX(P&s)=*sAU{z052aMitI|0(R%&C1yIo@O>b-bOopT6Zsb2 zO{FyxHalW){IlrG1f5obOt8%gWV%JBh)m|G%4}@mhcL8g{wln-g>Q?4Ct3J9fy*p> zt4x)#VBd*d1`L%g*m?E%uuj}RB^>@d>*GNu$u$drV4oiigq=WpqvkiLn&i68lT8;O6x{^9O7xxVXFZYXR7(g;t z{7gWl{U`}vD5c3u34-r;Adk>*K-mIV%>|lSLQ&aJ6}eso4G=V%gR>QU*^T% z2eOjbY9clo^F-Hg;>TM`Ut8qxQD#9gF3oe)k!^ueR@JRXD~Zp3h#9CYrLCy}x?U*V zcBGxQ9Yua~#byzVucdg{FfL7PYHx}wo5`Bw>is`MfIE{^O|lTfu?a{vk!1g2iq=f2 z6vB5w0lgYM@w%K6i^=$yFpepW`u71x|$V9`8u4LiT z6ayQ5(MAB0Vs4BF0)aHwK{Dn`Y4+WJ_a*N+s8?Lp6z8e|Q}{RJM6kzbvm>LhYJKxX zFOpT5lT?cH0yaNmPe-vye1RC}j1{mO{$g{og74*4srOcX*!+H%YFnyZ>sn!RbFs{P z1#}ccq0=M|v6P6nWqsI1>}(%r=fz^@F7pMeB;t9a_G5;~R$I(zMpC=(yScy;(_es2 zl9(#*DA^Den@)=QiTkb?dt;Hu%bypksD3{Axu%BFFB1BqYBBot>4nFcgP2j!vK8z$ z@kVSWQa24;%gW3e1?Kp46q^zNBgjFL2QkkjlJPjnncj@uhBUG{PPN#6jy&G_6`rw; zC!=OXE~046(hmvnsL2J;w9X@NwP_j>0r?Ss2`Mw@P%~WH`4pq=zHO9issgU}K5@2OyqHZo9bv$i4Y4D*GgFrW?ANA-Vh?LkVL5br zDl6lGJA`-rpHgx-+F0xWVmAslHf=+^G6`NuFoIGTrr-9Z0JY^+pm=P7nJ@rCaW0Gtf3yB}@;XcQNSM5lQxCMg zqu35yKDouNin+80`L|+5V9K@f492h==h}n9TFI;aDlr}Um{U4Rh;wPcL>j>~_MIi% zqR^O_Mz;WQhBcpB>?)%M8UD7@A0PZ5G*5zf{seI3Q=Ll1$ND4UD7z2qo}`mxZ`Y%O@0j%qJW0<&!3A?!Ob$FhT~i~jL8 zy6$|;*;lAkVy4b8Ze}&GkxyU)o8kbfOQcF=4KqO$T?QcqBHoS0016l@;{5^N18L@7 zfFnzA-3k5MaVrIu`WjyH;Zp^# z^V)%dHH#En?tvvAW-8d1R7s>B4{&4yXkqcaP#+igK}4f^#fKo1@Q*YE%XcNT`ZAJ? zg5)?~YZ87LL_*`AQECjd#Q{_eV73C2ps6`QwSb58n?M-b%~Hu-$cvAO zm>)*VMc91J3rIUWfq&PUue*S$<<{&o&Drz{kkx>6Z~0I58RjHF^p$ZGM!uW)P2g@b zXH!2t4la~VZr;x{XTrAV^Mrq<@G#*|nxp*zpAe?_fg=8Jb_X*TPf7gtPrb>#=U|jY z-^T+a_V)lSF2W{_7qFk_5d+rXmCM!U2A?(MrjS}cqSA`a^l2Afg>Ocs@*2GL$&l}S zpS810Px4L0!>2Xo1VOZ2(G5ejycXXKxNb#vm1p25kNCAJo$1PGQU|DvmRquSGL>hH zr=4p}wrKttn)&=YBh-%Rs}qc0P*yN=tQ+0R=3I`+KeG6bza@*q?7Uh;S@ZFXDwo5K z=$Q{bWD#dvYSSzQ$V^3y3@e}^De_j=<}WZgW;B4btO_iX2Wyw)Qcl~KW4_%;wnX3D zNhPcMZMfCrK;?aN=h-ye#=eO4jm$87-`sI1(|!?4e_IK^fY$PF*b_yiku9vrB~lvf zPsq3*j${2~Tn1iGb@=@^strwMg@p4Q)7;NYlo~#-z`4rM6;w$w{Rxp#mAE zLq)kXK_|ZHAtlIEf+=ELQCJC-%O_#2Of}KUsI1Nt-_wNU^>cZvc~C|x#-&pFR@1IP zbpFpGqi;x)U;QZA+Lm{9)A?=`xr9yL9f(+ym*-P!>?3HiI^s6g4>*h%Gvn(pWNL``Fun(X!6Za% zji859H$y1v)mL;5_m{$*?ky{_FEzu_73G<4OWCDDEqM_<`q)z@|5g?pYpu$$< znrnvRZdH)y-Z&n|+-NngWG4&Fs157b1v;1{>H9oh>OOh7oTMSi7)@n&OR6Ri49N@( z9JIbBtdGu>R*B}CcQLB*;{dD8TcgygKB`M{r?sfeJ{ud7yw?p$UYQmB@Xx3b!h#?5 z%QeF&NPbguAOuCGqc(6S!qQ?8PK8i$etsg|jq^f0(*5T2+Ns24qq$pg47Ao_UyU z)x|(#Iw-pp$^#)5QmK>pl`S}fj>R%Kej_rv2xm03C#+)$%!A(OQ^=?}xI^b1qRUu|vCCpBXxvvuDV~goU45kv7v_rI74lTo6 z;(jzgwnNJTKhrst^m%Dzb)%ay@Ywm<9MZJbDZ-<`(a{qii@g%9HHFQDZ3_-ZvDWHK z8KHtDird3KFhSYo~# zwZ_T-9qZ|x0MsXKw9xBKjf8kIvju)-N)+7^mZG>~#WfD#_H#ZHvb{`}N?yb^3a+$7 z6iKEf=l4QP%?cnQGQUg2$?rQ9Fq-@lr41(^nVIzKL>Ezr2ffgK6ejXgAmve`xgFB+ zeFqliT2h!x%c0aOcI|-&GxMi8_UbUt(#cC{iIBNo*HP=k0CH}v8!3(e-CeXSVQ@=B zq_@~*hCf1~@(j=Y5a`ms;`;B*!_zIe4`F!%oSHC-vlrc^0CwKoW9g}DwD<5+Gsr5Pv(!syy|o&YDepnuo`7dPFw z98Vn5aiR`{dxX&~3_r=V-+JnPq`2HpSo$f4hQUQHu*lYlkk479cb@wL>}c)65c!BI z!f*qBUG4W+@(K(DT&>m>!`(qH16bScKVWSOJU2Pa>D(KGKTBowkfQ=_x7cE8f+zYl zW#tC^JdABzM05`X0H=jQ0+c-zgS44BSm3q6W4=TVM$ZHl@3=t3pv0h=hr5wTe!LJ^ z$-!80nj!M#hYo>LKioWfoH!WF^{g3*8x97}>WbKYiY(vXXrXD+TO`>|8NRhz^i+3#gA?|Pke_F zKJ-X^8EF}gjH3MdJgTUJ>op?E31iC&L2X@o?vm4VCUm1 zIujbId{Jp0+z{-MR-mV*o5|7zH+F`bQHXV+aYTdjoNOd|o1%|l#FhxAuJ?JsV|GJF|mXlKWVK!a@NenL=C zaslIu@fIQ)YDX*PpO}aos=*h-sk?BC8H`RBr7;W?W>Sr{v3n_1DuH$weBQJLFdAmF z)kU+VLjoLa2%v0&$ag2};0|X+VH=8u`4m+m@&I%9c)%kVe&ehKzv(VOzb40g1t5Ij z;82-kaV3uAeC{oq89+o<(qx1tlNBluoFTH;=++AsWb-00krnK2 zA^ZL)zheK9)VpQ5fb*kSJ zN-93~pjcAI2MpeV@%5&FB1k={W-Vy5U>lOu=0z(pCy?vOrU7Yj93Jxtl{x7rsd-^q z$i%ZRrj&M8*##qM(n0gtZTK5nz!K9f^fF!S-ty<{Zt$PiI%)k#t7x5|l~t^jZve{` zR#QlXt*B7k4ofaTQfuO6gsRp@n{aHx-es}u=QSTn;k3qC zKkqZ7GAH4)n{XA%{k$k58raXPLwecIL;u67hgLCyUjI8J#e@$TbzE`G&k6~<1E^y* z2xM6ae!vgAer5b4C1Sb4!wN5s!Cz5$mcnym@JWEnDgI^s2$Oxm9HmW-0knQDYZwFc z6$(v~uKmS@Lug6UPOmuvnI?K&jn^0IbqcS!|BUtvR(2szk zW$E~1`dq_2c%ucbkq(XVr+dpkk_%ePvHfMdS6QXXnnFO)vLyU5b1xNrhNR-&3qrH3 zJO-Em0ECwT0O3pUM}&Vxg3vPFE8_rRloK}Qm4@Oq<~ukK$3_p0Zj3&as;$smC`VUA zVYJ(-^{E3j;?3ct^|$TGLc6S-!7a+$#y=d-&u2V;gZxNM_K^U~w*bSkJ<5_)Raj67 zRsi0;@TX`=_ksf>(cAF;j8dkMq$sbhrCe<$10G$DD$@pY4|hF)_Y_i0>yDJ|Oj?(U zA>tqtm5B+|Hd7ZUJ;mgGwK6&X2^4vg26>Tujv}6+$@vcubqP^}aRsB2^Y2H%XjlzG z@4$^fu^S@LBP?(z6+tnr0Wdp=x-uSBm#B3_)e=;K4wan00Sg=RGKoIMmHv7#*9%8e zBK(k~jl^0pJkb6u@-?aQbaa<@~LjaIIxB zo(f4L<&hm{mYw%lwjhHh?UDVEMOoz26}BmDC)Y^;ael!HjZ55n2SW!7Ellmwn;dRthZsgQ9$tXQw-}WKeHZ+?Pk8Yv2#6LBgGtfv? z31nct{)xE@GNK=t+wdpS76deo-}HxpnKaOWflTl3F9Y3lof>hN6Uz(+A5Qi3_;GAi zQJu9O=dii6o};lpA`=_@w28!SkKAc-6u?#mu!eh;@M8iIn_k1j|HgvUmCG#i7La&G zBUzc}u5qTQ7!HZvoI1~nIR#?4n$Tf-0BB4@P*TGlj0!OnPGF{3_(p+u1`GG4OU$8b zXo=HPC$`lfLfZ*vslFGK{3w?`60%RQ)+oz)%3{zmZqtI>yrx{+q-ilG=+B6mFu|~^ zpXle&7uBC*;i-UQj7fqB1V1>&Jljcdd#K5dip&8?m>k84;qG?_1kqm*x)|ozWT!FJ z)Vz(Jd3B-E>}`i+K~x!wG25k_(5Z~V6U^PH$>P6j@*2>xEF6~VBfo%VBu5&H&xD5~STeV4azoGf}ufq)ecVx5I% zVMJ}n#M+F)aqQOSd8KM7w#s1{2DLg&jl8RFd@m?Fc|=Oyr5qmu47q`n>!j8nvUA}B*uqZ<+!=ym2(+)yq)7W)9j&25*f9Boay3br+^PqFWyQ!rH$omWA%ni)e7^T zO4$sw4V$ec61AI!x%3c(yU~$+c6`a3-0ba7}kxbONEjBkMQ< zExQKH$gPfpL`YSbg|A=p=~t2WtRGqtB4;m^QXmU7xf5dRg;s{g{onv<=EURT;*t zN@(0~SHrjqX`Fg^UL5!5#GjzX-xSo@kviQM#=JC{P7byZ+?XJ4c!esLILUI09Ts!nSg z1jU^OabAm;nPDJ}zG#C#3pLD->`6KGAjc1EBT9W%TuQ2c&_paQx5bG#jmWLqep6X7 zyqw8{WX3V(&h};iXd0XuCuS{C_`X9~oTu{ukL0TOX%bwwvCGUe#0^wjm#_XM@IzGi z-|Xj}c{?uvJLZS>I{}z`A-1`utrFMzfR^}P?$ELBe8nDGEm&l}+Y>W!X^tZn+3?XF z;>|>uJ;u%J?wFj z-$HMSnF6r9qYmq(N?!vB{EbH`Qszp^Lp*pM(XVe4cBUeW&~kp@2LMK=!P?&6#?;HG z-Wt|2Y&)dTq|J%7Aox|4C-ce#k14eH;LMy~=S?X(cu-qc(3R7RuL2;>; zwVJYCEImHI)F zA9CJTI8IJTA1^VB0LNh@9ctK2W#%P-=-3d5;!@$II>P#2)+;ZsPd#51E<|Y}bsJHP zFHXn(~K0VSrZny}zKNovd*+&)%pt{@85AMCGx`&*&Ac+Wi$SLg}xLjS-{ z1vyJWi4>NyX{qtv@!D!;0}1eZ+fv;8KhBwJ-UEuJ-+rsgcv!SKQPnP_S(@9e2PsH*_P}h zjR~8aBxT8t75aShdQ%Tf(eB#Au>=8$ypP*4%N)9xT+WT0`gkqb;aotqUha~*6IAt# zs;aB1G9@bRqtthW-hKQGLPX5PO;cP8N@3X~mAZy(PqQ#l80^3i= zehS!9s--hAPQ?hQh%ST&wSAt2>A||oD|yC2&y)ZjAvKtoFJ?W~6p=3v10YjS%x>{Q zH~RE=6_7>WWU`9c!vg}tYw!vvHg_msf(3+4PXO4@&boyfoL@Y9MQ9V!qv3cS5$I18 zO_f@t@cT!gh`#CHPsF})b_KRvawN(*_D69VYJGfIid>Q4M8tZ&D|fS$F?qku9Mw`Z zAkLCGmx%=#03#COrJ7J;iim=deZ)x7+buMQ!(z8kR!-zTZS5}0g)@htRL)$}TZJxP zD5#ALs-W}*^Ja>jsaQURv{-4dGX-19sis-h4>-K|1n`Q1wuG z0Yg3pNo0f=DlgmG2~)0lhrD=h&JoO}rdn9WTzE#X_8oDVAG62qBRB)v zZV@&?*|oE~i0J?fzbBWFtpSj^^1gP`$n#)SDXV0WK21`iGNIEP!M>JDc7{5#74lPw z+YTHbSfbd$xS*>a%6^zF1o{+k0YFf6&H^ZsDrg%(WIds(Qn;%XWj{ZT8bdTd#)~tg}sU@-yjB$ z{4AzTrgyj05^yu&a(ic)Sp+W5`hJz7<(P*o$qv~t4mila= zPeVs?J|+`#*4<6&s$4tV4QH*WMSi2t)KN3ckYG` zZ?B=u{M-;Zg-69scR{$($u*w=0r1ZvuXKr*swqs>dBh@i4~f)DTfAXP#pht1gYzT~ zNz5$mjVzKTi}+doS@vzB&Ia-XFXt}BmV4M#O8kKX*r~Yk8}*U0G)e5l8;Y%wSX~hXE~A!^a~3uzV@-|s z*^jFs;LUF*3{G!wa`X#HLA3jUp6^$w+8N5sifg@;I#&zWT$x)Yjck-&Bn1vp6L+y* zQ>J+5f8^d<$myzBM$(EzRlxgyioFV%j=sLf!`3BswqUvch*B@}s;^j)kQ+B&FMoM> zp^OFTZRzRG&bJbJeJkaFs{y#^eGyq^X#Czu%yJ1>BBPXK@kfyAO;KND`GT}Akm7IA zgWS^!IYw8}NpQfQmYaa3?peKss)Kgojn-qHe=5QFZRT_LDzsb`6P#J#w5rm%nXm`rFuP7ewY#UF-B7Uo&F8Yo%8I@r=C|-<6;snd#ZJ~jlj>n}iS2APod!*Cb`azK&xz`nPPFEA+Syn5ykqS)r3@o96vw@AA$3zNA z4U#e?{ooU+UC#cw;&!~$q2#M7eCRwl;-aTKpHrq4V2YJ#HL?xOK+LPsRlJW~nW7Fw zB2GvkPFP~@9Zyc28iTpgOYN7IqSyy>_o=R{EbUXG(=3lq+CsuF0~|&S!oHZ@;^3GG z$O-h;H-?P^HNa=`!M5*-$kEdvgm16HBR1NLtd>i)Kt%bV!|Tc$Kx(NTmeOaxI3Ww$ zGSfg5*k!z3>{cfXq1tqvD4z;}e&u5+5wjMF6bmaBDnDGHJ%aTUIF3@%lHBfG1sq@; zMJ%k?ye%;2I(>dL2q^86Sj#^{6twd^B3$o;tn$T(65IiPunPGL)yQw(_WvLl_fuq? zku8!al#gZ ziAmzZZLIOP2EnxGg-8=7L1qo|1P==f$wVRNfBr-7Pt+WRqUZDzem zdA`hQq_Rp;bN#`ajX^wuH4R^pTw_k`LR;F_#Rq)#GE;h3}7;#+e zL5S1iV$0hB?SK6_dZIDXDij+i_` zibOBB-U&qPO~;?FWyE4{I=*`{Zewpc{@I2yeJ{5*q)d6!QFLzVM10#XV>+uHOJ@Zt zOibs9pw5l~odxkaSwB@L^Q#t!@paRZ>~7{}P}1|>Vuc(dRnNytiNh(j)?=n1DIU;U z%(li9<8~l#kt2;Tma{!}cBK<(CHOijPa)Z}Q|&}+T1i&)DP$}6k=)4FxBT}>OIH{< zj|h2NWE}MP^O;+nV;f<20t})P**)#*@x+->oH`%_`C+_Tn|7=tZoR9rKKc!8-u@%Nnu4U^L+Lu8P{~ zYv$XD3COt4l~G`h5a;cO$<(y5Fchp)92?ecpF&duxae5KyiBn=fNR+2nFHqnix;>2 z25$!plep+xLGUL6uADgw0H+_VJI7o7g3FOO=A(d)&z!r3rE<)BkT!A5n-cXodi+{5 zrK*nZ7nvWLt1(`Jp9(UX+39k6S79b$K*|U`nu#g2t*O79BNKou9M{DQ!PDD`1o>cw zV?GCt+ueioLtMBfF#NB$oLlWMguF(7bt>GVbq$ zRY-qGj7A`H0NT>6SJO>8!ILpN$;95ewfZV5&s&`pEvD5!x1~CHNXo(HZBvshuc5|B z%DAQE3@nw<(eeE-JS)IXEUz;Pv2SEMtQJVedZth>PXr=OM5y1J?Eq(lRvc1S z*qh+WX8@v80KQS-Efl^;iLKu(jcm@N<}>>=ssS{cFo@8c@aw>FG-L+py0zSqeUWK) zm00Gh7k7%LgJv4`IvBJa9Z2DC^7f#RCYMCz`8WE;_AW9Fs0tq%=lJQ4S=CAJb@AkU zlmxsleipp1fvW(j3Q^mL`cvvfEHKIWEInooQTkImKGbJK%_T|?2>DR+iF%T#IaZ+8 zCvyPC@p>C+n>2R&Owr&VI&WM|N-1QWOSi9Ol2^VmzleR4;d4L#yJ5uAyjKaqnb+5RPR+ z=?|!|S_*mgzV9o(L`exAL?CV&XI#^xyJa^EepYSvSO!UZ{WG%nl8r2d; zb!$Bv33L>{-Z1(KkSqpybS^?bV6Zk%qoh1RWJTA}#*BcC$@vda$w-jt`KUNs@va!Y z2W+>If6#G_TFeNB0s;LPFw=|%e9e$e!`U%dSC`f~=6ekDFpGCVv#P3DMA#u?esj{q zLKikaqAErU(b};xhQ9DAfUGcj-m}7VgLdZWPK1Hhw4sGCqXx}rIh*wfX7p7vco#Hd z48$QiL|8L;{tYUn6ufP2r46s)jrvEXbKj-ePp|TioZT|*Su~*P^}n@9WS9z_JaFr6 zU;~P=D+)RwQ$2o?K$$-{33&b8Jkx@-usxT9Cf?xR6)Yp0@R(6L_f+#aE_Gg%-;DCr z%;(Kw!VxLk1*p$mqD})UmKYjcyJ&FCW5hx6iK^IKAwpwK;F#Nlc{0<`riFK~q=VpO zHf;`6gZ@Pf#`M257-yL6m`i|3a;0y5;1>toIv)JuRyo3Z?lcMSxY-ik6zDVCTi88| z7p|h9w!QdaOWCtncRB!x_AKTB5!*j#!U5Uav#0{YygiFFG0wMVF_JQ6&q9h0qJmAp za&zu~v@raHw#NQ8j-jAT0E7KMU>LhkfRP_H;^tr>5194NGC!XRBo3;{WX{Rr6Ay3e z^+pWoxWx~jnIkA@0jY0+(W`pcC7n)5P%}`}`1I#l#IMCaIqi#gRvuE(b-nq4ng3@oBVzrImPeigrKV7s)~NriuZF37z2JT zq$Jq&NWA`O7I7yKasUmzUm9SnMRWxMex4FkzW<>5IUTvggJ>>SH*nF<8m>F&M7fxT z=PT+<2~^nP_9aNAENoCjjjYM?AJ z<$zcc=)$w>6&`?R{=(*M@*oNiBKHHrCIb--${$P6N_{B7lq@z`2jQv&>u!N;bk?j07_JxU*Qt^f*mX-^d{0JoHR#zXuIaVk%Gu z$@#91A-*YGP0Ki=66SAPNAgr;{Wy`+t;m5u)ACPA?ye8rrQo|(#x*J(YYrDP!(ti$ zV|x!WO;0zshiEyYX+NT0*s+DV%!A38UD&aqISVijxj&+T@t3bybcR@_Bl}fM-rf@d z#E0C4qCP2RA-WyqDX4ujOQ&(`KnNcOu!VF}E&Co&-mXtQpv|_0p6;0{)Xv}XjM9BO zhQ^s(Vi4|h8Md5FLgDgKy17kw`6O@+_WmnIzF;PyoJF68wl^wMHwLwQn*r$MeB$Pn z&Dr~G&E8?UQUc~$&R~&XJwvzJdji-oR>k?2oIi@DoB=j{kwKr$RpI>suEq3zAL>rz zXWoaLWt!CrK?vzgO2MxiluCQEe#Y`f8Z^6y&!$v{`95&O+0RaIt|uHJJO{P{ z&smA;#YX{W9T>v02_sFCU zb5yOY#b!O>5dORf;bY~kBH&%XSz#V?h3g!n#LRRhgVNPD5wPeij^W#OG73(0Ji-Jw zwaD4tKPxcxhqPI!B-D0soVEd)DS2a=M=}lrL{^J;~iV=_BbL zI-_un4rY2bw_}!xV#^FhJ;H?o+!NQUn7d$;_^`vAEZjUye*@Hgi%xM!s+2tLr7(mf z*SrET(QA+%>5?k;5&RQ?sy;}=eBn`5cD_Co9wZqeqgbxFQ&76yC_=U9cOw`U zz>~IS2`DH&i4$Y}u7J0;|4s^$^N+3!azU>#Ehr)D7_cTUE_f2xuxLWZdZslNg6zLL z&V(`V#AX@=16cWbfSkX`smEyTpfJfi1Rc==Y)@?E(rqxyTByO)P-;@Ny01rbT2>*X!qJ6)Fv&CG~LD-}Q^YjFgTP(X& z!D5meCD)viy{_Pc6gj$~%Kl87C9v4zEc_uggD2soNl6m0?=W~ag$zoJzDV;9{= zSVG8Diujq;Cghx`E@h$VtiyHb(gYFc>>Vc#r+U~FVuvX96y?qIu<+oh=_XhSt!$*W z!9D>r&3IX4rF+zSaB0pXwOyt6I!gn&xslj*FF0boL}RoEJ8SL-0451qijrG4z99NS z7y*4lE2HNV-BHn}RYpHUbbUo%Q5iiFXvqEgCHSGWQYw$0X1;;EbQcs0K*5$#^Z>@B zh4Q{YUhl1KnBADzI%K{d%wFcJyT>Wp9m-bjg^n$4b|6WjugCLzrkQ-X@@(^XB!lLW z=S|xUx1;RHQD`dzS*&^sK^6G{Jw9G|mJ0u3miQ4bycgNJX#n2_Nn8+`5{=A7jN}83 zX6z3V(FJkObf-l$%RACM@Gz$R6KmY2xz)b1vJZiYlqqw)%IMdWv07rWg=EeHGkeOG z@5Rdha4qHyHwVzzng(VXYF1?TKd=+KGe-dDN9-GzPJAST-yM)OobO`-7*sB%{1X`8 z&^6Lw<>6*;*1o*8b)ze=q%+QcB~V$67e4cnzXJ+PW2)MOD_u1e^~JNXZ)MobBDy-z z7*%Vg3;W>P5qSO?nyjBs$^Tzzs50oA)tNUokXC7nyn z4bal9@Bl};44DjKIUjq3`kE9uF$Zy?3DVv1nWci$;mHa(t6#f-pX z++oA-DLp3fsYZJ>dSPO3SL{^9rg&IRqD)7{b_)w{Z4aA8Yy-t!uGqRBb^x&_Dt3a* z?@Jqc*i2$0vO(qyQS1N@n@a2_z(y`Y>&C}qJ`mARJajstn8pRuW*miVhd4wovOR&Y zyGU>&6Q2|NLM(>lctLXhv&^gUtZ)-?MfRD5WD~NJrrLHujhlrn4EC?Hu%3?OD0TEV z5U^WvVyOr7TY>dht#=-9U|?Re^dOrguh(MT4{(wPmXcKhu>2@hyt~g6@wHl~vSb0K z!bSm^P=9j%HU@ku%39zFs$J`do(Uq0+o##E{^7s@L;d4GYAJep>rX>|%cOA*c zTA6)ZlGMtl(JrW!MV(kH??sW*T3o4K-ZYN&vWUrzdctDWt%$ErBVsI@JsYNn+7CdT z9L}=&Fw15J%VtkVoSX%+Sk=UKJ6bvU;zjJSESncg;FB*dN(CVK;>nHm4`nA;U!)~< z3`%NuEvb*g5Gkn@<^XCVGsi2b*TccYQ7+hx8Y(5VTao^_Xl-ocz!iFAizZHWtVz%N z&{kH?p+Bg{c*Uyf5nEDGUGYBUiFTNm|eO>3Iqe`C2NzO)os&tlcL0C|d8;`WR^DbD2lIfQX#I zt8`vrCq(PyYLkO&*lqS;9cZF;FbTK|X22Yto$+@+taVQXZ^Af^Tx0g2tVG`@-}n4y zVSG0TqqugOFuE>w0wO>CXHTCF3QL}S9#PUt@pi;j5lJ~#m+hFF~aOT^? z%(skV=G$A0o8;S~Ov$iP&9|b)a#y7J_Lk;bHu4SM1K zX1hGeyY@0JGhvAB;%9J*9O&Z1k6B0yo^!jnX~U}K>)Qx9 zOL{tft^u*D)Xl#?FBozXCFtrG+DQjPeu?Y`)%@gf3HdFPHRKyGUpMRjK*u`{>LOzy zCo+|-wTv*PSY#Ms<6{3THj#Ae7|Y_A71>LN#sB-#uOHGk@zPK7^B7CNP0(Ufw1*4;{&~uq`ea~`HUhh*goR7LoY=VW z5H<~DX5vN!BZW0Pw*2EH<@`Ei_i~d`yA}TBOHXs(1zuieVM_#gS$&LDu9vWO;H;ny zHe#ViTH!RYu5$HQjQLi4E4&04T0wq`!?jZ%rEA3*3w)$(FN9;>bHGgD|8^h|>)){pgG`I1|K<(a+G7(`zRQKBvhG@dM@IZsIr@jOAr={wV4kp(i0Nn+ z>;=}Gmm?J+>tX!C7E3jp{9?2)^5CR`{UMfpyQSIoptIPAKgk78V^D<$NqA%g`f@gs z?r+p(mwKF=aUo~B>@t;Z^sp(!-YM9EJ=(I|)UbsRi;(fu1w)c+0*aN!G#0!0*lB^5 zRJF>!IDD&8V#Q%j$ILG>jB}lI03!ogTJ=XvyoXhnixUM&)P`+jPib}rH*4p~DHzQPrP zwP+%f!F?=2Urj3tUWhC1P!NYNe-K_z&H02+S@=X@pN)N();NlMTOYv~&(;CN?vk04 zlQ~rUT;gFfiTy~hi^^~fdl@UUn6btGQW7JmHuR48*ujAf0P<}ZeEY4!ti?@qOPswU zRO#6X?d=03f0qV=YhLgm&1$xte~<*DQUJve@(%Pd59Z1?a9kerp-u8!#hkniqV&`6 z2^u;%{|pAN0q7$q;R@p_J%m3c;*UIHPR{=gHztWhI|b{UQ&_2CX5sO6q@^k3He7K_6jwKZ>mxY* zkVu|;xF{7s{9p>w>NY%?LFD=h3V`+L=z|ObqI_^^t9Ej_0ZMaBmknJ)s<0PML1&mBb%_s`^RGg04 zlAMnReR`F82^iI>2yxFtmA2Hzvbx$YDCYm^o$V;<0d57dCwkn&-Y0@(;=s zVi=tVfwcqX=bBFpq>Rhz#S@i$ka4>irpzYVx{Xm|KagbbC+U2RBV}tO(M37 zVyDPN)&CV9$=r*HMPb-`8XHkQ6M;6xu{UdcCPh>g5fY7VMGx2)%dbFHl-N4mp*ZG? zo}l^?bp!4+Rg)yn+F*?-Z=qsqDi)dIHm5lI9I%nDphJMkY1T-w^Q+IkLN$MtUrBR6 za`OcsmbVZqVF#*w99PkglNVQQP>gXl`4kv;;BFr?n&3Qgeo13A4p8q!8u%ky>63)W zTIO%yZGv^$i$(63BhmX182!c!;`}G-96Qb9*l#~(yq_fp_Z*?81P0;NB(tqdB3hlB zQ*N)XV*cVZR8Mle$O`(c)JSI;sA4Sw(>qe&Cc(*<$IS>iP2>+Lddsb18+wZ~+Rv{o znxy{CqW;Ry&9`H7On%o2%-lcoEB}zV|9Ek&oL{eyVkrDY&){c(WX~RFttN5HEpV!M zlt7%&ePTsFhDh>?^-obPvIWIXXHj9(i6{jBRN3fvz8?k>Ve6R1Ea`(a66{{gO(-w4 zFMb>gZ6{fII^WCkJN99$GP4^~4xRyWR>xz$1V-jh@JNm&K#w&C-~R%V=8VBUw>L?K zzte%R06pX!BBcsI(0S6x3duEDR!9rkEO$2DBW}x(;YOspa69iS$``C$(?n3x{-&=j z0ly*R;LH7Y#0Rk0R8dLSE6S%NY>aGrrQx}gEN!AsK*Uw7HAV6p$!c%j1avxc>tTs= z4?e^6;(YZ-u{dv`B}Fk=a@JWgA~vin^(v8j%+)cotpk^d1O89pgn*Iv`kYPNKk}5W zLeFLs3;_YV5VJiBO*|409juZ6hx3wys^^+3Lvl7PPzLJ{Z zmgrB}^LCa#8VJwJR@Ak^>UXTA@Kul$pt78`m3(dV>ERkPkx3QMNZ2}}>KY$aw?nQTF&OSQ}O~9Y0F++*sPn*dW zxVeqG?Rl0jF}UG+38VEPuMzgsprCuvuoV7W4&)3Cn?@pF7p`+nU0g?>qh=VB&LR0U zLh>Pnx~)kpE9MXEj^QvDL|$rbUx00Fd)^G@@YDIJ)ch&8(L&C-G6yfs<<6pxf@Qcg zZwq$v6xnbrP35XM_95FZrI=05Qe52tZn3Rq?PTv<=k7eyCMQ>35XOSAGVWo?r%J(% zAx@8=sgcD%n~PvZq%TX0U1Sw?v9Eb|{})+TDsF)48Q`vZxb;@|xFie_i^96h?*|IA z`fCZqeRm?u@Y#DZX&_QSWM*TON0?3O@ln_9$cEiz(%GZ*buM? zRX8^A8p zNMmi)7}+YCq}gI^QXmPp7;ZDy*nF4B?lXSx6@4x8CRy+tC2chcW;CXkt!L2Lf~8H!fSIeIUVN8^LRV$P%mreUGh&3~prp0(Fttq; zH8~ZgC~H9q!Ml;xk?LagRz%sH1I5vA(?eB|1YEq}H^^Ei>R9{XZ9?Od^WS80Y+y8A z(&VsSNaOetak%!V-?7;g7v38L6W7FJMWgeHx)&dk`t+j-^18- zchAt5H_7>j**h<$srzu1&>!@s=47nsOIs$9(S zi=VeEn8E}>GE+N4!(Y~03z&J9C9PDjZrzBF-<1&OO|>*J&!vhlSjs{+Z{0FQzs(VL zplaf((^U)%ptllznkp4-z90RSzIa4xkv|d$Peg!DuiFxaBLtZU$Cmpmg=09iJ!b;| z>uhgME_ewBM#fY^K-Ht7Dsi>BLv8a_o8*Gp5E9`(Zk$*;3pG@~W1SRv#0wRhfjTuq zrE{zY3BYV&(-FHM?!K`vhv>f+R8`yuZOC^7HUOBg%q8bfVg@V(J~CEXA}*X$MV#}u zj=1rS-UcSQ&bXd5q$f8ViZwb+j_>^rNiM+|45>Z)O*2uFAdt!VGa$&+qT?~x2{<|1M`Ny%rSmQZyO5G2ik_kLoTBND{Kt0y z1_)EWWh!S3U$I;=s5#^SD_B5b?N z%OnTeRagz-xNa?`sIl!q0lSfKu=d5M@nj(RG0AUYGI}0Q3~5fA?9g&DhG9r`X44|b z=dkiKS$}p8+!g4`%{!{TL{#AZ7qMP;Xl?42C5ZDVEwW@QoYJfKCJrk(SLeqvO(RiM z3y=)<>*FU3E!TSC7ET5zP0f0Oorn8N!<|Og+u$em3u57f+5aYVHZp*G6WG}OYR(oN ziV6H_!to6w?-o#dG4&K6qT?VKGPyjz8><=g?Jbz2>H=c%#PnXpqfw3p93GpiRX=`G zF#D!#ir|_8=h%E%({4qKMADNfl2nDedAgqzdX`t{ zG%Ef6Gqq|idJr082ij^;r6R3GW)Xj;_W$ET8TbEG{Dey?6a1gAV6M>6kzAU!r!)Ek zBLiA-uwBHlL3EMIHjgZXPzF&EmZedm<#z;v=mj(rmbVA8EdBiDKCMPPLyOc^&8N_E z5sD4l5Fug&a1vY_h&xSjj4&H`*>uuU;_y}l`IdS(k@+-mDQZ6~VCQV@ys6BFnkc)8 zSlHScHgYxN?boG520awON?F%@zD%j^K`vv7>VTSS6U`_saBLbGpf8BvlqGbEe$v4z z%muaCgY{!7eD`lsh1;uy8a2!2tz$((X{O=|1m_MZ_aOg4EH#_MQGb+mr^u2!_$5KR zb@>o=;VbB%^(@ZxpB6S7LCQUph zX@e-_wDc1Ei1JTrd?AngnroOP>u^MmRUZPni@?&Y3Q~a*$T)9Ad~-7BdDBuBAAEkI z@P{CZ@{e_oX}^`F*=5Qx<&6G`5tKMm`nhmE1ehm~V`I}(d2YB}MyvOtM_HIi*${`aM@my-HoP1W-u0T_kXENB3tInIVA0@V2+SG0c^M9Ik^L zDoI~=Nd%?|a2J|xbOQ8ptZ;_NlJ!K}g@g)+vDqC4M6|CM>1lGz??_tAil|r3+>*+k zrbuo^mEh!*Xqx3NRhy;@#&d50@7GMAx3RhXq_~{(TeukbI}T3&tXW zi+ArN{ggEsu`LMtidzEyc?oRr4|72eG1I!8eiwP~I)mAwQCqJc( zJJ)#VqOYR8L53d1xdf`>Q&PBMt&lm*)PkJ21t`UQMIEIm&pWXDVMYB;i<0fWOR##K zD3`u$pFD(M6sM^c=cpTLiCuSx$4RITzd)t0zBy3d1#bvD2Uu5gUj^U$z_=Ug14h?= zK$Lygm?B~AHib14PYJBRtOpDSsMs<)PrIz?NIbW<&o@VLkc{$=fPBBNo&rx4Z<`T! zPSCh?7-u6)ZZLpnZzHwt^E)4c+Apa$aVsPtISVMs%Mtk8d%igjcqn;)WZXsk%J6H8 zG!yqhW{zI2+@nRZ-O)m&)pD&Y;tW)whD18>W&N421)DU0eP5Z*R3FDer{ z85_7d#4c8*Jw3$y%^p)anMMq7HAq4gy(`3R zm2nPD+wFmkUMyvIR(m_3;qz|>4EpOlxd{%r9GEC> z1hSsys{oQeS`+>S0zb59u}-~h&JNH`nro)c%lPCT{U-khp`VX?wy5S7_@GYw6$UyfgR*P9DpAQ&^h^fv~X_(TTdnmVHSfbXt*YEaLgiy zj^2v#7_CntEb>d~Y=hawPtE2OJz54`<{VfAACds0PHo6~!HI4m)fc=oi$ej=g!^BO zt2tY3e6Mf3D|JKc6C|IM0U(v}x?qzk;|YMHqq(%IrC5v96TMrOS`+S1Um!^-%%%=E zl<=Q6&s^5RRTN*eIrLWX9AG+6yYgl{J}cf>i(jM6{$FUF^B%U{{2k}ZuMq4vOTsk` z;y`BFL#c+;79{rq!}YeFMO$OfqtIF*(o7hR@;%>vSjXe{d`k=H?B$?F#_r+j?l#TNt!8vt%`g%0|7EY#E;zqWw z`ALg77T9PRLqa=z6mBb>`ZtDDa1P1UMs4Za6kOwh$!k6l@RBsKyn>dSWlJI0j;y+J z55x59eV++HhU!c_;s>>4;w+k%CkWz zAC~uq>eE1lC_RxIB%ZGhc^SMvgBLRnIcL&6i#g;e$#2f_G9d7MQU-&6jzx6v-&Q5A z9U72W{*v``%=FVN$;px(!<3jh%5=3Z_i~CAcf)ort?8Po9bq0%0Z7kJSBvdKgPOWg zlRJTsAyS!n9x`GDK`Eax@jyy{NTD699}cJPwo7@PC>;}WZZFvTYz6}bGIJ(TQqg7_ z6Yfyhi}|T51LuFlX6I2@=Iu_%=&`Y2c=ydNbEMq?*sz@zJK-U|AVKW>idc?)2}Dm3 z<4zF@%myNGr!*pMn_>QpwFFf+VGmr!@)`)$EEXXbR+?D=fjEmk(-l&6vyzc4O6?)K9Gf-^RIrOu|S4yV%F zRM3OTf?^Dih%;TxaD6P*__<>41jdTBH6UUa0~>85Vk@TMpE*R!bAhPvmi|t*^;D~k;HI#H?K4d5&vl;o5qKqtf^<3BbP1&kz<*C51r z2Ois0ypFyFFhRyTfT9E7%LI6NoHWk;3_wuU2~L2|O6VSqTJhOr3aS;KIVWE%B!P&# zmUxbK5^TCWt|(sF7Xrj@Iyj4wC=+6%F>t^vlM=fINR{r#dQ@~syd-h6w{x9J^AOs* z+m5S9-CKq&PS0dDi-1n>$Q;T^4#BAu^b0n7nb?*iJ4L_859O8jHyEeaD=!^FOb+jh zyONB1WS7|a2z#Lk1#M0AT0z?}tmSJ&guEn$HN<7;$a`h&!nN85(C7n~1hs-Ka!Jq@ z%r?!|Z^Zh1Si@rzh2KH4IfCYXp*plaS7C#MC)0mJI?)|a88q1G#}(#lz++u7L>hS+ ztGG?`u41@Z`2)mbQrnDP_(N7OWb50Tjz23BccYZ1@9VV1S%N~tp}tp%G7%o8tt{&~ zPbk*+Dp3ZpjRhOts{_t_fFuZIs&g?^Fz>D2DrF6ps7cBaJ#Ol=L_AENEdlMW9@I#} zaR&7f8~J(=gU60vX~@hsq!8_u!1snwHnDdA8*MDXD9fK)=uCU;uAg%5znZRdL%4)o z9Tf8uFfb_bO`cN)>%Obg01Q~0HubS6qMt;JbmeAyW5BVCDW!2Y+t-G3P&f>5A=cU0 z4$_NPaJ*~FQwgM5KO1tm0Sl74Xk9R%Ogw_+r=svcJ{EV$*JE2>N(OU=bf%<<567aeE|E3T!U50)B&~yy*r|cAm=^CKR z`HwXw!NL5=;CLH5NzpSzZ7Ra=%pPW+uP{qDJ0#c0%tc1iT!ov+LVgKE^bVSxy2fba?$=^nx~ zGkTSXNa4&-VT2aVWx~22Pbs|Boi>~!A&dI}pAgr5%JBEb(r-Pb6*mlGaw2-`;jySh z+V{>W{G`+acY@&g5Yf7v#(3J$C!^H5Yg}?1=zuEe2wJ~%|LCm8D_$A z>tHqr^Ek5?Scid?b@lk;6ycm8&Dndk^8nftUGy@9#TKDS6i|+yo$#WvNL1Mm5$U^J zVKWB6=tOCXe4YHVrncD)5n|p}dRfz4jq2{o&$Lcxra~`Bmg<<(1n5ld#+sIoh}%+C zvQ(7|q!i8D2$rKui$z!-FwX-UjYK^viI2o$~3io zs8r$$O{QB(b*X6gy8+kepiJgwu-Vr;o$qDc*T0NCk{o3e0-6fu$8}ChJ-FVEC z5F*D@B2JaAVJ8}}QaRrM7I9?@Aj6866_bmO4sJ^ zf21hmIY(so5Ue*Z=pgG1&eKXw&sa+`>5EfIjllc)YjODFSkX&V_cvCa_>nUIoyxFc zn=DAl7O8E6y1(|Z!g282ZJRolUktc=d1h->!;z~shQVe^NP>Hl|*{19?$Kj$IYg-{wWH)ag`o4zVcpuFWiU!i#cOAUXl0ao$O`XIZztAUE| z?p{tiF*0j{WTv~j!!aBR?Cw5Bdb_);4LqG47dI!exNaA5CbVbWV)I8A0u8)sP7~CM zDtcHf>P3qpiz@->8F_6f{`Jb*845o{g2)Q~R=Ts4j?0;#E5kpbTSS7$3jS8Qe`Q#v zE1aTWhX5w#EBXidHEEU^{t26OwHdleOWFnruvgX&j6o-^V@d1bGd0z$jsxlZd`egL zC_D#_MHp9c&Uc2Whf}#iR3T?4rq@ipck0Ihu@a6gv00c%KCY1OLMA7 z_lvub5(*1nSiH(yZEp36IX`F0 zq=K|DhcQmfHl!yrCrK;rE} zLg3lfl8P7@nkcK#OPUks(dS#ZaB-#NOlKVE&;;7MgB@IJN5YzyMasiiS!Ap6upAYc zFBE%$VmYw3O3H|RQ?aM2Dlk|gLLNs`|( zB}sHHNM;HN#_7df-1Bcts#8|w>x(s*9fc{5;ea+Oevy z3&4SMp->`Imn|nl6Ts=+0rrCVuZJO`2c^m=4ev7T&fy|qZ=tpaM0gov*D}*lCG6C= zU@xQcF;_l=C$wGUZn! zj9p_Fc8|Q%bXGhI*0K+Vs?dW{p6r}>;K>qJGZcscR|PVT{szJ##=VFV zx1sS;Vjje)G}i-YJs`!u8ox0kjN&cZ1HGWW4C;GD=8GB8n>=P&umJxV6w2{H3Fcz# z*m5GygJ=?{vXMe9`$grDVrsD_h0&%G*|lfAFQ1gAF^dur?se%V4$T(P#O0&|t3Dm8A|?F9wBU@&RU|ChB1cxtx9CQo`DqSmy_gFl-T@s3rHEL5t5Z9dGV|^8 zaAP-0h&Y!+aeRn^hH4SMhM8&p9GiGaGC_e})$g5?0 zaE$=-Xko53?UZ@xIllG-u3T~<%o;0tQFHN7p09<&Ow&STe@WRG=6KjjJengFJ63sp zX||l$ozIC~2eew4lB|Qvh^-QAShAVB_Tf&I|6pQ*ZTF&+VknW-y==gxsUl6p`LUx| zmhMU4O6hm1?k{!F>`U=XFs3iCQCvVw;UiUe8M6$lN#^QziSY11#ZBWssY01UnT9I- zY%SP$51YxPRSQuttbtYPgfZ7J7k+<>JB##K+uY@_HgXzylbJvV&nnw8U~6tfXE;7ats zaV&+70&+yTbB7WpI^&mTrEDpje2+OAoUuC(Rs}W8SdoKO!6PEKLexo`-xyi2W$t6AV-VrnBjODLfR3)&hmkgVmJ;*{-Lv-V8;X+La4Qwq*_lB^mNmJ1QDM^pb{|WnH8|a+SMYW^ z&V$hm*{?O_96~mnd#4?$SsXi2nVU8ftkjjS-44};CN=9@T;!_S%~(P*lOQ{KEuZe< zlVp1A|6^qenyE%Q;FpV}WfU|O9f>vm*VEwa1253nb0H>HoU+-53J>tbufwV6PdtH0 z%+<5}QYOhnQB9M{HjnKL?{&~tm*|EuFap>Qv<)Ph*q&p2 z5-jVAY3lVGm@vDtMs@ti?y1Tg1wmx~>O(o*tLw~y*^R_P%nD*)NuM*}EH?ttH+^aG zPg(rQrwiU&;m&3=S-^$2i1WC1-dqB=b)C&XoT=EY8B!0jjHq>;N$efOq6^7_2Kcra z1H}$6NhQ85E)!e>#g+449CwG}8Y`|Ofa^z`X1`xB^~7sB=|bl0Ku0KtuGA1#i!r)7 zl?5~7y?r>Jn9l@L!5gv6e<#AhTy98dYpC!JwyW=%o@8*Asz9N_OcE_6k$zYtMX5uD zxDEsNhmi=E4$>!djXN!YOAqihQCx}QYWOdHokLy0Nxxt=jhEJCCVzk_5(dL;H9Sc5EEng|qHh8m z{;pIxe*Iyyf~jpH9EoYlDs$Vrq;%drg-y@q4kVxcR?uk_ggNt`DV)Jw)-(rS18!i( zLxi~i10;;ZdCF!B1^^tb$$A!gC9I_8o|FIF#ycB<1IA}Hs2_C zmIux!c$I*cFebs22CS))>0iZGNxD3p%MlK;;ugZ`x=}r#Ej^+5J>DgU;HXM(mX;+i&Aw%I9GW z>~j@p?2o7XE+Rk7XEZF>neS=Jq^v_!Q|t^WMS-U&gV>*BRVrZdZ)kMU?y9LA0<%T5 zXfR&^hZZi{@NSE!!sqeuU0xw7&85r|k!eBiqk=}O?mVRtQmv?Ll3yp}r7EE+p?Ej? z6k^lz6q*(Oc1#1NoAHluD6girY#lINK}#@b@cuQxzV(|D^R_6&ealwjI7rkysMqd1Aq>ts4DRAt zO?NmZDP{x*Q@+E<_5}E~iY?JW;a&!)`bS!LXJTRhVbDg?>nx&K&imYsa|dp9&1?4w z75rgxk@sQ?$e~h$82=Ig z`Zk7k7G123hIv)uL56~hKq238jC*|u$joeluNDSdvaSSAA-IDd+=}2^32rLjWQQLB z62i;me5o|lmYV;QTKiW*Ss^VbiN8uDIh`e0h9_(9n9s~klsC54{r#@_ zfxq95muEWJJ_1a>hXa{$2Ru(qIWeOeVOUFu3XAR)B0U znS#agEGdEKr2sDhu^UY?=-fdOd|xqcWHo03XA#Upx_%?&wy-0J(c8k39Xv<0`yKp= z=DH*YkD-`*ML|+q8c3WjZ6@I^77fXon+p73ZRt?uN@`0xr$W=u+B}k)=jTAeE52ws zpgA+CFfUWgLM)L6n&iWTzU`0D>0D3!2=lq<1G1j#R@&P-k(QkPF$WwM`K!7=xgH}| zPdu>=z0C1OJbK17G%PnoPIZsRQ#`)w6Wo>HfA{*p|KNvdMey%_@Ye*(e0jZq-G+(t z-*rHYTHriOl2{Lt?%?#ab0XcPQ008T*$3h4^4gv$Q`~k4hPitwb zPt5_Dl={@{RDh@Edj+^^=9o_ah&=%*>ojuU$7M>hHx8H=WOB?C3YZnAcu)bk^uTO6 zb5)Vg=NbBJV5oUOpT(zl>+@35TrpRCvzauV^m!|v&)4U5r0J&gm3+QPpELN}N}tpD ze1<+Z=5r%`ZpP=s^*NKz`xihL21)(3wOGGk&l53YR&r&RZ#Bak?c+sz4Nw5MhO2cs zTLGKdD5P?W6u>@60pkhKa|Xpw$oYF%{#TnxGyn%6Xv`h@T)^kyc#f`-EaTJNI#Ks& ziMo#p>Mk<>+>iQvz^l(tAx{{Yp8<}_bjQ8`#!=r5#C%N5AT6~QpGyFR5I1mIn-?j! z89*M*!=%wYjhE&Nc^Qi`Tc30JJOj_sU38tFai9v9g5OGtm5CH>J<&XGDx<=Hh=v|P z3lK<&U1J?nixIU)9x8ksjy3-UFgjgbJThLJpD3wU-zya0)%U9ku=O1(Y)N6I6n18! zu*r$SZch|8G(p%_7-DiLOx~hWZw`D-n|?0-+Yhh!+

8C}C?7EKujgV;N}dr%ndu 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%0A|*=zQ5$&R!X4yDIx< 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%0ARb~6P5-8E7 zT}`V}Yf5Kl#>9e0WfWs~_m6od?K(24%%vzEKvHlUXFZ;uf7jUq@}9QpoZ3Zt!eGtc zlvXhlKq0Ma*5Ks45vnhdEYO3Eh`fChwY}`EypDuEE&;Axy8*B$$0Sb{y00*-+C2SC zBm+xi1C&Vib&1XVEOI{=^Rt}{!H1m8=$vCD!%2J$h?g1!LeLelM`|zEwAI>LHr@@8 zm4#I)$Pv-G9Uuvg1N{6aE=BXh4dlq*qp3zUSXZpqr;a7FbpW24tf^LMf_;N6(au!!B?HOTY7JOld-JeiYEG*FwqL zwlH1)u~E5f2N+IQ;ZFU41y-9Oja>?Qq9E2vDtBRbV`s|EQPFlql~H|JS< zsoN%s5w@fr37@yyb7AVy@cBge99ZcXW;A@h&v(u9Abf7*nZrO?Z!A74%rZ)_1N`pM zUdf?aw0h84qKUogFV>@PP{@7@ZZPjnA!cpRYQAoqT+)5YEW{KxH7 zZm(aQsrV=>nM8kK&usNIqbLnOApr3y|G@LC!L?STZ}4l`+xz*!IU?bAH2?g)_Pfvl zQ?t<09=kjzZAHwbUE z)=b(-SGctG=t+UI9{q79?XUD#<=${<|2#b>?Lh!j+S4v=d~P4kp|eW+jZ6C@O=Rj^ z!CY3_tzkJRJd@UTnoGOfrQMwi%bikeQ|>gE)(B{sa%Jbbv}0Y`?YTHxE3QYmZ@IK; zUNhw;hOm6eLQUT*sV0-QB7|jyOY584-Z#g(Iv2RKKQf%IT+Bb}<{w%b?$p6=N#?se zt2ONTe*}L5<#t!B#|1gXmKfFaRk15KDR$KPuGlD7?BU#EA3IE|*m0W_+l?b+wRWH@ zwi>pU>D&-rl-AXy{eu2v(hd)aWfi*@fbPge=CvVFKj+d;%|&Jli=XOz*rnZiNlu-o zgoF1Jm$n~sGSl91;bgeZrJa)V?cVjs2_qntSbIY}a%yYU+TMgKmz8?}Y z^2=P>UvtN3r;v7syR?&X@p4AUS-wLzgbpwT&K0F-qx(8g^LAiK2A;jlxE^WVDI-4HOqpMun(=?H(vuntE z&Twhx49!VP&xhl}a=Co|=OHca>(Y+M#n-rGcm-b8aS>TRbv_~HRzcAA4gSg_LHPIKa}rN?{yWTcZ8?X`c3Vn;BBK(Fv`5?i zrWf2phcP|vY+!Zp{u^pUuDhrC#l zt-I!%jk30U;c-gvBk2H={oh>X@bu?*wAZq$<)g`}(pchi`9dV-X+sxO%_1)v{j4tK zQxiYj?mDZHLdo*FC0I*r(riDQ?D77eMD^=~E3rgko1zUY(cI~BV9?KbBfJF0r%P;^n63vh6EMd(6AO*jbkY&EK%I-JJ3$c{zRw^$CREq4r}@ z;uVA&Lv2Xsu9TLgyl*r)m6N#gA`FoDe`FuB*d~=Mce^auB~2|QODS3Sf2614lU&*a z(#DcDmNfn!IbLb!l7_C49o$FNgw~1FTAUl-f!jr)b;mT(FBHP>Rh|#sNFhB|8_fxB zhZ;jt(zjB58{xhU2)`BSTVMCBw|zUYw?5hC_N<_%KGl4vW~*kY4PA(Enzp3tC4$u0 zD0GSX+zsINoh8Eysz!PxrdGL*7_H%z_cp{9j#={hia zr_}>Ape2j1ox}Gc{q~JGL)|BoHbG#ZT!Iidbj#VhYW}37h+~aeT6Hvu zlHH#nO-M!Y{Ah9#V>yAb_WDNWr*^JLo?V#w2ZezvmgpMe9#AgtiE&*sPcDiXf`X+K z&2p)>;CX13`CLSDVYGxGc!=a#zVp;=4b?9SBLfrcRc&%kHc8o8SZ`a{(7%6s8Jz8E5Bbd>Tu9 z>I){c-J5-TS7x>pSs>=68wCe`n`dH`AKM63JeCuSjsq zS+(HU<~)tOwcUC8;hUCai}Q4eOWWc+eT=lt=4sSFkIT6TdS4}mlROnV8CED3%AT*H z`15G;X6m}0woWrTNl885t2y5zqgR>BK8pP~y| zhfXFzCpU(4qVuf@(8slXQ@dvALuiLaD!RN-;UBJmWEVknagoPn{P9Snt4;Z1ukc$g zf9!7GI`PMk5r#r`#=)3x*SNDPaQ~f2P{uOSD?m5Xs!EBf1tFGrNDmZsgwMAxM9|+U z)t5u`kl|+eW2=>{COiC3Tq^hh!Z1vYs*T?$TK=Rjm7H!-Ga`zqT|43Gz4`a6(9Ui1 zkx%A7h=y(c)Sqd^XpiJO0(N9a)>HkrT@-}i{nw@AMkC|;*F z!@mkd7dm9tiFtmo@8eYCPi@HRObhe{KTZzcLdmNWe=5bgzpSwBJ`nu=A3^YI50V`O z9~&ZM5KnCF9Q`5sariZ77ENZ3$!jMtP%boM@?J9*o%UgqA#2`f4WXS?^x;=9{4eU_ z`4Zr0jsIiY<Hk8xHf;W%HG0p*_0H^3`V(87p%@2+GWaEB|)e_01N>fMYa^?j(M; zno~g7Zn}t5zK^GZS=1LC@~Y;@Z2hKWVZUelEp^2-{=wagh1rQ%&Vb!kbp0INEfIFG z2c8f-@H0dA(*xw40>U|`p&H@cFy7PI<#SSi6$Ha_HhcR>&)NZMD)-#Xb3|l4qIS}d{{l^Sso^CdTL5=9|uCXjOzEvyAZ7QtAJFBTaarz7pq+rBt^*S+QWZ6>4`$xM^xP+qH}- zwtsj21V)5i)z8CN!;kzSH~W0D3;2XAfH>JsKGaAP!RywlH5a_74Wuxr^M`9VhaTK? z08q=QoiFS@N*BTaCUG7Ldg>`nut3OhhJI#w5+)TgfJ-FZXYrBZJ+HP?Q6xj!vTwd?GTDE|0%N2tL%Vh`LZ1XvbefdIP-~mi zlJV4&D4*u3m9AJY@26^K_Go3YuI!!LjSj>bFM<58E)36MukiaU@YW^Q0mosRIJu-p zh99gmol)j*>|=iSa%k4?@fBJUvKZlsrfcSln}l>-r(>Z+as)tWMb$GTbNw`;Wm(m4 zro|Ganw9@x*TQq(ca%@1&0-bH$q+2EIagb1<(cu?eyAY6J9>nM{O)&t)Aus-N)QE2 zhNS#`jyIT%!F1w&c}j3IbFo;0pWh-~plg1tz9h@WI~ebMRH(^692kwwX7dDx0HSy` z^FnMp&9dQFUgB=Yw*CAA1X`ARhi$0UV0VMER_h3uouG$mH`E+%&DPp5Pg|(9r_*j~ zsNG}dv9uVSrbg21P)?P6&iZ#&VQQn8L~_u(_cH@tZCKaQ?^&KcP_1X1Usug4j z2DS=Qp1EVSj1HVTo=4^W9K~((;CnEdjKQqu*L6IbzTZW5 z|A#O$OlO0l#o~j9k)N@HiOkuFke$6T=RNU+s@+rf!VPRcbK(h+xP%m>{Vv$v5F7F% zq@Bikj&Q|0%9m&qFm^Hb2Cn6*p3=4Bn93ec9YYyq82XS#`>8zOi4J_KfJY>*i$gr^ zAh7MnY8sQwCaDNYs4H4CU0I6|TpG#4u-lw|iqswV*%zGAW7m_Jv{lEr3xCxN27@=8X{irlI=pe=dFXy%cH zUisyXLt2IwbwPaS+=Zl2vUwM-dnwz6$ec2+$-1x$Xgye1e84dBUfVZ9ymGy72B#le ze;rqh#2ZBB=QLv3c@MwbK2sSmmW#yqV3i8Kuf%WgE4v>^PTydBb0Z50YgKR#f_`d} z%L3gGZlb4J^odVzBX$$sE# z(eL-4|L@apr!H)Te&^6`x(ojy{r-Z9zg7CZNr{`%uW3-_ieU8n3$_T`qTkDxeGU5E zjrKO9-)wuL-y_ssntp>(j()%3nW4XJ((j43+uAz)jxr(J85BnoFJ>;#bv7a~|A8gU z-o&WqV@Eu&m|xt;Dm(aAoDumaHF6~WvgY^W%xL{Xsku%7RX3uUSumoYwxzJ9G z3vr?xzn6u&r(#^>isneqZWaDKHBsT;ulnugzb1aL6xsZeNCx+mURY+WQU6TDYnbwH zpA$taEYf|j6ym-v|5)sNQ3rh%iA!TvJ@t8>Wf0(o!V;Bo$O7R)uL*{}>vXQ}z7dnsr^uBXe|V z9lkV_{;YC5ej$&aWUUcUe|<&qKZPf$*(39sy_)uuil6Z=Tz{2|<{pA=AUz_dzxL zFdjPOAawo|nNrItm^jq?+^yc1H>2;bJ(w(54@csPM_rM;s#JHjAD%iHurlo z;=s9Z9mDwA%A?E-aNwwdsyEa~Kpbs`==;IrcbV03OPH@}x#N>~#@pcj6&!IQ5G($I zdk8DbhyxIvzY+W4r8gbVkqE9}Azde4WZ2~$p?ZS*@od2w5KPWz$k%k?UU|9NTRj!Y zBliUR(UL`#*Wex?9g@8JFgiX&v}b_dZ`Mn^lq{^mUq{!obW8PRRWKUjV{7{3ezuSx z&TIs-nU$=XV@DTq()nYYL!Pdp6UT^gNb)A zBIlmLyv+(z=&POB!{yZoM^akI6c}eC2|#~WR0NNiry=uGnx=Cxmp0k zb!Vp)1SqVc{@ivFqXXw|;1P*`huxlh3HI*|?IS>**B(t+j!5yn60<9k7mtnlw`%G| z2j04zMH;gy2BCjIHC_5!Nu2q<_+(ll}6b8^LdR6Q|f7&h(O^4EKa4igm z{n7vmtn#_KzLZ;YaGsWVr5hYBbN5}~1K36UM{3wUX#9W0) z18XWs(Qdym_(Q$5RZSLl6M-NYIJeH4oTw&sZF~#vcXO449tXmbKXt6R4%bTo8ih>aZNT7sH>Sf^3hyROjQfZ}H?1hVV zqH>G9@Ev~P%DZRpx*5$%4nr)20U%fns0ykM!!M|-UgG88pJ<2>mOs**BI-YN&mtx4 zqUR6o+wS?JAqX2#QVn1^-utMZq%?k%`G-plkvFE`T#F(~RZzFmL;4vODbdV{V~QjeZ!!VD=K_DA{lw zVFhhaJsfPjl8ur0c$aOZOOH(NYk;f>8mEiN&lVSP%8(g0R5>88(Hu(Pn@0{)iX@F; z7%P}3!Y6UOv5<^v$7x4q*jLP-HCH`rr`FoR;#m1JJM}4u2Ec1b$r#{Y;yz9QVAcy1 zDyz|BpJ5+sMH>_tq0VG#InEX6tB(WcX{u1*U{^r&EsS(3knajKss&9@(;BqHQ(`3# z)l(o6zs4AY&1lcR*NDGn5oXujdu?G>*H)>Kl%sww*S)H*;kDH~AmoYn<_egt);9>buf7dZH2HL%joRD6J;G_o>ynfE zh8CFVU8?QtM~=L0-r7~5sB}Fsv3z|;#}%T_1Skab@FM6hr!v+6np)j z>dO6Lv6T)}!SlACwx*9F1kpNFYiynhq~}6{6UDHJ2zd}V=c>yyL^AUHDZU4W^c4Qn8e9}Z25d^8N*bOCaQ*Lw;8H4m|1P0 zs8wy(?ED&ufo>rjh}z+?-5q4AJWW@8U1Qv7p27PQj=h0bI|Z0xRS$3Ay$0qjH&Btl zj2rIp+p;>Q_6>?yC0M@tMmZb;j(%Kf_(d?eM!>p&Z~km8q|t%1-F|7T#xA{Ia!I~n zH_G&&0vR@{56OA;*2FN@E}dJB=S@7!@d2d;`G3(ou<&xoq^~_3Zcel(&?FD;N080n z5?+jUZFMjLRToH{Kn5n{Bt4K<>>+Q~6|R1Lu<{na2c7Zy;HOMIW}N}&ZaLlS{*Xbi z5M7$Ho|&8KO!%|ftG5HIFxu6;Mm3a?;3|!WyN)8aqIPCD&gY{7fuRh5-SnYA$B14K zu`tdD13b-tikQp6(G*DS%`cd7xSk|uj3#$9InS8G0n!RcoBp&EYQdVgFfc+Cf{;###gJ#$hRQF2OqGmg4u2<6V;aNR zb}n#VHORqrY9wua@u-#&Z{VX&VQ{K?2B9kFCeq$U&TE6+Y-(?83A-ljfHJ2wHvMENj5kIWSQ zljU`jbJ{{tY0e6hosa$Z{jJ+E_k4`iH_2qxx~7?y$A_m5W?t&$J;#dOVzelSN1tNN zJfTqt-bR9rCH|n_sl7Dq>$ULJHL3ggr++K6@TD#S@=zWyet;9M@q-?STB+UXMi#yq zBh;(p6DGL4^;^>aK+T%t_YQV*{Jrqm5fy&&?>N)J(LNmPH{Aen*2$ zmqs^Tns`LwuK)?VFIP|U3CK$-0*M7lX;XG#0}&`xpb!OW zL&+evB z_5Ht>em>3YGxs@j=A1KU&YWpKR}p*+5VjI7A;dzrQ_Z!3V;UVQY3Qzu*_u&yvwT2! zarSGk(L`HT^r+ZgJJ{A`*3oG08ow3Wh7uT63v?yuSl|!z>12*YPH7$P4ES-kw(1D! zZW#iLoyRgZ^X+m9U2(sacqw!eM$|R>8UG5Qm;X!V6EZjkRNBCA!g?b#OV=Ati7Yt# zwRjDId;b!K7uo(4Hdjt*J%qluxP9WnfABZCcZYs=&DUh)cJF`MFQt|Jnj))|p2ObV z8-6v5vlUe+3HpwRt$NuDs&m>f9;x+*D~;A^1vC{e`{e<(9kKhCO=A>ERX%`uhOG%L?;zZzbauJ$Rihh)}fR zt{TB1xBJ0;i1p7vC48*;3eD}l{90lM6&oFnOV~Xv(cM8rYzlNUIZSiA++C|^=0nw0 zKd9(uT~w%1_FE)$sK!hoHe`PjBTaV9EbJ_b7+7A|7?_#1< zOC`04KYo!S^6tWVUbcEda-4UUi<2&0RZ5T;_vdmN(B}3X2}Y)^em(OmKh)iPmFKHt zf0Bq~UbwK^%Hfg)l_a4i@C>6 zQyO|25jWb87j*Y#BMkWwT1wNgOyBl$;Fg_N6u&6DV8(QGfC?|UT?3sPpJ#nvjs&%m6S@&|2~sxeGv`V0H5SoWx?Xr1g`mH;D^%?euI>69$O-w2#ejkn{8lK`hA-6 zV$XAANBvhahjExN(%#ZBckHg2{X6DvvTJ4<5@3hw;ZhU<`$HraP7vo?WcGe{{!J2f z5Lb+TyMu-K(Nd*)T7G`c`m)CAxJ{Z5TbAaR#jU`yg&XV-d{I1n>3Z@Yb73u*?N|T^IKAKt?JTuuTHcq4fVpwl@r83dV=ureo%X)v?(Ny?k&`wQl ztV{uY1Jpl?a3 z`dL)})D`#h6AV_GS?x8qVV4CE^hr)bmV(5&54GA}WyD?n3*pP|Gj?M9(e*vF5f0we zr}X6OWxIyoP}?J!qZpB{V<@C-Y8R11r8qB@KP5w1rqt$RLAQ-A#@x-^AW~yNFKBF< zt~IKMg|6K|7P?*GyInOZtw(7eV1iw=ZaA%l$l{#Y3L(GxM3JUM_e5YF`|61ntJYt$ z05}1otF994BBac52#@aDlnIm3Js{LdbX}pxj0vY=p|xUm9!MjmyJAaZ1}Q`gXfsuk_aiCWF?k;PBi-&OW^$o>x4-zE09-~KMLzkU35 zdx?RFhv{9SME7=JBlNJ9Bx)C2fnw`|PspxKe9}`SA-wy9cEiQLap4IM{xzHK6%% zi=YPi=V6CBAIRO^K^~j+7u_l6l5!;}1^G@`*|i($a(6nd^>p9F^6l0s9Kjv1=Eki6mlAEo2KspGt&iq^L{qpIupduVkdf75IrYprTdPzKactyPn#T`0h~YmxrK`1Z3H`}Tfe^^4%;v2ZK0|4(EIhb)QUlG5{P!Hoz3~t@wHInBDB*# z3F~dMr)1Bmo)ds*L=HKI9E&};7q6!`HhS8@PR=vh8z$6aRWb1#&sh0&Tyr~Nf<4=cL+;o}X$MjT8`!1u0+2vbHL zqvm>&jTBjxng=&)9&P4!PjbK~D!Ki2YG$!D^XVS) zIjXi~Z84o%*kf!goADzSTR;Tu74*-`j9q?7L}f|UO!9yw`eYh6P(F6H8ZStwo*#^G zP!#0HLuuMXKQBCnc`XQzx2QGmVNinOjv=?evw`3kO1fjM!Lr*;AjgW-7NpS3rF_aq zH!)<=3J$5QO5K^%{EZx62EB;*tVdIs=tHa!Ks9yf`^@Vby z`0m;>NjwsS)cs;SKG)hoOCGxtuygN`(_x&iYqytu7-an%d=yJhyW(<-l6tP<&5TE- zJO7~Mc+PjJc^Tc+R`*xC_$}`fA$&1}d;N!xkHZ7P_sJpsk`2PMLwZjL?+WQxgztqR zyk&#%%#iQ?5dT&PH{I2@zg-AFAHpwf5GKR-@gck;)Yl%q2g3Jh;rqKG%x(}~5x#dJ z|35v?!Qm%DX2eT}(bvnf-R0myPxr_9n~Jb5zFNoH_~1o;M;8TRRR~vdX3H??=_Z}> zdV9c}?GgE^3CM&;_w}ZZ$c<4ptn&A8*Qjw+2R}=8a+kB~BN&_|?y!NO zj%ozW*~<)2N9UTcJ>3a@;O`>2?#X0s{4z#SPXxmhci?LdLGgTAYnTX5D8?qWYxa+U z(QDs>!sg_St4!^KZ*6!^$5ORHM)JJz`8{fey}5$i*%j{l$oa7(fA~W| zL9)V~L9~hIFS*LoL@V~=a_K5nOCK~A`k>{FwrWVRTAb2woq?U;2cHkR;CJPu`!{YR z)9}pAC#2}}qmzLBdA}D@%|#Y|pdFu;-MP7ujy^S)<3tpL82@t)l%$dV%(VWL?aI+V zLZ1K3&L2=FPlzl7>Rz_-`pM~4ixN#v$b0&9`ld9JJDZ)7k*=AfyHm`HqU_lboPK)( zW1GP!3EU5MJRY>AbtG!3!dwt-i$6;VN!CJy9Du`*xXYH*6-t%u`Y!brwSA#wb=y@R z1Nd{eM(RCk*%jOA3Z)ZvKy`6qo&~TeeN_yK!E+Lvm|YA*XPsf ziQK<)uQjL}zG{9gmWn*OOHqGzEETaQVF-k~8{#x3e}?UVHA^MsHl^I~N}VT|4f)q7 zl+L>0n%TWzsiuTym!N3Zat6%g^br9@7}mv0(B{ER&j#HB+d_4 zYT}@k`x>q+u2N;XH2R!|##$c~I<2kov$j4^B88>48DzQ1T@4i(@|d^bC90gryWmk&IcAf*?HfO(xVfErh-wRO+ z^({w@Iz6qE99|^}8OmqqNmu766I3Mtf2}3S^$W8ts`-s55&lb%=bUf?As!mxq&)Vs#cy{NBh|r1hq7 z==ZFTY*n*`bHCsC$VMM&XMbgGu|<0MBN(KMZAj(V4Pf*76V6xVt679j6}a5dMg_nM zqXGwBrU~+{AAq$0$LUmCa-^+sq^*9Wt!|{PW~8lZq^)wKtzx9De5B4zKGiy2=#F3Q ziSCc9S^e?yO%XoE>0@*qMc4zJmwINx8d97PULjD*05?u;UAwsoXiW@@tFR`^yJOrkSKH3YF9gsGy z4(s!?ZsMiFQ=JdFP5DWR$*dk{y=A<6Py6Q$S8VbF-Ar_UhPw0m6YJ%3XSAy3AAEz( zu*ELMFY)^(nD&eAq9e3>@kr9eGAeL=;NN4@;N6s9e5Nl`Xd7b8zl7%ArnyN^OOqcQ z>4f`%cU)ag?qO6SEAmS}@2yJ}CfOpb58q#^_VEwf_h3G4-w)(xg!o%SzV`5)4dDwR z{^sy~ZwLoM_@5!XJcM7i@PYjA2-W`Oq5OpKz0A@F^S=)9d)W7i{F={gXm6U57sgcf z-TMXrlUi9XvXQ=0=DG8z` z(el+kgU;H@eTEi(+V*{SO}SJF%iU9l_;&()BW1&D_e2;xqg5VD&aOc!mDV7gyG^sq zg056WkRtQ*&ocp{1L{b4T7VqZm+Uyb3!p^n&*0QHimSZ!X|S_HpZts82(bPQ+KG{( zakDQ4hW=4TJtjsy&_90m*$?|E&Z2+zrof*s6MC0Do2VZ{hfK?XrIiWX-jhEM_A&rH z%>&q^N$I6-_fubN$wz`mo#^)J8dw$T>l$)PnAfNW&6%az@-_OZqOR&X@}^KL)p7y$ zZTv%yOLRRW9eI4X@fmZ!GTt=(BknGCJM8LGalz0STb2}#Exo_G)YyjvI{`a*j`TVV}?*l3fJU50;)^7Pncaw3;qa{`lRY8vx#3Zux)q(n2` zJ9EtyZdQxY1C4Ly5&pKsS6~1-;B8S4?M~*-UDYxxhoA@?TnZka%uTCcJ20)fB^h1N zBZxFy&_R&snr0bIwT~{dk^G3Y{)SIiwXy(nbyJn=Gaa?nxG(r^P<^?!VfJnVq$U7a zRY1?w&Fu~+LwfS=ZEtD2B-zI%Cedy8wh*+)N*8ieE45W0q5d@kVPRAA10 zAq^?Njzkv$J=K@WZkp=svb-n|LU%*9+`>A`{ZbmclCweqNFKyg!=WompEB|XRpc46 zBHYb7dax+v5uDwR>@=cme>C2}rgWI+S&D~pbdAx~=z>1Fp2Q2O9FBU?3uhIQ9r4UW zb)?$KB57KAFk&#4pd8jxa=8py0c3#z-70Sg<> z4qA$-s{t)*hy7#_+>BaQ(RV0&zwc9<@6%kv6+5Kl{h&Uj0iHM6J@VkoD$AMyIx`l~ z=>dIaJ1rp7DxYbM&jgt8Ka;zAwa;V$nQkHzLos78^k8ZYlc60ra%X{`sRIGOvg@on z9(g90&3kiCc6A4dxOCb>Ev$1rS~z;0-yGKY&0(GIX~bx8JymIQJ-`mpuXCI+#0woF zzW{&~aW-UMmyW93MWFU2P1s~SJn;r$o3PS&VmHJK1b=*j(S{BU=Q9$xF4g89$QMhHG`QU#s1RDlIB|!)w8N z)m7tr#--d2>c$65B&HcMT9^IkMpoqoEW3v`U-3Fv5Pe6kbW;vOxcg5b4{~U8cKxIW z^UX-Bem{W9CXhmCVE&`*uZu-xo$bb{^o>Y(u9nr2(n~ShNMu`?zstfE`Oj_ZMXGB; zcoty_k?$)Z9JG87z@0k}kpq1;sN=)VbdScD=WiEj=bSRESc={DxxJQ!Pe z-Zodg+&#elPOcuX7;akP?&RyWL`CzG*@<0;5*N&&W+l37E!VvDKG!9qbA8v4dt55o z0`F3v)X7OYI(`wa&)U9F<7bZ z&&=A)Ul=0(t6nZI%omq4sY@N2v^G`yjEZUVOBRVI7=ZjuEx5&0km`J|{Je)S)u=Bq zT-H>%J=whBQz5{)maoEWoOvK8JmY33Rt}8C*-Ksz{rY{k%8ejJ7t8&FuVT5`^bGeC z>uqkD*5{A0l73zXN0s|^T#gb#fHOZ?TJ8&RxxzH(x3DOWucLbR4%?)79wZ-T`tv^~ zZ;8hay+>Da-z~=M3@*9ulo*RIw0eR>SG8$7o0g<=v&*>-lFt6rlB26kFqV__uYrGn zJ~)lhoeAKdj5hzx>*96}d1c%Oe8*fPB9%L!JaztiLWaae-d@PI1F7soET6t%TsuRT z(hcvle+qGWNjdr85W=9`UgO*s?bu*vu4R;`C(r9^KUJqFXPE-daJ=80z=x)RM?7~G zIM2GhIs5+b#{*na(N?MKVc-Q0&G5=Ad~cutj$efC{qBo#X)F3LvIv=ID_f)HGMC7~ z&JlVuId|gRbS^V=Q0|^Dh-Jp~gX>jf9%dv%Y7=HZ4pVGEC~+0980&CdR_=CW7mdre z=cs-N`yp_3e06ifdl^LcQP_z;YlQrUzhvr)cC;T3mo3m#q_YMWmT3E(0!yoQ8h+{b zyF>UG1(wAE%Y+YsM=d!E@YpskR)hzz82({A-egWp{yt%aYtxxRbiEKI|A?Vtct0Mu zc>aFnD10+x=E--qYy{sdIl4-=&Tcda%^TSVFsL{Vc8-#vQt?mGX zpEbpwZQ&<W?{YmS`QE8tHR*z_n^5>Q7m$re4XnQJ_SjhoHPBGMByYiKn2#grNPcs@y}>3 zPFgyjj6Vmh@z7saj9pXwss4lvV`w7$EHD047ej1i@n==>r+OVS)D?edF6 z2tQkjKQ*=x+gkiNC;W6T9}E8KIr^8}va`eRbGsitAA76Z^}Xc6t5c<0SqaoWdu=i?ZH@bma^!YDlqfRrIBT!l>Z{%i`(CNZFwH(uNiVsBtS;Lu z1!egyIw;NE)K9~9xcRF4t!b>ZeF_hel(`-F6pG+mVh5mUB>?|hIO$J%mb&f8D3%;)=^(M-Es;3HR1@AwbJx9YU?cd~z)9_~s@{V+b zE7;x1P4I1Xj7rW98&VO5Ymt2;`t@@ST5B?c{AjvY1X*|RVb*E92)>Y6RoK7i;uHeo zI=B4m2DiBkrA-rBGL)n`HF_vLjLx+&HGU{1rTkDA)%ohuA%UH)HJ1( zjzgqE_QrSCt9HMBY^P%rB4pBIpkNPl<=Op$sl^dCl-DYY&?$!*0 zzBL3X`TmjyER}uFc0Do{jCOeH#XZL~*Ru7utF@Bwvrdn@edzv&mx&8|pIdD${Gx*z z?UE@4Uva<7(rm7K4xMC8i#y>#OQ3K6df3-Dv4Dt5&qBk_sSV5-peS%vi=_Y`4#qNy7l-%LS9 zeoZyLCk`o$Plbx(6Z|y3@PhVy(MaP#*Dsj` zeP>CKC2E60e`816#*V~*q&r5aSCGnNB0~x#fh%edZu9-OC-M!zvABb zP6`jyMbUI-^%eS*|CSAH?@#YXWt;DdDeue%{v4t|2l5B2vix)9Qb|6LUmL=mKH|Uc z|EO10j)d@q5N`G{pT4!_Tan)-gntb6bccK=h41hlQHmetvX-J<#JW~i?DAf-&P5P_tpZsInr?byaMnANZz_5p!{6p;<+V@4zAthYr z3ZCA2Vf_BlUOTzV*>OVBm3#l_oSJgiX%UxM@d!IrCZu+i&JuBHd-^hPLfaKuOg3Dm z-Ael|zCTpdR}pk?6V~X>N9}%DW#nS!a}k@6~Ps zI!!8xzkU5CL`EtbDobXELKFB^IO~oun&f2bd^?A6eiXbR#P7>|LE8sGNb6M%Iv{zC zJCLgk^PfgZ5$&+{;XQRyjKUKK`yC)9a67AlbEOK`nFe*__!o3T15lO99=_V0LZtLU zjE|R%vYo0HDQc!_&vhn!Bl5d4#~+9Gz5M z-;6uuI`xjK+rL2X);&eGO~9k}f`yhFB&THS z5lOUC@3v#aaQsmIY*tFFkIdOF7FJrJUJrI^4EpzhJ?|Kw-d0F&8jz52EQ5RK5%qHp zhqGsDTm$Z+FNuwu(!$O2mgZ=7h1;8+q@r`HQn~4MI$Wu8C(G2ZZlue7+=wP@~a|T zlZ5k>(e+JNeSg&Xk4f*oJ}VU0cMpklO#5e=TKzBTTL~F(*+P9USpTe0T;EB)K5g2m zZ|GmtceLtj*q}Zu6xX+{udmwPEdPg8%%dVgX+t*Mt>LP=Wh++$^+w&qW>HP89#3XM0>J&g2_pFku{ z!e9Kv6W^)$YrJSt8ZZCl`8_@ue=Jf){#-9=l;*!m@plyB1MN*Cx!c^l*FKeDZ}kTw zzi0ifgw6%J`!U86gttI<_gn4OLNAT(#`VO+Z#xJwb5Y^vqMbvYvakGJm9{~Y{2UCp z^}C2FabZy)gD&B~#NA*NST?QThLNW2+^Rq}heT+*|K48NoPBwiGeA540KEM^KErw9 z-NrY~o9UIr5@C$cBC@I`x=Bhvy0(NsOK=7kJrm6K@Qzj=9sOCJj+#4utp4R3U|RJW zx0#Lfh4#<*ogb?9HSLdvTqCQ5u`l}mgqmZt-9o*{nVEo_xs!gMJ<~nJ$r%S~XkhU5 zU?lGEh}Jq{!{bV&+??PxVMR?*j?Vul>AruX;`O+WFp4$dWeDA*YA}8a<{+izFX4~$ z2a;EUkW%jMW6Mqh?987%a#sE{>c&!`?2)h{jX36N3{)C%V;#w z)vD6DGsyLld+l>xBu`tMzrzsJC@4_L?s`uWV(tF*-)j6zWj>FkkzI5(E9kD)@v5y` z_NTf#g%V2s5i3-*Y&RgG^R8Fjl~TCyDw}vrw6K*RRl7o-<=g*b($gj9a+V_*ZSf>q z5Y?fwALpFRJL`Eq^9)Uyl?#3a)FPL-*^Sbu*=@V2lJRoh2tQ7+djb24_u+k>GCq5y zI@k`eOGQ^#0_C*#pM#lPqw-7+u+okXeke5~;G&sEh!WbFDxO}h(PrQ;v&~Zss1De) z)a$SmY$cOB{KU18yHkUoZ@X_Hz)8-do;I>@ty_(`UC7CJbwz-^ih33x+@jP|#fgdq z6-RlQ&bmXP^D@n{5+=@By>2gyw;M9nb>l)40J{4ogpP&bju4VEQw@exiSDhnorxA} zdg+2phTRj$#{nuq7u3^a1t!W*66njWDbk`HKx8a3V-&z(Ye%1hM*B2N_ zuC3C|gy;tdDMt#_fvoJrvM>VgX@j@F|4-Xo2LGa6)g7W>MhO23dMbCN+aI!`YVH@Y ziELRVBOdJH9cApC9*~{WFU8@#LgHpK12O~Xc#>ofF(*ui$C+dnSF~jhQWhWeRiQsZ zcz27m7v8awmoAR7tx(zVe62-Dm zJeGa!c`;YJ(wNS*!Ur>z+9&)9JZsJ#-)JwIN3$y2b^8eLynvp=W?8~fFVJznohER+ z>XsAAyV;JZ>@&l6m(YJ3yXecaZUpM<5sC2{-UYO(qdRU2^|K_5w4$(KK8uWoXWRlm zp&ISiwE`xG6;LU4$y=rb0R>)l^}Z{KZpkvk^Nl~L1Mj$V=>Q|%Z)MC8#trA_D)I<) z7vrgeL2oY5-F`5tf%~C*w35H-T^~+;&xfrc%!Tl@5MCI<^FsJoD0gKDF9_k)ghl<2 z@t1JAe*Vk-Kr|hlQf}7+J_;5|okqvgxjXxWiXO=-mkY^GAla;R*14aGG~~=9$-Tsi zB1&`Sjsc=*>x8Yxq4iC2Aki_mdQ4_k$K21tum-Hk%N9Ug(3)twqMSe9fkL@k>O@vN z2Pik1G{4>x8YL*-_sGXA>QgRMy!(`;o_tyB4`X_u-7AU|k+QjdAzfuT=Jj}7&H4Oo zs@jnEoMHutn$)VN4!)(x^H&&jvMykSod!gki3Sw8Tqpus-0}{6BK%00)?e|B9wo>#uVZn> z7Iz=_V{tEU!{OY;e8|+m>2N&p!vSQC$|GkjFJgo4ua*6S-MnAa6Y{(4Rf;Ud`eo6^ z-Q=;ITxH+4fs$Et4vF-}-hR)?}JUNrW`0K~jRx0+x zKbO>$bR0sPAc!6p;$XtMQ)V=|#cElheXQZcto+9z?S4J0cG}NeINbMv@ov!n>z@5D z_Wwlp2a&3c_J4^H%F+G5A;gvTzt@)MOKzr?FJfnL9A}a;Y8;7f>0*X2_wpz&H2J$H zha_{e1^_E!$+OG`hkBULMTdbIo5FgNWAAtG&I-%;CHFPSbb1n7`3-;x>y)0&no%Ct zq8gqg>fR)^+GmrJsD8=&stmUcfis7;(GVa#aTA|E!lo8>m z6&GN7VI*NIRpz=?pHvrxHGc*%;u-JECMElTuklZ#Ydpwm93Fn4IK{ENp3a?Bp_i-- zPG&}umT3qWo6d4ie~-dp<^U~-E zHu{E~r&~RxK37|P470?YSj%&uZ;Pb}MnBvB2?P49{GLR|bVt(wiH+q4!;cdB1>vfL zWhSF*YY0TKzUcR}MSA5O@w?}Y9D1tq7tt&gDEM<-L8_3t&9kw^d`fWu=#HwMDMGa4 z@O1GJX!e6kp~qUUblM2z)HSYY4~oA{j`GS6FOYI2eW zN?IU$`_Woqyw<}+_hjfreg=PHIug*al--P?|AVX!^~m_j4(g+IZi4&S?wZiE*9gL- z3!eGMzoHhAoBa2N@a2Sc%Av*|($Tk|MxT*i-I;#;;8o$4?L|~W)s42yY(~%VF(q?+ zg2fd4>i&oOx*}q~x~XWEO~MyOLu7aIg#LL4ycZ5XUhMCbqo&M~_(12K~a&x5Z?nXG(rv3Lw zTZ~+9PjoIvqq4;VFvc)U)|_5HQp>N|OKecs+A z;NqAjh`aWk-9qA)C9B4O==pS(rXJwOnI_u&kU~0aeYE%cEVb z_CQO(Wc}lO5KH}r6=&7i5vOe{)^Dw~Hv{*^87(a5`1a^f`jiiH{f;{$*KfU}7z#8P z5~W8KK1!!Wm@aLl^FiN}!s$g2%56OyQ^BgkcM6>YsB7-@m@zzUcCYno&6LElY1QSp z(vb7$4vm5PLKy#?UE@yVh(m8X@=@-N=7S!h^l_K5)6}`hnd#`*#&oos(C#;=I-i%e ztNW46jZ--9DbFQGrr45#Q+JGsPXk z?A{XLdK5l-du9pg*?B{BGSPLZ#v5&U_JEG~0L#7*1D(OyQPq$;gzbKFbZ&hrI=W6r zRVfziPMFJ|ZDiux@p&LNwZdf7rS7yk(e!6CFRMs_QCwxzRL5_ea%HDix&6teearVq z(5N=o0as7Vub6?#Km+VODlgxpvQH$luNB_v3<}ViG?SW+zL3riq-&o`*XsRO?y|n6 zf#vpMQdh2Lf_M@yalu03Xf&CfvBchFeL|k^4tLfaK zpMv3x|I`7w@m~>KbT-g+vDJdlk{SKfvcw&97(>BjeVUiWn|TiPOV}IP7WE1DMvK>ft?Ij@!E1MZ|)4&O=NrrSc$*8xCO2)&HkE+Iv^Ql|ogm2r;nq}d&38hoHqu1c5 z=fQOCJIQ6kTz5WuY`_n__^{chc*b`uB{th4*?B*b<3nfR=V$pQ$z{)vPmg^*)v&gG zPP%rjRgjy$Cbi6Qt%>_Xk{48di>*{XF>#Aes(7kl=&XEd*=mX|=a4Ai2Ug8APIcPjcjCF;-;C|4aD3P>k)rO+OL`Zxr9(*y-QL_j)Mm z|24iFN4u|;$qBnMZXCLcnbhK|;o0S|KG<1f9s5N2TQ>sCou!!v#t)WMX}eV~76@Bf zr0c)#x4;DUdHJoF??v+}u&v`TZUEjiwZ$IYIz)>lqQ2+=ZU2`HZ)Nxcf3NUf+i*K~ z6gDf((Lpuo1`b_*lT1v1SW?4hQ_)!zn+FHrR%Et$$ejldW`PZ*S!6u%wG|dL>DnRQ z+d%F*Z?ojyjIQIHh1~;lucP`(d@PaahOS2v-RF|R=}47K1CJ=zxzt?Vx}3Mjom{IL zVd4$*`jNG+`42wf)K@6vsub_$O?sq+z0LOc%nhi_Y~vlg*!X8x|1rSW*;F%DMR+X2 z##K^E>!`V5US<3J(p#SZD$T^?m~tqt!n9d}L>?plt@ki$|04daiNS9`qN{1V$mC{_$)=$W z`jTwmo~bE5;nG|bT;e_tgEj3)ltJT)?q|^TenC-i+p%ka1QN#u9n6z}V%+}nM zAavuJqw|1p?2xw5fJ`H+Ph z>r%4i{+TbRh(;2S3L8O~eUlVyOJ=zzFxXgc4K_BaU@Pe@sfP9K$Aynp!Zsp#J;!w< zJO9T2SNNarAl@ajb5|uhU+tihCw(QWIXfR}KZe=?27_!|lWrJDbbkzJ!(hr26Zfyk zm-FG_KvZjMV&XU3hOhQ~A#v)=#>B)UTKt~7AY+iPr7AJ;;JW;HmE~^1{hOqgJvRY4 zisgl%)$mNBt5a(@`xFN&s0Zh@rEC9|%4J$ox#l_;Oh+pF$bq>Z?9@v)4TqVO{EK{8 zyQAl$bRHO`%?+VV2J^Df`6!(S^4r`H+FWQ}HaZ`r^FRTc8$z3lmCVbB&qsD{OFSnl z8&|^?nTIep@qAE;+i*ToCG$~}n0Uel^O0me_Ai-_xy;9RKV&}In2*y-<^!Y0=O(1b z&KQynBzlS&q9+`5wK5-VemDIhWQ>?bVp@F6V?L&em^vSGzmFNCSyW7u>sL(Y-#etc z`K3gAX?We0#Bz6aiA01YEYE=;9!yAO_hUyqN*WfvSouWviJ;H$UA+alU~IBsS>nR? z-jQ7JU=)))k*x{w*0e+3iZ~ksUF7Wof%l1Icem@vh1jEr)$Zi4=q-kEXt>;6$@!1eMJaJ!&&VTrR zSYAdIL=Gu3g$G)tqMLSbRkb|Rw=I@K{7*sb1>Q(86 z*E26#!E7ti&@S?f2>c3+%r_z9zzG5`G^#@B@c^?zUf-EX7#`Ucbe@9y{N z(d7JJ;cE=fbp>UFKa+SAd8S^tk&F_OWw~vVs^#hO<^jC?`mLYj542BU`HX%&ZE-$>=3s zZU3SeYrGGV5|K5~Wku|^K13EhcXsL;@@Ax};bRse(Ykg{QOZ6~rBeGA%5yBQ$_n*KT7+0 z7ba6dfBLX;83A^DTmP20RZtuk=?I3*yOCK2q}=t-Y~wN^b~_)tM6p}AV~7o!Nr7^t zV))_FpHISI{7GMf`;x3U0Q^%Qv0lhX^-Or6O?bmB1WQ?W=(xlmrBE3{-SXkh-CI+A z!Dai?y_dts<iOFH0Dwp2SnHcR2D*Yk-tcFyFCsLiSLP_^yi-)2_?s(=c@!6jj4O2}xI8$Yr+cpprz?6`bF=Im?3H`xA-7j#huch2i&o_{HXjGE{p=g#E5+5_vx9Hp>H6bMT5C2E#AN8hkhtY-CQ(1%?uBH?m_B3P`C32ThC-qoY{k5c~ zC3OB7`i%yg4lgw*XK9s|RY&KFnWI)!2Q_GY_Cm4Nq;q?%%YY9t+$q$9OuNabuBJer z?%jl@xudoj%RcKFh6PW=^Uh#?8zCe19_+?Y)YI4X>7GBRGa_aTDq8ma zYoK#_fsMm^>#Jkv#_)DG#xWDz<)$hrf%o$5{uR9c_>&JAcba-OfcLLCd;PcJo%YTC zGkBlI>CXq|`LR#=c1z%W9q6=SyB~n}pSIlq-oLeo7~V_u1+3jP4qy%Ng+uC}kTkn@ z(!lZ$*l)+$Vl!z7XBq6lcTKYIIHwGj!D(H#=}E2xCeGTGzhg6>oszg?tDZx|#mj?t zdiY6Ltr7r1hJp6K3~$$)%w?YR&cH8iQcVw-ttFM=(8t6H?m@0~S8SzGH9eV*b{@Xz zgZ<;Q>dk`5Q>AogAF(5&?}2q})|1&sA)xf{?ZjF882)y?JvOrgeVj3-2i7_3Nkyi3 zG_ZW-_(~RWIMU%Lp7XIs+Fuy1F03c|N{^W?_ni1&G~-G67D{p2#$ccFCe!XEshdKz z!$0L<^O^}9Y+k}v4SG_Rx*aslB6-D6ww(pnMq?Px_L7jc!TqY}I>Od|H6g4Ep=nfz zZ`8N?7wuP{Y}l`^eN&7N*Du$1C1e2*`}MD*z5d&1Fq&H~wsYtq>1an?U|COoSl?j# z79IQSl+3=4X+w6UTZ(EHrQyUQbdR88!0#C{c^IC3v(+>Y`~qb^#d$tsLk!4HSGkHZ2K`b>%ykrUs|B zX>^ocgd?%w&ygmJu5w9Qz^Al3`X|SZd@k@`%ur`v{4?9x!B4O!S;Cf#ejOgptAoc@ z6pH>uYu3{1Xp$5+KbtL(S}KEA3|c7}?8HCNVKL*Mb>6iHWnswfo%)R1Tb-mZv74$$N{3G20l_ z7oW%Gq9ody|LXhL+9h=TO+fgNH?pmtYCD#5S2hiBU1@rG8)oE_4j2ojjoTxbs`k^6Xv&!;w|P zKPu1*?|H!Ofa2M5(0Kl$hpCTnaR_?}CJhvPPYd%0U)G;fEU`B?ZQ4x~{;YE7# zS(WW)CYeQPfcAx=1Cq=7Wj2qZ5?Qo!Y6Zi>O&)tB{KBka@N%zPNls<)A}>?23ZIfb zLW0gJclbm)SW2*q{5Ylu9B(Ic=h5(5mt|Sf@YXaue2K=jepPWi9{JFfQa#5H|6BU|%<-a`W#eV$yn-WjOZYCw8vV}kNq%eg6CiD`IE6_l87>}26bh6J* z?VG#1u_NFneb;hglEJA!aCj6QP{&CQbd$`dZSMP_3A-H4- zGTBnk*+OT3N5mRRxxL7jjJA9ak}um4_MmrO*6$0n2sXK1;J zJ&;)g0cI67%*CxY@2SV{rkjs*10!58l|2wzZqHN7U9>+EQLZ|=4b3)(;!{>mp9{_Q z?__weDodl%1xk_xJH@rQor-;C4Dk_5zdQZof>hbKK4HXS5lC@i->9g)2dWcLU)m!E zzWEqRu;=;LSNPIDg26Mz@kl*AsR zHF?&~dA_Fl#YWY1nBg}R<^i`jDN8oD20u-M5I;?O$fg-~S6ZqenO{AIDX!C^jfW)e zxJC(Bacyz`Q0XB0c%EM&9w7AUHrsPvlGV_zFI_j}$jecbdsG+AvQ_?j_IjChEtul)% zpkfBi;*kDmurkQmSo&4oJ!%FIWtS^Igv!r=gqH~;y~@xvKy7D|sxrBmET>uhiS8XX zrRaLjOL2>A^P8Oo%UI`LAPOv0Kee=?tA&s5RNqF8$#1p@Lo>bZP?ESixR5_voF!SaGNtRjjUnW38V`iL{0C4y z5N-5vso$I7dD+FkR4MgSD z{2?F9^2-@Zh?0%OF7dJABBBq}&_ZmlkA+z@wvw_ypS=BPfq&Q66M3kLrk1+~BQ1?| zt41FiGK@m1aR=`*Jvqu7j4exhNkl8rMXyoI5`O95dE9aorY5@P0rPaUP?_V$=)lG$>l9~>zKXI2|9^? z3;?rKcA6d|Ho(C!rd1m|(j+LQbYAmwFHFIZ4KGh5R2hRgc5-YHQxopCWba&d@2aMksfL#V%OQTh}I=&+};>ujU~u zLq#m%I7?Wnr4U-KQ_GvvGD}bdF{T+;nju8lkvFl%qvOE}BS10fa8GZF;zJHsp7Uj% zEY?`18t*1Oe;Nwbbw zO=;K6dsS~Ln%>6P(eh4h%WqE3KyTfnC{|+Fh}tdZJAVXDtHQW*->HMtyKSj8f82Vl z?7d%lZ{isD^mpgr=_p_;Kx*ojA zHZRIwB8p+>mO5WK4#hzgF<|i7Y{Sm3OmvB1LgALM&2)EuQB$ow7+Pw-2U8MDa8Wv{ zcMC!?af@_1f(~TL$P-Gn1ap{KR`{b%eT5!}i(I?4}j=qZu z4-2BQwV$G@}u^5g}t3l3f*U4eA7R6t~FE1n(5$2OHHD7hE~zc`b6!l zK7O<&6Sc?p^JC7;MD57~?rlzjMlwT_){bPD54|rxl36m6=^x1~8p-sHWEPBMdPg!n zBbg3&@!!FF9#9hya`QUeFJBO+fq4v$99+p?_xryYhu5MmaCnhRx8=@SU1bMeB0&QK zX=JHeL^VAbvTdaM$4<5@x+}|ux^rodraP89J5s!As|oikwtcfyZmGWAGbX_|^@Q(K zwp-=g9)DFoY_FDz7AuP0QFy)jlBFG1x_*bp`)+BWEAHX3w68;(lRMl4_M54;Ub>a4 zk2k+LRc(V2SkI$=t2f@Vs(KM6w-eR-etYSiDoJY7V7;K6&h@MB$*4m?I+|1G*4C;^ z8HT||Py%VTsRNBFZZj-rqG?Tf@-Aap8;R}%${F7kXp=(UeSf!9f4zvy%cp9LTHMGO zs>Pv&wO#OG>37%edup@ObUDn)Ey~0tVcSjwwa+?twDrqGj{CHQ3Uz}#Z6H`i2sRf4 znh)qRg|11kM7H`9z5`zP3 zQYp8yWhzbuT9NQh)I?wW5srQCTcw(PDVwNFnX2|4h5ZbHG49zN!(3}~;@6OS2bv>6 zP?8T*tKK(fGc{8No90kwJatHc0ut-BmASa{Dia}_Ow?SWg3MfMu>Y$U5M<-%8 zAUjG!Zt9OdlBTR|GWEwImGloeDNCce(N7#T2%d^-aXZI-4#EVkLi=b1%G5y+kK*|E zgqUU1BY`s0(VSiE=X-`Inf+7`vEk4y)1DVKL*4x<@As^JQq-usdj~_?A6#gYGKVRk zh5==@8myGN!e=`CI^Y1H*gIg8vAB-Rb{)kqnI5W`JHh9DUYsl_38;yVD?5Gu1eJtk zVN-V{>c~J&<8|30MEIV?m%V<0)guH7r3_7uv($MIb`*{#(OwD(1Mi2_b>FUg7U`W9 z`%oD{i8Z#-J+k(Ph9U)+h})olDhNJSXktQcL`R zy+EMTd;$|?aW6i@7Ajh-->gu#pRcc6{enh#Z9|9aea9f7mU*1rXvRE?vL~40u15#f zC8Oz;$V5q8Td)Fi9+eN&8eT6jMboQ@^^5$#Mq&+k5lXyx4|^cXIqX&sD=g=1PRJOx zrtbRBYap9%duahL=zw*tWZ9i-nYMh0gB`t($WZpxOk3B#=_|O6wEK(-SvhFLgPJI@ z)8+1z=lo*y-L_Sr!=YsE?hZi3DG&rvI6D`Ruu5zkSroBR*~SX9|?ui@($p^p_Z&ggC@Rbo%p9D%rnzP#VanDW;9E6@2#X7^YnPV?axPlfRC zRHgE2)rO}U)9j4t5XjT1N7fjl<=3(G{5dhnpEKa2Gdd98dXe1v5Ze0Tv;%Gm+#M<@ z54bn3FYHsoB!@|SkKIZBIZ|W!5eu69(dNdti>cwrk?&ve7OMo#FWjSvU7nv6!ng1C z-*dzF$xHorX9#~4;unVRhr@RweD{a%bs?M`;x`ZBo*}+Dglj{4zYOU;Av__(Ul_t~ zh4A7K&L#nMJz37Pdk#b7>Zh|P(yJFI|srT9MH7XLH8=Hh9o3#evSQX zfn4T1LGhgi)hb8nEbhSOu?*6*#l~zaa!p9XuD3;T7UdWwFXKC>lX5TOvJ2j zf%1(y2louOcohEO$KWeF7insY{w3bjBnN0GVKFVRm^qN!elJGmJm^d>8lVG6a@J+9 z7q!k5pe+y^4Kwvl>7dTSjKQ{H*16s*tqm9{6c#6`7ZM;V?i>FNxpnw2ou-`52Bredb`<)#& zIL}No9E-9z{_s7mw#9RlA$NBy=Owe_+#A~%ydGdxtn?-hzzo!5?V9T=x$)Le05TAbWm~dfIDZp?-7f1v8xz97$}kKd-uB z4EGE-OxzvSJ6Pd=L9g*Sn62$LS?F+wf41Sg^G`x-n>QPu-iQwj^qzmHdqH+LJdW%U zSOLK8Lti=k?L}l@M;LSv;if$F%PCtO;iGFlz-}xFBI` z)jJZS7iviMLsk41qUtwP(CCbQ*YUeN#Is(F;3ytqXvnGGP(zcw^jjknmg_f*-=1RC z?^b?4NxVA&%R{<&qA>=8iL9)=6l1G5MFyLpK2V5KTCMJOv9RK{8QJi2A)BpQ#<=g3 zrAyZOueBJKY@o6t0DistMJZX)y2To^-J6CAF1OOdzvKXGc%Qpu$*QZOyq=Wl1zB;4 zc-d;`L}^XivONbo7Y)XiLRhkN_JLPzyY(`U7$13q6#reoTM(IUSaH zrqDv@;x`b1qv;^uGo@&{@WTKYO&5B2B0gQ%VZe%}3ptFZM$?5Gp7u`{Y6xKNAQ|Qa z@)bynABo|`Bum}=drV8%Oqf={&|^zW+j2H(VKbqP27o?CEX$uOefAHd5JWA?>u^mf zcTaT(0M<#;1{(@n5IQzuD*kp}I43eZsSq51o{p((^KNS-8%~P~tT{!UZPYD95)ACv z$Ts$dG@cE~X?d@2d7>e0hZ&c{FElukN5aF0^&Hj=u|u!V+3+ za5&jV+1zHYHn1H*l<7CFZlTZa0LxK!j^9C4g<&uQjY{1`sq7#yTpw*0HR00<8tO!2_%@(}(Zg!|v_<7bBO&5(b62qzG)@)H;P z@ZMi3|H}O4R(@rE+fdKrq5S7UcyS1~5A~!&Jr_`3_013A=^@`|L;9D)_e0jsiu}7F zJcjsKelNLlKz+97J{_cisn@{rMU#(r1xuqS*;YjyLFpvu$RjXY2%pfXV&Au?u5%ZWZ9wlSfQ ziKj1cM-TZ!B+1&q0?^|Lvk{skEAYhAqrryRC91`J8*4;kOA%g4{lq499(Jn}?8`ne zS1X8%fb+(sQ zj~{T$U(#sjA&ng0@9yBE*uL8@bjkLwz-GWNYQJ|aA{A@eRwE0OWj%kUO|R`+{XB(v zHRSViZ~N8~Jk&Hn6lMa9R%$S`^gP~8<@6AQf{r`)dv!IC1Csy%l5tDWXN+Va0ieL@ zQaI3J(QN*m6Kz!sQOxurmFueRpn$PEW1`mMYysIo5@BKrE}G1p|74uiXo32l%K8cf zb@F;_!BO9M6ztlc61m{*hG!QDtP!YTNDxmb^Vjo~g*U z8n&5UJlB9-pIIDk{*SI8o_jIEA3JEy{JB0$-p$*!s92CZv>N{(3x-)+0@8S1C`m@8;HmN1-G3pKcV0r z8WATKVXB|>_J=>yUfMA7#lUd-+)|PR?qIjWD&6^IA%mTZLwekgLk3T42HZWr^Rz|) z0s@+RFNGVe3FJge$I}^&3vnBCF}#94lpuyl;YYHi4Tw?D-@+f%Lt&l<%lVg9ZTT@ZXY{#E$f~0p%lm4Czf5xmRVq-@9eM;!#AWg{chd!ww67u z`5PYq8lhR_?aw-HOGhU%M^lN?1%P7#ytt(di#>|?qc(#@Wan!F8yS*hnCX9N3biEp{ULXc0RNe0;_=K4xcxl)t47gLo-n?GwlfRW%sG~p(8N5Cncs4PH zlj&R8yYL@za-gWGWbjh8Ykp$LTXzRzje1jurkV62=eAi<_v2Yn|EW)Xw^?cR=8Lzo zeMR6MqP?Ozy;a1#L-5W*EU!Q%Ss<2K`zX81=A~%sB=csS7hvck32n3vydbY4$9~@% z8+rXS^6W_*b{Ep8j69Z~5#-rF{~WAA?>q4(g)8#sgz)KE3@3QAO|K;_9jy&*9o*;D2bR@Y58r>ms$z5BW>kneGfziI!1$Vq*QTXiP7!9no zgRu8?3_b2I!k?Gi$5#A*S%v%+j#pw8vaz#zP+hd!Wqu3ln`OvL?nldo40I>93RyBl zM9zz~*WoTSVea1-LesgD~sL||~@VQ#^1w62$`4+iHF_0ZMN0_Eryts(>c%joOa zAqys&sO>|KV|x}&QL13dqFhB&mQUE0;sd5ECoU_99-$9zh#gA!t+!|61FVVai;k$U zUn#TS+&;0cxlQlal%NF+qwr=d>UF$bX{SybTx_(04N571)44?*!pqob1tDvSbwet_ za2o`oxq;2f4$U26trtr5_1qsNV10}3(#7LD+&BNM?k;Q-sG@}euFy42EX>Aa2X7BR zY%oDC$SvISPV&A(^7UgdS2r5;izu3fjMlvr21P=|~G`_O=bk#E^oIZg56By6lll^JMQ(3HaylR7E zE8vX-kY)W|#bhLRI|mM|CZVY<6Tdj5z`l}{RD|x<4BKASKc}p=~(}TOapaq(VMzS*a+d%H->^!t=W>J^Q&T0)S2{5bALU|dDNWK8%-iXEq zFjz34u{n~Jj563P`gv`VXsCfG-nIZ532_>P;#%B0o2avRtqeLfCh=-v7OJ&wKLN8k z+#Ys%=@&_`toXb|mAz}Sq1UPwd50@gs_Dr_JHp|-`?36)D9B>|EB#nG0*3ha_ig|k z2p#Y!9x6tR`CxrWja9#+%9)}_S8R7d2A#4cYsUfTlVS5P2QO@hP zQd#`T*p)ts2sz$3IR9nI1Kd7_{2X5IjcalJF=IiZs{w5^+q<{HY7A>vHuYg?MG35G z)46X~41Xl}*O*?nfArqGF&;;aOo`3i-{=1Vu<-iNG_X{i>uW6tTG4L6 z8j06IeAE+fx^?9)UJUdu%SJFN`}(&_tj;tVt)x`88M4>ZV>V^+YLR~pEtRIe!aC6y zSSND{{5pAb1T!btr%B=rpgFs+beR}X6Hf#QfU%9^cYX_S1krh#W=mjoe14yb z!r^m!TIRZskTt(GZJPbOdKx+&1KvGGA115AzaUqBe|lZmU&%%#nzw*$*CV9O?zNGY zOxn$q%`fFDMtpDLDk7NNAE5UW1oJOITvbVK?4tW zeSP|VApequEAsD$aBT>$4dKNhyq<8w`vvE}yuc>NE`}y|zQB+OKgxk7B)VQeu1k6= z>QweIF8a4HSW+7mm~z((xjFPfpchg7T#mNII@qMzG^pPE9^jB)NB+|Crkus;y5nyQ z^Md{-n>041ZDHEw%v19>Wk0ESwVx9d9A;KbF$Z>nqZ9tDDEvP;xldQC&v zlbZZvI}PSGfig=I017?$jzN6uxYF#nRA-mvm&*reV%#6E1d1x%4}A%Dn&ccKuK^WC z9%bqtwrHbH40gah$bkXTcM%OL^oBKo{@2I<#Ntc$^?mLNC3QCSj0IhKxT7Y5oaoZA zD0)c)d31hmq0 zBPDXm20S_vU3%>`mGe-Y^fcHbs$AU0iLp@i_uFVz@1~N|#^kj?`R5sT@jgFoC~-8M zN;W*2===`2giDjcIJqg$Y`Uj0W8h**`Wu?N%s`_1H-e)*N_|=>&NN3}xNV+%Pr#X5 z4dBw`jkx*L!qd0~L@7a%Ax*Nb$($zZMD7d%Q4NsRxG1b^GN5&)-~DQplIJZ@FL1s! z)?KHF$+G~^i_n9(#&k3n@wdCf8aE>SYvv=-HBL~%V9a}ufWGJ@G0~UIg3ut14PWCg zE}EnVs=BKYF!BeHGnUuL-$Q<_U+Q>8cfyRn1%DAGhoT|gE3UTW{vF2K*v zpWRng{h*0|e}-aRJZKbaiH>c|5^3*wKITS$kdwdh$6n(5V+d!5@YWEXLRjLRCH7xs z{#o!nW{Qh~KkT_Wwolw~(IP;Vj?P63d1fmJw@AnLJAA{>6-5}?>{yV&MLyKjXvoKIMw(@?QfWr$=H7ql& zW5fm|6C(pbg(wv;eX^s$mycj_x3ZoE<*{^(q8ZB6Q&0)Vr-G*3jTMeUvyubBl9NEm zLVSw4>mNV+?1!m1TiooGnxV2g57v^?wIzhtbwzhH;nXT|M-x!|WRF?Mxl7lo%yvi4 z5Cy>Xb(E<}n)SjAs4Cu|CueFBUCnANi$D97IG4**`7NFM6cV9)`K3BfuHr4izqW6x z4R6I*l{aA(s(IOeQhn!&xuZ|!@wYSsryBDr-Rpl;^D~BqZxR!{?MlxKmxu6=gxv8e zzQ17pBfUP*khNgpVa&-8N!H`j5_jAv{3%X<6+bm?0d-hhLLI}GMna*KL}sIzX7FLy z1=4hzfc)~Kbkn29CAa&HqRmpyCe9Snu~NLO{%bb(9!YQsRdRwP~=^5 zZ))cYHJ%b>G+lzy#>nGQ$s15=!$|K2r?yc-SZ2sR*r^KiPfF?%ocVBk39gC4kP}^d zz)4fN3p*%}V;rlBG~-dm{7ncLFi7RBB~lHZURqEWQjst2nb}ippcCC+R<)6hEfxLH zm|3{+Xk6?Rl9~OOiy z3&2kIJELlLi%Tr<7H?;GCJTe+3M?=geb2hI^Y=91B4;}q=BlR?-Xb=pmp)5$X~`H& zj=qw-8_3b(Pm^ge9qsZ1HaqFbyDx+sq;%_&F!D)ZFDLvU#R*5dT zV20c-vHi(w2#c{bwV6*W-{(exRalOGcZWR@4kXmCE zB~of4MDDFg#RbJGinS;%)ToJ~h=wK+Zm(Bkm6k5F)JmmQYpez1f=0mv+o}}XN~;#M zwajf)s2kL!dB49i^V|(k`+wi}pO5m~XP%ieGiT16ZO+V)20dq&ckNh<88CROzuT4k zMpF)rNC2Z>QTfgU%846k@cy;?k6FqcX-+?hR?|yqjnWFT?xd@O+%7=f@Ys*1-+J`Jv&^yP2=AvZ2qPRIx$Z+PsQxit-M; zSld~pbS7=|q+5!5O?foR2?2O%iBiwnJc|k3216vWO*;5l1_t^r??9$?(zR~wBc8pr zTY@3t>3wurqLmA>xB=$vev7Y6FKfZ9itj6c=loZg#`y ziXbYloCFSy%lmcR3G@)heI=hf_c~b=4EF7o`SP{JmNi)P@281GZvOGTJt%qNTZWe z%!=9i@iqX>3&qy=@IWpMKsfX%VqIB&NkEaeo%7nrnBA_CjGQX{&mdkshwPkQs%CqGWhfHC&HNV+m}T% zC@~VRbgcbbG7nPWq(Ah`wXOo^a^`lDjepq^3T-c;d9biu;gpt+zbEC-`l;|0yz*rP zfUz|*Vbq;a6(Z|Kn`KeRh<}p@;iW#YveLuU9ra`6e#f86PZO^dk?@GMNmwU(Z=BCV ze~HwOEM?@6ya3rI2oSjszU3jlh(YPGiTl8e1tP4hUiOh2+Pp}P<3BjV7g=aFs8-L6 zb^}_?hmf{UVdbrEzH7Gy$I`1*N#1!U5-=CrC&NtCeRn!(nXlqG>R@VTstmP}eDxuE z(P2yPxo_ve23;2>B;MuR#%t3yT>PN`$+)n#F&#lpfnK zDIhES2SxV#4+^U;Y2KT%3za}K?(H7LqqHry3md$~tfxKeRY*oadz@cx%Fj`K(o^xh zJ~*EuTJ);RXwD43{tOWjhmk3G2cqOave7#VXkBN>?7>VBm_d}WeA497OUi|E2m&r# z7Edl2p*j`3rO1IflX#0Qt|^<{KE=|v!PCx<{&6Ejef$a)cDjAKJyZ*!Cd6b1-VtPm zko53rd+buu(q&j`-m9f6>hi;A1$6n=owHr8veu}}H9&WqeL?>g2nv9;D?>eZUqOwq znscX>4cj5=ug{a$;lWXE-{EnE9Uctq|4D}rWlchDh&sGC@0{Zx8HB2M-S#x6)h1|3 z^RAGz$LkW+=6?Ju;bw^jm2qG67{}L~y}**xX_D?B3CF-#60tRIe-ep&d-n)j*iQ*; zYK|(2kF-ceZo9Cwc>&sm6cu~f!2m|pmIJrF8?stt4fu>2kRCoVum77+Ri8=c!dR_ogN4nkdzimHh8MAYs_JX~7sw3>!Pm&bN`* zFumhe0Im?U4}YpIt_I2*yY5mVq_(f874Gk(n`&Z78+ROErEU+9s5M&klUmgU z1$%LUU+UnM4abyRkUVh;Dug=hqw`9ytMe)ZBd&T?SojkE=ox*njAtQAKAZIDMsy8R zAcUoWp@bHY$t4t7C|r8K%P4a{!T#O2QwRg)cOK7QOPvPcc>f@lygw ze`cklzmnJO{0q96Dm{e8q6NVP$eU<Cz)Slic?F`aJVMRy6YKq*jZf8MAc?aWG`1Us4&Z1~QM z{FWf+(7|Ews;hqF-NIF@?Go12X_qpKvA+H{Q6FPrhd;C$Zp&ejYP<3ne+>fg*9NN5# zwco^WA@9Y+#k5lGgH@90z-7t);;93~I0-efR{FhEQfcfkicn!*-N8e^H^O8UR$YXfm# zv?V%H9tLxqvO-7KL|GZc-Rq5x8bMjCz1*xg%NGr-KDdQlo24TSjk}3&(2!^})^>wc zG`dlvxFsU`V2u&chY&FJ{}JXE)g^ebwhs(O5fSyZMEVrdJkVDe8CidG$Kv(L?4l0% zdqjL_0i>h0gCRqFa!HBc76_G2@fZaf=G9EzykJmU zp{6vc#|axNlko#Nm6vv7QybGNb> zli(oq##%cJA7RI-KdeL6N?0sXwKjdJ)BWuGg4b-Wz61eR)65OUB`s}tqB|$jH~AHw zRNZ_ovyHV~CjQSU0DwrO{5J_m1L+4c!A8Srv{^~CIjo@SHsy1yEX$xoB;YW%X3K8r z*_Kw3Y)$`DjY%G9PW!gs7p- z#q(u*A`UX&Cu8uh+1!OaR8g0m4#KBAejSO>?DxNDyW!_^^U*Xt%8yW64_gTEO9>^; zeh&wtribsgHOjXsVuO`)>v@DC3?XNbpJ{VKp*Ow0Rg}*lzW77(?eI>NFXHc98?h&q zic@O@p1Q+(%g+WNA>|*b521gN`n&i6)Zd8^5*k?B0?-X=q~Asmy_(zngl?ojk04n>uKAgoGG|q;2en;H0s;-=>780s>nsI0omp?xe2 zSipz^D%@%J39RWT7Hu)c-pykz`2GYJ_blOi%nd?1kOnLQgmtQ6$Afi6t1P9Xm1JWzAPktHds8Ag#s{{9)*$3Wf zp1A>xcz)oXXWcDqtFDjL;TvV)4W3j3TBf1&c{l%7`HPP0hJRv9>>}rxAfg;X(1#$&EU?)g=`Hp_TiQqke>v13Fl$JW4({ zAB{E3O8cdd-j-r-7Ve5fDUVGX6VMY+qPSIfvS*3g6z zZri8@3bqTUIQTPZEudg6P3m^X$$=0k2=Ote0Q^)_+7+sh|1S2(tK zM_%ej+O7}uZ_rN*#uu3LC0f$UE4^@ES^#e5$$G>r=Y3Sx7CR#9BZWQ zn~vRhouFW;RbWR_pkvY+VpMiaM#|W>WZms;FcTl=eQc7`{`(1Q6uWB z{~5cnoCa_fb77=Zi@RTuh#rB~H5Mt{M|aD*m@(I`hM$cTh1|Bo(eD@A8LeChSldN> z)_QyUIDXU}(Vv-M`R()%9Q);9QTNTf$$c{^h`Nmis)^nf^}|RAQ$~_MPakTvd7-s6 zv8nh-o1d}vHe_8y9DYMwUg%QJPYnTx>xjCa>_F(=lWS5uJ!0^%3ux z>$-*BZsNK&lhN4!oGB*1&FpaH&x;aD6V)P;_ay{Of|vsWue11&ml<93(yjbCGNU$j z*+~`p_l$5Z9zV|=p@a+L`u8$6bTx1^-gu72o5<04lQ|lX5cbdFKa9@)p<^Gj$ICr( zJGG|GbD|AwYL&??SugG!vs+3JIYJcUj}3U}?qB%7(D)8@(35u*g&(^QkHj3=R&Y4( zZQmI(N&Bm3(*BIbUURG){UqnCQpWV0Zo^c1k{)S)CM0{teWJ{-j93(5SWARb`~go6 z67~60_hEYNU)V|S_Enc+jH{p@Zq%)s6NFSo`|hSu*vj92cms8%RwrX7c4Vduc^|R6jvC54I+C?ZbjE;IxOU?l2h}P&+X&u`upKz4hI@o zm3DcCm~V^s#_SqZhqOzYAJH{_OBRuBrVHBxwU+oBg&n3!ZxcYBL+wx9u`@X5NyxkH zXh+oOP^}xCz#}(j%xwCT||# zFZnNbeO?V%Vua$q&KGKBPq20$=ePKao~+%A?qY36X&EMvWh!l-0)X^xiFkS-at|TwFyW7Eq2f;-W$=@ZC z&v?}V3}ktEQ!YZ_Y^$~*Hs*B@XkH9zoJEb8d8=rl9|T(_Q()h4DC_AFYKUTl3xl!z znTThx>fyG@bp~Z-O#tm~v9*uTT3fIR+bh-R?OU&zvK4W#U?iTNw?>1-a><9!1XlrZ z{;37dQvG2|#{nG%zth4wTs( zdgRwn&KQA93sw;MsA}L$vg~om$%$2FKW!n!NYb2Gb1Hp?31pCM3xrBp3HDQttT`q8 zWWT|87ivHVo8XlU8zGq4b1Hao3y{0UN0+)U-{f6Zs)}wXZwQ2t%;HWYN?AA{JH-r+ zP8%p4Sc4J}LL%g9^7LS5^r`t;$Vio5R%MyY9#HcwQ*Sn0P~8Zjpm86|m$#y!-sCM< zU?`|lbjASX{PpC?YV^5a2Q6y2H9xSab3~=h&Jk8T$TYQXFQw;)LBoCE@0)P^La;W z0y+~n*48R;xvp@7tY|75Y<7o{n~q^y>&^+F5;)y9jo847m?v!ba=}jh}d`Bi1@fsIU-j3JrUdSJZiWn;$Iw=BVwB)8v7g(s{>mk zVv$oJ5vwl&1AGwf^!G7Dybm5E$nesGkKq5W;04l7hDIb=ZuPW#dKBt0RE{^IIcQVHo_>`FM zf8J)59Yt?qfBuh!x_M$4kt`QWPm-Kq6OO7$RJWNcx@n^AI&?b$9IT!YN!!h8US+nW zN+H{ZrA;-jZKL8$ZMV0z!XGiNQzK53b(C5#SA>wApV9Uex+1Qq=C#l~WG0;5CX~CP zS54b#g^L<|IzwECsY(6p6>WVq9aL%=_K7u7VPfXjj`vN-; zvjP)Tz_avje!2^Nfl2%hnCw*YI3>554kdlAQKhPbn#JY?+7>BeHg-N2#6xqi|s@e0pNXl!U`IE+QI14y>8S(7( zE|^4C?~1h@%xANqIpIc*_uY9!>k4WBw(~9iJxiMI-^4wHYD}8=1B_dzNn6@aUKZxm z@E>Yuf@Wn0>}4JVwDu2qZQRdPtyf%(Wu0e#XTNLI^u4WUJtJJ>f&miP02PwljT}ga}0%(F~A0~1*PM~`P)~+gWNyAV;K9}fkp~q z7M>KCy62)mWcHOGJ-dFQXnb5a+4U0Bk&KRULDVBd!oEvr!9YcEasO~v+z7C9H)io& z`29_HioS1STi?;gF$klLP`cJ?xIW%tK8Zzh)kM$1-6$~y+={8vgM9mC7VC&5PVVRs zrhdo*3g;row-Mq78>-)J;v(bVA8ANlKtSd71Sj`YxXZ}Q=jMM#S=--}@wdT!$9P!j z;X@5aGC#v~X;B>`D7NXb`BXtaw7GB2lhTvtbPs-VwsDMD`&Hs5kj;N2+A{u_XX%B{=W#pkvI}5;mi)6K6KD?HtKF^cGDUYL`RQIQH z28zYM>HM9h!wNSSzTLDh;JBw*ZZkmshHW)DN2m*!wtI`;bZ^`ayyzg=9?7m3F*QK{ zOAu6GVen4TvPL1QmeDYYw6h8Ga36!s=HwNAja1V2S)Q%!txbVgxuK3 z?=TycK}OMmg_h9UP1g!PJE}7uv24Xj@)yxG1CqwkA61l|S1$RWXeoarW;r!@(5tDa z!amw6pF7lLBzPjPVOCY!PwIY>yCA2Dg2s2sF&H*KNpnPR=cd%X?MuZ*ME$-XAXY|GB zQgN&Y&=Q6)8l20OVXZB+)|3#D`tCa7T|t)STQugL*{IN_-iY5nZj|u-&lppZ3qB7~ zaiemDwTaN(0`lUKcyBm)NA4FpM4p9BJrajQ7ViBv02O&8dcI>-9Zpq}{(0kZ4_`7D z(ef}JaHajV036Nta6(?_j|kY}6H}%8AX9RP^-(uDxS+v06l}>9)Y{Ue0SwWug}v(~ zZ~_X_NK3_|^@I7D@WDso%%6Y&3=N|# z+7dBiHaZK!S{PZu7evAL_AXq2?R3XTK>D>P-285#&v!Zbva^>3r6=HUtjF8@P!FOj zvl`M1Bq^d3OaKJpbjYlF?9Vc>M(P|AJN;2}g!DTlcEmFUu(yP{FVma;r`CGJs*)~60m z?@P2&Z{3tKzM?W2D*%Sc09*2eGoo?`Uwei(VK;lZVKs@flJ(&?7VX%6e4eFWId zcU|@#mf1JBgjG3}ZM_6LGA=;wbhnd7!oLX;k^w5}N==>X_9e4#P3sc#BXI$hwTePs z810SK0^207?cH_@ z$xojyuaKZb2!i3 z`5&wcXyW9t5W77#Vj*_(tj2)oU9!13UDmU6_KcW`jjqItpupmZ;)f-*%fyxJ}}=PVq#gm1e=HP|koaH^ea@ktIr;o7cvw;z*+aG#5zQ6!X7 z8BBmRj);$JtYJT@7I2cE@t41oXvfOgJ%Ac(e-$7nl~&T|g(iYvOLk9mmwyvGk}eV0 zQK$bYcC_686gyhwe~#nlZ2wd2sKfshJDShWNUd}`GY8NV2ZJLp;{~#GjP+!4wGSFj zcVX%Tw0VN@+4J2*Ym|K#pZ&$%mEF55jP5+Ml;>iK1|eJ;>`6J1+Lo=-ux69XURhls zU{6Whrb=)2z{Jh6bZl8M_4DC=}Zye*78lFuFLVZXhb=q3c^7?ru2X75Dwqi2|INM1UG zy9>G40NBEdm=3&ALu!GUbn@SLh~bkVWYb0%#APow&^XIK8@YHaE3{y7`x^N~-W>-v z{MjoE!?DaF1nLwKSYggrSY+ruoIZq}HKgwuGG9%k>fAAVzF%|k@YBv~kT>v~mWJd# zUioIfyKGEjcUBB1GS?YC)GP{X8`9}}T$vpjHO}>69s%spJ&a5wBLt&6uWFTZ%gAPU zL!8^7;7e4yEMtfrG}}g)bl>qnV`k4=j9wtsa)YlRUO%MIq^$O%ceRd-R)Wee>Tvhz ztEa^l+rTCUB6^Iq-)^(I^rKy@pa?$HP^E%bd9Z7ZT$ilRebvlz6YQ(*Ld1x)c+wli zWK;JFG*fFiU6dxh0%HrcSJW;tlxzmER`wIbVW;7dfz$XiLvoS38g;ya|dE7rPl|cHny@>Ij0I>YCJio(AZB(B>($lqClCe2@A|@Pf zoid^f&R4;2wLMsc@BhkBzH|_n6GLb%V$FNQ6|$w^gWi^0=1Zkj3OdVj==?3&iir}x zP8cB=b-jTfpSmLs{a0QsG~`>Vq}MoxaKd*DlEqAdb*q#<>bO_c zODOOpin-6IJE;YlCAF>BaXU(^?QXd~{I#r6u8p(b?eDQgMY$D)ep_Gp@2*pN9%1$= zLn@|Rsli@0u4Relft=B*GuBoGN<>8-CpHb;hn+V1PsKEj7HR`Zls!xzb<++*wte(o zIJj9q%aR-H-F0~wGYy81o);lSs&z3*@WBS4ZH-Xnm)GogIm5EuJf8E%ZFUIlJd6`q z$Sph%Lo?%Zv;}!FLtgZehkeJC2kn>@IeFQkP=FI;gv`7pn#a+d<1MaX7R5&{@a?Oy zq4XUJ$4W$JR7|OiV*kARcRXYgYtunV@Ih?ysY1B?W5iq-|4k1+_M3xf?^<{9RJm+o z?b{oH>gZZiT3Gdwa^a6Z4@7Quk3E{xfwMoYVJK6M;FMZ{!~ zcA?(5UC}y0%-3x%Wb4MY+OIl1#nC#M-@;+>Uu(n`wyfX&x;|U& zJ%vVw0~mF)D5~X8TL2;k6D}Ebx3p*JGU71TDQS}{KlACU^j7nFZYkbi7#?uVa>Ytx>%(BQo0x$`|B zRUhgwj#f`{T^lFkv~tLMrop?GBj#_}QXJUj1J#ZDZ91m9^l+cSDqt?&ZgYt608wJ?cFQuq;3%w#YKMp{sQM+V6B;-2`83c>jy8}GC>;^P+_u{-qp}|_pfi#{t4Xm zsyKA79hYR*u==2PguxYl**)CrerW_zZ$UJ2bYwTNo?--F8{AFPh3~BRi5^L*qU$bvn?p=Trq}sHhZh+9Eif`rSY} zTPRR6kKw`V;KYZj`s7>gv|oUX@8$WG)5AYE!y`B`#Sq-K8l)c1gc$9n1uLxJ5~EG%B|ZFi*LnDv3qAbf=pM;Wh2)hXxzZ;;8j>Fg$%9Bn zk&t(#RGCQ7RrM+vAr%H>6%&mPKkjAXO9)gnz7U2s|ZyCDm0O&k~ENt}9K)&sSZQ#|`_M803;}VJPSxn2N5=gKhvc zui>WWan$X8bAu`khP>TY=^i90C^ND4y_k0p+^&=)n=l`kgiW%WRNCtlP`UW2mw)kG z;EpS!Zbadk@~)3O>>COTIzP=Ltwob z?%K=p!|*+y^JcDB2ZK|<8$-eRd5$k(^fN0NxcmWcWWbv{loAbioB?m>BxM`}KE6A% zy--o8d0r1d^OuWFA7zweY#hJ&L06gIy#B}F!j6mG#V3p;A?nCiXoDuvspGvXX?A#i zFFaR;=RT+V?|%>PdNLg{>(B7d&rI;&$Ao-i!~3`RF8JGo_tV1rb>vg|<>CFz0B=Zm zzcs))BfNh$ydMziUlz(w3*Qe2@b5Uy*Ec2P9~Pd!3eRtZ=Q{z;gW=g8;H>1k+O<`9 z|0_?ue<{2l9rAyPXF& zK1cYU(msu!dRKc~snIbi@?%XQ!CiBwy0g=lw^5VdRBwE=i>9_a+kZTm{`h;{{5J_| z*X?DD<2QY!i5_lB(mDn!jNYsa4NRaoCI3)F2$Hdi*J7qu|SBR{;yC5LUctJA^3 z{vqnFoaCm;8V1Awd+WRci({RvInTTFRv{#K-GvYpHhoqo0k+Vgv~h0cPi+{#Y>hQX zRnF_);+9@(Ux#e3L0+^}ZVvpe)2$-CBzMwGc5@379DL> zqIsMLQwA6lcL9Q01cMdM;EuYo*sjhNr-X^x6(0Pa03V$vX~*wLu+jzP{`VBP>Aiy` zi6*tc|16+R!DBLp`WNX#{~~Dt{fktf->b#u#?@UMH}e53pM z{4UtzFhU=%{fXgXbcx0yx;w?PdV|kBG));i3dj%~Fr$639VxcuzUxjNYXW_g#$aYJ zzjZT@-676zUCv`Sxbs{0^Y{R&uOrX?pY;93uW2w!zutee?;hG`+MfZCM?QbLI=_o7 z8pMUF(9<(9zJPEb5b#ZO@dZ4gXG>|o3ODt9SoUB|oGzUzj7SxBuM^}}i>{)6+rS-b zuYevilTgCgKdUPiMlMiZPMmx$ zpUidfY?b)g8sl)y)75~hnkcj)U?J! z6JCiaOTcJj?UyjJ?gS=uXr~A$8nYOUiioNG0Yy>yrm$dTR9bE8RQBV`^CM7-OQA>@v`Tq>J%6;^G>)*{gWwi{=nLN(?5*cXqVdm#I zEtF|1jIo0-Z*q6*PkgR|Dwr>xFT%&C;W>Gp3MLkCm;PtHZZdAGLe3!mjZhdwh8)78+ z{TXt;XDBxz62eT6X8BOx@^5dnmXA<*kFfdtbUXO3U))j9eW>oz}l!Jou7NafS2s*Qtt|1500B;F76KQX)1m8`|UuNrens`l9T zg!4fAY?>c_!i{o?L>j^rl-$c2E5$lsBllK8N&KDy8?lSk^bt0)L{>VVC)vZI09?-m zUTp1@euxB_EdBPW-*4Zw6D|8~skYxvSm<9Q&q%)k?zh$Ge%om1cDPJ!)MA{DvVyVr z6}fksj9m8Hu*qP5p8}Z?Z*R8$fy`OME_b_F#A4}-?=fuY;q~q6c{Fk>3}unVn02zm z;j9g^xyONz@p7_E02vcyb4yEPqw6zg&7Cv1XMTH#J=k%X_OYND0s(l z&9nioLG|sQ=f9L88c*MV&+b(>|2yIZR)6M#e+l8lQLe~b0_}Mh!gG_&r?By6u|{1% z^O#RqOM>kD{(-rQDa6^AN+Te&D3NL!G9oduX$bCsB)Nh+K*u9R0V(oo>(X4`f%}Vks`9GxqPPR+m7G3KU;-r35XTjbdFH(kSZLl0kHNeb9<%1XFbQm7(VO>o+~#}4WK*kiwtcr- zd$BRIPMO#oNL*~#PoX4&^CBFRvgVOM78_;G5i<}&WSu+CXPk>lPc6cuzmIfkr!ujyT(p~DS-pST#^Us9ua3}MLn7P>yL1VVjbsQdNUhYKer9-gXfA?**O*gwM z0OFrA+cgBuvz2TeWuk|X?sorSt%ROzKy%L8wlr$3l4mZ{tSCIqUiuKusAws4`h>6? z8c2FD6flKel1YR<$^SHml>b>ns)mdVB6JNjKSk&oHpmF76B!9rZU9|DwK+x3`tqc)_67`{)Vg0m9;H*EkI;!qOtE1`<5X zs@(TGDAI^dBF?w8&U4rcPY9emJV%G;{^7ZGc>X=)|7v)@GdyR9=fd#)CZ2+S4bP6v z$1l(5mQU4gWbV&D!O4dpx`SvYr1$!pc?ttuL{Z79g{Hu!I;C>EuVOkjRKFQ(+Z7%R zJ-ai%9P#P>H^Y_pu{4Vk+yYk)R3~B$6e?n!z<@xDBGyX(vxry+`&1EYmH#QO?1{;^ zvW7gzl{LWbOSh<#yT@<>1&uEb|AKNi!g~LL|ta%a`vrw63%t9tJMTqo_c{^)t>B`r$l#$PyPn>LY^TUi`XcON2yR?0t z_n)JUHzT6Az?*;SGoA+PW5NlW5l@CHPgmVhxbvTF?K&Ji1&e;#-b;_Aiio9}M#$mX zzvNTIq7C)M?D;TX>wA6HdgPsPXkVQ1ki*;}kN-%9tojT89`Eb?8Q$G|M*Srvf9!qn zfnU7KIwO$#RvM4MHgs1Kl$cqq9c{3YmyY-B;i}R8xmS2rh3Cxh92uUkhWusW{Q=%D zF#AUP7ntoI#9Lp-X;%71)=SMI$qiNU_Wq_)x7?WA^a{PjFd@p$nwa@DY0_8y>r#NV zF?8^?ROv%{JdPZhmSFM7YE=>4ps_Y;fWM;5&gD|+9j=zWKx z_YaW91^q92f3fKOw?*%d6usYF^!|gQ_f*mQ^rH7mir&vEdOxw~ePq%5u%h>U3g0!~ zLo`5r>Ow@={)y_Bni{xUoG8NmQ49JG4t~7Shwx`3TXfc-X9=U%yL->Z9-+Wq@e~{X zOX{m#(;q_~R!*v4YF?X2eTIVqIBOQERC{*q#M*NvW*&q~h5e#Y+S2g;vF$k*6(rZ5 zKfkqUd-nSuwdatJZ%BMWx4YxS9#XB>a2tT~ z55?bVG3!HFW^YJcUsjtMJEe6ak(T9H>a82`<{ZP9){X2n(&5#u8(9X}T~Z#nLW0WkRJZ@c)2(?xPRC9fW__j${s6BgGJ^;;?sY=Df3p2*7Wcv$WBMKYYu=N z?ycjcyWweH=k`R8$0rMxmX>pue7t%!TGrRj4P~V;s=%PHDwnCcQLEfXXR>oGhTf4# zolvIzSGp^V5t%lo;Og@n1Be<&JJt4y*#?G|rH40IJE`yFTm!GF-%JCaIH#zAjcUv{ zy&g%2A3e?E=g-IactH7PNnR9^pA5-Q`{a8<^4%f%S7sSAn%NHP)HH?YZbvnl3RxZK zn<&|Cc{Qy|o1ZJ|^pdILZkQ=D8?_N7!DFl-a#-;>?a`Q}PsiN?p2y=MF}sz0wMMOM z=yA0&F1Q6K);@~-qM3lkJi6JHy0F+N&e6`Em{+U0ah=#HuaCB}LEb+QFhA^rPuvVv zFPW&s&}k@#gC&dr-7XU>cSn8o2B>3<&t?{#k*N2%ym1D&`7qDFTr}QO3Au<`XOx&8 z{@PT#{iVa5hlLkfb|WTwW(P(fOU!{@4%@W+$TLFu19Ih0Q2F1|4DP$?&wMv8p3jc% zw*Yzf1R81PJ{xB227kw*`y3sJCVeL6&6~cnW#h=FfGwQ4S5^h@$?$%kSs8xv_?c4) z)2vVSmt;(y>Zq2@dSad#;rZ0fQ$D`4}|gMNkrfHo9H^YR)4n$^F#2eg|xK>zHhfA-`bbzDz%d`Ng6!PD$ zQg}_%A48u06?|x3E0~BWEqeF6#jqqM{&L)3-H9ju!6}7*;!a3>;EX_B89o^x7j&Jq zn>)Y4N%J$ts&AYJg$#+OCepu`noHdwSL$tRMn!$3=s~@62*CDmPwNU#_>}@jCAsz8EqM zgt2P8{H)SVs>!#c$0m~RYI>PNhRsW3%j#2y)F->^hrU`rbPW>=wMds6$J1ZrfP5S z=x(TfE!K96L1F22d?!%4+_}@hGF$oUQ{y`us-J550*)wKHF?2}IaylU-<$WxrLKc1 zuH>?H-So*EHe37LI(EIa58*Oq2!K}A4|R!TZ{msmfy7(i zuv1@EpcCbZw@xoB@rO{%L91tVU?T@lZWN_(9~joenT4yMeBygi;VuJM6bt{v2 zHypi7;dLWRUqzlaPohaP&AC6rUq0U2tL}8Urmv_wYyfXvHUe_5AFy7gVePpS}^iYPu3*1m^3evt&beV(2sRq07ZV;<5Xlv|#lX8>`(w z&iKxF^@`Yy$0?z=u5-QE3igTnC1O$CjV<1~e(R|q=1Pv}ngQ~r&aItYN5L5#ZhPOu z=l`HForrB$XP6Q)(Kul&>za-vak=j=r|i~YydWU`h0nhu#7~Pzoc_=CF-t2LsPz_PwS4Bf|24nnGMML#JnpaVzJDzG- zm>|X}eJ1MP`X*RP4P$IK;$FwKxD;{sV(2tfztiks*xg>hcDq&ZHp6^s{Cu@Mu(+wq z<6CRN^LVkk<*`9qG4}C1R_DjPD;%f3eZ2a~*sNd5*y*k75_#F-=`wTrcFFN9p&P7& zIzXof)^OVda;2^_bDc5{?AyN&_T1|hji5<(ulkh?OqUx@6Ww|inE9AUzU1cUyJ4xZ z99G_ZkbB;Lbkn0RsmWcoL{j~?=Dpn_zBUj9QKt0;kBU36PWqPW0EfK9v=V<8PnEv2 zlHt|RQVDpSODj4&LD!bK3uV~YWfSe^Ksp&hl+j?9xsy;*Bmg!X!*`r0Pg)am4QcvK zQFWhDb^n0)`%3lCPHrbtb5^@QB8gl{cv%Rz412N>pk98OK3t!^uv~g6cHJSi!&(ax z5~OS+O}^`PWnLu|B2kA+V`J>kzGD)%qCuiM*?=&n!tLtzKC z&Q~9MTRWARzn)g3wAi55Zr*xZS16Ic3zDsW;L+3iC%w_dGV9{RrLr?h4`od_TE7_| zH|z4XuomnU{UoQBd;@-R4qeQ|2mHCIR7V3{O@Ix!{2+GqvHUxrd5Gb%cJ^ty?2%d4 zGq6HcRn#ZfgxVM{k-;l{L$de;mta&xveE>=_*HiHM-m{M^P^a7sQ-ny&^d9H7;fKB z!RO7#g3ps*+q*&}?sG=E5&hGVtHzgR(_% zZiV%$*51m@o-6`H-}V0BDcSc;;Q!!;0{D^t&-6G%CG}OF8c$E`W`t|pFX7+~sbXUR@)%M3B<;Ln@%k6?TW*i=@E#7mB$p)XYw# z_^c)PGT7TfmUiXFl0No~<($!t6j=egGSf}EyuUH7+Z)Pv%45{JtR_2kBDt)dYU4?Q z`P#QnhmAKvVzqnKIRAJF3_y=xVQZ_}7vkIrQj;WZ>bf(7{5;p)I=kt9v8M5EIp5VY z>taHr5-t|&&YW$zC4URLR@AHXbckz4cjoh!yM_L7>1y2yyQj-T?OO^y1(;?A$>mr$WKmQC{^q?;tE;FdI@w4e_J>b?Gl*xYvZ?{*ev$ zWQO}ghI>8j;1|RFOMVp$_vA3#gBkAejBRt7d-bsV!Jd&D>sJIO-H;n5^ILI?4EAdiz+!qvCH^M&Jyz;6e@DDY z9_Q#`r5VBb^zf>-kwOovV4OGuJUy(pf)b|OVkdfNa9w=&^ne189G|0xqjTe1*#CmQ zN7PV8?v8vqm{Hb;OdfT>(U8Gz7O{{Rnr$4(lUmWiBCj4K}BWIkC|C(-Mwefwe<8# z(C98d%TQmHH^uO$q?_R&?DE^-E{9TW!ovZ?P@fnEn6yqd<9NBHfZ+Ulz=aVxNYGL< zx+CY<0{04Bw(m!AJWivAY&QPVgjMV72rJtmg?sc_I)j^kp&sq;H6PgWh{>Pk^C6LZ zD=??;)TgI*K0KKG366G9Y>RxPd!A|?1}Vrg0n?v5V3M`46P*tIZC%qH?l@W)s%V-g zNI~9F(1UwZx)#(9xz}}ejpWA#OgZ<$xdo8?B_Hlz^2HRjv%{cb4zM38@i+vbzZ(QR ztHl912puk?L%3~lT~#1XDuU_#w!0_#G>=cZ8)z7GUA+ROBl#r5A>-qqLm?<_ma6`# zr1#Z56744MRwKTJ1UHywXWob2A;J?S@s1l#iy5B>5A+={KmB~xWkM9{X zcmOm!*$B2n8bBcSHW&tjQ|LYvelZ)O`&5ruscG@mMsfnO@2BD?568e<-)(vN4C{kl z-%2F^5Gc6Jwd1o26XE-~r3v=xrkvc6yJ~9QsI*>FqDU_B!{R#RgGZI{1-(v_=|eN^ z$kDgA&%%l%)1Rqd>GmX#t!Vu~l>mPmOJHS7=UcTrBHfJH)S<6oVB#s$?P6^yC8C6W zmYLoe5uxJKd!W*S!K>@+yB_-8OfE<^8c$=XtKC!bv0~vxv%l2+O-!_KHVB_BkC@6B zYh#C2f8Sq=;GgbWA^VXg{*)CP=1t$W@;{sW4s&4|Griy4DuMN|%_!zn{m_4EMhvzY z0WoZFgAU2gi1~E->PIs={|DMX=@@8#^cN@%?Qb_&w4Oa*Jdn7^7ah*~)3T%dV@y-< zu0>D02(<7J2(c`-_`0n)kLoiL(oNe%{KSrb{(RHB{a>tX-d>|@E1sq+GhzfJU2z2J zx99KP2a=v>x)>sjL8c#dE4n_X!RoDBrRKnS*0_nD%dU{V2$l|@$#_`1HVqm5-;sZ2~~LheG3f^mxxR2j9S=_NRWEFMXA=39Mg8lDiT>XJ)oQ|0~b zfY*^p_xts`3W*vseHY5~jm?^62*Lcl93^wl+2iq)FoW^)c+S={aH|scQ!!w12m@}X z_;s@op<5d3tM8rA6W_N`A2a+if8-Mr z^BoL>FiA&)-Mak&1pA$JnmJpWb_gQiyXP?{)00>5Et*nRg?(mPPp7a==bNRDF~<~eLqN#yT>{Gz6tbK)E{&?$sLg#?|mcDkmQB(7_ISt4C zo;0emK!|zj&S1JD+3B0TTudjg+1*_;NTAs(+zUA1X*RlE)a-Y^Bn-SE3}9ieb_WO7 z$`XxwAbIK6L5oxHN3f5{9QTcDS`);NHdGX3MNYdb1&Pcbz=SfVi%>wuvwIheR^TrT z6Xe^xkpn!qYvSq=O?xxiIEQ;+2PbUg%#Nz3bM>dk^QE`aZH+qp^it1{&-j17ezHiz z`hV^3-~U_&X!GkQ14kGMeya78_$c(t|E2X4Y?-R1x#`*wm-qPUsx1Cvi^q=0|6Viu z>JiEHdGWvLv1Pqu%b*AZ;n;F}CUs#O*IV_Dtqkc^diIPRQL;4tDe_bQ>@!Bt1k?XM z8Gb>2HNK!fMep3ubwszUNkr1MRV7@zk(V9+U-9?bi@ql}7UVDF?^-2Kor~(h^@G2m z%k}9SaEf1m#kg}r@;`k$2>w~bRlnGDvK>~Kd==+yB6h+b)gX#aN3D1kdwjWDHbey3 zupIWeM}5+1F>n-<>V_M3jE@3v%XN#}yQlpsfi99dOZ7G1cLc8Y4NY~4)H#)`GUH4G z?jHmf_rX=bea`#aXY}ObKq5Tb|96Y}FDsY+uce(YY}$XROWFQ!++zP)wd`>bG2e|#GrU*>)c588m2BH|yyvUSFn{%i$6pXb!56#6>+Zfs549MKbd#+BoOKnwqgFEj4@3zxHWd&1g zcR$5qH{HM&rrC7Gf$S=QY9-%uhgiwxz43IjKItcB?3POIK{nV+Fe zqcr6k@cE>!9L%(Dh@J2efMe|!F$oLmU+AICXrsRr7Qbj-D!*;l1+h!JV?*(u+G-cR z-bi5krAYF}lBY@bQmSvc>HVooD(X|y<&$kL?>mq2pW1~dTJKG#Hl*q*8>*MpC!dUX z1@SP<73(Q}n&TKhfcJ2jSg}~ph`h==PL+Uc%zK(}Cf;%XYx&gSH zy4VM$0k5KA=xd3YM3BLMj^qcpYPoJ(q8i(~uQ{k8bpsIln;+DcUOL{;9owU!i@oIC znXM>c{Yrj7uJXQHazmS=cW8sis4P2jcj4b}NPVM{Wm7FCk369w)@Ju}SFeh-9f}@> zeGO67Est|9p4K&O<+iT7Z(xVU3zfPKRhZ^4=XZjIt`lUs5>v`BB+@t3B$8um+$p$z z)XPNrjH-C`3+Re1Xu>KyjVJM&mGM?LAdx(wvYsWmyAnec$B945&*`w1+`%5ivij;* zW485;Ksg4gzv)8SHU0T)yKq@wZH}nbI1Xt8n@MQ{a>v^78%z}6jN-s}>+Czu51(koV1FBr_bN$|`mVBP1}y+C7Z47`4rd69Lt z+!#dsFwFmbi{}3?3o>WtfBsx%CA%DFJ<9~m-L^#Xs-}_VGb>UIQMktee3o0RAqGa% zDOfw;sLT)OM;Ga+GzIn4 zjHKX?v`XJ95Y@Ti5kJrI&qVT1*%)rQd9`rV#B8WfeT_Q4QW;OaU7z~O;QG|DiE1t? zUJl1v)}W}`yXYrOqdxg80K+N7c6NX)-^Y5s90c!EKlGLOOb$K;!F%#U2#(!!28~SeIX1h2Ux-%* zt&kIf3{Ri=6<ZzTG*KU%fLD-+3Xx*1RYCgNG}t7(JHByH#x z<+&=_MaSS04I2Esw#9C_la__{UAMipEh%}BXq{G3Vm@-N+FP24jbQX zxAlg~lBV;JWZ?T+l*aR+o%b86Ka5&~sGdGJkviJ_V(*B7ei$imheiqv40H_)bnj3} zAr*vrM3nMK=UR~2fMOW*Iq)*LiSDj;Padq^>Y%453S|U%X#_8@6aqUYpf;!U*Trgb*I;-+(jY{hLfMK^K^cjXc9 zvAjAMmHqr0xhD={jUt{Z9r!G4*Y>BMN}o9rF%EY+u?9Nrbc1b0uAvjk#yG zLz%^_!9`+iJ*42*&??yI9bwC@b(K;o>B*`b`cZ3Y$hFZfK)3=@XKf+p?@Tu@*P7Y% z!R{yKp+V>;bz;S-v^!cbyNfk%MbF~)9Gua9-MsQNmhOP6F4w80aoHH~nM8Ge({}E! zpH~Ws6OIt&cs6=3oK4b0s(%w}Q$(^+X6jnx`-c!{M4jjj*cfKNG<3ObD~uqzm?Zl$ z0gvdf9~$^=?3OpQzTvf`?XfhHy_pwDF_dL~@7F%&?~NPjHk9?g-4M1$_q4XuRna=l zXIw;ccBcl2bU%{ZsQ9u~udA&THq@|?`OxWh+|zhO zC-Y%pdpBZYzU;RZSv4_hzx@p6cL$+7K|5^zaeehGv9=akpg1^8n3u(+f@z5Q)HH;; zdfh!VTY@Js^yNr>LhyL?=>$`srX82yDupFb-pDJ1K0N61(BpO=VN6c9DDc6X!sxw8L+N#`0g7sW1tY96# zi3GwrM*Eo-XQ^~TjdoRtl`nU#CM~cHQl~TCq>YP1D|ud>%cWo`|Hn!_Wm!^@4kcn|I+WHjQW2~zq3x? z4E?^k^{1uZDa0Nazds4RP<*S9-<$8HfH6p(KCrXu{C_S_ABBqG4gcTd>Dj>lukm}x z_|4$=n_F!Tznhb%Wz_+{>sXN8B7R{GS;rXKZ`_@Cq-rgFav8^Tram{MA@y}4%*<1< zbv!MVunsjuv4XCCfT_Pk;qA?ySkzxuf~5XF&dQBfe~0r6^|!8MHU(34I-0MUlIK^% zAAWG^i;MLiNizoXPs2FVi>acfcXUnN6<1u=GkVMw4XMvk;an=L($>`2pex4-Mil|3 zq<7)ni4B@QNib??5MlWvO3?zeQ>b^_lV zX+E5`e&pn?SX&$N?CsjvWxIjb>xPWu2=z$~=m!&&#?6)SWbL@vph0^3x)iaE`gQ4$ zDm_jcQp0wD*q}4ZV}s5c92;~|Rcz47HH!En$WFJMuuO|>G?n0sWsS6Hq4+AnapN?{ z60QGXU=&xyt=r>xBN|W*w1rwWmXd>Xc9>0ICAN`~sA9948Z6hkYTuEI^XeuEG$EV~ zmUP;X`TQPVuFq!=>E!ps!TSC6A>I6*Y>mEj$OJW<|**q%j`=*4=0h-5GjfY$yB&D-a;a{RJiN(a$w);VRwt@v4>-OE{;t8E zjG8#QJaYgI&FMI-_X@ownZJ=t&yL!eo*jbH?hf2moMvjL-;}vWzfH}|gz)?V&zwB; zTCSGlPn9xA^;&z5*QbX6P8S)a4tqxT=s}5?taDLQQJXq)LB9tZxlUc^gMLLJKIm8b zGt4HHR}rZ4)p|j1fxm9j;l==7xldcyXLQ!5uhh=tF7bf+gsG&2m7k_oGr9nQep6MmF2JgKPl&Zs`SVo%K$#L!uIsmcI|Fsu+y;NYzp?g z$5rE^XSh3LH8N8!z6SH;a)7b(XOx?;=@K)5Tvk8?8bd)(!<*t_~EY} zB@Vg4y(ykb#DGA*rRWuwXd}=o?Hf(bE^?P|4)TE5jS6Uf7@R{q!*BV#hkUzA7gHE? zYlz329c#NDW3=y3`}t@6Jj3YP;#W~!*ScL2)}Doam=(XkSy2|hDt`zAvyi#cnK_2C z($mwL59-rjEVx~94-wf?&f*@{>=l)RY$sC=`n-Jy=yTR?RFxie%r5*Mwv+uHrr-Pf z-;K(1K6zlinYADK=eqEGDm9D>1b@;WTV$;^j*i20&&}y zh^B{i*zcz{rSEm_3nvI^`SCfCyJ>{^I3|1gKB$-|xMf6QMqwkVzIq3UjPv5^T zgLdyiiH5$}Uh za^DQ^zSDef=pw1o1AYO`=kab^@=s5o8e`#a=Ey$Y{&cLZwxGtNvNgU+({+CUC=^e@)bUd$iG6haa$f{yP^|2>+F?(wVt3OP}mT z(fs>rww$NWxW54z_ASTa+1awt=r62ni+XD9dU)z(B_)py32O z+9f@8OG|(H(%vCTqT&y;}+F*bGiBwsD3>wJ^YzNG>g}{^&bd% zk;Gf)*62OQWvtu|dFAGWa$V%(=AuTh#$qJO$sGNRrwGy>M^x(XV{KQ_+Hi6(OCRKD zXyIAbQ&TP$#g}O+kSqr`R_&mG|}^1 z?kJmW>X9GUhrWJM!MHZ~alI;kTr-D44BU4j#f<&KO&3j_{1`LSC_z-P+m*_#3DHyc zR7p6arKaSuE1N?l7qFn2r5&T2uNAVZ zmo^o&pQBwxmy-+NUz~$q+ob|Mbx)Q&CbBhR9;4M9>H&o%nJ+1?={p9$_Mr<4Dj385 z;?2}hMk$~FVdXD|PuOV$|E~ld<->pE8#=jU9o9?c0NVz`AT8_>@anm_YDiF^sOnF=b61#CQA=zoiy&$LVB1e=vjJr-L503 zDZwI+mlMg*l1UYmzvvrRo%fg~nFgclQt0u5THN%z2@QK##ZrxX>Uv8uKLHfd^4bAN zzo}jl?k7n&NV;}<)FAyX^}kE?``=P^)1$tu{G-S(E%C6o{quNx_GBi8=fxpC6`qHN z^i#t7Ry;R}r}nWpo7Eqe=;Z3u!H?+_R}-vx=1{amcNHQH^)P6VAJ9$jqtMo=tU0u) z26>9v1EtU3Aq^611EbJ3jhQv{FB7E&8YH@EML|tZhnkwFQ_CJEKsT#BKC~Udj#*l&*3I5e~A63RaWTzYc?udi|?uR^M4!eiYdk z>)fxtsA@N-e|4eu(^ap3y_S`4W?yh0R<>N8{$+MaOST-cEhY|+{o7xTK2>HEQmNnj z@H>G%^^<@3=g;$=Iem)#K+k&r6i4)@ClZNHWsy2Hs#mw?r4C!p!;gAk_!|*LI?*bq zQ@BUYgygYLgF5wHn2$Gw$McI(*%s?Tpvlt3q6H$uTf(Qy(o2=TfJ!3^xPeXW<kf+bmRh*+c4pRE)} zf*>u#3z;iSmeFA!ai_nRkrRw?qd%8yeB`rRMi@(Mw25Ox7lZR>x~E5&uu zD_=g?^vYkEUKz=IWE*(#gUEgoUbrnmOH zJ3@J*Y3+iBD)S-S5g;T|(0t}(tG1-z?*S3gNCJmj+sUshKXP4XFrwsXH?h zsFhyXFn{t0`(3o1nFFn@Hn5wj$33G9m1Fj&e2iXPE}uY-dQHDQJ5Rq|w6E8TSFP9B z=k(&`dM_$hkyma;C^w&c^=Z>+6PyP~SBv%HZ+x6y%%uGUz4$n5SkQ~3Gw80BlZMkX za(eL;pW>OOF_6kjpJ4kN) z0R9#^!R8(yME1K|RD2WN*!yppC&g-R&*&m0_wXE@nx3o4RG{WE{)I~JM@E)oJR<=9 zmet(nqxmzsd{gxnxP{8?f_%7}s`KP8ROXxW^M9f`Jl1lD`8c|KbL#LWE!s8L{@PDc zhu5MCM*G%4VeMwrVc-`k!w*;)n|HOJqz=z2g8$g&)M5PUkve=vVg60kVOmqD3?FPI za^qT{4nsGE%J2qLh7F%NefTy&5I^tfZZqm|a`bLJql;AGUjoS65v*l(+j$P2vt-QS}dyRho!T>v$cPFImJnTlRBPO=oLUB<_`v^?oa<++NW-&18L~?0gzs z;vZPOkuLG{eqNV2p--*zx`cLtv*kn@S)@>$r0Ps9BXUybz_m4-ZZJmzQ1Z$&3cbK$ zEe$P78iju6X%rV)DQOhmR)s@us!?oT#%QECA9!44eB|zbzwu~xT7O3xfi48hdaTSP zxw^+LL@ME)U8~#VLB0cPoxAj(>KRpnY_GBWf^{OVB(!cs**ME98w-Vr^9O!2C>z!+ z(=$5Zk@@FQrcKxJD#3HI5x9`fD)-t%p-g{vfV2V|ICEy54=_*fd2)RaEpT^|a|?2P zr7zSbY)Oq1QYGI%9^a9CzukEJe<9yFCo1dr(j7{m$vVs9Zd++`Le(Tlu_vkDGkA`|>s;=C9tom{)vfPQ(YFmwaNu z@5R_Of;%_C+UGT3e{Ga4g_$J3i69j(?IXX~wLT?}f~Js?kYqOsJ-$s8I#5k2qR{v9 z+^VPrg@pP1+CZ3D(LYEPWzm!;`pbbGiT-(ec^&F@72ibkXZde|dutQ9zo*eei|FZ7 z%Kg{!_g|8UD~{nY&bRC50VlZ0L_f0EpPu29Z? zD!KoIJot}q&JC95*1D_^et|=-OF96%g>zEBmfR+PKZU&C-5`&FX1%=rczM5ebMpRM zfY5$*OsCcTD>Jj~22RvcTormR&y6eN|0(r>>$j*6WB`v2Q1>Qse1wLvYN;eW5t?`8h?GX3u2x8(kmSG=6RB0MLA=a<6s=>*M4 zT9EIl{T{$?MNi!a^2l+d7bgN8HAD&jG#4FV&#;{umq`6^;Cew|Bg&UsrjICT+AsFl zm7}!)J@YT`^yAWI)na01&b#lRQfNGYup9{S)Ygx2^}ArO$GWr~y}`CS^sk6Lw!W|1 zEhFwJ7tfFl+^tV9sDj0rPlr0ROody=0SM!?(*2bPg!*K2r%ATAV8L3Z_<05tCfmzQ ziut<_?bLyPiKWT*Xy4$yISpigYc?7HaXIzLS8(X)i(U)dEh~19 zWZBeK&64ZX0(YdZwZzvtSP!dpX|~pr`GpUupjIy(a+R|}K*jDK<_pP}^2`<`D{6&UqiRYZae$iGai){8DOY|ho zjpjyN-I4z13uv0;LQm!>app2jl)P0Yi_c!7kw(J5K&znt%zwo9vimzUfhy1_wX&K& zVgHaqD`;B;agoC&ZDt`aHabt4+a=u}D+X!#UT( zQ9>RZ^*6vd$HTDufm5^w9kvtrI z@j!U~m8a5g4$p@|`pe;YCeOShc+4Io@Kfh}gxE5jy_`Cn-4w)eYnz>m4_Kw}Eu0DPos?pS{ zCwME?s?kOZ-U?MLNU2F7a*iY#MU+<2ScRf!jU~}2qR}Ln^X?uSt5{x@8e6Hf-mn$K z3mOFhtyQ#DdA)&FWgns99lX^1Ki@U8&)FvlsD1nYJ@4;%emt7J&+OSVYi8Dc)~ucE zYAEk&7~0h^sHS3_x6L;tRZlJH=Q5^y;~*te*0=}s1D_cSvxckbNncS#t{S-Xei z2NRpoXAIYbUy*h%tz9|=`5igF;%BuO;bf_T@hNA|)Z}MI-2Vo1c!z{6bG7by38N+k z=1pygZsdAUtZI^|Ycm0Q2?J19*$}#6vjyZG2{LL>W zj`m%p5ya)gO&`gZI7Rl200?h-)jAbU(zhX^iKClxoqpGeqj;y8+hk9~r4h32)o}bj zyZ3e|y^&!}y~U-`chqUHNoiD<>-!o%;J7e)YtzDLw9yH}%?YFV8`ab9pZzz&$b|q7 zIdeNnhE?HVY%l7N0cR8SbASER(P&d&s)M_>c7lTKw{L3(nl2V^m;H~RI1fdpD_r;# zjUy;l;N!U0Qfg&}9I&lx{l&h*Dlc^I>Yr=N2_0+eM^Rhq{w&{Ci`ps?d1Qt>>)UF# zwve1&91c<)FAksTmy>g6Shc)3{1Lx#_vD4uRyko+lao0*595T@hA>>=#?!}qHoeH4 zpGpCBmSf&4e5@7rE^`ibFBHn0y;RtX%rQEGPZxt*@aZQ_?!1}Z8GbH(dqX%ERSNqv zE^a2aO5B`doN$AaA3rg9p!$tH>kqN|LA<`=C7rxUQooygDzf^ksKVsC_RTGUAdckC zXF*2#(Qxps_-^KwhH?b|uj zwPO_|Ck~3YBkAGVSx?S6;88&g9w%>X$LK9Fz`%ddmUd2&ycxJ9qNYrL_T&$|vi%i! zWiyT_c)yo7VNTvW_6&94p$$1M$;lKHJqf64bwi2-KT!Ph;#nhbJy?Ms}>;U9cALj-=s9MC9dcYf?CE?Xh2)q*1|MyXkgMi?zF}E!6{ns&>~t z=0M%T+U+?=oydtGO5`9?cX#?XA2r*zRm`AtMJk#qVbr~68V=qNt+8h;z&qVe)lM@5lwG0N?|J4vMeq@$}W)r zsiAME(lPjv`~Yv)ghP9&|Nh0Qui(sF{Yg>%;$G@6vHH)%>uaFxQiEIH06vjgb^7%v z&_JXHbuF#zL`f0(QR)p5Vtv`F~&+hy|0$%Yv67W*=dL2+=2C_TYQZ3GAo^(?0QLc(w zy4L@G&tL!Q%dhs=q`$ty)$GIQ{KFTsH(vf`FZRYCo(0DLti7?|X{~)+<{g4f5VtoD zah(pBN>iP8zaoQ(@($Fkh+h<&d<<(c zW^df5pI^@2NIt?apzK=49oYzf>f>5J%WT!W0Nhq}kV~>7ZYxq9PK7KDE3KNd5u_py z*)$Ztm+j@Oo;@AEcUI5COB@u>V_V)k*!3`p2t1AP4K$qItRC4LzO5~ywp9N--_{jo zr}koTd;k;cVR5Xs!rm>8CGG`Dk-V4d4i)xdag1VmHe+uLWi;LFjSm_(V{a7qtpAAB zmrIM;cH(6rKb$?Y68)@O`!lWnEAje&xBCB4d&BZ6Y|h@;{xwbe=h_>~b};!A zn!JFu>V(d>Eu&;?2X~}n=Jv#S+@7T1i*ruv>nWgi#-mA&P1+9~{TEPIa4ip!7MGu5E;`nUSw~7*%zbO>q zdqs)XPB(kWkge4(cF7cH8~j!xh{bu8sQ-52j` zJXe&1Tgi$J*Cg$y*7Q-)U+Z&n;=`GSHkV)f=a!IRTwA1B=KZmaCMB33osTl*Gc)3V zr&!26pT{gszn|5azHo=f(Bd-7jJgT&ZqLqf_t}7J{(B2KdQQ1BcB%9;av@y0Zl&fu z_#ssNjeJr8s8@@dGKv022S28kiu@D(8t3t28b|)?_!?&8ibTKUY9$L`OCWY=5CsBaZ>kFBm~VZ!_4Ho!BxthnxdM9EIH32hkl+k@Z|X+x zcJg4WmyF)s2sTUaV1}pnIZ4{B%Ggmvj*whM{>zlU%M$F~u2h(gVM+|R-4Of-igQV( zXAk8)NBTF5$r|Z5NO97q1l!DEVhyEdPqrTB3+F`qY*LnzT61VB7~MY=96f-PnuD;( z+Q_C!j)bF=9Omz+4o;}44o-nX@Xh$(r?mvPBd{jSsyMD6+Z89i&d7{{g?SxgO7YV~F7VZvti4f!y;0(*E4^TbD zaxy0~$H!yLZAAc{s=}TU{bne9fAEK46$Tm6by%M`JL2K`9Nufyim?JS1$B_oudWr? z3z}wnuhj)sx9j4cCHJpT^zs&bd4Q2dYWP?|N;^+Itad!_D1gNU zO@Bdf{>z$iE0H_8_=vH{?%)io;ETo?U-66X_JrH|m z3=kOmWcy-*qs|@k7ie}A_~zM9_7Dth%0sdI7ateoBVN?~3hu+*%#>K1-Qi*K`0vFZ zIhVidui-=X8)vbWIJ>_uK8$Phy`Y>t$nD`t7zlfkWMx6cV<?KHYZH_*56y6c`s1 z0C|m%ZxkQ{VhUe3eNXBhMM#94vbUQcM%iNl3~d^xr+F|MH%$2?`?&|_+t7Vsn9$)vj;e>XY;6U#Vbv4GdlSUZQ0gQYXBSitO^$k*~Mm6{}6^Z4}n^ zVJ%N!&U;N@P;lNU+FW~qwO8f5!qw^9JL#li;Sl~>)>A$z$p@xzs`N(?d}DnH*$f{r_09Gb zgka%un1+t;!+N`F%Dw)qP$m!E0J0QI53lOG(MKm#8+1OjrVCa4mj+-Ls`yJ#mtU9; zYl@AWS**#>K5_0(eyQe-JCfpp_wL-`<9`d`8GX1+GIm`^jM9bNN0=Nam3B(a<39GGFixBch z?Q3`^e$;*~Z_tG+)=~RRt<@mqXs}3AYXQbC%3mUBX6xBde{wEMLv`@D(Nn+S{Rwert@(qQ%@lzvI{8jcx@QG zKGC`xQYJfuKVEJ*)H1W}dWpCSUtj0sEi6L^#Io~g$k9jU0n;Qn68CcWq}yr7L^MQC zrLPh8=gq_?af3RxVb8O}>A=fX{ODRp=f}R>+Ht43a(?V68PtDSBgP(_!Gl!H`|oq@ z2&WD&Xa~Jc`v4#ND3%{uJ2uwHu?^z5ly%m}3#X|Oa7o%G980DiL(GraqrTd}Wht0zG%!n4fbiNbXjk=%0 zeG31};rBTY_{nyCBwOKspXPpx)nzZR`(@cr?nSn*(4X^t?WO)&$+hr&cTS$?Vnij+ z=Q57GJU5Jv%X8tiv+;zz$n&an>tyZ_=~d~B$v`r}nX^Y9CyyLCI+c4O?%ru5vdFifB;6p}ZX=6v&dD3l%TAu~}9M$dS&(Yc2|D}cZRYC0}yg}h4yt>cn zfdzh@Im})cCs;m+p}AzK7|mlN>mcRwfW?fRt}Rd?aO^lvsEg!@E<`|I@w!PMM%bg&5l zFQ=L${G2V3@Uy5b4;-JoXjo;hw7w<@zb3qxCrJ2T)<+V4>s01)FX0V;)Ak8Ea91RR zFU#dGk103*GR<~QBahwqZ=pvw{tE7F{1t7kO-BLM>6<%25*t6gh1{c0Xc1HC%T1~W zW*PO?+jZ94#3t9(@?2MY#JaKuozSPN)v>M=cS~1VZMxd1j&n}B9s~Qn>&ma{OS!JD zi&Qp7Weo<_AYJLR#x^Qi6$_ycZCy)Z31=u3+v#msw}L5Xk;p{lC>xgR>+4ZpxpQw5 z7rGu6(vtp>@GCk)eR zQmDS=_)|`QdkbYED_Z5zD6tIjr`Hp$!%=^-CrAf!c9v%vQu!XHbZw(AkMzJ$dZ0Eg zbM-~vrXo((qtQH4oV(`;YUg!zaR*&n{)73A)K6s|bZTGtg7%nP9w`V|g{kzf#S*c? zyr#8sx#>jqUSL(S-=;|iulct{d%v=V^8W4o`?Ku*iEXCty@9f2a5OXl#7a6smL2cj z#aC$@5ePI>`4*0MEi|P9d!F4fH(zql=!8`Mg;z@?qyaT_xc|U@N%%F zp^g4Gy8fTFICDIUj!n|PSY5vVXP0RP5P5;I(d=i6y>R0vK8f!%@*VW);XG=I+lcF= z(kJ9IIXrEhHqn=K1=CMEvX_{C8uP7ZAN^3w$N16b@uKK7Xk)Yv@$=SvhN%hFG`kR; z;l+n+?Ihf?cWp2|x9LI3>+coLj;PoDWOqMV_b0jglXPFheR!P+AT#26HTFvy09;G5X_)h1ls_@sNxMu74qlaJd*9-jhZGYY4PwpkXta`V&tF(yh zDZcCv{`#E17V%Erei)b2kE1UikP7zFb+edy>Bm*dLTob}-vjYyoXM2jDwbNUC_pE? z(xEBED91UaSPHTf<5!DmvT*m~6jO}XlZ!iiA2YyG9vcr+0%YGfgeeBeFO!*l>D2Z= z^b6NPZmY9u_#DBKXt@wfRJPzl%Jf&qxTPC&TUCY^9PP(8K={qq6D&ot?SWWTd|usm zL6lF}=c2t-127%geEQ-@9xCY5=R?K~rhLfuot9iaWDzZjj_rCjpdI(fhwLF27ZITU ze@Tgaq83Uik@YPskn)rHAm3XLydTk}lfUp57jG#&xqHgvKDbtus!Aj9n;@K^A~4=^ zK|SaAbovpyVy~ee51Dy^AKeQZjQDoZZam9cYo~{**S6l*RPS4;f2)Pg#U{t$)G5E zn$wO+*_F&RYY`*VO*bzzIx;PzH~-h=rbOOmlEMbRh#s8_>|pK~{MK!*MX!jaZ|S5( zbUe1oGtHsv%h5-(&*}qq4W>k%jc%-2elgdP1$0_R)|^-6)3>aSb>uZ;(Ofd! zywP>!wAG$Yy=z@Zkb*k8FW1opXcHRI(&n#1qJ2n_E{#~XZO!Vya74(VN)^h)o7?CH zg{0Ur=x*AKY^X?^Ii9c&87&w5LCfOi9A(7^*`7veZ#vF!(@+a_oZb{1DU^1;&>EJ% zk*zHJQOY;P5Ybzt5aaRVlR0KueZ?Afyp!)5CDT(Q^_cu>PCNcUFQzTTx&wYWixD#m zNB9g=?M^%XSe_JZ){BH((Ha%yXTqhR-YGF-E$v0eTXuW_-43xAo;gG$g5Z&3WY2NXf$e%YxO58;Lc>Tf=ioNlK9?b+E__GRH zD*(_MTxtjxp`fPSCTCe?o9?Yjw$14qjvlN%rMby2qk{4K$UmqLLS=s+!G%9g)SS%R zC(?(V-eQNLTv)m12kEQCB=T;;xo}}3bnU&sSVne7x^ntbE*|11)=*qujPi9)w)f9= z`r>n_T3%lS2=N4f*w?+=1o5gQnZ8Q2o`+yx*FsY=u;8NLf+uD$1+(7K$*+mQ*^%hX95wBC^kAz(apW#uLg&=27|E$H^&A7*i+SL~yA~^- z*BA5jJk-4Yh4j2`4hy;J_82`s{Tt}{(i`*i{NL_AdkNQG=-J25#)D_0c&QRNeB6K3 zGlsTjwiTr-pA|QK@pIwSm6eS&hwDwmw7cbBE z=A8d1Jx68)5iwE^2%Q=`Hy1x!!!0frdk~MGosD@%{OllJaPhO+A9L}uFFD`C|DE{R z*RaZaji3D*`Zoa;8vN(R&+f^n!sp?o5l`t6KfA~n?HnV(plHqEhY~imz3jOUp^E{U z+4LNv65_W+7`pcnw#m$oaB&<%AZ=gv3w$hXqTi(pc|Dog?omZ{e8$dQD!8jmMx~CC z-A;G|Yjw_X;$mh8n%&^tq?Qf1Mp-SlKZN5`tt({WSyU{9%nRj12}xRNTfMB~Os!*( z8Oq<@qHwSJb>Rfs*54CwHtP{!e5c`svWQ&laNK8dgd%f`6EpPDvgnB3mW)YzBj2NK zg2iwh3D{E)7O?shQg>h#L+qo5UAQn%mu~{ze_WG?Hy5V6hjC(y=j;I+Iggd6BT9Vu zb0QZ7+jVNEaPv%ds|8^zPIn&+*|noF-dlJXkdZb7U?*A^Q=WZEJ`L|zn6LSD@w!{T zB-m`iJzX)7Iv$(Muz1}q5e?v@-oXGA>1FT3EG&rEy%K|w86o*yJ}%e=T2u6 zZUAl02l>Hq@#XBzn9Y>$_It_`H)?Dn61v}l`|zk)$e^EIR}i#2!~M)&;jgFq>+}8^ z`0FaJe6KjSzmZBmmzP1&W=C|)!%Hd?Oo)mSAWK<1uL#28dClmJ?LKvvPg8r!r;faQ z+F6MCfA)OG-{h+7RYv9Fd;eYeG~Ay@`H#i-Za(g3pV^>J|KIl}pZ0!U7~H#j+V_?( zE}y!c?=bTfp7-Y)C7=uVflb0`m&&H? zGS_&>Fq{a4k8en&uP>8Z)=l)*79xC-zF}#*<*#3#pN{4zvZ2;^qKVNs_pXp+A$lY& z$r4465b7xI{ZhNyac5TY2|$)vY4?Wgv__2@;eYwmfBUd&WR|KIihvxyHx!f{SR{Ub z7cY8#AIX6e<*shvk1N-~Lsfs9lC_88zjTt4xYW!8oxIKX!|+)F?W9yNQ@lT!o}q`y z^fj8wyp(v^oclf>kXwwPNj0hVYlx@Mh16{K8r+I4ANC&U?=c55;3ni5wlRD=hkaAcO!1qeFyj9+AFPK-7E@LN&awLB%J9bj*(vW zE7!PP_M2RB_9cJ)1J~>a{Mp3$;EHh^CXC4(J60$h%SE1=yz#bAUf#r{jD?;S8bXJO zSr_i3pGXnDZtbJrifNkCAr*g)(DuX358w>WjiYzSQlYJ1e4^6zkEs;Xyh#tU)GP zmhd7V|L@~Vb&h0eXd4uKPCcOm%?gPW8m5ASe5ZBfteqU#e^{%b=Pt14}XztyW zKd|bfJgffae*s(%Ry|64j0{?gSFE@mr|yLxzA461$PeG6$n(SNSu@8E#UFfJku@4*R1zus zpTiIJ2Kfd5J$@LNiA^9;FKp3S)0Iuov-n7)Z%2GE<_{7djOS1A+{E~xS$V`Gu`O@B z(1B~a%$(nsMJyNAcrix)A4{|yei-gfEalH>gIu97w3nUh#x-23!CJJx9MR}^p^2M z%XD0^&>c+MuJj(XODW&!+YKr0G@Z7ox8m6J&YirsSw6N%eC+W2`QXzSRdzamdf{Kc zeq2y&mVaG6TU849mo!)LFOe++?UNmbA_$)v{7Z1K3{OG0XB#iUr+$=ieCk}T*~{IJ zh*?$hvseDq%|GB1YK={HOYX9)vO}FaZLJPadSOYcda|Uxk&5;~_*Ikv?+ci$_gyj< zHHD6*5_nRh9yp$)TY~>{fsW*KQQbt#rNZV+MJ*)k(mcpR&5tqVa#JURku`~aa#c^2 zOB(N@gP#DeCiE?5 zBK_joU1HqHGQ2qOA5#;KGa1;9GXds_rN*8#0Dhe&-eZ|xrj&CBUrMHzasz7uer|Hy z$&Z07et@Bn)7H_t$&4t;fFN5yV2X>$?KdkwNa21n&)j6&my~xvL&=RJd$5LvpUnay z_T@)6{$yuMwU=97!siMmnSZkn`WQJD2tehmkmXudrsvlhb_Ax2egRD9AY6Uip+Z$k z(?VZc2-GXmzicEBYpn4seTBf=vD=mr{1T;o=2V0aQXSQGF);s=N_WCv<`bo9Q`ps2gU8vj|Mznhhf;A6IYV8=UnrcjkP$h5 zX0yxdnP|P9zL=q`l73>(0;{yo@Zx50Djlx9j=-5JooGBJ z?Sf{$$5n6XclIRyMD6AMmyydd{fQk#@Il%rOU5~tRW=Eh@P2TpD)?41II$R1N&*B% z*F0{=>z364v*yWnnaesdRm>{Qa$2^b1N6(>Chz7%B>B)?IHh}k!b15}Nq&_#Z7uas z;4n9E?1=;jjz@|b;gL~1c%k34{@`w^+dI&VXyG+>A5%(N9dDFjs5Nq4N$>PIuXNju zKdMrqI&s*|3f(kJ4im1gQO3 z_Eo0UI4EdE{QlUao!VIG(5AY?rHwTgkZ2ZE8aIGH6Nd6< zB6hsn%m^w=ml{D42y3i@*AbBCiF4G^IIxaS40PxH)0K1SvR0+;V==T_o9Jh8t%-gU z+7kU(1C83BxJwP!7w}rDQF|sO&T+25%<;Uj2S4pFd!pZ@67J7#O7#0#DK`!6WF8sB z&Ge3B`gnAgi_67ylfxcPw7g|J>UfkIeVgHkTCNMZ;{O>{R$OQNFnqX0n6SU+d?g0I z^F%TO04><%?aY0A;$v&nQWQDfH#EolK6Jc~m}fr`v4$+`Qm-6PcwL+dzFC&DV0A*K zRFK3i*p~!FKD43!pl&SiXMmyH46h)1V1c<-eOqw9Vw$Y(`$0aE;Wn|2cp9+C9X8wX zz}>_HAvHMN9-zQ!VuO=}7E@&3{Y-3ds@ULpVuRBnHh6LGY;du#BxBpOfFxLA{BI~f zKcD|utsMXBt{-Z~5-rMm2Q>SejtFcADEr@3K@MgKOo4upW&ax^*sCo2-&lahw&nM6 zmi^DdHXIjEwDjPAmx=!c-T2=Cx;IHD{E~a!3U~4NkLTWzJ-&^A4U!sb%2V1hcSHMk7_|@BSu?>!lLkTf8V0&Ekf$98+abyM%(Rq+0Kn|i-;Q}5RoynpDX-Y?qJ`-c>~{~?04SNI>< zYg6Nw<$|_;ze)0F9$uz2FPnvz-R7fVQ|;a4+dHeEy(>Piy?r*--f_OYZx*!ogU@U4 znbJ*+cT3;i;4v-RXxY+lmNcE>u~7Q!JN4Z?wD)B{Dux)OagA58un6sbj~f# z7fuVW(IyxaT{UcN!|Qyqugutb`bVS_p@lVKZ z5A@#NGJf$=!{uu`;sbEsOX8y)_SIkq|BZvbH2lwMM|6|$FXU-=_;2!MaroP;bQ&(L1r zFY5*Vk{<9sfz#$o!++{QUwZzpxngtp)5z2A^MAT8i_d?JwGyBI?f)J4Z#?iz!~bk% zbMP4W{VTB7`^?}OHg#*0UG5k z;!;(??~LCVm)b)4Y7V5+7M{q0j^(SVKQ&y(R+P^L(eMxdB0e>juI5SYQw7roAvQgm zTI5P%g7g-ZAV{W4QSgkl;-rcR6S7zGgwv0fX97O;TeI)X-m;GhVPQG`GhpxQGeC%iCMfVN-x8`FV>gp!v z<4HM?3+7{yD~Zj=Eh-WIdtuGJ7uHwuWRvp|lh1t(@-LxZObHKFr<;_|{dwA*KW*vD z;{54t9K!MqN}dC58q zzb#*<@V|$gewHU+82*ZVzV!T`NBf(Ge>_jS&;KZ27KeWjWrqKfkOg|`EQZuTugxu0OrW9uni5_N{+we7ExUCdc8>O;z9}jx7~eny{FfPD1uL@| z{bC#IvZp+K_cD#!(kd_?wnc6F$n#cSGzHJYzp>ue^Y$j^;}UB+J|AbhlGuElsFH&D z*cAc)W#;1#yKi-Pl7cw& z_|@b7tnd;A#rV0MkbQ+sBflSHxorvmtr%C8IlGguZ>QHQ%dLjUeokY!iyP*1d)P3S z6O|f`sM8NKW3le*8Tec_gFC}ffRb{PL}TGIzZDWrU#@40X|=iG0j^!!Sk^23?3JSk z9X+1JS{Dx>T@Gzk6Eb?#AU4BhQO+z>cksJhVWs>|^1F%OHJmqUL}8<7Jkc-Oe4@0L zv=Ho7bCSz_g2APp4pRn;&+h{S6Xp>S5*|$HgY6oyV3~tY+=meydFuOJ%FNR~n6cVs zR#kf1fJy0*lUa_xel~>Vm{ynArE*p>J*F0z303V%tj&&`g5sG#||V zor>Aa>OPG#-K}Rm>UroV3{d@kT(#x{<`s;G8dibKh{?lLY zkKLIoZj1|l2rv5 zmLXc&xv{0~=(e<=0!v%ThNP`)Wg9=(rW{!l{`Cf}Xr&wf$U30x40k;rFq)T4PWD)) z)-$z2OS3cm^>?wW-%mIH0!$(}rC1+5sYwP!cNS^l8;jis^fo4gy5i)p4fXvh2fx;I z_CpYQJEoUoX1W^zX>X?NL;;SRC=}e37ZgocK8cR{NoiT z_*~dAW|4j`&M)2|`U19icOpW8?);)U!zP^3f92e&bVFyj(|KB;KMP&OFXqsI_=TPo z@{7t2S2kZ;mLl-*e;QPG3_N-4P~Mp<)Dd5x475>3(y`(bpv4%_$DKFd z3fB!_TK##O`vV_fBioy6pgtF(3FD#ALk3SqKmEbYBwpJOJT zu^30$#kQ~w4UdR`6h_Ax%Yi%yD(4pRmb4APILz7gc@A?b_nYJ}{U^g=4&aYCOu4@v z#Z?^UC;mFsUn{sq-%t5`{*ty(^8DSyzYEv;lIUaCIUxyK6B^K z0i#zwQ}k2EXLk12Z^f>?=o6m)m2}B{ztD)^SPA@}6CG`kO8Dxv#shx0i{h-EP6R2! zty??mw@n66zv6njj;#|H@x*gG@3_j%(`Om+$T7PiT=08MYbESpJ)gf-uDj)slq$H) zkRr42sdH7yvyiUvC%LvvR3J9!csn`<=b38DNg7&I?bY&|RPxd-#AVUAn|j zvxjtj^>kR&c>ahb{YgL4{>R<=akBsMcYnRaU!UWe--0yxd%Vb?D)ZA4ZJ~nL-%cv4 zsSI{0?>Za$LD-CRMV2${l?u!~|4{z+Z6F3^!MHwcV@sIs;)HF9-ALO=7NhSHT;fu_OT4n+{nMw#J0Y`j$kBi`s|GG><9b)#7% zDVZ|s;8`7>dwk3u7ny2bC_!eY$z({ngH?n}sd7iS9SFE~Dtc7D(?8O6GSge9^Q@&2 z=YD}sTV1DHFB%UevMFM3jYVp2Cbr)iAF7)-d5VrJ+brwx(@+$N{V z68wKggW=^kD~0IWG&i1AoM=_#R_`-(g|#%|XofAGySZgKjjC=E{F>NQOb64lI|6a! zPb1uKke#DjCtP4(D`a6~`14x635ecWKSVlX|CdMLP)y^eTv@VfV&-oV0ud~SAgvDu#Pv#LX` zN1N-}(-WGD!Ss~lC%yM~p6l;>U!cD+RPBiuLyn0`9m%x9E4!1-xs+v(((HmJ_2YyS z1<*K|o?cdeZ1~2NZv0L~-Te5i>X7TV?QQ(OsnPg}X$!A*EspyFEuP_8JhImotJLBu z;@2K55#{~$M~pKwWFwKp5G<~!aLjQU`Ocr>*hmILZUa|fBjJ4T!M$;vdt+(-ja_*o zTXnLNqi;`e*IoSYJ^b~D{(79h{>WcX_1B;K>s$W)`~CH0fBmU{{)GR1mjC^L|9zal zp5(8;_gD3kea`<-XT9pP(b)*|?ES{PK>Pnj!X)|7CtD_3E;oiWqlpVnGPW`+2TOlh zj+f*5;zRqaP3850R4_yDrGjg$m4Oc@ANqL9s$n0WcLMQ-$%kIuGTC>9s8)1sk_3*> za6qbgS>F_&CfkeG)eDDTN~?y2^>>=>JAHZAinWhH0`LRO#Yo&%oGcEl8krF@PcGq6 z_<;7&^1yiipZqnsK=0;tm^Yl@31%38!)M4$O|+aYPL#Pqun&F#HrDdC99z>nQ84Fb z_uyf4ZYBM^AB8@~XVLtt4d9~xVp}B@j01ML9)7sd`yCQ3ojjN0VP}+zg<&B7E(x8* z2!C&H%15`}wDD!(2<#RVIYevtTkWzD=kWoEh%(81ccy}tGFug!p0^XNOKG4wxV20} zNd;GzX)ID;nDgYYza^S=@Cdg`@}bpRrusg@7YOV3Of^q0?jx&$?+>E)%c>w#eQ{2~ z4~kOsC>VUF;RO@n4fGuEgw3qJNw>IkGNnW&qUvB+a zy`daoiHTTWo_2LtK!e$_rXRn|x-L4&*7Xgsc(l~pPek|J#QKu-WG=%sy^hhzD+gu& z@^qcbT$c81O{91rO=s`6Vm=i(KlT?xNnW;nPz#}sn1q4gX8cVOKY#|!^MH&uWe2si*d@?9# zGXyl_tVs(8s$oT8rwvN;oJTEL4A0`!Cce!y)P< zHzOoQ=WK)2(eVDwy_R~YYs>KCpJ<$2eb1YbZy;>Vy%wKIyjRgocDR{*DA96;7TjiY z@~6z^e$l+_{Lz|%`TUjj!+Z{#J~z=)W@r-4=~He_S5ImWzh*t_gU;&tGDG^zy%AM% zcJWLkN22vy!>7w^iHBdNsYtX;qD&vj1Y>5eE5w+c)w$Ecg?hhtF)k+vLQsz)zg!yD zyl@RJdHc3vov17~t>HQLTD6DmPKRGg&7XGo)c_h)gI`Z1TCM{ktO{`K*iV?1z4H2C zWe0;zrMC_*r58gmCZzt9Jc98tKSMC%$1FLsUJYCkem%U_hL*#x!)Qh#w%*~_U*5^# z*9r;FNRJ9+TEy}6!fx%nTWjsi^X)X}+i6ofW6_cZf7rDmdo6P^_-RhpWky^w-nhqH zv0S)E`w31q|JGms=C619>q}h6J=np_*ru0E+Bs59$2wyQe!^L1PEH(w8{nLyBHsr0 z#}DPt$w^MB$SukHI(RXOvp=}N2Ud6RdB}N*ffG6t11GLnTG`Ym9Q{)OA{egX9xwtI zbLZek&+MyIa!M7~)qsikNLRy(u7>4Z4V_&L3%eTTbv4ZGYUt={nAO$L9*#%BiL_>{ zWeBpi%E&VTr%nb_8%Z4BM8hz$b^~4bW2Rtx`03kHwWl}IS87?S&_e&h%CUM=A1`22 z#oAg74@)c4uq7rK8Hu1ndnQ%^6h&20BNSj>^FDuC^2O=$5o zn&#$dgIEVMYURST56Oq$z@SLFW2V|6$kPC`O+=1X$C<%{@c`wPg8649+Na^?ID>Mx z4BwIA9xcOkzYGGMNz^iE=D5`|_^Iu-41Sii4C7s0ErY!Oei>@rt(HN<56>QD!0Wy` zeUYsJgNSC#&ACmnIs4QY7CclOM&@_#SM z4!7&l?0Nq8H2=HJ|2~LooVsQI;)KeMX7ehxe_>np7VCRnaX9T5dbK_Gl_%m)=^me8 z{=?XQT9fp*_f3Dhbe(U=O$_I}^0^ppV%X3jgB*lD#Os(_i4 zo;DdTHi`QjyAe=scg|qKN9!Hq23B&}$cP6CG92#4bNpVN036kJ8X*M+pPb`#coLeh z*o&Jvt#tT`eE6g?=&plPA^O9a#k6#T^p>H-}cfMVZ8&#A?ha}>L()V&&JMJ z3kr14cZ*it)qB2M(>lWMunXU-USK;#>{O-~_o@+eHMDg#G==2^3P~9NeKaJeyJ36i z%YWf}Y`A6{oGS@Cnh%hcSmulM*xIZpKW3KjQer`QahpH>w}ngn-BmNxPtsCjQjYah#VDF^GNx%i;!z!dN{Lws(Rko+4&Cir~m9<;#8f0O~s`IIb*51tyPX zIzlCxRT3Fp({&DH5!rlCbpWekRF}%-6vp<*sVj`b0}899S=2^RjRtcOEnuY=Jw^ zl7`s!{Q(!NjiMo_6Z&L@XP)mSN}4tNNr@AR{_AM@%9yrg&GRVIKXJHs6aB18cqE>| z?6!E=%sxn5tuP`F~cwSDDBv~6@uBNFVQ$eUmR$$lRP--Kit}+;kbAvcD=LcAC#lzmPhMmb(7tg9G;~r~V``c6 z=P*AuBdO;5%bM(mQ*i2wv~ME1YA z3@{6`-?f!z1;@BB19g!Rwo_8dt&xL8qGUvzltRlHp*6SV+!_@GW1!fKsG3r!G~)H4EG}5mTYlrV_#ey_ zR0}OR=&apI>9KW2$Iw+?{wvdQ7+t_Fq_^gMDl94r!*(n9j^urr-N__>rkIX^OnSOVshp1|bDrzyL^7 zwxjC%?#IwQnu5_ATew>|d!acQ5nk!L1a7g2^w3Q7Ab%{LmFdQfs~ zw+Rx#jM1?woQoOKZ4P5#|M4<)_yxgU#J;sbk!ZQrB&?fSA|T*Q<8GW*c0khu+Arq(x+RFaq=t0i@WlD*Cd$-!u<#DDhPcUV9B0SqElrH5Cc!XoD z2?ZLBc^n$^1Z3~TPAb`Q2Eu@abfkZLOWw&nSyeOcv=JC1jK1pd#3URD%MTIMZq+ji zC2`S=u@AA!^NP3-!*SnYw-9N4jvdz5U!_`57xkD%cPcMtk@_qxFX^)>C!ANgXOGch znAl`XM6S4+B>PxJVT&jGrX(n2eQGD>;ptUZ&E`JZ=&3-74lh5rb7+awV~FH zF<<6}rbY4e>3Thr^6Z}ta_k6?`q?)v@kqHGpOZ@x18=M2wd{2WKDl8>vPe_WmQ%#? zW=DzDJ(5jSy6d<6b+Es#^3T8Ke^>eIzFgb+9))=mE&eu{F{F)!;MpNt3&AtjRBRT< zO*Q_ui%r!i9Z+zly9@9_1MMD?*U;oW3A^!TH)4dL$@^vK`pru;tCc9qxV|>Q)P^3Z z&MkF~Z5UR7jgqyURlFTUvR>jcwPC!)1ZoTsw0$NNwF z$l46gqotIEm7{HW?61QO+}^~x%77_)A<~Hcg8b@Lu~j4z*iO9a=4{Ltr5|LRI}^p$ z1u-(4BBF5pxjp8}YUZcwpJoDh=iDN_#HXPlI4cnn(v%1w!Z<0e;l`xq*oX{U22}nw z%ou@I&O>%TBuOM+&dv26xd$EZU~%y&^PhJRyfzW-M|mtq-ycM5sB;F4#UbR`WMmg$ zLpZKy(aezzQBJ9|EEI`qt~?q-Pcc^qaq+d3dUHZj$_x^3cBE&@xCpnv1WeALQt(@D|6AN&d_iyP~Fm!86zdScOC|_LWch=T2h4t z$IjU7&4a`O8;T1*C8X4j+O*k_i7#ymPi7Ybmc>V~YH2n++I~_pr(8eF`RVy2MT1my zpo)6G12zirIWy!9G$|FeqF}yqNI2YWR>LPs=Q?T+uMv3bfBuxgz|!b|DJl zUUU8#&Y(1@|77}IPQlUfhv5YSt>Yu)ExpYpho?`nZSwe=)wjftvCC zgFR@$x|#89oZ`o4v7Z_d@WjXWy^&vLeE&VbIzE$**IubX{rv~Ae6A+{bHT9e6^zCF z=#>5zJFhnhh}hb`;eTX5=oHOc3V8!E=t|+M+|A;Zs4%?dhl~JoRiZ>1_`dG_=gbu~ zeR))mm+?&1vB^JMMA)iNzU$iu$+W&?*41twWYYnxSkuF;Y5bTE&ZTjA^Kt3dn@hhA zitr9hQ@M0M2=3D8%VBB?lXd=lF=gGuy(*h@Q$x+kzEI3-Jon*0B`Oujwj}%&XdtgdiZE4TS2zgH8z>K{D|^0+HZ_u{Jh=eNLS?#sA>qGw+f$Zu3E zZLv_NzN*<_^{A=MOZA@2)RZKPw0C4MBr}yAsq{`|#tJLj!y^e}WRrI;{%7F;to23YG^-=Fabr{szVWZW8sC_g zXnjHB5(H+p5e)J?{`0lFMDh|(qx?G+UC*)eJiV<~&cT&+0yp5ORBegvMXd*l? z>XSEs1u7X{Gz=NG~>8YR^gyx5&Rl%SWooIZ!4%d`XcGgmrj8 z`o@Rr>a5aG7f{U&YWR>H+)$a_)ihKvg7vZ?;$wf=T=3Ib%ZM=RmksIDaAuq+^#v%n zNHQquGb{3fRU8s`6Qu^mG zC&#uq%w13Q*DU2JoJLLj)-`%wYrh}Ke#>7~-sAkLu*1bfehMyFuw3*lzw?0JwBc~i zNybK3zhZ23A(ZDiA*f+&G~?{(Xs=XEAbfM87D>_fa3bSA!lm%w5mF~?ivXqRMopDV z7vE-_r!8{|FDst@WSDAj#97T7w@S49Kt7!ezFlXVH*YLTw4}_>b3}jJkE!CEbXD-P zT6!AF`-F~^ay!7?ikFtS+o9a{cemx-N+F^yywsb4M~ItBX`ysHw_>behs2g+rj=#J ze-2$u$jPJC>9fje2Y)E$s!ok*R%gyCYZPL^UaN@Rz>aef7AeO&%R1xH0tOY89Vexx zV9Rq%^Ct^N<7q;x9P6a+AU#kJi0N|zI?hkyjFieIA$s!D%Drqn&pzn*DHWpKBJtMW zs7vdc4bcLAx>K3C#3RPq#AvTBQ^t7Xu5Q}0r&-%?uA=Q=VjGy&?w499;b^Z(WDKLV zIhQnp*-jo1-p;FrJHroL{CDGc?TOYKwct7rSAR)dGAQn~iJq&6-)eF@(b8_1(J+h2 z4^Q_k5!>1))$GJgiMQ3PKe&%7@-4h@Xw)mGaeU5GFt(!W?+%SIslnf=Y#-#%8ZmMj zziC69G~7V+9{gpasS8Mzz{tlBwLM(PW4($Kzme5qt}5r5No@4;JbE^qc473EPXNu_ zsItAM{@)vBeOyf+bm>wcaKh_FD_*2!HjVso`#oQ;u2mlI!~!F)rS_L}%%|`GiP+?E zTs9RQ+v~w;kkXV|zbHH@<#wp*+tE-@DT=c41U9mqTcIfxL`wbLtw_m{-AIvAF{R-% z3IYuNto0%|O(N0eQmBEjWk7Z?$H%CRe+-*edyC;7+OT&f)Z$X7&IsRicobkWr};zb zT7@+ry92f;gw}{tkZEMblL$tO;df^S@G~;G{N9ZX!ggLYhHj>k24JRA34?H8-(ovW zM2fMIJ&VmMFipQa)tO1KRBWy{zh`B_9jvN4F5z=3>S0xxe2TCtGh~|~c;Tv- zQ-5l$FYTH-zH4et*VJU!)bg&WL%XI9>Y6&BYieoN)c)anhSSc2Vu{`HY>IZZF{nJy z;cvf>7^~*a%R%Ipd1NZOp2_|#Cm)s9A9?aIax?7wCT}$I2&|~(#q6qsokU9?;v`s^ zzkZi%_ErCI0Y78~JnXMYf9>zDd;9A-{`$1P-r}#1`|BZGB~EXp-MoB{_D7WY<4(Uuw%ZvMlADwJc^1ISoASK#B z33GJYsupvya-Lp}WMvaS!UuR2#&HQ+rCK!J*s5v{&E~JLH>{QL-65(wvIJhbkYYI^ zfWSp=v{T?BH)iRLV5=ab8zMLK21a8Z-ag@v@UY`Odz%V_AGLkZiiPM%K+qL#_YHM2 zU(XB+gGB~HFmt2Y9kw*l@@G`+ROTqaXzioH4SO=t@*T=>sx+!jkXg+|veACR#Z;QM zp+KVgmFU;HQiZL=rtE328ZZcXYjIiYMxKg11j5p-HLC*1rAgf1`0gT2tV~Q-xQiuK7dlubS$bKfwN~^{)B-?QaQx!w+G8Ot|Ky%1;J64OPQ7)(_9^$6QjA%A8P} z9QItIWfgeK@HN*20o8>YhT7})d)Tsuzxg%@A$L1-&+(iMtK*1B2%M+{KRVS}nveZ; zHNVRj%q`9e08unDf3LvN&_>ck6{1M@Ox9WNGM}*>C=I;77Kobrk znr_%Xn!jNy>i1+rXk)TD1Tl`>2+|qYX&YsD+(@afp8n@AXKt_^+eYqmTwS_QHKEmHkRC<#cwW{-OC>WI*1*PbwbfM*`?LYGi0V;d z)3aHP_s-wx*w=ET6TPwPwV z%R($c(H0o<^*Yy}dR;5@`ajSYqShkRxL;8wjtiukml7MUZ>rsFg+k-4ro@=ozO=3kL*vjm4 zJdgZwnG;rIm&Je2G<3OinW!Ob#m|}j9k27=^6U+5rI{~;=eoU`cTLY4&o)Q>6@{Hv0#xn3(o`TQ9 zqlj8tdz1MGuz~tNSVvcJ7hz?GY?V@)ovWKc+>i#$1^YI#;<_)V(7c4G;FTl=GtZ!N z5soLMW{9Hg&qP!zE(zdkb4(58~mQt0XMEyWwtrIwcxUP+o&p z*U4N=Z>19O6azVL@*NwO@~H_~FWpp%bM_@L){npIY1+MkcC*J)C?tDhf2ZHQ>#v`1 z?Wv!!=P1qJyDS)lcUdf?Uy{+udS#T-SFGI4Yw|Ih zjl2urcB^7v53`R{T?vi!=vzseHiSp0w`Mc@n6?RSKilA_sudh=+f(Dp?`cmKm}l=# zSHg4aCOny+bfHHYTf2-lteE{M8}G`zzxO^PGh2|SzO9cyO)TelQ#s#< zED1Y#iSIC%vVl4Xy{LY-@U8C{_~9E|Ma{dU(l4#OPxQy2!WFKx;Y}9e{W}eg0eLuT zxDC&yNuEAI_jD_C^H2)6!lU){(j~%4KA96cWRb^b1uqvH>pQcNgeRj*`i8smmVM2} z_;+SpQ&Kux^X`;B1f!Pi^Ywv_Mh5!p;r=?>UnltM$^iwtTev)g+aU!~O zoorHQA*lfzbgYKA`+7_nhuRtJ4R?4c{0W;>;3S{v^89qKBRv6d6ta*2)<6JNX)?Sl zWgG15CeC=FSl%rf)ighPj5?XlW}{3Kj=U)h*t-*Z62^6^Z8gCWN;=$njoERGzZ|#AEEY?vtFUlxEip$rX91AR-|; z6X=6NY#O(oAmBtq>th6D6k!tz{ACV)p-l{ia65{{!i!PvtiH%XYT#CK73v&`1&(P# z{A`5JgZAi`kOtmfM5zsUX$^J2Q9%q8X3!8y_n%fnyOL@Kxh zLODT%l4yB@r3xQ9K*Z7&-ow?x8(yKbI=z1FJe~W=L~|@hMr@AP%DN0j+;w}ebDW#r zB}i`fUHaap_xChnW9)T$=b8nw+39`6_KVCP5ue`MDb8Mx;K}J*8sJK}m zYYqJj8__qaF_%TD@aVeqW#PAU(e#_)id|`aN7Jo9bg{Yo_s8Au2Y4u%_xF9AV)dTC zZojYleU!hx>&ticzwe6uj_qEHzV#)w*q$hPjg+}`mgz@MECw#2LweD2iQ$2^Zqs#?HzU;nmF4qK79{DGZCwQItwgayHT5pgP*E&o?4y^M{5kVdQf zekw&?w{lTcr$6=IQmdnxs$uWd56;cE*Ob}A!c)cDJ*A0kMOb9cAaL*%oe3%l!hPS3~>!p^4U!0B5mU ztHLv7yt#7&HZ!Zjp$@E%tQRM^ohQn$|6{}x2cc`Nb+m^yVX>?KRfb`6*KCK{7`(A( z=h@b9`;6CcTPO1-uSv+~gAJ)%tQLc!ht;j?Pkn^je9IW9+r>|51m6{aYpKA>&-swhDEsnQ}F^Q3oy%y_9;!KKIy0*nPPKcy(~MkS})} z(4AKBr;g+Zn~TazuKXY6I0{_ru|+Og)N_U^VKiy@6V9@T5d z2T|%eaGk-`d{?Za;7DfbO2gt_dOfaZuNAJSzYRAMtB?O#=y<4|zjMbzwBd<=>B+o4 zJ2%CofK`Mx<@L+tKG3sAd90(uhwh7AZjGh`pi~Tz|LpRsi!rQHzWLw z`PCM!bj5=x4g-p+hRv5}CDF2k*HZeRXJB>0?FE@zLAP9br8@J|y72v^o>&J_8YcrM zyakoY)ivxsz!$=q=n8v&eNI8~S1%%r{sVO4Fb zQ@{hbU4o*Iev9@Qos*`n1|ova?|IsI6knot?G#m$Fo1tlpJk0Li|>QRw+*coCZ$!4 zgd?`pn2VmEOP%0bU*UH`q1ir+_7`q%)2(=JXEYvQvJ<)dqOobSG+cWGE#^!s!vVaM zJV^!4wHgP;4>~p6odZj>Os5SHOe~XC34f!;0yi<~{<(cjX^3@EHOEPGcFxUUc!pkb zoP;{78KyR2sBi6bt?(=$Vh-10Xv7dS;AhmnDMC^E>^1lfiepd>FZu??yl*SfI%iAZ z_exu$#k7PkGVE)l;Ea^9dXP2kk8W#j{YsyD?Z%V*zRBhs@v$VrwHAQ zO5tD{f$Q#oz+~P;nqq&waNS~%#<-+4?YQo7+S}Sb?=Nir1a)c>!^#mfU$Q6i>wGBB z)`9X;Zf$vj(Sx{Msg(*wi`*TJk1pp{*iWel+mZ2TA@2%T3PszIweSOpMv1t^;k8@1 zjZ#sQZ9mvfDPD-8M%(S5TKj;o8;K0DsQXEy(jyB_ZwnCIJG}9;8;rUIjz6qANR%jk zAh@Dk)LjfT?Sp#vkBhqX$GqA1Y@$Q`qsLA)zN}f&TmQHfmgt{cMd7V|v_wTC=y-5f z{BWEpAd}MfxnKj1Q?ALA;nHS{SV*RK6bwLRlz1vGdz$(Qqc(kDQ)-I#!^HP&!PgW> zlt@R}BWlBk{!X%OGXHe`Mur4DRhc@7jPSr<{DAPaA6n;g9*|cF^l~THhwr`)`NyJ3 z79?7aK-~y`{45i~_eiKIFukVaJNlPQiegTi<^98^>tb6xxsj!7_c90Mmrx7;N_~pl z3eGlxcCQuLfn$Ft9w5oNB7aNd(4_xQ@X+vPoyKC{SC~_(1~0O=i(c=rr{!8ar;(ND z>B;VCmwUG+|Fn;umfO>Y4o^ejpj`~Oq)peHx4DG7Q-!FEMyg}+isszs>vHk0so?u2 zJ#3@zu<*b=AU$k^>S5~|UW?v{c1cQjh@B?eC)q7QmG%XA>Gg&?);{X?A7Y%5$$Y~o zm;D1^ou^^QPxfZG{b%oWWv_6DU%fv)nCjuAo z#xdTS+^$_6G(S|rd=*i;LZy!VC0g%dcCv@_QnW7@jAKrYWlna!)Ktg!c%~y~Q7XYY zylET428(T+;{=v*ACa8%euN9bJ0rrbu-fYFbI`p&pvXH@sVy_%8%4=2jOiO^*D|s) z;qD-SXZ0XHIq!V=M4|HV*`hPV90*6mAwI5|O?GmN(gCutV>ZGD=G+ZF8mNl(yS#60tk8(Ul?uOs%72t}8(n%rtxrYR0q5wftPD zCtfVPEP>~=yXJqrCrCPZYMG{(AF=US){eD`zC+d_sWY|W2fsJgFCbDVb^{6(I{}{y zUK7l+=kp4k;5Bs*3>DKCw1w&$g#y%RW8s1ku(|K^yWQ0X&IU1L$lD;_HZ#CW zjBZx#09)~*Tcb8SOotduc4l7rVp{hSku)1az^P}~hg)P=qUE2~MTGs~p`U0L?GrXM zHcVfn`0f*|g+KWtOMjpkHeY{8Z*|StL7%yZuayMk3?T~%E zklo?4kbSmLl)6H8L+$izAt5CoyHOms9@%FLhd}lYF5x>8H%K^vPK zU{gibU+v~LtqeO+J}g$u08Ni{$=wB?-x*u?JJ82Riy45%62~YJfI*i(?Z1+jJa(H# z^Ss5T*d&46y|SEW%J2B-Js4HA0-TKN8-Ci4^&Ea%lNxQkfxp?kS^NTj!fHwpVSOZ~ znEyyW7@&ImE_&tH!Ud%Lu+I`L_rKNEWyv%y0eQmDaO$;o%H7eYDp9#H`x~B4GWm$N zCcDQvO_q}{Ik6ai{2?;&T!LI^dMRS6r;JIoyh4MLGuwsNTMvnrCn-Sy)&i>#CHo56 zi~2Z#9^Jl&JGPivY%AmM`dfD42bvqR_c(LgvbCi?yp1r2 zFbOsIjEHBu;%gNBz`oMk3AeBGixPMJp}$_|uYdB_KlR>E{>!)XBmaCme?8A%f9$Vme_iaav;6gC ze_iOWTkqiDd)@zT0*>rRUpUTyB5t1F>il26(hz?4h@VHb>$E6|5B>RLzH_h)$9u61 z;Pm`9MLD|6WnkM}euYotcSWRK^(XDEEilsO0jVShU<8 zS&a$~rm$f}fn2{YK}+)WI=oa~exE4`^>ssdO4J0BOidJEz5zAC%oH!ll)O*)NSmsu zH{!x0tlLib=YY{}ul52IvG0WHqLl_DN|ifd)!MG#!6FUDWD8tQLktJHX4Jp9y^40R zBKHRILb09G=0zGRQ9JL!HWaW{0dal(8twktNR@?I{3GT$uNw9i9v1{$Mbq>?`_;=g z8t%-#noe4`QjF_epsKMEH1^ocg2uWx^g>}nkF!;#hL%WxW?ENk5cr~Xv88L`E?jen zCaS3ED)aMe9uo^le&e)gy`sLWsc|wpkp%BIt2KCq z*0fN(Btqy$gGLcdwP>t`QmmS4f>DIVCXuY`)>uu8wb)pT(yA@r+9;xE5D0i_#aqQo z1@E(^Ehtsds`%H|J-G!%0m zz^9nFIo<(pI;z!QJ}v(Qt;G;0>Kmz5MP>*Bab=M#4(QVs*K2W7fv_r*x@F65@wq=W zjPCxm!-@)$4=2vs;kv|-)qU#+C+;6GgYo1!7;!hF>?18ai~V=Ref=&26Zhv4qY^oQ z$(T_44R}R!KE#mBemt-a*ZN4~t`*JS7b3ogNWl%sFSqn{6oALDV*Z3qoUuVa7|4G( z?!N$eJ$88dU7*?O#Ug4Fp=Ithn3^??^WZvaP`JL52bYFMKR(e#ge&_Oa4APWK9TTn zg+Uf?EsfyP@pF+MR1QHSatQj($bW~RJ55FZ5Bv0?!hQ&9dk$qf^D#g9`ct-}^5FPF z9vlNBLw83kF+SL+tq< zN{L%4&Xvca+z)oroD8MX+e=t?qxYia%yJUD0`sAaeFsAWD`4_6ltI*UIVEP;h(B;J zS2G~FCy%lbCcQKw7v*t}piq*LfJZyUdJ!g5Psnow}H5MO&$XazY7@BmCnC9!vZq6O*<&|5(mr zjelecV*H8Y{F!^SP4}_2JhuDCIv&LmT%!b-CfY0Aet-9K4_}{s9{JvcWMgSXZ{>`F z3F$_iGbRYwn#42%PRS&=(k34QhFN&!bU65O%~#o#OH{?GO24rc)GDp5nFvH}ZX)UG zq$RCa%&N*JP@!$JmF4OR&G7{{N$WZAxmh3iqhvLKn8*;zV`PX`<{Ee41{n-u=K)7W zubmXl;h%pG(u&kwDu+KBkh8=_pjIU(;U7?0?_N4WogS;4pH+v8>GOUJrW`=rGp4E! zJg$|4GKNHD1a+nt5}k>2hs_K);-XOVxT zw>#AXWTUq`NBBp2yVG}N4ZYo|{z%o-$L}p~NOpGcGR+eMtH#YBgO&R&s0A{PdVN5+ zch4~iGLjdrqRmm!*bvrTca*|*HIl}xPY3LprK%Oy8*OTf(UJO9%@x8aK*(k}&d7zn zt>+7BNiksX0V>Oqm@p8L*rIEVZVVIoq*X*3vLT$+K#CJqAWK?pRAa;?07itu8miKj zqH4pFsX@x<$>>F#Yy5Ec%UV_Gr6M`XZ*mVs-?V6xJB_>wl#)a$wnUZ{SVMvCTGB%Z zrB|0Rj=rl^Z_cE+%WSKj>nOc@WILr=D$MiM?9}&IRKU3ZlDccP$wSYZ$|6W|-6P~R zHzCklXAWmT^;S-o_mxVGxR>u`&j3!R2G(D(0sf>}un&LKY=Gu)e%&FoH~qEx%8`Gg zcp;5O+b>m#HD7c2^G>uqEjeSQdBjt5$qLRNiJ| zlF2$o$9kOe>#b3?M5wN3!Af7S+8XnTx0ZoSZ~aj7nLvMqUvKv|rj7gsc!@X>qSD)8k?gNsBk3ka*icIK7y(Xt#DYFBN);Z}-Vf zaIB@emQ6znJ*l@|U>0{H6g#g0tLzB)0Y_QZGy2n>X(Yryimb)rHR)1&Oq3Jr@xZab zY*_ZOS+0WHu#bVcq{T)k8|IR(;n9^L_=5a+;Vmyed5?NO-;0L2Mz5qxzAzE28pY7s?JYLY1t*MIrrgTxI-bCcxHiQJMsn%ohDzICEJ!1% z!WeA^U-~1d04HWp0rJZ0CO{6P0sl7y$W6=`Xu=LMVrh`KEFD;YT+eg>x*Sm14+5lz zX=6}NjJwfAoX~mf80url=xUE z$wUfr#8XWC-kOGOq{cKa&)iR$mTe_G7+$Oi)fc)s(YJnL!$~lDWhDKEHBq2fj(kx( zTV!Rl0vSy~(TIeEq=yKEj#Zo0|E7~z|06@_gJ!R1h_E8DBXk-$sc5y|%Z++pkgyQs zhKMCgQzLkh5Q^l6;l---)foH>mA# z98ui_`H2oFww}hwnGZc+vm9$8s|3j5ordc435csmsTaCo)yDg`5n0-z&`)HIA%gX( z_g&&ustSgU*WXd9K6kXmdBeuoo%*2#^P6Pl80RKWxHxK-=ufVff2zCWt1RcJjIk4wcdaj2VdaxSPz2 zFm}byMAOmv|4P%Z^k=uI9o?!`Jv435(rdD%m#Xw*ed(X=SGv;lEB#U{-PnL&2=mz? zme;l*^h^B#0z8rKth1Up(DgaSia4BGW4?c}(H;3sQL=v7ciFl!n;_g^dAF_X8eds` zer3g~>^xuDylvgGLk6kr31;fFtU153B31U@0mfjjos(aglJ%=> z#MYHr%a&N)ZCmzDUs*?fWreCN=_@<1Uu8t)=m`2Q7T* zbUw?3{e-?M*~ibQeRi^J+WKej97$$sdq%O(qM{=`|xQW!~Z(J}nGv3;_ zFZ?ofsW$t#Kgl!2tKl+{;L4@)@Ngq&Zkkch(Bt+Zzh?&N6SlN$*51!ynTvw*nW7sRmeElp?&Ugl63rUQy-v(y@%Q7Oxx90Va(Q_6(&?4stS(ma4? zsTvh;eQ!4=j?suHn^|FZeDQUZc0=j^o@CO52SW%dbBVt4y z>MK!4R!A=-!p-uP4>&JUj($w@hi_Z+L@}Cf?$i$q#b&_>^~*mos$bvx)o;}KPt&~z zR!5YhU;TSf|G4&9C7J1AP5*DZg;91z2D@9%{QXife0S~wR6^sDXY+My6L@9_kvb3; zr$*}WH^b8n?RrVuS>QJO_^D;4!!YHiX%s&-36V;CxOd+6V^^9YBbH;!Cv_xJg^cbF z%F)ne3LjC>3u~gL<{JY9=BRC1S} zFnDT)shiE(?F6r2=x?I_0FcJ&xs)BId-VQY`s(h&IM3h@Rzr8QUi+B}m9gDoZEcfR zN^Ax&x97iUSQrr-@C=MvqH^q*|)~q$TH8#vE|zL+%kHoGQuc8^ zdzi(B`(i1i^>Ok*8hvZVjdJn1f8{N6A3tFpTa_|kKEAv^Fwau+R>0i6H8AsYz&vQ# zbHMB{7%&&~14cKXXU^nD`~P!;(VF@M#+q#+cjN*bq|Y~Zkq~^}opFWwB43sTDskzj zjbi%Cv(?h!ye8P()X3EPhM`DyFFmDY{I8^ERO6=ys&R6zMkKVDh1DUOTrG#vHPxX) ztf!$^;!1d|2NgVy;8EP1M_J-V_{VY{olh%ETrl9(@E8nuwb9vJHtIUpTG~#TZFFwi zi?gBw)o+n7%&um*6QtIpYzk00@{vk8(b^G^9fpF2_N=boTw|n1aI#NGjJK8o5X&wOQqt*Em*k(v;7($_?om+7FeJ@h(r=5${n3u&bU5+zm79b{3lDfOlc7V3-Ni>Zm6+tFtz z@)h<+m`?|EmXQ)%u!#=~(vogUh&xAd z+xxijA?_r_Z4}L?%Z>_hUs2qPKCU>#eO_^^eB5V3TwHN?6PNR!NT0Z+<%1pKb6;9V zi77uE5g$Rp!hVKmm?24Vxg^DDOn+>>PO;2@qUq%2`14Lg@-77~_Rv>w8!YBYVMZI(a5CbIM*|*_q=}inkYJ9s>^6(Ki0YT2TY8 z+!{0X+c0C^W5aAIQQpTYSjSqn>=d8-fQ*ajVOP+tS&L*oi_m)4^oZ{Ut|`77*sAz$ zV5{Q0fia8kilxDg#diZ^7T>M+v9&xJoU3t`@GQkUiv{gyn-viEb8`#Kt+~Q+Nh_A) z{(%^=8%x`5*}?ro>*G0Q-TAm*MDxHK(}r;h{_5n6(ufdH3gSmM6wB*Ip@xn8%2BQ!wPr$xm%kM<@v5P%R+J`Y7~-dXp%Dp7CCG zIm=}~n$5$MO8%F+g6avF3ZyQYwO-Yxnt-WK?fM^LYJ>M9^qt=yQ#Grym{O};xujf< zW?y-PSFd0|XJgSPM%pF@BhP!%){W4aq0N)yHkw89@_`f!YoRF?hQNSKwJ;!4G@JRF zI8>e~xF13Ty@?3~d~HQ~fyl%J0v5#tMtIx`p`lB%2wjeo;D1DVKPBNHq_+;L%qP8# zGKS|6+OgV`o(Dc6J;6T!=>c01@dXUmWFGww`JOU_(X5Jj zlmrSm7fS1W>{gn8K(vTYfVlCvTl_~T-Cuqg1M|HDS@Fv!zKbP&bHuk-??8M{@JASo zu$LQzMto`kQGp%}TLPabfu6bS10%lGM2$;b_}!83jY~Cs7tz_p@Ew=D%dlclDATxL z{+!Gl!P;BV(#H~GuqaxdK*%U$(~D8gB$;@wM+vj*vUqMnX|og7cut_SrOSPqn%ejc zJryktJne2`Uq#V61pRD>x)?6-Di2l_9a)(FUe+uvE?vAn_Eh2 zv~!|^y)K;=EVe?+O@4zL*&cmybKjX5U%oD_`hr;0u`PCdYeCR0Ozjg!-1#!(58@}X z5FC24@K#he=OqE>&k@dAPdEb-$8WHx@}lHIzdMEGnJ;Vx>@}I6zhM33*PnVCK0UCG z*!B{;c7i24-g+9^Yp)5xA(>4WW~gJHxUv?e&a;J}!Pc*K(N~hSm6I*=4ciJ7>8K5N zZd{M0ufUd*7rA7DT_WG1{IH=L;NkBv@*7Z%BS{cdtnUXCp zRM8=syZyR2h&c5bEo>LIe8?=}o~Knsc9sxXX7MVG?6GIoLS?6E!thN^7%m>g&xx3p zG&|^TS~?99ZM1776RBM=)^^YvT7t@w%4y6MwwWb-v>f23o6_uk*cc2lX{4v4vXyfS zK~tX7#S=4ygG7HEtqNZEvdaY#`@wfSwMUkwCc~rtJ^)!wV){`r1uj%^ zj@Zzf1p~98cs+VuwzQ}K1R>rAz4k3rk@D-+ixmCjX-AIwJKB?^w@b^AqQb!!~4dYGfU}nDJ4Pl|tFJ{oNBQVhN z;m&Mt(}U3~vA0`x$T5{x?f9pPFyr_1z$d*>ytp)e@2L%`%V1i2a1=sGVrN!a!#dRD z!Wx=f3e)i14~DBX&uCHVa^{)H%T@HMU$OblYqT@$d0>~xE-g*p-GM_55Z^&Jpa203 z0jM$HACsWlJ~|lzk4(wUZ6)mxn+ZiLe`XKtx4&>3X#>wh%JYX%tPYr*^3jB#UKhv5(6nQ{MqjkorC z+gdw_cLy`o$aGr-7s#Z`b~+GKQcw)Gaob;eo(5r?h!Db*j=*hL&?p-!QVB`<8Wi7) z5~#WtmDli7SDZ*rT8NdN@12s)kaj&-3N95`>ElB?F-0;to4|q7y2_7Zw-5Z5iZ^2# za+v#9gd$ymMlrTb|Mqi=33eQF8Zi5=eS4N~5B1Qo?tT=6Fk*D&0~8ju%TF%c40s?3 z>On(Zb*KN22=#sUxEYa$O_(9}Q#Pm3xR7YoUCaR-@+V9m>mG?0jO=kkjWrwkR+sz> z^xgPP)f8MV{sZ*Y4vIco&>jSRuURcw^qtP!xj*`T_oug3b-^^;?Bkg!k7&-yRg+uMFY7ulsU_hH&Q) z?h)$QGrSKE;gKOcK7<#AupxxyA#4fZ%c0&Mh4-sNcnkH1hL3tR`&gNKyo!V&!S%Vv zZ{;3u%su`z_jr5madGbPzT9K4JwBT`pRNhzADnw!kxRHT_xKc#LiS3!HRQQ8v}-&N z>(gT)$=VQZ4B@&EZYC7{B_U3Q1#kF#3qv_O^PXvVQjyCtzaW%fTEF|>m)0W;D<)MX z-%a2HS#dfiag@V&bO3Uxsh0kjg;eJ}I6E$qo5Zv6H6xdndN)mx%3%uk=z zo;!ra8z35G@AEsXkahNDcl**gk0?$O(3g>qB*t{AGvcj|6|w{;pI43UZ5W2IZBG}H z!0n5>3^qzV(<-6c>n{lQJwuZBp2#L)!qoOI`t^gw0ri(-`_uuMMN9A|qx`Z{US}@- zEvBG==s{k(NM$FN7AQ~yrg>k0#a3mvzFGih;%P}`^0kSq3w2{dh0o5l-8N4wp6RQ1ECSYgmHPktv})X`HQY zzT#KpN~eX(+(GD1R3-li>r+R$Powa1cK~(~yUwiNMJSiDn=;%3p*tX$)Yp&&w%4wj z%}TvkmE0>oN%ohWTvh-8OI0zUAJHIuTKuRF=oRHSdnI&aQ6d+3f6f{@KP|y?@rpep%khfNLh&y$+E*B+2DIM6~pEw-YJnT-)~7*R3?x zUlA($%d-4oi*mk!}_%u->E zp>@NfO5Q!)5WLR4VQz=r^LRzPkx8kY{1dUwESj$I*DYyWoqUy|L`cEJQVvY+c1(REJq$aC= zJI5xUp3VpN0lyJF6#)YMwSNJ1QRnmYZlgE< zAE2poj0N?hsRuBe4n|YuHV4hp)O938=9K<>uqSNOLNs6OS;7k;pOH^zoU2b6Fd}e!h zQ(>LaxBdry1^Dlil}&d@w(eq9CKE1d?H#|}tV6GESeAL4<*SY=uSdAwzlvq>9(E0c z{QgdsSKTqcC%%O>(-2>kZaApUO;&8X_853o4E?GyUc?|h$L`5F^&cOG?eNUc1**WP1Y zp=e*MsTE&bX|bCC${biNa(^NpS}!rMJq9S6ap}u)O@wVOcjvMqi$j@O1aYY`?l)q< z$ye-#0vveOxe2UT@}1L>i`-B%@EEYwqu;`P?FG&bd;p%5IfSPirarw#4pSeWVwfuZ ze-l%qX;;A1Z)Cei6!phcp%)JQF|`@Hp2yVlP!O1!fI=NG^%Yu?!;~81TK~EgrasTA zW`wD?p0R4h3k*{-;J6=YW$~h5TbWI$Iqj}yGFqAWXLv6PmX(V`y8XiYaUnb)gmXeD zJCo+pw}kK*!pyHi<_~zO;uOWBFv}=BAed*CTYPWk=8!29(!U$NR~j%YGDE}r^&$Od zt(@MB>{9~%GoKG|+)kJ+G%{{oOk_vSUo^UJxhl!QiB-vubzM=K zMO$Xb+wFL1cPqS3%BV;$HM@xQx3*2F4d}mU^Jf%ciYP$BYy6rTqpQvBiXV5m z%1+s#@$5B&r;Oli>#1Y4_-pqlFX8N}0{!o8`zwVDq*Pi@aF^E!v@gxyX`|blfzsdJ z9MowNxI~wlEs)V`jZM7AG9LGs;EA-(omfp#;ocgtf>*uT2zaZNdCYBFXTC2l^X@*g zR%wloLE|C+DJ%e>|!)vVjzyj4HdtxSpJ^B(pdmGC&@&Pr%m4(#jDEWc_c zR2HR-0=S*-GV6S8++UXj*OS`0x3k&ZjlJK`P|{`1+EwQd!1x)_v|KWk>*$7;&UE4!w}pNZ}D zQXF|Ye#ENE9*Oe!@XAG8#XV0$gxgHHE3->Vc55{sr^PRt&_(Zzhz~t^4KI@x#fMH_ z&%>0S_|UUAaZR^nOPBrPIUAvFZk5Q!hUXPDv^rI1cjR%Hee4*U+cy>3t#WzC-tTLN z9`^!?+ZpbiJM?&ce|mjM_|X9#UJVW~!v6TSYkFaB_`|0xTri0m6 zCI2CQ-weOk!y7;VVRkGy1Y`ii#p@Tk$KAU^X3#aJnMl6m6y_Gi>xKBMO zKp4w8F`!}Se#X)(VnELl0T)0YF!xb{Da+j3j}>!&O5KuW?hLC@z}Rcc<3MY^O{w&B zGWM-O*D5FM$KOSa7yUE3#&^SRJERpYr(v-{@thEb8;U|i_hHwWfIqTW0%BvRUz3;jZh0nPp?VP>*% zA^8m&|2YYjc^m#yA%*yHOIU9Fs@Q{;*<+1o7dwXVlP5eoIh1#?m9K>OEyRnhRPY}8 zb42>1t@?)IT?ZKH2+mLm1Zoroe2OW74;5d^3Kr^$q2(TLkK7HpoINS$5g zampI^S=UU?=Py2)9~UQMG_#9y-OJTPSb~C8E80P=S#&OBEyT-P~8%ij(KVZrg*R0=b!;~pL6>c-B*3nq-v@1%15PN{)IETlbkAfw(uHGZdWQ;V6I z%dNzw>XYy+nKCbOIgx|OGO7rG!T8)4Z&!O~FS5c+%kJ>AQ2|(`l@g1brO0&I=Qv?T zQnb;Yv##*?jLDy%GDfQL0hG9d|s16(-7MmF6ZBF(+2 z+?|;E*$DNR?k;Kl72VW4OC9zmQSk>a87m0iNmD+3wac%3U!l%uyy?PggiCp;boCRk zizPY|Ev_h$JdyXNO&&?I$DkLB?!a(~Ak%;}1b)@N#m<^&<5lA@3|0+1_tJ03dF2X? z{HvN0I>9D`%tFw(KNS*D3ZIQsMv+d$xz_z@;YV@D6_fvZ2S$+av14;Fi zgEMq~IY(GI9}B4DI$w^!%FTBZ>DWGhkbGi+5dqZ>z1Gn@(OV@Vs?sFXTWchtnrQ>W zBSgNsvgkh0=?v3ni-T-XesQq!mY044soFt$zNvmsS&x6O71f&Mz~J zHWj)9ex?R_>6~1d8|ABDW8C!{>A-85A7iD2XaE@oXH?Fagw$OGIP3cox zslXfEp6df$1TSf?1LGK)koLwe@9-|l2K}ES%)CP{8GVE9r!u1l(t96a zUZ2?xB)fGmANK-3rkp7;X9`X5}3gKMhr*&lg z5$puUipgfz@OLmb(OHQUv!c|6?4_Ir$MM(vq{f%fjIZU7z$9?KrPatC#CVkIB2|iMXWa zvg8pf0<`Mn`MSNv;7E?GM;eH7bq@~ZDWkxemOM#2$}}~PE&$Xg!M63~e|wSDcB|MZ z4tM|cw)|A1kRk+a-c5jmUjazVRI~eqxdOx{evLyLQ@1q>d{1x!lbK~x)#w%R)?=8X zBC9o~s)nx^`C`?wkGO-)U)GzR(9GS@Y9JbKjhIT(ZhqP@I&XY(uJkEVH}TrwdM{st z(z+iYbGYJ5+2gG-Sf1*PZXQcrQ3U&nF14NeRf*mwL27Q9r(?CcU-Oc;+;dN9bj0Sd zz6ocq6(qTe%*g#Gh>8?Deo-k{JxH-jCwFJtK}=qeSL(@l>m4L@m1YdK7%fizgt+D< zUEl~fhEsm?l3V=CXLvzGY#}Qn-MS|Er>b;iJ!n?1!h-6>og;cW+=Dt{gaC=IW>dum z@tEBYI*Jd`28TWr8vN|0QwQAic519jrJEJx4ig9G>iViNX-$aZt*(fU0Z%OyYYyRYL7>3WiyWS2owX{=ZZeKUoTW= zM4t>JzB5Ea?i#*k-ZCbm>LCnP5;I3rvX=uD%@5wF_;~Au*yyUc{oS)Ox11$2)PeRK zReW!hsN#Q6leVUcbh<#z(Zo|OM1tGhjTZ|P&`>R6j84(FWU1IgM;g+z-M}Qry=Ll% z-MsDIr_+pY);GEHeL06yj=;&fFv;u|`7h;HE{wV_`%LejlwWy~C8Me)UzOB%_gBf= z)O!TKcp>2|1n+#FWM!XzjWAGbUZ;VNTF zO2x)7xKZGLV@r5kNPc2PuTB0@9JJm)j^c5;e=O&*%Rh>Pw);nM(0Tr`md6hNSjS_t zJ%$ExN`OBY#oSsMmU&@Mv@d@IH zSB6W*4BX_{I{N!{)(uHyP)GNrLXOc@W7dQuSd6_k+!9(tau=$Ksw2K@4Kq&8jgh$< zRw>=u3F!UrTBX&3*o{sZSQPH*;#yD za=b_ovxo=Ia@nE; zO%9V%%uq^~E_>r0>0x$VyjyiNXUr_3CGJ>EdKgl;r`IodCSSmsA}d#N)nGOi3Rxrk zK9y8u-h^%r8gIFatbSu{n$xD1iuS^Fcb@;XNwoDn30lNVOzNR$<69%}J8o5pevXly zblz|5GWHT;ILDWS0(Y(@k8P*c2GQa>*l;n{e|?>Nd=*6m2-N-VVE^?h|8=##`r}`U z^mQi>NROhEHc@f^_yrr0njiGqMC*9OaUSp8$=Fvu?|m0R8gDxcn%b848vRAQ*GTm% z*heANE#qlps_aw-LTDq?-k8M7(#S$$;1*${CFJ3O8BC zuR-CK_)N1@d2(Z*uYfC`ni}7|#X8%F&C@(-q1cm)^JrgWp$&}TXwJzz*wLJ4z$B?$+f;v%$RA)m8Q#wQdl8}q2Uk4Y84j_mN zL=cnlF*8;|jvjZ&YGJy}u_zhQMV624|Mwgp>pLoJdMBcT=^gt-*j8M;aLO403zcjr6 zolxyL)AFszJR9nJo^Ts~fhsOZnw&^ic4RMGyz;LLr3s|&=~BRHM_|fJ?K+;^RGS~g zZvGN@wlR#cKgC8d_BV0>6f8xal6|K!g z+f9}6dw*;A0vCRU41CKZ#k@j0t;HW!A>g2D0aTs5qz>-eB=r_$0=rRs@5*+s+Q$C) zdBkf_W(Bfv9O<|mO{19P_9I!n9Xmqi0>K~d(S7DHQ)AVPM9_Dozp4PGRGX-yKF?Bs z{;KBXX|!AEv977zM%r}%1+G^o()XLO!z>-PB#^}KY;3)&S#If)Bg+anrsNJo2!vqt zVG1o2*5!#v7;q&%{dJ`(H!S0`x=mM)r-(pTJ?`tQ%Fz$GtAG6U-$^s!##=8I!%jCY zvfFYdQ4dpbMGoSlt4R+ z;%ym`Ud!yo1r3+xVWc{Bx4OQ1%-!t-@zxiWD%H4HhQCuN&I+hX?wDw4Q94vuu+4XC zVXD|27Ntpy*?-mHqUg$=cw5W^)f`pd_2Cqom7u{E&|hiYUixE))d6Y(Q|qP5U(xrc4QW_axow!u}8al4ab;(^L6}wC(jUX}*+`~H2NIW8isf@$u%#J{fy@m~z@zX;#=;a%xo4c`yv-P;#( z>sw*5{K~%?F{jQcgv+V-m7SNe@OH94@8@I6^%HN+P(5X^;p_QU~0Z$ zD}E0)2AQGghGKX44`>*Mv8)cNvFX0tBTV>#3ksTN9jJb9Zun9nby6XRul7(E2U~7R zB=57w)QOuCshtyJcK@?_tZfgiM!6oL#koIx&FLfbjujFAaxpdNDbQu&Khrf+i1`h%8ho0tl{Wh>rk%3k)6Lzt3|2U z=RTwUoHCE7>U14i4xFVspPCkAauR2E+Nsrm`F-$^PR zd_1+sEwty2Ja@UD@k}-mx_~)?Y&6Gkl$t^{@`mVfGnGo$*8kbYCLP>joyaLTW_peK zJ9WJg>u}EjM?V?=!Qoy{5<&KkwNrCMaA62GyZu%0l`AY)KfO9f58a{`Z2fUc5~b)0 zN&`^v&bB3)*vSW|kM2-sRFAo1wfe+d`#nX6_9Q3uG@QZsrBxftJ;9G3TTc+4-JJ-tpcI@s%PR${WMq$)eS!?H#oWyR zl>r0ctctOE)k`1n=AwE=l!Uq9s7}t(DudwAf<&Yd2pC&X*xL`CJXJtB4XT`#3)MoK z>L^Dr_Kv-nJx<18gbE&oCH?W(We@f!n$}-J;=e`ggxYJ|iMY(bB{m<57GSt%b-rbd zrBn)|0pIa0Y9U;sIZr3p&FB6zJf=D|6%EezmR6^mxCZN<%8RR$vzsg0#~pMrX6vS^ zDBJKgh|%|9<3h3U;D2)!{w5QW z#~hSssay=bnp~jjF0Em>N3NrRW9AFR4QEwx>xe2yz94#D_UaCaR6`NoaXa>Pl$gk{ zywWwkC?6KepjnHn$4u>MY^7jdw;i@%F4s1xa;un2ZD?2f!A^&6rt^9&Z(RYz-1rsY zUa+`o_{yqfA9Joq3gW0vzD;YFy`q&G)nK--4a59=cli)jsN<~(mkCa-NV=TE1ovZe55MfdXRcJ%VCW}RHb~Zj3QY?Hf&euDk=j7g+;5Fd>spsS@{q&vXHqWU6P^1o#Mi2O;qcP@ZbvvXL(1#oSj_PY@{C zr7KjINBOL-8Tp9tXlrR)0=*AjR;;Ofg7?UGV5BG;etmpG+v^QGR`jA&!pmbj?q_9c z_;Df@!sCKwce#}(1#!xvs?jeu9LJ&RZysG%u%TG}Rh>M{<~+-b+^Hl~f_)Pl7={EK zy`|xm@U3qR9~#j>rYw?D1_NE^zA2vSS$}nMeLqjsaq7r!&!r3@IzDJ;fYSL?MvU4# zDY^z{Zs$hL-z8^~%b`Fh#@IyW+W+y4_ofj3CWIA)Qoefqdw!Pa(>gwZBH+lb?^aCq zb59%>J!R6Vjl~IXAcVq4P^~O0OfyS(G&@s@J6WUU-Ac{rym5e=c_Vk2$^?&Q=S)@B z@Yv-`(45YUPJc!RY1vX3pSzC6Cep()zlj$ld$Nc2a^Jd?9P-VINB)VZL!M6$EI>C?& zW;%G!g!V+TD6y)%ka7z+1FxX3v9_vMV{u<&k!v=m zfZ5IcJ^yC>NW;XBhnAK2D{sV1>t=fvb6JpxDT5~*olx8Y#}&LtMPtzUD)6SsmLQ(lsP^gh9n~4 zq6P&_NGEEg-J6?j{YV5Lp(=s6m}lm&b&SzN53(7wGDS=B;ulI~V%G3=T>E(v z%H{fEBo+zTy^YKest~ft#0-2P(0gR@j(}t7WRB5wfHM$VA}NE4_ZaX%qoH7Gj3BLC z4G;oR$MZy>1-OV>7{Nr8NS>(0ZYcT&2CIUVG7%cmpiMxSg42|aL@7GDR z!&Rta;RFUSn6=Tpc41}GWYoMM0jJm|FxHtRWq4#It zUg3MQ-Wz_d_qSN+`3QG-wV__of8H+we4?bXr-v=y6DWorZV~_$or_2d=6zuFVDrpq zB9J48y)CIGy<}S;s(^4#njT1_kC|+I=)_`BvQ$vx$VRfej4U7#qHXiASG*Red-!Z8 z3Sq8cO4%iP*!!+EdncNJkcAEvd6Ga5WTO2G&9hu!wk+b^_u*YA$*-j8`-&Ks=ue|(!K!?vW zas%Ccc3--$3z*#vP>2p;t1w-K^}3Od%ow6OApBC@Y9qa#L8)&+&ZU#PmgNUs2jfH8 zfaWqWv-Nv<3{AP!7!C=M0kvSs4QI-3K!~mECOAA9{m(_lR&1St(P_PmmBrSgjWl2u zZJ66ovg#-Y3k=qnPGdI7OW-w~>Ss(&@x2#B6av=u2vyj{4I&=Vq^KhmJ9k%=H4$}w zzB-?>HW5HC%Ax}}6$zQKMcs&lJ7Da?UCj!Ho{xK_$Ymnrau%{~Vx8zP(3$LWz*(*$ z0-HiBZwB-FLkQK{7t`V`Ca3?q%a99zw+rB*^CY?G_HW~ow@OcwB=A!btzb_}rfj9! zTLXLjQaAOp3SHn%ze#xY5?uSnUy+dayQGLV{IJ&>F2mbm!D42!tZYo>JZMh*y?XEO z>c~?xnc@sT(#uOvcrYz`m3;Vw972!F;Cne%T8;b@M!l$0*j<*F1@AbpdiZp|23CL90?#zC|f}3V(aHBO8%|4%M zX3|`!!*q+4ssx`9tm4G{CHvHP9AW`^HMNKX-^kdtj|6jbNZDk8WU8 z8XH=6t%Js6S_8(PI+BXLw;LIUr$=Oy&9{-HL6ycCB&e8aZ;cyz7HaD%__guvFaYre zl+#Evt(R87qoz~(%j@!JrrmrzkzMxHzDM&TDiXkM)oePEols+}yqO6u5FWz83_Fo{ zF&(161LVCocQ;hYlha4Pp`v8YIT8tgDMb@Xj#=ZpXoR*Pt4`k9Op-*}WQnHjBw1xs zb!FvowL<;?p;TB%+mxQ^yv^aoFxyH5S~W`Y=6KOfVh@yq^eq~;dNv!_;zbAFNyylE z8&mP-_}Pzn>hk53E{mW3aQw*i@wq4MNF^z2J!KZs6y9u#-O_^r-^Ro`6QP&wxHdM$ ziXLhnQP0~q9q@3*6;ct34t{7>yx`>z{%kAIyti!uLe4Y6rT6rwr^SzaH9mJf%qf1< z?)y>+qOxdmV1^v`rEhEe#Qwoz2P8piIs`OE-lAqiVGZS@J2f&)F!}Q}{vl+W zsRzTZdO!5SV(SI-n;^Xrd6t2$(KpDM4;?;Pk?`oJKX@xz-e}^n(QPrGGaEP>u}OiD z<*I(ax`|s+qUp z94RjtJ&;l+p?6I{#9v`tcl_ z|Et^^cMDBs`=bmQ$_ib@xr!TGZ&Ev3zPvquLKPG#gMihf)4CF@Pq;auZs8`iw8mP_ zB5~id6VewJ*^ykBFgo15bHqkC1_N`(9Xyj(bO--7EY0&#!aY$YP1=0aBBI;}GE{hh zumVa51`ugYAiCLt{HXMx!n*VvlOHJb!% zGilYKmfg!+*4-9u(Kj&xx0>};Q$X1S;8K#azDXmdW}7q;t*b{J7d48OnA($^H60rb zXw@5i5So_X*lnk{m+me(Xa)T1DK0JDK`qUj$OrM=M10AX<1=$O**a@K6XWeckURz7 zUJqYBV(hu%%ahjfzMPMTu6ZZ^@T)t*(QyE*eP&vG^23?KC?K-GZKhbsvv}z%h@c}5 zrmFa)C*!4$ZjK+?vpN3o`W?x+IbORWK6!Pf6@L)mjKpo`73(A4e=YZ~RX@htnzil_ zS&jY8y~!4RbL*!t%RSfTT=chB|M6n8j(O7^$neXIwXbG>^Rg{zk}mTMHJd$*qqdfL zVH02S$?=(F6i<19e#(vJdfiiXlvjicjpf6~D8bBNLPzE*4yezqx8>r0_&3Jdd`K$6 zf@J!;a)%Y@u!COS3;N}gvn%z`L6JY5SE4Tln|cLFI<`VuD!3! zT;4BSky#zeYb9QA{4s=wbouw=L->afUlHEl3hx^T1;<$-{3_q|9@T$gi2uWUAO9j@ z{toJ}zog&35{DYV5fjBo>z9i(C0p7BLBS_&f7M~zC6?TK!Hf6kpUmTl_-`Ms8oe^! za-;c7nz*b=f4|=Sfc_EXVTwWvNX35CceLChCUwYUW6CCW8U%@WAfLZ9l&aVfEh6Jq zMht`Hu=!aI2TkAOZ3_j(5YV)f`!dFk>eRt+?cvv0sINR6kynNP0;^eVbw(w2wwI#H za}~W%C|%aObbB2kL0Y$Ykw$Iom=aA~E-h3OR+(FOkpLoLuMK%AfJ)B>ygD8`RLv^$ z`4-@Aeg~&Sd`3CaWxYS~Tkh~mw$EOScF5MOlZ*8`xl}bVmV{qLoQ>OLx`)}i zr5VK~X*8vC4H2k7I&Q{tC18)FvpaK!+a*9ujtev@frpZuV}8&1g~X`Z)Ln|~>sAU* zGNdr{2o5vkp|4vv+w^s-sJ`yC_N&_Zx>wt;Kymw-j_i<7fsaCdk?h{l%LvK~O z`XC6##9j{78$WB-0UgyZzHLYLdz9-@D1?#fk^ZnwwnBd;y)qU1;!f&`@0VL`9_j8# z89h^D0VXYK2(+QT;$*{^6_JV!|M+O@umFb}4k3cS5*kyLo=HlS_3j$W-d0cG+<7Xs zTM1w@r3%;vY5}_}lS>V5J77hTZeNt#>^$T9iNo3wO4_nzyZBX2hlqGB!xEXIpn{h> z;|1=jvkinEYO6}!qq%`W(blZ$_eD>py^rn*vQjqILX(x;omFeV84NbfXjkkT%z$(y z!>cILxGifEg68y)lyF}?HUCgG|Lhyu0nxB0(W}X*k;vH*n$6@AUZ8}RSi*Sg3;vT5 z=eC;c@yXF}{-#eWS6bAX=TEdomJC)#sO4yyaVrXg-(u8nZ-ze~Vf$Y$b2R_ps<@r-hcPzA3OLPt+ZP zdK`HYsoi76M$}uBE?vQ33ggzend`e;iF_2iLk-7qMuDaEiO#&l^B5*5tUX!HZai^h zw4`m1G<+HtB5UGdr#2;)eYis+J#H@*rKT~WZG5s{n_&v8C~{8f80x;&x5_1Dfx$i9 zK3|IMVx7C~CraT5zC8F?eGK*=rSj(nZP#R_sMM$qf2X#mj&&Hv0YPW(xwp1g8Y4M8 zLtQD&)?ps=89AICR9}^v38H0 zIz1)iR`E{QSA#6=qqUG{hqr1i&t{=%qY2jW(!&;0VE%I6wp4QVBuOfrKgkRW+7}5R zns`SvS?pU#CwtX7fPLL+5z@(i)#Sczoru`iy@+2|UoSzs9!zg5sZO71Ju0ZHIQi3W z{XU*ZMztrCrNY0A=YGZT^FBkn5y{K00Vya>;Z8co3R1tqAFQuUYHfzQh=HYyn%Xvz z51&ClB1EU|i{{W6+x#iS8V3ML(Sbe|s(e4%l?4`c#hlhzU9*W?ygmBb1#zdnY_8?oI8h{RIF&tVR;>){!OlGy{ANC?gdVc! zjJ$Qo(OTv62v%PA&9riuZXeBIY|AR=RFAp0nT+w)V!`S~rm^L;on`HzZxZzP_~Z}0hXhC9gz*$; zq$+i?#)7dw4V@ux3n@l$kGjJ-dm`f7>9TWDaCAe8Mu9u$BR;ZdS(RMd*WG2{W!Su{ zZ!*fH(uNZ}YKV|n?StmdVSf`H9G+*E(oVz-J;k}d~51R>7G1!01!T7 zAoyMkDoU!`itv|K(HlrxVNKFrt#Tjy^Am`J$z5uE9r{KM9i(^-i)m;V;l%Y$jXcF& zXvfFQEGK(ANY|{$Mo@u7FsT3`ojb3$~J^^VOx-PKfQ4FSKJ>G(;Q%}))9 zXL>HJPRYZ&$NF*hZN9orb?St@PjH{6bS={8aH~77p~q8W(I)&_P*AGUi**VdEvyf; z!s7@YjZdXKU-f&X-B+6hRCl3`r|uB~qwT$T>#Z!p+Yx4Ls~r;?_K_wSPcYX`=r+i8 zIu+fYx%N-_H3R{rE^b-6g(7U+0;a!iod~zt^yq;n1j>$Anuoy?>5 z5FDY?F++rd^1y@Cpbme&%tU7H(fKm(iL_E}A|r5YI|f6R z(&muWYudS8&n9>UHdm*SgkBeFw?&xpyC=TQyd!?k_!&XNAaAWTxx0hjl@scW9NG#K zEz_F{z3ZRr{FVTV9ruonQ_qQ%;4Z|~A#du5GA@;Eo^*{=tZI9*dlD0??MGtGM7R#E;YYK#f#;mD zsEj~j^Rdb^G&qR|uFH%PO@9K%wb1Y;O5{rkqkMvQww9(4hLL)N$5Escf_W5sDEE&E z9uxkthR5mtv6jb$dK5DXwO{mpj(L0ek;lA$@k49%#O=xo9$Kw#_YBln*p8xE@%iQM zjtSnmOz_IX8jm8Z-Syz>dw)TJN!!9{IO|0%fI>}nFzsS|n)eW9@?w=P8<1Kio4c6X z-qyIVKujXr%cVwYNnvkmBQ@gn<9*E3P@>gHGrV8-9*i%2M~7hNyj$3*w5!L`)~qW; z3+em2_=wHJnr5r0?hgO`BN>U3FZX)qp-9NCvgIZ6L=pwyxXgx>W~RnA-lLEFx$~@? z{r~ZSQM7SaZxt{JoQnOkAW&0~3fJ2R2NzIF87J}4w$;p1PgK4H* zU1-YIOetGMik*Y9WuieZC)d(`O}o&tY9tx(7QrJ}Fom^!&Iqr!5AgAHGfxuz$<9Se zaZh<+d)s23;Kr%69ykHmJ0kA;>F`Xn_G_y(?8!k&a z7VKBkBQBHN=y^&Gv91~mO$Mw*>nAX7Nfz+-xOUUFER}#kgSy%pWN)s?y2{Vy(`D5^ zkPg#UN&+{hO8kI3rFCObPz_iE^?4QKrss5-iFjj#d;dezkAI<`Rm#C5wflS6&FGtd ztDo)dlOOQ6|5`u0W^-fp@%$=Jhiawd!OhC}vX8v}?=MGj|>< zBhZochbGYsnKM0+?hAM3gGP03YPEw!#xD4)k-wNj;2)-%-DXRzvG*BdTd8K(*q2B( zD+XS1;P+&KjjSib_Lvt`vvuy+$^q(bhpA@ejGz3Z>{cJzQYbcH7LcgJjG;{h4UyR0 zN+-JzdAqevHZw?NusDEDc9&2QA8I~h*~9kx>16M*tI(s@oqvY4Knn#qovc^OP${$4 z2b3H3j3@lsf9nFJ8r*q085)=AWW_Dg$;$I|GGm(mg-&*x&6i_+JNo0+Lf6$vMdLsd z3!0h|hjCoMvc4VM^y39>+Tz2UIaN`g7+t|BDc`V(bEmR$WH6W%D4FS~kAB{)^S`w# zWXKwkcbFKYAvXr&Vg<9j6V1CO&WHlbAVmf zVcM(q=52J(%(W7`k!GYY85>sihd!VvXlW9viWVI9xd!%BTKP~>z1#-rEak#S$j{*GL)-|O(7@d9hKJja3Z-HaKq%M%RmZzslM3Vh|?LfVns`*gAJ7< zRuWvcQZpfi?8bA<=zGyzl8ss8yFZ+ce{tU)&f&Aae?#> zof=zBa>*EQ3Z}u8n^n|@*@wZikr{=CVIY7lzU+kx@&@MYvsAR<%Dv5!g@nP4SXeXP zdPf~oULZWoEDm(XWd668d+XC2Q;1H+^lh_oC7YbE#0W7jULp->X+3in$pq;>JYpE{ zu%Nq3lbXw?2!!qqL6#o&66Fhs701aky-+!II04T}+}AzNew82n$9`2L%8&i3CT_p7 z-#UKXpTBPH%gRn~mTHK(6=p^rKmx>D`?z<;{ZdGHm#3Wnj0gzFnGSA}&iOasbLaWy zs(QC*0(tJm&4KZrqo1=&#fs8pjhA`MT{ueLPBvss!%Sy(Z%lV}bQTI^y#?uJ3l?+` zxTe3D@Z#T9B)+GFfg21Ms3lI8F8Im*@q(>~hP2nra7VZV>^8OKi>=e4DR z0{||6slbgpR`{Q%a&3~!#T1X^!n?@juQO z>j3ztZ%RF{?xKL)TESjEgCE?r#hI7Phev$%9$d0={4z|?*JRF9bcYWA$VLs%_xri1 z76Cqg5tU>fdXoX~9az#rROTt;TAnWjGlaLC1X*Oh5z!g{;&hBxd9>oc53_06vQxZu z7Hh$%ckZ7_>nsm<6}pb~oA!LQ-jD2No**7*@!$D2B}_D{M(`gR&*%cW+Ks@m?04c|jfmv8bm`Wisn;P8j^a;WyxGpjM1k+@zOz z#sn_TKvj9m-Ny@s7tr%z`6%ADgi)K(Pc-3RMyk=18^&@L(ftk^6*Vo4VU!|V-!z~U zt5dg()afkWJqvvIr0acWse2GND%eeY>yxncWM47Bfo6HO^(5TLC!LEi1XxZUrsY zh-Q&7e>_T6)gO(8-az9uk7kN z{QWGjC6~O@s06yq4O-YS8VgRc)(Xhb(_h%Ae`pKM~YHXR-!Yk<*Wpbpd(q%f7JCN2`?~ob{GSPp-$_o`_ezqjN5UJB=~OW|FxF zt}-xuPQSwI9cbL1M;pa_>F+i;MMTjw5lV0?#GO4y%^S1sE}}C%cwh#NO|*0}s|s%! ze=<6oX}oKW5!hrnmU$9*SGT(sff-1t$AYD6Ea+S>blqUfm62j+C`p%X|2>&IOks6* zPZU7jsUu9x(!)ld&!px9YluxugPtdr{2H-18Bn(O&BM=tXT0F-S5@O@V84O}KLh&} zfT)G`+r_W@=oF6!h~My#RWM$|wPCRSUFE-7D{w2P97C;5|L^eMx`c1LhSx|Wb2_fL zHp{U2NCw-jv3zeGl!|8}3 z>EG`T@1F|cmzub8ZVW$4^xF`wBvj$ghwvpb>-&eH(0_#Zp_lpi9}_D5st|uuNOxTL zenSX93gNz&`+P@*u$)l&e;I)MLkJgzdXEq3&J2y4AKovG;zRi55bhJw-4Nb4H2Cr# z3*}xK;7o>aM)-ayq1xFP^8Fx$KMvvg0MB~M*PHnX@q+t~5Y7$X|IT-nb8RTEC)D%1 zknW)nJ|4oPg)1}91o)l{;f4?n37z#P(y840LilkACk6PQv#>YwV5s-LfQP;S&)Se~ zW%&MPNZ%0RUkv44Ls-Spf<58gg>ZOCH*uDS42VEW>U>_zJq=Hce1p#JSZ;(m|pihk$lo_BaF8tY|VhfTCpuWw4MajsoP|k;Ygp7 z>eNhD1EeseyObw&@(5;ZJ@z=cruwkkBs=-I(0?4|&+qG8Z{?>K`B?O(bccULS+aA~ z-7De@ev#-Z2EQ~JRZxw;I04%=l5d7hBDOi59p+9_@!kYjk(wWwiC@54xNz!sQC9YBK0d=Kl zcgA2_4}&hHl3k)w%w^?P+Yir`^X+29gZ|ilxH3NXY@$w1AM-aVr~Q5Iw@61WV!_^~ z$y%@b`Eh!`q^UZ2M>9!eRs%(AcqB<~t%*l1(CLp&j4XMn$HLY__u|FUK#u(xVmjJ) z=moNEEW`&a-o6$ipUU1`6+d(ZI}ev@Q{tB@F$b_ma38{W>FW6DkH(LDW#-}R7wIAG zBkVTeYuUTwv|nURy!2uAi(prK_!ahxyvcr%$K#WiCH~`WiuX{=W^R`j{&U+D7mfAX z6pIP-wkf8!kc#asPe$7mXMRaLLbQ!VyI@|?E|_DFv|TXI^ZwX?yI>xT9~B!X;9Gu2 z>$SUP6Zv8jh+Uc{F(N=6?bT5jGIyMpKh`IB}Le++VS0Nw<8vbi zpB1`Q!zqI+Sg>D*{oCuRIh&}&d~3REsmVw-J*x<9&i2Q}Lajn5KJn@tzvYl4izcMM zjd$rRc*g?UUN`z{fS_x(7g*Lq^_sGy$%(3=aJP?-QXdl~T)7>5l-L_lC5n1`yqaP> zf);vSG1`1=;;ny{K`X?imMWK)Gu+v>0$~SrTMO{?@t~?etsvCYi%~?U%lj?`)O20F zJJ9D9P=3I2f>w41=CkHpY*fiX*6ItjIs*P{f;89SQM_{Fcf9p5(%FSd1_r%H{kUor z8!%QFTnBxvin&NV2o+x4PffEndS8|g{IU)Vs zgPLfn()fZjMH@j4kiX(Z`5 z&+87Qn2}aYIi2h8oXBo-yPZ@F?$*bSF6bTmogv|H!FC}aH%i^oakT8p6_V2Z&+U%n zc_O)a!^^-)TMC84WJ?zXXO;ug$oBqS6veYIFxGlJTvMEjeSz$SJBDwF zf`#PQU*=)V2<~y?LAI;2I&GxQEcy8#NlSlAlPY)rGg>oCo4UXvmtcsFVxLum(ebho zShPwLsfs#`N9$>x;>ytwG`6%_M8FquZhgU^z^*M;!qa1wL0zioVxkxEu8~1dM<#Yj zTX}L<3$H4KozLz1q?|m@bB_u@*?2d)N!Ii;T>^^5~)>^LPU{%FiuKF96!?l`Weps2)?6&OWC#9gg<&K1o z0~)JS7vb1f_CtKw`4VvEE_ixdZ2tcPjV*%Aqj3wSivDPv?73ZkG*%Gl(Rhevb9OUz zKK@=Y2G!{mO(8FleA4Zv1shyB$C+V$*t>5U{`Oeo@%MMUaAA0vu6k*J_i;X_-6 z%XpWj{zr>nk@@WRye9loc;6Vl9}(iO3E|HOmGAfv{xXE)!}s4>{*{@9A^wgKzbL%- z@_q38W8d}nYUyOaajDzpF~(4^*FvWiEgx;?_oYh}XGk{`GwAIE!L1Gzg_t-@^WGoo zAQ&@O>QGHI@H$wb1{a@8ruiFrh*|Ap(8s;B@g84`eJo=z?2WWDHBFHFJG#1j0u=F} zBV5%iSP$d+C~e5}yAs_A>T|E2zXijT@+=6Xm-~~qgL3}xYw9~r-!^b`o+eDZgOt+C zBeh#27q2WB;{D4_Hy4mw>*gB#IXk8Sti95~eaoQU_Us+%H3}P0E0@;oJ~&9^9J`u| z!?`=qd2hH$#tx9s={r=+VmO^cjrWFW!d|({Vd$ZZ=>xTv1#b@TwUpO zwr1`W%^uRnTN}jT(`k($^K(cGmqduuF(DE(!{wN;~t)trafs z0_G^n?b51bGuOj1oHeV64jhDnd?cnKg)=j8Vr_MdCd5HXub8vZOs-iJ3ee0 zvqwKCWqfJ^%&@Jidh)NthH=dj(Z+%% zw1IQr1fsN9g+dWq!#zSG;Zh0a9Gde!9*IJw%G;MH6slMWVr#jSrWBH*A_YY%BCR4Y zhYGDlpj`9&eD}&3=FoDPOYV*N+Wf~zw zHb;e}aF3qw%B$w62GRXoYK5PTU-0yN@>Z4l>iPiIW zR6Sz#TmoFl_S^YkF(b%3@(PlCte$&FmN>b=$LcZKRIHvk5|m=CcBOzW%rR&gAjRrg z#Et`GD24C8_7mO{r!brTxmH^yPGRFU7nt4WzGUT2@7bKCD&J6++C~0k_DNG+3*~&a z5Wg0EY(OD4y7U|u25UVr?;Fo+PlbJ2Jm1J%cH=2I!5nmx*(s_!RyMic*SrqRY~@*! zf`tuLWnXsRhPZ}Ck-62jeuF9-qR71aQFT*MWK7*Gab_GTN4rz4osvdt5n=#sI$d-} z@y)Ym#gehf>s4BD?Q?uI8G`6;!(kzb-tJ4g4p{ri==&O;O#XFr#nmF=K89Fz3xKJn8e*+1C{D*Y{`!GG352l_qxy6c@(=?2o^5=$FLu-7#6&#_r%6w$ooy8 zNjPyI@ny!488j^+$&Z*{wO++7#@7)H2|mJlFmMdm$p-O}`zewsoF~;(yu`x}TD<~# z(ZL!{9~a3p`_NpK5cNDfj1_$W1sTg}6*9?hb2n<!}>hk>~~ zTm0jI{yQ`d%(44Ye2X|Rvg=tKm_rB3txmjCl`JbxiuKZXofhBlfxS-No8B(6C3cb~ zon0B3YPU%9DDpRg5nIGNPGTL8Pj%!TKc=kZO!QKtw}Hz^HW(ULz<)mSpfro6Vl81o z7awsMObNwnaYZcY^%m7E)~m-4z-jS@`d6*%9;`Djlg>QXIGhizRIqu2qBmbowNfR~ z9A`f&ho>pFT{(*zuxzG7=F_1eO*75whM?wZb8QwY?GSz0tGxE9Cgl}o*<3Jn&+4$$ z22#6C{rwef1 z3|ZdZd3;1LEUj@3_=ic$?KoML?q1ENHM;NT9_GQ2K7r9kHLk5YC+KhHriUz#s_%U0263O2m zQ>J)WNQwStP_@Lqi+`LaM-(;4;hTw#v9vgbgdi!Z*;pP7r*71I>}5h}Rm8MuV>aqv zEGh~zk~@5=HdF*)fYZ;?IB=xe0F#A9U~)iyR30j$my%NzInu;E^>WueMU;u#DNrA^ zw2teKWli=j@();G)sn6kD}U6I<{nhQ!PZ_<06i|Nd&6CJ1%LOd9|KI~U4qOHPRTTH zgHn866?txtzjHyq20+h552&Hc1iLsUnSI^dl^1Dg(ALgm>`9upC~(`y3Y^3QIEJz? zhcy71XuLZ#&dDdG@yU?o7gOEa;`3T<0BS4tlq%x`8W-P6dv7`4)E8H6-xBXE7SS%% zzz2rermuVRm9<_2+n2oqsoK(yt9Dl1phy5f{$yX_Wugg(v z&T*kZ`(u)eLo^VwU>~uJi>xN!Cxz8N5!Qu%7xcKo2r{9-l{U(*lapocv!aN2^CY;931QAjSd9+)(QgMJ5R%}16#_wl0R2|P8uPEW8(NV+>?7WP zWMv?QD?@*NBEg<~KMd8cU{TFP7b5(ucfWyC_S!TZmd3cKqe2OjEUl=!VGld0G^w&N z9i3I#D$agZ<>>TbXH{bLm?sfNNnfrc?Bjgt)%tZ&B>^B8royl0N1c0$d8$wYjSj1iKAn!v2A!Ky!&W!%V7D4Q4%cL8MQO6# z@<8&fpe<3R_s7qhw^*wE-DGn1XQ&X4$mDz%F>HT+fsH*o${AEup-<`jv=IdFsOa5x zGy%Yk2$R_>R1U96RjwO&>Z7l(1r`@zxdm8SzMCo>f5XQhw{Ku1BR)X>(QqDM-}}4- zA|fHOW7o#oWO=r-O9=Jn(L^o4;jix?B70qTN8OTil(h|pJ{uJlBQR0d{DvbrzWuh5#Q_-}pFjkrB7n;W!9O>w|N>84OW^e?j7F>QDtfu{u3Np2< zRY3*%0KeSN%NJ_tAhAtV9ISW;gUfHH^6AaWx0T8tY2_1b+L#Qp!?OgN80R9^hB?O0 z!U$V1Z#FKN`02e{T`-Az0S0sx_el3Tn^c-VyJ~@EY8|MJ3nk1`mZe&W%aU20Dn~W7 z>C8b0P><6%ibX?BU2<^?=Z;$|Xd8>_^yyHX{ImF8#qzH5WNRSR=0TKVft_Q_5O)Qi zPfiS?HHxsf8oeTcS|bIyu|GixYnixAsmKRS;?&XD2V+m!^}>%|iEr9P$VeRiKSz)C6^R;k5ztyy!Or%(KgIvN`ko;o0h8uz$@7 z%yR)*t?I~x4K8IXF;CUv7P8YD(>ZGZGsM;+^K5%kBkp;$=%=ou<$_`tmHGMR8GV|i z-wOpoqx;~q2JAAlg~2>J)G~;@_F7R*$os)e_TecD6x8_pB1UeZ~K)#g^VAx2w8nVB9`lRSCjc?$UtkV^|dXksH&m>z? zq5hmGhSwTiHT1m7{n^g|^9;5@jV3Y~j5E2UfnnzeexB4|CFZmJIqs?Yd~@Y=FKLS8 z>hsrBj;Sv+v)v0l&#cW)u59!>2!g}n^hSvr?>Yu9J&I_Iw(}rR$gFSx7f5gvYzoWU zWOdAc<6Tqa<7U_-q9m+|PHi{?q{# z+E88oCw6gCZEvhso0U-6}nW3X$%t)2!ZU;0aPv z7_aFh$J~V;gWCqBL?%u1OYmo^T{8QG@j8?52*}cA#cTmA&09a1z7j)N)FSash;lEW zfH045|0M?D#iw6@(DXvHwko}RNIM1xe%oa3Xt==LyO_I~79)8P`B+VPDUiz^7fJgG z1n?~?t;=sfpVT-{^32iCJWkm9Vw=d06B8|HdUMs5Yvrt#Wr7Govb$ZHsc#C`gywP3 z(w`T`i^O(=l&WMlk15Zu5l__kX>kQ9%<-u-D6vR>ZFac<+}dcmplt`DL*(ap&OWEZ zK$9D~nG;p$j4|v|Cznn z?rajeSH&i_c2+_zU7S3kE&>?YUx|4AW-h=j*51`D0gUXgz#@Q={S_VoPLszyhx>1) zVCQM*w9RXdO~@|0F%vWld1zp z&VzTSnP5w9bJBeZE;yLq7$uq!%((X6#?g)DtU5(V16Wa)TXrD8Rxhj&R&(bFARoM? za|2Tf@HK#pS(!cdNJVKl*a_opBjEa9G22qnC@8;+&n4v*MA$*23+IMMSIfwEH5x<%=k%(5&Uv5 z@2Co3>K-+v3ihLdK!-NRaPKEOvk7Xxun%e;nBVSRcC6Y=lPhaJl1{7Q&9$6I>2s{& zR85n;=?QlsZR=jDAs3X@*s9RL7M<5V5O2Nq(WxK@QDWy_8V_tg){wjoi;)=tx`qf| zTs`_ScCvK`1$ow{v^Ja8yI(Y@UlyWXVsSdJK!3O&DXfFLe}8=}3D(6QQpsTYm?QQR z2vDc6Pu?Dj+$al6j{Pr|pOKh5($Rk#8`l0z`mp~tE^Wbo(M0;{7Krb9jpPt*NDS3T z{vqNj1a)I`UF0qX#&i+WLk6ovw@VGV6*XkUE~p{e zU(kLi*Vx^=ZvReZkznxS)(?AT+^nrF#%&u@F$_upQoM}0g8c6lg=Fqt+AscwKmJ^P zDgBR1f3uWMd!E6sukD|VTE_uA<4(Q)@ZA_-agF%ju=I?5eBSwSAo%(uZ~m#Y&^1u6eSw2y`|v zWA?d4?;vX5o57}($A#c%j@BVY-o6K(_}hd*tN|a|&t&#!a=YPzcr0(8o?zvmSrw#( zqhMP3Fjl_xCa2S+XTt`FXT!-{3x`aK`eS@;5PsHyuW{U8g?)4=o6P-z+`2O0RrjE5 z{Svk3F!^KIKHDKq5RB0~Ci@(=8S2%vh z-I=T(ASJsr3^4GM;@zC^Wt=sIkjOr(;uat-*dS%?)O2-WA=k&2aRo zep}(<@VqWOe;=Of!n5);zfCYIJYOfhcr-tXC-Fx$EhmNbv$$P@e?Aw|Kf!N(-y=NV z4CznT`}BNh;q>tR;LrN>%JBOq;W;rp_X*!$59RyAGa2gX2>IrR=SktYC_L{A&t!P6 z4CPkw?2P?a;{6WpavpSz^CrdtmzCC3bbXs%$8HLqU?U)EFK@NO9n*Hp`x zmUL>{)fbetr0TN$EfWWeK<3Sx%)VvXvGIyn7@BZ6lj+=H2)O2iRFI6Eiq0A_g7t4# z$-DVA{hveTU#hls&De{zBA|WmK;DIKHCpzi#>FtEq11f+0ss}pO{PbUAi``gY`Z24%18(^Np=rstaOmxi%EMHi=4>TPmaa{K? zWp-tsHw|ci6FHJdH*6P;8uys=njPI+NS^SZn>aDydq4vn)=8G(VOX}VErELx?ctWC zaZ4_?EXj5oT|zP~UyE}eu|{%2j|b{3E-jX%mt)kC3x9gI@Ug28f_Fj*kg3g?{(x@JMFi6(ud)v*1l=KuMzdz3;cy+-3%bO=lzXlRQVnjdayGZ!ls zoYHIlEw<;zfI$a@Y_m>?Af<|rLI$s!1cpZ{Q^`C|$S-Fyy(2WQMb-N69jkb~7j0O{WI zN%>bW?v*?-1zfoFTx1|?Vr(H4gkg(M5T*t$<`I;!Igu0Q{4#stX~u?ik0!fG19rm< zw3~1Tu&)m@x1~7VfsQq+?euMn%XGazjv+lD9Pwm2jcM_!x9Ad6#%OXeos~4rP6E$J z$(`KKR;6CdN!9wc-Nrunk7X;i1f7P5$FpxjefLBfu@ru{H@+~2X6Qmlod z>{EmFFQYzAko2dQ|8?6_qH7Kr;hte1N&ekI6(ihp z`XYHKL2_*5&OMdPzJX^%DmtY#xp;@Rw+~2WYnX9uZy%D(J!c{7Y(~9Eb zB$VcJ@5H72kTap$loq8z`wo;L%fpwXn-!*~Jn3F~cXZ(Km}MZjoo6_?`?!(w1) zJ3wgr?j{ln$3L|rtg06w$3&8}7fDj#IXOJvO!@RN;dgU*emOjA!gC|}80X?;{MPdt zo&&UE^D)0+#XySU(ft3v|38I~D6s>Z58l$WeX+iLu(6KyQS#vFsr>9|dLr9b49y8_4UP)RsW0zTu_%-X6$PT=*~Q zdwd|TyKYE*_wE+M_XFl>+}~;cqP~`ayl&i(`pzrWH*VfQeIx%xeTjj*?#~hhOa0x| z*H?T13-AEOI*WfiX6Ww=u>%hJ?&bBmd|!OUR{rtY$?5#>!k8hk*OjNDDHR9}b9tA7 zrxlZ*3;2nsQrE>3wpfQKERm$HgD1REQmY9gt;+6&ktY8tVWg2)xBd;|gsRyR#LQTk z)d1W}>=;>t%j|Ry*Tm`LdgLAw_+VXEkVxL0qw^lLp66y}zZD4xX842?0!4n-0@7`3 zMxek01%`N_`wZ@rcwfsNmx>Z^L&xdpm`WT6+enf6%dWL|bR?mtdlw(_yG@APcs_w+MKA%zS^?O7KT#-63^&Hk(mXT)r!7!9{iZ&F8P=HFQ3|f zc|-r@ss77r`Y#{fe|c5^Ee?)O;8+6RxQ(M!Nn%&c)@arOk0Nd~{l4FMI!rUu2iRc^al5^}k;RGo zJU^wC;L&w|(w})VOZTzW<$G(V)aIYAova>-TId7u0A$l-xt*RboCTIS%s&D*wyC^A zFlL{JGP)I4eb{pJq*VTw?gCJdit3@V7DVD%HJNA@)K=d`8sxRes4Z%N!s?-{dMM1C zPRI!vNpfyUVMFyqR^PyA&s8t-Ef7RO1MU9nbx&keIBTw?S$qoj_;2odlk*u7k;o%? zH6y9kud&b%VzN0UUd_-zGIec|bfYPvBwK3LUJzwP$pfNnUFU!tTcWesxNgw8IZh51 zWc@b47sLm-f3C!OhSz1^Y(5wQYTi-uTl2P)IxcMDK$mbk#0-x;8x_eAT{yi7O9^9u za%m3X?u7N&GNP8yXmmAGdCC$FlP9y1PE!SQlLMnYf&yGlS%7$W1!;S-DfW*>JJqalC0gA6)Oy3WNLktnPL9 zl;pKk?y2ToQ|<2zYd*-W+Chi`XaS$UQ84swyQj5PyoTB(KR|0e9cZ;a*Sggr(~lv# ztUH=FusT_rdIMyA{F_1wBLUccp8OFmDndW+lQs(PnQTpao`b|_vi+KFG2AFIY-p9Q zz{E6_51@iDKh9ukOg=pmePu){BGSTh&Gnc=GST6C-f~P?X}=>;ydi+Lf=P|$lII-6 zNV=>7dugXC!c)jKKW*TzDDPjzhnAPq(Z^(a-;>lp3)6~w0$9*z_eB9}fSg z{@3+aNl5un{5*?B_P@i=KZpOS|G0h`7Fl@G`F|KC<)4vo=??e@Q~N&Hg8p5bJ}gs- zk!$4@=VFqw5Ku3>u2;!XIGve>1xhz%un+rW^RcP?NAS2J^%T~i)CivZhfUW=eJbm% zDM#9ql0zlIo` zGWlun`D35%AoqC7J*6iTk(NX1+ogFj750CQ@lgm4Rv(?@Vf5;-DV)r318lmzZ6RDk^>!e;udaK8 zK|HJ5eMWoh`MM>U;TO|+yM2p&=`MGtyf~tftp(8yIN<6e?Sp5ci+k#;*EfHhGAjdr z$03b@U*npsNZm?vf6(n;tS01bS!2gC^3ztDymKXD+HW(tkvrSedRDma=7Y*ox3 zrXuy#FSWdoscz|MuBXsz-<12%EJoy@b$9ym>-IAKTc1A?2?^wvyU%W;Afj(I?~~Rs z8rH70&3_Kx`d9Ix;69N}YS za@01A=J+8)3EwYSdkN0{aB}v1MlKdf5FwJ;ACa(bN8}Ii%{Z`;Kcjow;`K`1cHNQd zCSr?m4X?ou+Gi~(Yk{z4b&050iTQ2tEpa_;in^<{ZB6C_$&BCXN_n;J?Pi43kv?^a zQg?Hwk*b-7I3QH^m#=$r=+D&{LDnVor`jE0o&#&#FU6JGXRRztX1`{H!GKp!Tbay$ z)qd%=Aq@zXITak~ijpQ7v3rgHyywD?EVUFrL5Ts~&c?^#Hw{l_-xj(G$KklvyGbBaZ%ST2pER=-PFa$Xzi`fmjvo<|k)cZu zBS_J#m5h9SzOR1l`b=T+o{-hHd!AC*_EThlZeL7hZ?IZ8#W|&$T9&x=?Cw$nwM^-* zuYR=oDEzjJS3l!^*S}F01h(vFM8QcC5kpUM)NoDhLBt@*Yc$rXb&v#)L?ZA*krW=|(=-9CZ-X|^T5Zca)5Tqa`46pndc*^9bjZZJZq{Q3+v*x>swhh^HDm>zoqjox4I8Tn6d^GFRSw~lBcnteLuvRc- z!))U*=y4Zf_EqKa7<_tQ3>w%5&=?%Xob1s!z<2AGXj0;|xLrEWR>IK1V18>nI)*bI zzlz6WivO3edAf%PDyR;KZknk_XgKzb_YWD5q@5>Nm$UHj@%OL3 z2RZyF{Jm|My7~Vee{XXCoWHLvgMr@S4fAdynFsiLE~FmrQv-j$l+>XN{h#pn6OhZr zreAsaKjiN_go019K)Cmij#bO;)bio{U7XzqhmnoI<^--q?c;~HjBI;I<}DVNpNa8A zXH*gOVRY|F)dbpj9rMh1HiEj5BC+eqT%iDs#^+_;I}zR?qsyr&L>QLGGa4}5c}vTQ zWBA16)AbN@%mSjTA)>|Bylj8@5P4+IRBCm{+s!51b+x5;u% zT4K9jU*$@>s&6v))OE?ggOQQn zW=K?zgYAf<2HVd{F0Q{-(ib3%q#=5c@nI7?tP2QsJ?;pzs=dW~w>yA$xtmv)1=CKf zVbq>odyce>Ho-gYkL%XL{)=x{`5l*@@ca!=r9a7YP{bf_pNj=m(+v>vpF*IK2ii9T z*H}VL{gwemlYS?8#b-=2z~0hw5Zh!^%5-RH+G-`H^Ji6#&~YW0{AgQor>#JqqOup) zRhHIE)Ph3GYH|H-B#A^*u)wJ7G#nrC66MgBSBKp!j8-uC zw>MrB6hiD=552o@#yO}&xOI2^$)>+;#j=ec=wl{;le0Q8boL7c48CUnbPQhc?5|R? zq5l+SzmM7gr4-EaDKY(h#x$c4d1I*8Xs}z)GDYPO`0LY~kWI^Bb_hE!5;@%T*)VcRX7keo2R;%wStV zo(uQ{t&}B%%d&xj^iH?L|CXgYkX4tvoivua4*5fE=P$ujd4rQGa#keq(p&+!bSfnW z(Wd)~zFzl;$Ul=`J4hNAM{4}IIMt)YR-XF(3wu6X{P^Mi_v7~4&{ljmw zOL=U}KlwPLNHfW6L=h$b6XQtGQAKF3O z?QN}794akp>)o%-Yb8;jIxE?3Q@M#?Bs)@GlvQtT?we5|>|D{ta+aZyqKpWvbJ zLJs2wH?xkMXwZ@xJB(VFl(F!0N{CayECS6Vg8<`iuw|k`TXOr<#BoOeona|z>EJLI zY(m?3IQMv02VN@z7vYsD5xj5gG?$-i6KhB<6TL(e;XXe2MP#SByepTT=8|I(8K#qA ztzHXSVFiU4ms=p=E1K8JdrYq~c^{+k(k984rpmoA6(_S5xDdL-kn9JW(+V;r1eapX zSa-73o*0fD#B&)xfZgsMTcuhsn;?^z&lp=(i+v?|M2H(CYy_`Axp4$%4HG$pJ(7euV=e8t;0Qc}c7U_| zdV_J6i%rsM!E`i)vz%&vJBjTv=KwIvrkG2ocYgJRY&^ytZ29&*Co60(71{!GLF7w3 z7L};J+nr_YE!DWiW93q$W#IEVSe2;lJ&}-Sp0y~B5G2*<4)&$S7>=g3xjp#JzEzEW zdv>FXH5*AXYUUmKPE5TiZrCQNTWdR9ORKCFABE^~C0+N3I06>AL7XYpFS!q?h`Uco zet`-{r=ruVun|P3jE4d}45ITn8W_Hbq6G$7nGgj}+^0a?evOPyZynb9^pMoTz;+g&8=hU{29~7J%vtx z;%E_p%Bky$s9ZRa?RTR{ILH}|w5Dvf1!|NWV&{2s*C(UZ3Q7m^Ra%4ly&S-z#LeFk zJ+&bJKcqRM#;_tZxnKCtt$aor6Ght>^A&dA_aDzxS(5R?WPqa>a-2`Dk&kkZ+&xJTg2Nhv)cE|HI+;)8Y9-cpl03E!IN~fLWe2 zDw3PE7Pgv}7xXamsdrz%69(iT&@ANJT4;C-%)8(vC*!`WAQN{e*;zWzYghJx(9tFT zQ5FNFKp(-<2h=K<9BRqfu*{#|{S|i<8l7+A@KT#T8a$2{0JZCVnnB=ZINq(8WJ)nq zw~%7SM?#oN3MdmtmXU;5oHa~zVu7f~Ko&oASNO)p`^Kg!k8jMfvn6sNN+t_r51AEm zT0R(Bj$d}i`;s4MhtLz3N{hIGg{a<0QPiVEquY*(rk=FSvWDBucqY%6ehKT z*Dn7GUkagCZB_2{sbXgx{y> zeNeao!9k0Zd&9g<5{pfo^8W5N0(EW4U)UAaGedaFl42m16c}X6vIM&zGZrSVUbu&ZC{-?2$%+;by*l= zGsWb8tX}Y^I`gYEoB?yXuP!ze2zRx;b*+}kc%D$Gofzs73RTz`o{&gdV@PXoFM4O2 zpEe2Dm+K4jWBESKIH;ony`m^;N!)XlX4;}wkShuk3^d_>NEIIMEgfl2h*65ds>jXt zwWknaYI}1(Bgs0-!F)|wVHW?}a>C4Z^ID&u-^B;`cdpwqBt`?3pCDlR78%K+r5Z() zg*F%Y-x_+qp!>D9*^-H8l&@<7=BF<;?$D$9E!_Q7=C)sgPqv(iyO1%c*Qs9Py>{%_ zecV^S)|#8Ix$XAyNh>XBk@1J^e9|hPt3tV6ml-XxaL2S%uB5d}y6zFNJa#&VEcSSB zoj3xdjwfHLFsl=apC;A(OFOS7nl_OKQVP3;v_-=f4p;EHhiYg;}lG^tEt%sH{Ood`gqq&lxnl=O9o) zM{->wL%7QogQ&kl?HlFQk0IY&enR;d3{ZZUHllp>f_Y`ZKT0z|l*TvpLun1}#%&m3n9DE)}F0DNmi~s(*M< zs4)Md=7jr*v0yu$Kw_uSxkA%eWWCp3VR2tH*gu^5jjKsxtJJADmb6YSFN%J19b!P6 zMG?evzL_7zVakGF@OjSa>Uqfi{y8!{-w)}}hv(Rk{^{_0a(G@Bo}J;jXUKOzcuoxI zcZS~=hi6-O{wzF~hv%V#o|qth9@e^@Yz>>^nb%8XCU$<}lXy3( z=G1-XR?KX<?`6wRsV%9by?3;UBp3IX zNV4Aj*zzAAU9Y9%74t$|6KK81E&c1p{&g+bHwT*izS`Qd+4Fp}mH%$DNBd@X+iJ6m z(R~GjDVvxbX8y$^KkkT|qJ;KG8V&EY(_#~L4PAgJ`drJ3jfy9g`#Zq;F1ZunV47qL zv6Fu#-ssFK^P}mMIS4cKgvWii+XlM5nmLs1Y5rZn!WWQzwt|K4&=^>_+;sBIurPzl zTd+(I3w9c($ak?G?zQ=)^e#I1#qNoMyh!Q}mtOxufdxmVZF z{*8mq>uhEC&iAz+>Jjy?CtS7VKmMaAJX=n<47*Fl^}~M5R@!^pd?Ee~a#=;jEy?Bn z-l21AN4hA+7W&-n-hLhs&M}iy6{CC@LAR`ns?i*X{=y{B+2M+5ORNPLhL%_I9 zU|a+kqT-fc%EU8^5E{no@c$W|?GbJ$+s1@%{+#;@4h#(PZL~%`C{G{6J@Pw#GUNu9 z_Y2E<{M_rd2H5u>rQK^4grL*c_}PD>#u>iG6SrDpN;Mu%jmyfRVE33rslu`Ucz0(e zC_H!MuJC+$(C^~Y z;m32~`BHd}+S?aCC_E1j&rgKss*rDWcz!aZpAmka8lEri74`XqwMWr3l91D`W_IJs=i*j8KEGfrcFY`h=l2_f0zkgOv{r~&IoN^PFpeV z&2`UhegDkwPcP6SNw`G>@-m~PMcpP+&9P8I!OD9nwy6)b^7ih8HR0IM zs~b4ox$?e<5=WK54BE2SpLNFYb~7pjS-eB4RVr$e#EL}TBd`j=Sm(p{wLi?N?SuMp zYk~*c0y0%EPiCi5m-Zbai>C+Qv^^;>*>~YA(dBa<1GO?G~0WZMgRk^WiCV=c{w`MzdCsirxhK z(&nda5V%jO4mn<)%J(4L4DEEv0D7Uzc>$=E^9R=AJq7q@#Hn9xgbRPDs5Q zg#PLk$=shwF1|^kw~yhL(B{2)<(_~yZyYb?W%Fgo5Ao~eu4Mq~U!*0j->eq>cHZRQ z36$l2xLSx2pPs~Cw@ILV%?TG7-?W3@nd*KLuJQ?{eonB!FeJ{f#KiNBpv|U`-6>&q zjTPl?d&I5Ogn8;?GW$_=*gJ>1Z<$9;;?AMP!02jaLaHG3Iqa%-3^ zpoj+p%^@Y_qJjI!FP$pIVtR@{ji|bQL&L{63z5xIg{F}N1!-UaxBys&ujJT;8V@3F zmGe-%86FIBS+7|tiRU4iVhM@*cWvr0ztz&dX{Y4%ONftszq~Kt=f}Rcvr*`emuZ}W z?j2t|=WbH!Rx0^e^7?C4$$q|)Y47+-W{^EyFsFto&{ym{p3HrdF`{=(<;k%voyGs+ zSD?c%jY1%_g4stjgWaLe2p-QK^7EuOyFHcEZj1wg(=(6>#$l4VyA*UMN?dfVMs%qd zTOgP&mHd;p`*$nZw#EFQ7TALKwplx5ZChs_H8WEytvnm>KJM|0t#Gk~>JmFfN$RZU%fywOZQQ}HNxM^WdgH<#qB{=hi27Bbj>mlBG zql&P>YngI2N-lT}-ZR6{lIN)Y9(FAF$|nAL$v z756O#sIx|W7{XL!Y|V`!6Flv!UsfN@{D7Eh+-w7NG&e9rjl7iNy)g+q>s@cY3dTP* zH9Yq<@(r9YnZ27p((Vw<--Bulzy#*zc93yAvYWB#Pf9JZs}W87cW0(xi~EPqJ=EDc zIyrWh^!!#L5YFn<3wLkN>e34#24{8aMf1}z+-K8NGfsTgDl`5wz~jPO$0SoN%*z;wmtcmcN^wBWtuoZ*KP_ z2e~&1dA6mo60Et~QRV`P*cU&++FCCwYv#0yS)Y4rE*r+H2~HfqNJZc963ll@f*Jd8 zYWX|FW0@mCC7Jy-ToG}mO|2B{q8T{r20r<5woB~!-f2)2jGY(!ov%c6A{*a&{I>=A zm7g<}NAdGJVOaKl*HPGN@PQx0OnP3d+OvJX_d9QcDv3G_#A;&_&DW5lgJfGx{0zK< za-sLO2oUSr#ED4~qfpZc-AqM(dp21MIG|q<~)w?77ToQrH?9Ael4*yf=&1UV)D=uL7CW-E)!D30*gE) ztFIa*Y{VGxY6}qCgcfa~SN6ym6nTH3vtXAB#l8pv%HP4jnP}bz$C5D6!fklibp;*= zTeqkGl&(>m2IinU81~2sTIxHcNe&9V6E7QlJ;C6}B7N;$qB{N!Ix)?mtUiM-r1$8_ zKW;sn+`37%X%Wrqtra&_x2y0|!d3M#kNxd{v{1|UBh^f|rK|HzD zoBIoX*kt1`sB@$;m<2zs3gBH3;z?yN3w{Js3}!*dB$dG|_#w7<-a?rBwV0+~d_>>| z-YSUS-D@9g?HI=vxL-X&9JHJ5+sIWj*e2_tuijC>%hvB|weZx@wb-bm`YUoK7zaU| zH(di|!<@goF;lqBrVq=~%>30&rZU(iG>or$CjyE|LtPB#o2`p6CB(;{)xjZSuP$#! zAnLkNfrTVd@B54j>41o+!S&$3AS7f8c8Xr2y0Ms&pWCfuVBAI+&+xmd{!$+=5EvP` zt1MIEUai(aKw=h{Y+^f)?h6C82(J>wxHnhXowQ`3DPv$z3@fUQ(EGcCkl;ZV}n1Rb&q$Hzn z+o=ZjP}amIDj66KwLm^&HR=d_Kc*BvduB^lO63DY&=WpvaR2m-{_tZnz z@au%$Z7a%p+kee#*}x@Vu3t7aoR`}-Nsq(w0m>x!NO17Eb=_rH;e^Zj>c7<|Pvlxh zMN#ved_}(7tY0Gy(1le7==%V=3(Pp({yu#0hVMaA zl1bZwS6C>3eW^sF<(F6Q3R1n)#wh!3z6CH+(T%oZ=kM*HhhYE+3t;?2X87wYuh-au z&(nb7X5Cec0RP=&pf5k6xj(sbSRk29^+M~$$K^w@C6qNmYV;p63ucNnvy$d(?9 zxqSZk(y;v;PYFM4SMlbDE%+gtR7++t7aJ%LAW{Nl8%Rn`unfuUXF;QIVN58p9pY5= zQlrD{BB3~5#-k-F?dcI*cuF;1V_OpQEw2{@gS*&(NNuqaHWL!3`n}vu>NZP*U=sT> zJRN7>5;LZ7cWC?Lvv(TLa7+uQh}fBv?QVO|>& zX=$zT_;P3dSisJoYMnJl9zME7<`5V(CvLMIP?z8BBfn(zd1}P{jh_HGcPM~gqqs5W z_6J0#*opj7_aTsdMf*iwru2}hkX!yEgUk;@@ELyD?QK<`!(^fhUNCGN3epz@Qu|Wj ztjup<(>FKVw;}v7Tx-=`?~UWWKs#Xs2aSx|#d;PNyDb#`f3QnHp>FC4t57F3yFXcS zY{?M_Hf)S;xL%icYgy4|r#YBz;LI?D#3BUm`H<5-ADTdlOgVp+j*1>7zF zGgm$~BW?Rj(OmX5;UmVDjhXL^X*jVm;7EBF@hXJy{X7nzv9=aGU!`&VN0NeCbGCE$v%LR z8bR#mkxU%!Ui<2;Cfv`dq%I}3n>~d^!P`};%_@`3-GtK#V$vI@!c#nAYYdE~RYKNG zmE1fid>g=PAjQ6|{~dTttV{X+YYngk_bWomwIure!x*;(yAlb!Jb*_#lGJ#$7R(Rc zTW0_-OV~_?g;*BP!;AaUl*db<6p#EZcd4(d%GYH~Dt5?SWUFhQvrv7m(dx6M74Vg< zxO`JwUkEUQUoadvgw!8{Eb=-eSjKU=!$Ps37IyjdCFJ%@~;?{ z770u4wTG=5%Mli({EZSXLNyyGT6}1TzlxU&Qd?Vz{p|E@&$15GloqY6u2#X|6QjAW zcsfnV7KAm^0>KuafDBx#L1}X!(3{|L=aO7JhJezzX^TrJ49{SU6pQ5In_R8z+n{b1 zcOwyB?1?Yg%QQ`PA?#Hfk@*>gJ@h9v3)4XT$f5w`7F+WLt|Gu5e#`U=0%iW-G z{1x|-=K`6I3ddil_p|-`&MLc&uV)**zllIgo|Ba4Q_6$uPF0!TD61akpAF&pWJtdy z{7!D;zo)|QKZNI;@Ej4o?-`z-4&@IG->X9UnIZj){MN?XPeXcncvgn*>q5E1!tWpU z6HIBL6?(L|DrCN$L{;+p@cWSA9>^bu^rQJ*yaXJpr#pli{~9uPQnL#GjdVTV4&V2V zTMYSL43*91cRXL?^El>s?6>q9!+lU4Ib~ zClgdO+jv}bcaNz2r1KHv9!)QQpKuu~vGeKbdi<1(X?p(9X56`~<%)D_iF2C1ZJLaG?`5bdN<5yH?B$KmIOwW`=bDxs zSKtQq3p?d#ZJ_oEy7r}0smelbYx&pPMH8=ph`BzUVcc88enZpx08>~8#sdqT)t>%yAY++A&5@GWp^Odmb$wr-qa(`5~G z;+kmI7<>LBR97%zD9wFxYFGDKNQz>S6lYU!d0lIWSRwU#iC($6#vb!l>mk$sr>V;O z$@m9iDuGN%p0x&oxo5kPlubvol|LQbY6DvEF|fVdqb1Q$ zx0(@VdLwTrY|P89nVO-)fMYZe-V zt2pFfk}8z+GD&zZX82vjw6f}PWTXl2x%eM$D~J9MzJ|$7x*y23w;&hC2}{+n=7c+< zNBs#Gr+F<>gln4OF7_=E!SV(Tz0?+>$GD%XzG}avoa>{u;$PmgftxDah!$?J>05n+ zh%T8e!(86qxruk6QyzKmIVP+7@vS1!|LNgVdcyy#wA|N|yTtz1xRyzqKa$MO(%PlCF=;Ld#cXH$HtrCEKe77L znkw^F8})3#d9;lhE|N;TCiYJpqTDQW|4ek3*e*dOTaAsZu*ouos=i~eD&IxqOGgFe ztIy98WHzmHgtxz#?7FRFQ0_y;i1JrrLd>f~(1B9Q?VaR?^L+yt&eiOsVaR{bAMg-dUzQjp@tFwt5LP@w`IJWJRqG3b z5o>%OlKV`{ebYd0&tX0!_u-cNw1M1)&gesO_n#z4-ZqQcwXJDxaTi{;0C=@!yMKhx zDS*wkuw}M;EL$f_tk32t#gmebXNTD+Ds+ecf(4*@{w7eI^gA;J^Geb_fLwnBwp*}9 ztHi=?-r0t}KvY;TM*$=Q7P1b24RUyw>b%mj&tJm3PhLYs-TJa@aagbysz|h5C>*YQ z5kS6G%?fuE)mVA1b>oZKTue{y|7~fJvNKaV#2Ld?)U>8W#!Mdu{|N7bFFr3FS}dr~ z4kiEv#5+&9DYSrx+XoQCwBw86Xa`FQVprJDPuUh*O!$%Q$QV`o9hp^h0Q>iNG8pyx z9hoIQRaS8mJN%AJhfkf#YBilNZTiWHC_M%{VQGlm$DS8-g#}i`UzBZ!FTF2T!O$}Z zh3o(1QMk;{Qv2+_hyWEM(4!WaTub)ykX!PeN1=QEzrEqz)4BmA>pL4HZJG<XIb*eaC2P+b>?aR~Y}kVQ>uWMZyz?{K zX*cN@Ny$se)j5q)7ES;KY3quo(|6xTWa-D(Xa$Nyyjv-l-#wf(|m+86mn^qJ9V_RKg!Wh3lNv`sCSX8J|2c9Bl@g`00{1ck^PZbY* zD`o*TyaAfgV)V6EimU~$^n}H2fRW7F;N*#(*E=Ge|5|JD+s0Nn2&d2?fxjHbMkDqi z?x@pH0OIQy&(XWC7#(N~Bi*G>?u?jmwtOMm_;hXTZFU7ZTT7QxVsEo6rfPPLMsYIU#t zmQPt(`eVHO>5UjK!??52Gs$M&K-sS`fR^&jF6Fz6w^H&6rR14PF4)O+Y_Co3i7uL& zOjE(;RD9^wxc-r3rT%e7D=%S-eBpMpWbX7Ek;aPRch-A@-WxoNl^gtzCqv@&@cS)( zEAub-UHn1#@i;$}c+ubev!17{dY`iAqs4u~^U{!hTX_D^Du1;2Gk&Z5L7~3RP~Y(I zyqPBqw)jx^T@jw&4dup#`hLW-I4o4MCOp4N<_|qz_kQW}07WiX$#}W<*(WkTTOB02 zujafFe|DUkOq>u!${W=ds|U5(bZ#855>)L+@6J}rHAP^! z_p~U!O44+nRMkspQGUt-P7anln~uEJ@LJDZRFL1tE0Y0XkAqw zSGeDPN91nbpA_En>!phec=tg@5CpjnoLddx54q34MSK{mEzev zsTavT=7?QjTq)<_y~WCz=CMC^e%EnNCHJtS+%xlj*S{ds#xs~*)W_tgGe;*!olcm| zQ)-f9t*??0<%)sN1*icT6Pvc;k%4nYhd%R9XuBMO~C5ua@h zIlJ7~VBkoALO%8!>z7c;yTzp7Y1j!OGe5(awk#kz_;f^pgV6cn5I!cBOD!lwZFEHl zO5ymDf1-pY@WWEC*4(e343Ia?ki`kW9Th)XA1--y78fL`Ne6`ALVca{-sx z1y?$LILQUxiA?I$l zoZV7HPDgKsM7x<|x}HjgRLMjGN4h23_( z^=BZ#dL(wz0}*!DPgtt5$?R?XWoS6}M*O=c{Gg}v+o#)e%8te}0LEzAEVi<8bAE_U z==*?ZV6~?r={HRncUvxDdYnVMDLakSu)#fh2c<`Yd9z~?72a;%i1%v{2b1wz>L&dktZ_crJC7_GekM9wf6Ci0E&AA=o)Q=Y;2N;W>_{^8G0M zetMn%eXsp~q_`q{-z_{VLcU&}Te&~}ci-ptT8JKj}>$+Gh2&LJE z4ZJlq!NPDQvlq(EDu0AznGDB}Qd~I_NanLzYB>*vtu7NbTLVdFCfM{zX1AlT=932P z0H1xhOnW9_b5`3n;nBhpuVQZ!6~%L6%6vxHM}ic6ykyRSi92mqXcp7+a&wP^=m3_` z^@N}avlEL-zx##H-YUrAN{t*L55F`=dM!6!PCsmNumC?AT8s=KV>4b zw50QWC@8Y^)en1L0){vHUEEfmf8VaF4^36S)O=K_ziCb}P@VKm-IZmRWN9VJ{s=jS zyWDlJyzUNoh84JzNKM@~7z=G>Fbk*IG|GsE^DlR#5f@!jVT! z7&Z)~vXr(9q-45lsfL-MDm|_HXo8Xj9)Z%Z2W;R|Y+IEk=`vO%QBTWWbEXw#B5xTu z^Txa?viFTDIR< zdvOFSStpi2wq|py`GFGLKouI9G)y;C)x@%S!SR}W2kxn1dr9B#L$D>gt-(HsP#4Q4Yn{FI>3`V*K#GkgfL)yDja1>fgZEf8a~d_W=y0T*nGLZI)-~N zI4~|QtX{%A@Qg(E6hY+9BuOR!@FP}soKEF<$6z12-9!8atQ&V!l}JZdw5BKgqK#IP z*?l-`SK`+GbN-4}6I#~0u9boM6|GnuWil2)JCc= zW_d7BSXK*}<4(0oEP9@8!fSUMKLbI?K8R_g1@mL1;+3MPd_j|rzI5rK4e{I9m4Fy4 zgsH;W8ryDtDwrz4vLUJ=v6IB&*>H(CEX0FiU3D3>jAJ)s+A@c{c2KWjp|j0(tX*=HYM|q%%M|O312$= z2X0NtnnR3!TKNXIx=sB|oDV>{8R?~3vWUwvdli=Lo0b2~3q#&12z#@Yx=|S(&`_RA zj3!SyzZ(J70n>VecYB$;9-W99XM+pYrj+Oj0`e>%aHkp))vqRIwLwq#@Fw%n2yVzH zSRMY<-h{+t>0zFblDW^bg@T<`BnW5C(PBFCeIMLADz?r~@SRU)=kBa-_~?K6KKEz* z10gi!N##eU+kFj$3pYRlr)IIJaKBJa&r`I25iJ$K>^cmh=6`%o#4VCHT7OYLea~qz zFra_h-O~p_Ga)hKXzQ*xV=~tOPUVjEA9nZKBdxnC20^=x%l~P2m5mOlyDOE`cSO4< zgSuPlU&6W@BgMTrS9SXskTBZW)>NVcNrBW*a~OAZ$<6c`PCCvqG+EOyd%wi{)yvTM zX-}E^kx$4S^d)O8CJv$rMnQXY?7~^y7uXjgR+2YvlBT8IrL3XWAW;Z z!_-IDRC15@Ma1^N@{Hx?YlW^v2OA+AldR9va(&^V%GUZkfIOsWM{hN)jW+4^%sS?mZUZ%l^2R?d z+uL?~U@poj@Pr@FpU7!2+N>0lu&tgYYGDn}5xeTOh4Yiq4vKgBpN5O~`!6OrmahbSf$=1+|iB+}z zPnXnVOK`b4>b3_RON{_@UnQ+L3Ol~{S1c^B?p-IDazKkV_ZV-k*&k^!nLFCNW=1|Z zo^Hlk^dVNe*L9+nuF}M8Bx2S_%{fp#CwY{e1+x%pKbji^Xw zPeRb+RxnH%04+9|%xwg);yTh}Jtx1Ks(bim7lK9CY=bFEa(9|@mOeZz%+bv-NNmCM zGdrH@?iBw;X!BoKbNwd4I1l|U7{5?J!=#jwwEU$+YIsRe3ix!}Txp$s0l^70))!{t z=(S>4=&2#E1}fI#85YiQ{49a!7tW68=K>1y*PvKVM2}D$_*JX;apny~su} z#h?!0*ywDM|FV_wJ=DG=KEg@}C;gXf@ZHO8WS>KfV`OEr(gB*mv|s&AV}n7#bBFRX zbeSXrW>4jqFki!)%pJww;@dc<+xpBIv3EAvq|P$fVtM9ci15&%F#vJ9dJiUj>shI)|LkHC6_W!i9}lE#9Z2! zj(|Yud@u}GsZSG4JJ_1wugo;NV_aOa@s$4pqBj@^G2E4Yp6xV=G z&X*Nm7g*68ieag1`aN)$4|V@{Bth)@kW+5c^@1<&Zm5l6!(Uxo?V`= zKIwOJ&gY2)QoMSV|NZ^&jKBXS{JtgR|7Cc-7oL9(&t>6x%u~LeUBYuiNUsUc3&Zn^ z;rrt7ToImkgl9H9C;ZmecL2Wy=d$p7^6z~5oB-ecA^(rV^M>%;C465MewT;m-2sm8 zgx}kRde?>DE1vN64-e_HLi)(?`=anXIXt8AtO@02@D#l7g>t8b?@i%(b$E7#{ENf$ z7SfA%^C!OFwcjoo)E#_?2(?obK}VZyg?U;M*>D>pQ8ZfI38iqtMAo?!0SIj`?+N6j zO*$;2c>ET|#C`W$5Kpw&4EnH)x9&CyU&2l!(@boPOA*-cd@0O$Yr~{e0I0A^!>O0m z)a#b`;#aD8X?MYAGxBwBU9b9cV<<_u=53O>O0%ylUTI*iaaZ^X#t*drA#GO;ZhMv5 zKF$|?|Iop0`)t1Lt9{$!OKm?-+elXeM*FkJ!U_&KKpmG8$H0b|_P#tfdW=mFche7s zaw9Y`DiD~qE4WgybpO=QcprK*4XDK!e}me307>%0+nS=b#%$46!{D}h)Yc^5R{fA2 z9c2U0Q}rk`HMwgGhWC_8;}U9>_%Ac;i-q+9RDHqmA~nGT>16h0bbdLaa>U4o!uT5O z5y~(+2-8kyg|tOd?>+yXDSJB0C8$kWxcRgHO3{S4+VtW9EMM z2UCp`2Z;LRXyGx*)e~eNO+Q6My(Wt>y{rftZ4<9us;|!$SmDF9-2(0lSC`+pt7{dtr1%*trW!z%yvHEmd^3~<;U<%!jGOt?ppcYT$ON2Xb z-?8v{Sf(~mLehWXvL-jm*R@HNM2qwVlCd(+u%Of)1P>w8 z+i?@Hn)Ci66ow$Ke2}^kt_{M)zR5Ss$*n1)(FtU{kx9j9_$f5UrjMs&aHU!2=haPq z78AUes&%wgk9cY@U72xeZOF`z%OvjJj%EiKKxn;({O=Mm+ zhKO*#F*(ZGi@)f%z;Gwo#IXZ4@uolSkLmoc1IpZ+T^fb?LS{N@Vf%kk8#QzHyPefJ z*gKxLAheq&&VmKxjtSB{4vC%7`vf&~=LOjzJI{(r39n^K%qcOiwXl&rzP zZuH*XrXo1qS#4`Vh3;1N34#ZeB>yUkGS+VkOQm(#6MzqI8`xhX#lXQ*^_^!yV=yy$ z&AS7cnKqvE>Sq7qM84ShUir~CIBrmRgl((R1&R5irv#yROW zjr{i^NxOW@b+ZHCA7Vdoiikbh-u^|(V}lChwx|#^nD?uu;=zQ<=0>h@VTqV zMc?OZ)ELc!zVsyyer6*^9nVvEojoPAbh}v{KEtS9DUUksJTsTLvoO4PU zVKYRN#;0yC1H%(4rcHI!cPZ7b4S{#Oo$3PjnL+E)GKR2W2degm!(DRSU1wHTk{d2^Xrq1(pUA{>43|+s@7+P9#wlH2igk;8B zn)AJA)Ovn~XKZh&T`J|8@J7k(j%Kg0IWH@~HmoSQp4#M1j}|vrfi^NSD=c7%zZ>2i zaRqw!Ol=&;^`*Ta;Qq>zQhdX#Ayy81h)5QDho30+nRWDvBFp3YgRDAeo(HkP~Vu7gCqRwb;7?6o9E4bx>16nSBKzBGkl?b4bC{*Egwz_lXH?7!8pnQEV_dsvyn?(-*UZ|8(+j=d|fvhtu3YE;S-jvejyn z?KJED>kMR4r@H^S-)7ORHJB8l|lTYm)z;8Ww3D5RWZ`{r&L;6MGS<5qx zd1X|eFZZKhk*dg@;x0(PG*l=`H>+)OcioL=Yf96u%SF z^yK%I$?C82((KjFB3yhEUFZT%z``PEN8 z&J{rahqrfukF%)$|6Axn5Xz=ptK0$xOu43DrJ)oP+O)egfkG)(p-?Wx$~8g?MJS{s zDOn#^qEf6vC11aQ5d)xp~$5{g#O>3GxO|j0_yMe`u+d^ zyxM)9XRc??oH=vm%$YO%@!DZ8i0ax+=sHiMFERYX!;npJOJh6J-cD_ul4op>o}=!k zS-m^9*$D&pryG@RkDq^Z7%GS5!W$e9sa9tpS9aWet zWUO~hK778*A1K;Tbm~9I^I6*<=PyOlridH!t73-(SABu8B- zKTPL0B}ZL=`sqR)6r3`h6xC2vhmJk8+$ggf0tx8i$&@a2*_2rZnyN>kCg#D}(JmYZ zPbq2OAVPe&ub}CU+8;j?9dlNp>KW^*SU|VODB}|GODPB%a<0 zVcoCoJ2c1oT^v(_OfusUM*q(DZzG9bF1Yd+7lhLSdy&SS!KRo_3+!MS?%4pW*rPZe zf-=}^2MoIen8kX%$tMyi#Rn!(bnE1DWQa{?o;EFZ*!Q>N67KO!m3PGk03G|dnC)Bc z)>AcPEr{{Clo)LvdOgx@^DRy_8z4UPIzrRYRTyL3*CacJ3HP<}NVZHi=&cA1R=Qvy zmGMcUX_b)IXk+I7W^3CbO-0khqfIukORi0lA{1)#%kXGY1#(w|A$D3y3`DQ7b@DVw zFe@31EHLlv9A4e;)tg$;KIXpjwZN4L4>v^%UnoEQwHmQQ2bcgXF-5BU9nfY8DCrN~ z0z)IQ7g}1VRl2-(D26}fpYBF~Q$3RS*1L!4I_OSC$jr(Nh{c#gp-^j=0fZ|mqu2_*+=L%n z<`Ewp26-6)N!*EkBoOJ9ia^H7sowINAmja4S)rdQ<8JUrpw)7ctIO16Ue!-RCa-jm zSHnh=G`k9YgwEmBS}N-1T?FP1nyl77uCGs7Gw@* zfjr_TqJ|3hGnrOIiC>Jcc6sc_=SQsJ3w?s8KSu)ERySeXYYenNJ;~NP zwX>49>|O>!iUv=;7e?x1$>YyT9Gg>ba{KtAFAhbgGh1FH!wTTbr?W51(StOz|1h$-UoJ-`>+9gfSc|B?6Se6vSI- zNCOlF?YL`wvYwD^x{_6sY^^2Z{2yt~^=USQG!05KCro514q+?JRMMoQsZ1VAOEr09 z+e-A%je+L@d>wOm9f!C%t=L5CQ6w9kn0i_0sL%BFm*(w&IDL<;Wm>!odx`q0x6;We ze~|y>(o}SL8Fr~|-Ym_m^LMGsY^)pOQWI&-Rab47nh1zZS3KO>v*3Yr=A{%@XHn4n z`;gOpC4a5Y46q-ex;gM>kW{^sY}I~7eTtA!d|zDDMuzI zdlAO7?Z=kol3CJk-i~VAx4p?G&S=4an~LD5uyph_tTQ?l4sMP{p1n&QT$0MB+EdLA znmUGX)Ql#vjIzbCKbPO&gFZnKf?U(CPMq$8`Yp)BDC=4u`gov-F;x&0$g)eZlYQ)C#*vE6m^&1^pDoEhrBy_3PLFvxy$IdH z=Btv|%E*fkbxZPlXM(%Q8E2=_(MKU`UM@j&8lBAc*|^Ek_6nOZo}ZI--{6_E>Z1$g z$668`vS_J2%u@!QEGq5G8)05{As@jm(5y+8R})a|jgyTh3n{bT(e|tIHZL!+Usd6L zh;$B`423p@$$O`6p8qPYWn3d{F*lC4K&MEp3%ihG=j6^nZC1E{RXgIIY1C}~L#`jg z>HIojsZhMAcLCJk#+^=a4^SL-(>7CQUUkQ_K*{Zml1%n|c5r!Z`ipk{tnxo*R{|ZGzl&DdCfpiczzt7o5OR*ZXbU^`2KqMt_aU7 z!t>7XjPnn>-{+ejp1%q42ZisCLV0ny-wW{vg!rl9`;(CFhv9omzCW#Bu=Nkqo4Ot2 zk4&#Efz-{m1X}cF3Dkx8hZtsH)NY^e8{2)&q;xwMYI-2!N4}22AzxD*EYt!lFG73Mr=;oq1bRs ziyb{oXRqlnU|#`VO^oiMtid~@gk7`fCgapLT5Frq6K?7vZL;Mi+bT2P0B({`UQTik zGd^1L=VP~5Xyng0hC=IZ;e^8Q}@cdU9581bQ7bVouu13fWZ6|X=P16cBk+XxyZ67saDs;jeVb#gCdOutXnu3;zWrcBTPa z^LYSOq9}~p{>7#}dzJND2w`@n&8AaOV~vuJfp@K*Ap4kGeH?JIb~J4X2}@N}WM3xq z{E{NA5Tu!%C0+RmH`yvTJxDVw^>i$+MQ|51G@R{MOX?=r%_Yf}Gu7_MG$&GLoER61 z9D^SVC6yc_UKZ*uBu+)6o$M1m5GKVKjHpdE|1JdLmj@-vsccGs40To9Z1tX-;=_fc zI9%v(2P?eUIzv{;hTjQxmOj}mOaHt`Wrs1Uk$93VCm4wt2c{}f4Ca34^9biRmaBGR z1fqE6c{~gJG(e|C?eW;#K#YeX$qpJIMsWEta&iH0(&6mxGkq)x)J8(_FnPn|Qs1S1 zX0+C)V9x)ZB3mzDddu_Mn2sBd$mnqxhn zQAr0D4aYEgAdl z-S5YE=Tly%slDCXrV;l)w9)$KKecL@wQ7Igsv9KU#;w|l^3%;1nwya`Jdy=vV6M}F z$h~%&wdyRgAscq+granCr|8;IlA+&em2+ z_Sw_@3C1R!*Rx`9h>o96XI}1qB+S!_==KrwSr#Xr_fq(V0yLF^W~QK7v|7{1pq*0r z3z<#Ye1EeZ3-l_cjSAK64}`h9Vtf&AV>0tfI1%MOr}%khrjL9?d9MvBj~ODJy{f@q z8K$f*eF7PNZ#MpZ)MO`Ka*`Rd%HBbf`YCt&$@eSa8Grvdd|w-$=Y;3GzxL^G4&N<2 z+r3;8-v@zxTs4)~%*?wm(a~jhkT$Pv1KwDDwB_dM?4o(sW12wnGsSNflMp)_>uh67 z%$%XWHL~50e1Z`q;MP}h6X-p~1MU{m2>^GlPgiF`t7nPX^PB3j`?g<=meb#3rnSEx zuPP_93np88QrX0_SFq8Au{6X{%EClL#NBolRdth2e_S`s7-=5ZBDwfS%n=VT6EXRl z^7-gmwZIsZyMBV+Q>?XD)@5gLTPeP`w}7#*l3|3^Hq~cds`K8C*@It8f2K1}!sa!6 z>*O5Ryh5;{EJ3?}q~y8!=;YD$5a-GD(Ya{9USPEmmKu%wq*>R5!B43oP1njGtc&d3 zuXJ2$%(@{fonNui=>!srX6U>){}wXX(8;W;i@aZo$bdt%5g_$duOZCRtFroIxwAHv zc>);vw6^-H{HFs%eCwIYsq=yftuc`Pag0E+cZ|S9{h&ND8EF3QZ2P7c4G6(kjphZc zBJ%%^$K*_pR!nO(IcRlRhgm6}Jgz8D4QouepRql}JTi}rI%$+*qSrf#>1wWK&ns@< zH#V90%4W%GF}Fg4d@Ta$W-dY(yTcOGccChHxFa+e$nlS0YA4Ih4-r6O|! z=dQS#LbaB>osM9cGbvsKak1sNYp(p%A}BegwkbKLzCAf+W=C?&?5^aPxjpWhGgSR8 zs%nkN#Nalllnas)^r!?#2PPF~8+LRT%2K6hDEJAyd0>a+;$?vIz>Y#hcHB#Vfkf;o zj}~gZ55XXv5c&m$enuf*O)joeA=SQ+Z9^gbHJ~EPIyhsl`HJs%Ht(dkpD-v>r0^RK z-0#dhq|VG_#UN6dQtlb(tuCS9VQZ>Ohy9luo-aE|U>iG2H}^7M%F(DSle)ZCTv#bA zl5g;Vb1ZNT`vjYkEx&`CyQ_)FJs$J*_(r%!^c`EO#4ZEDgZ7)f5y|g5?XicYN zs?4SI&?kO?;L8weVp~Pvqp^0Wd#sv$-X5Km8vB7Ae#$mGTE|}I93Euujkh&xTGM$5P(b{2C?NUzbV* zzjN6$afDghqa?oFzENJ*xBEBig_&L!drG105j@#dtx2}bHYpTaZVS|&2@!Eoek|ef zZYkL?LtxazWn^o6d={JeKy4R%uxsoG?nFRioigs9Fu=&JT?~SGZ4XNZ;UU>FM+HUm z*J`~`PI^n>*9*cK`m@;SW2Uypoxw0c;!3vMPh5R8pZ^O>a4puuC+peH`l?SF&#FUZ zHfEy_6T)$^=MYz4kqMKLGD%yn&=ov?KI6vQt>OvD( zX%4QkqUs?57y>G=`e5jZ#e9OHs^j`;3r&O(oNYinZ6&e^_NU#o|c|er|rkA zNmczLdCgOzl&VKl$)o#H!+~;UTk`62EbNKoHK*$(IH!{;v~?)~c;IW|LaoL_f?SP! zPCsvQ4_#sXoP9<8{22YbCiL?Z`uWZINFwKVikf2lC?6Q^bj?2FiDXPg^_@l_+Saud z&PrHK4P;jj6}~5O6ZeXo-Y$btfA@wY2v9&eWF3iT>jAEvoVe3e;FXU z-?rB)=jv5EkVha-LOLdf_Y>XS?o@(zy~oWXPA=+#mOBia!`KK zPDh)XiV|r9XoX-b0>~Xoth~qKr)inm=T>^d-tVphpzQyuw>*d(k$0_-!yO5G)EEAPFI~($oX@o&Vy!`iDTJ zYb?$zsXO3{+BTq_1lbK_63KYC8^|jCyWK!m?ce9IpR<7#NFQZ_LGPX8!Yy*$r zvs2Y$`T#z6LjW$*SJj`AEjNG!fd8UShh?khu#u%QlcVNz5PB}h$>w$Oa&cL5R6`Fh zmsci7E$HLr%xcnXfSpd)&OMe;Y}v!{eZ|A$+sU6-d$V>c32`MVd9Nn5Pm4B8{_p4@ zh}+7!xBLNxVpuobUtTWlC`u2tBYE!*Z5msaRw?AUX%+^n4KU^ge~o#SnXD&UR3XqE zrZG5&o$@c23uu{MTv3iS#f8(#c&#fh<8?+QuP4ey6BbKaCQj%36m3+-?a_HTL*(#W zvgH_YReGhhMlackJA4(sm|!lA^^IyB7uD`y6VMU^R)wbVcQFSd_B~=3%O>k>q~+U_ zJAfj+oMV#H?tJ$D*6YbKtL?ejE<9r6uLRFk8g*2*+3et1lBDb-1u^-f75RNXJD3@U}fii}*ES5HTw&{!dTJ0{RFbJot)`UFzO1LA7xgQ}P3 z|2fWpCW3Lc-YrukW&>8%a>3^rw2T(jw(&G0uP~{BUC!|6G|(Dlt02V5-Op zWqZ6y>1?n_k|`QC;qKcgaco?M&+Go6MNO2rRKaXfP)gu10?c(=tmiJQ>l7PU@KGM5 z&9;ZRyqg%+=$TWOvhLv%>`B2~!qhHWRcy1rW;_Pn1c)7q!G0SaEjH@TJIIi2AVnsy zi_xxOs}6X3skgwK4c6^|RWP6(QvDyJG$G-sev{QeFM@8p#o9GdX}F!B^9aGe>IS}& zEz3|+754s>0^uYac~UjetkJH@1GB|*#^%=<5@P%bh|Rx)$G7v6=kb*SZ4006$!FDu z7->G4b*QTWIxdME9T!QGG2Asf!9i2bq0sm@x1C75Uiq|>3mI%O@1F@)VEfbKlFB1Mn?&-yfPNfMHV0LlFu-te{v~!hD zwA3fE9`mL}T`FluU(!o`m>qS1M;ZB0i*?$iOkuQgE$OW9R=L-|t&pAXB(>&DUrwLO z`KZzx8VL_jxxoJP6<@v+bj6o&#Dxklmc+0B$|gX#;>*q~K?%Wnn1n)GyhfHuuqFrL zFJ(?bgud7WSokA@&aaqRZSM;5IcFl@72I z3P7xp;!&t0Y(V~tXH>KeABoPeBtu)7m1_f%8N#qU(pPl>CDBpp!Y~>;cy(`2HHu<7 zxJ#tW6ld3wQ(n8ZbW(%+ElF52w95>*zUuX4O9csSzmIvyCJW)>^}u^t5BTEZ^}sZ%I-CacqL4}<_nMFb(ud`y=>$%8$vmZB)GPlg?tFBjxfU~n2#Zu04N;F+ro zAGP6mLwGg}2_F|St8!J+87h64rTp8y!fqIMZCA48Dv^11eosF2CRbu*EL>|TQ4iUz3>#Iq zg!v;Z!?|#|O)TYm+!2fq>foLGeRwY_=#g_nby0mAwNX$lgqC`!$ z9w@aFJGsY=SNi%6n~1e_Cd9kTD5Wks=!iFj2rlho>q?3cf5xK6Jz!dRIr3T9DH3yI zBsIvv(Hril7ywfgLVj8AtGu~en4!+Bh(e;?Gwx8%>H%Ok+7`&vUq_Kyq;&3@a*JxB zdM*{Wpue0$5J$}vl$qV*z6=z?bY^y!t1yVny>JYz+ljFLJ&`|)@(fctG6>T5v<(nl z(?oUY=*Kps#(1xcnVC(=mZtKLzF$^c_LJIT`p=d0Hz% zTTX-Wg>4oj|5eg(Hc@BYgt<+P7loSPQmJS*m^8Brf7|>OrA$NK@i!NJ&`E!TjnN&q zqXb6RBS=FdrD$#EGuev4J*b@71{ZB2K)dE&o(S{f&_%p%vU-rR;|t$@Ws|SJG{hu8 zsC5HMb2gm~8G|mAl%74)%U1C-V!iONxi^S+t;rq3Q{UeT-&@`2zqjX^hPUk=p5@_r zpgq^*{Bw1#iti%pD(2OA|5t}g?o{h^e(PTdwc%_@%LH~^7rp6-ab5fQ6AeodN;P}H z8t$ztpI6hy(6s|au@VDHF{_`p>~SLSrSn8yiPL*U;H+dg?%`1Y9ZFATJkmYK4hd=y zKcpFYW(Ms}@p%t=!UhLnC+8|(lCw2Z!nrnICg)f;`WsRMY-UJu z&|kz)%XSr=h+JTvZEU%KB9uLIogM&D7lPRoh{+!wK>F$_c2UywQy~3C*Y59R1)L%tfih{ zAr_Fp&X7O)=e{i@L?e%0EBVJaB);FuM0L;qeWINoGa*S+jvbXy0$Ah0KKAWDBjop~ zLrutMs4bbypw6D(;cwPqhyHE1g{9s3$<>q;i}ba1sNZhe|)4RTEHLyGWe}u>3-&wV>e7v7ue2O%m=Lt=25YG zOO`TG;*m90&{FtYPocUlUfpkfiYyx~;DXUXjb<|&V6ybuOWV@JblxiKs9BUAhDMWf z6Rei6TP?Ov>!VCEaZgyRcB-ZXv3USK$*Dx~65}=SO!1@CAf6fYRqVw6ZLFdxCB z7xO9RJL$(_!o9gq!gIT&o+*EeZ!zuX!gEK$b8D~X=WTuzb3%xj8=eco^ZPuDZ(l6p z*XhhB+OmD0slxoA&1Rxp&n;Ui_k@J+DDjafCPK*3wXj;VEnHfc!FJ%>BgB_5to$uP z3FkT643q2KyJsjH@{8^{o!di0Qb-~0$T;~jOKuVuN!)6ZGfSS2(jn9m&ysGNILl8d z8g&H&WwUvr(WO`CSuw#++hSk&KfL+omN*f{HRwc$iknTBk~!J3lkwkbHWK{VvvkI? z0%(WY8-$g^4fgqK1p*g&!tt2>x8U@ynn1cdXcwS5OE=p*$E;u5Q5SV+&Pzp2s*cp1 zbyXXZEz2z|vGidYmp#8r$4cY=&hIy^I^FQq4Pv{H8yn977+=VG_X~?lY-GX{l;Q); z3)iarp2mqTCn->Zm^DCo+$BE4BSjfVn~oN*Gf1Wn_@0@*!2OEMVg%Hx-7a^dzN_YT zCR?!yv8$4}U(1*F;iH<_ZtYPKepc$KpKz<6*OoAS`>oE^}C zrg`li1&fA+2hkBU^d)Nnw=_Zs4_fZ|9R?I}xAV<5%|l|)nHONr%r{}9g}u;&U}yG4 za?sJ`UOL<=ua9d9H9STz%@+`biSS|nsTNbG2JZcTXJYR@&f=fm?so?=F?h4`QG)OtAD zCDq)^klGlQGKu3XbfJBapn{E}1Qp~3$;EQ5WG)?jps9`BLq`(R4KDPDwVyw; zXa;}lbd#Fb@0;BpbHb6|&{VO>P1!?r1x?lm?hWQH8LF=meR*R=HXqKFsg@l|;(56a zs!U5sn97cOcNSU)xG++)fvUjraZYrmT;CRgQrVaHC zblWh&;yTU_*30|jTxH5N#pgN>1|4=zLzR{; zK9C^E((t^iPrl)SP)WENN6{cG*>d5|s$^WrEH5~${k&i2Oy7y%DDg{W1GfUfH%z(Q zKE^<7y%J*GU1-P1Fb53{L6WG_+2a^G+3ADxvf$+4xGsy^nRX{z_fq{DK+m{`_NItz zw$Iud3~Z$ebTfR}JN?IFJ}^vtu+E zn+&3*x4w&q2eYvajsJo1GBkXJ-fv*!ueyS>Xe6_TZMsimG947^PDNCY-73IJe6h;H&=-?z=!3c1a`G`o4n%$NhHFv2S zI9w=ak@|+qen~KzFsv;-G}-;*6cTpGV{eC{Mb8lD5AoXpkzm6^jgv;7oqRq~J%bL4 z)sT}a8$E6R`FfFNu)qplut4jAnnFm()%gs@}U)krhI4$1kLifyDifE6qq|VzrfYD47ul!MY}uh)vxG##^^_u zs_hXIM|3Wc=5dj5DqNy199|)rB^~~CJg&EmC< z1g={o;qP^ry-QfV5{b%-2xk&<0lCZU&Art0@fVht{-cnyq%dP^Ja z^WeNqV3ni-N*9??PeE@i@QPK%q|-K*g2e6hSI`~{Y7z)yP^pJk1k3%by*0QCWh@cx zyr5g0#Z+%}nfg6!zzG(2j8C-Va@P0*)DYsV_wR(|Ks%MBV`Pgwka#@#2v)bf&-=&U zKt3ol{kEP`yK;mmA)pf|83XF+ydIr(&il5swvH`UrHf32D3<@`@zmNeTFVWU)j%O8 zO=rC}oz|CFP#uN_#du7qwpjme)Wwl8h2`&@5}lD_AI-w?yp7hF*Q8+t0GMBQ)Y6fLSH>Bf+hrnQu>vvBXH z`&3`!Gwe~vl;Fp@N`b1kzlVsT(f|De48p^Kkn~1sKGrCw!D2s~bzWzyX7flJvp{s@ z^g$}KxCe;b?`BxhlMNK>?7=k{s_*oPuJu#nJY~<0d*(P}yCSIot3mVVp=yH7gKocV zG+8&4vcf8%+r&TE6ct(6Eyq*Y7{RVaa|yt8@Ib*@V!$mM#-lFtZoTgGUDLk}$KLJy z{4}@?L;s)kRUgOaOjyn7{QL*5!sMIzqwB|f9L{QART|D|U-1ZMv^iJOU37weIj7~V zvdCA)MGw@OZ29%Jbf9Oc(r=czjU^^GwJjyW4tt~~SRWJ}__*U#VbR|^$hgsg50MxM zrl`;EnSUN^Sqy!j?$aB`Shw8aMJ{!iU!~q+{c)wmuFzNlpCTG}t_3Z31OdDIt+&h5R)h@RbF)#rXji;|u(`~FWzpJ?;g z*bi)WtIviT<=EF$(Y_<{tlKkWF=NejV#aWdZW_g^5(~;aLl&Ick!*rU zEtzeGY77)lbb1$0)gOhc84A+muRpza*jp%My4!m%L-s|tYcl$)cw(m#n4Fss7mO=~ zWHzceKm7)Lx}#Z>(U@)Tw7x1P#-P?0Dx!Wi><`N=(Q~E= zxA}LCiRb5s)s zY8d&G+tkpGHmjk@Dr#OSq84=^{Tp4PMsEEax~<#+T0-qbKbY?)DpJ1x;Kk@cQ;h{L z-kaPh(`Y5lW1qXoebGE>O6T1d8OgIo!hO*}AvtITH#R=~*p%NQ>o&IYZDw+3puHoF z^{dC9blj*-5=n&dG%)@Nu^5WD0A^!9EStS+n`1dDLdmva7$7DpWJMRgv0MjUZ39?C%%7B?2K(lh;+b zKc@wwVS?Fyyd|(TMT|Ai#tPoAgznHQ<_Mxg1qkUA#*O?nZSfa5CtEfOO>ioESSQKv zK?4<>-JW+56xOQQaX+s`IU-jU7`>|Bsl8ecj-EflVwYVoLIw||_|p+}>r%lKAc~jQx}dCeN(ZKDVXC zdaaqiX3lNgT^V9O<#UA4{8-<~>QC(ZkQG*1C~SiYyVp;ZyL!1~bRo7+u}ghy4dW72 zloeuo6#E??``WD*TTzJZQtT-{_I$seTv>?iQ0!3_YqsS=`yhzV5I6mlK^{C^{hD{v z^MU)u=TOh5G>PcGQaGfTikTD|(V_(G0fWibFEa4i@-X%gU2kk9wve$RlP%L3MHtBR z?%YxD7AMDifELuZ~DX!LG%4T}w~nGr2?iMPJ~59(ibuiC@|5QocCK z{9^@XcRq|mL{b>wG?D;!=O_p%v$|NA$NN3Dg1KYOV6fW!ivOL9yyE>a`4?Y9P4PF% zrxYr2^Y)mV^`;`47^CW_IjZ3$H1E0PT!j{gLwBo}f+Nd#LsZP<#WO6nRqiohdKl=V~Y5Vs-*_WPsPpXEFV)so9>r zH*E$iD}})%$Jk+Qwg!;!wKY&}55IAa;!T)1L9|v-mmc7+7j7QdJGpoV`WJ*L*#r9s zdD(IARl^mo9iahb>jSSc4c=S}y3!R&jjq&~oY$55S5A7G`qDbv?9en#7nG)U&f2bz zWHCY(?_i5#3-*p0ln}M$-?`RulXiX6z^uE>F(K1JP>cVS=$xSAwH>s zJk^~o&aB-@W{Nl5I+hs3yS}jkYv-{)SO1Uuu2&Md?@Y1czoX(WP*v=ay|TdXm3{v* z|J>_4{&{|QE(*_|h3C)1^XQO%m+;&^JpVU5?+?!hLiv5+`CIa9@9x#`yzp}W{X}?X z!}EW`^K71i^YQS#Cggi5!10!SugN_f;*%kMj}U)Uc>b39Rqq$W_sgN&x59H)fVVfm z`B4b}SO`Mc=N1!85H6%5uc;cM(Gtb87m-*x z(ROuH_m|B({erX3n_HHWWp-v}dn&_RG>ZDHC@eS$t!-N~VvAw!<^)B=C#Kmq#-O)q zZStDeIDU@iM&dMP1bc0M2To%yPr?>er`nOR%P5PtsHRvppAa`PaNrF}h-ZtiMWvnG zB5unTPm{IA);%SXlX_Ru8qTS~>whI1OsXHYtD0%s%Cy#s;IO4ivNgEB#@jZl6zG1v z2iHt@fG_uB`T};4ia25{Pj?t##=fSO3>YM)g(JSr)B~~_@=lq(jb)S4U@k-GJpbCs zYrB8#;?-EVnY5Uu4gQtc}@exWvZpuT-<;GG_X@j*K94hL6G_t^_^&bnGkzak-wMzUq`BOd%V1q z#s%*`elciiBJ)dY%)n4_f%a(qy~yv@BrmKVEqCK@=yhg=erJyd01@9&0KoVyRp4B1 z{Hbr!+xh4#?X(QuY#5B*owaa|XB)iR%IfBLsBXasMPNglZ9V)eRQ&?mYrU5b6mYPp=Z@80V1q@GJq+1Z)tN74ut9GC`G zN}>@X_z%8ifW3=6o9E*{Z3n?tL^Bd^3`2Edf<67GZ}$ zkPSes5+#2bRPLJ=lc<2XKH~KYrZiJOx+m!Zreqo*Jg_iT>!~52lW;YKFQc2t?$F>% zR2<-v)vScCSxNHS49x)hfj?Ox4)(E(s?*y zrpecO|5&zPwI-~~6yFr#?W1gX|JQMiodE38hHUN-7LCZi4GfRv8>l+>AWq@pbrK3K z472_@yzwA6uT(I5E+dAM`H>L6X2h=X;LpA8Oa5CB$QSP23j&B<18hqv-fDS_!`F?W9_k%;eZy)k~!;tT2$oJ(#zRw-TI)`HqHsUq0mf+#%m55BZ)p z?>6Ln+acc{p_Ulb{vqEl4*7m^$oGRozHcA=9iO-SV=D6x?}hCBycaU| z7pJ19z(G$>-I!PF#>nN=mdTb6#k#XcqC{UapfOuDkX(EVVK#xvD-veBx7Y;Dhe@Kf zYqeUy7#?eMoXyvd;UL9{yRwiPvFo(#h$B+uu(QV3S}FMRo7qJv-7aZ1bhVT+v#Y-9 zvBpE$P&bR_Kf3qO>S1Rze=j(C?OG(%QXKvCBu8PyzPh5wKb1Jtc=&VwAA{bi8<6$4 zmn6SyQoPk-qug7&mby8Bh*UR&u>RcxpQqaSnf@hYZc&0^kFb8iCiTl7>%;pO%&#sr z&-{Oc&zUyq{omsA5sWP8k3X{Eh|s___%9coF`! z7Iw0Kl^*jHhZTFc3R$kUk}Zq0)Xnb1M1#vO?lfAQQb2EQ*G4*6MtyFxrVR+KZc9$6 zMHiQ_ZBdswzr%fVtfrHZDce?@-K|qhy7hx|@zCkpjR%rvZJ-bHr^U4SWy=Dgo1-=6 z$jqdT@}0#Tr;pid<=N^GroMNz-OPFSe180AY2JO8zR{LWUFHB~k^8LI>Z<1VG}e>p zVP%RI_F&k*?N5CE{CW99nBB~O)+o$BRLkz(e-+N&J{4uen9CL~m`k zMulD9@Jj;vKZm{rd~3+yC#!2jZm~i~^dHhc30CwEx+`pX(&q zB=l3|UPWas#DA9}?087BF@MQep#2IzixYSMfW~oTv68ifi@ugwfKH}V3JHk*9cT&xhN=m`CjQX2| z%#-2EEXN7S{eY!S-k$&eWq$oWsD=#wFZuOp2mV|BG8z5O|0%z2gSY?x&0jblkAp8)-o7UA8K-T6KswAJi%hXR360iP9yJ7E9 zjE%))%VI0hUl7pS+QFCpls!G6)oap_yDlX?z}&8-r+_PSU2Go>zw8u zzy!}tf;OryW2f(6ww97DO>iN`6kuqP&2Gkz2?*m2e6|aU&3*kpP(RgW&+lPca3`AW z;vVBrnbk+X5OD-RIMeluEsf?`BpC+r; zU$WEW7HC3ScH%cb9EqED*UnN!>mwY# zukPPB^lFS2clGcg9rkS>U>!yecDOkNh!0l42UWxheu|M)9pX!fkL9m|KHL1|a#sG4 z=^%Fo;=t%sX8u}t0JC5UAK=*qWjgs?mp!)vKi zIspug{NV-Zi{01QtxQFU@wPFk4n_*adf9SUOXhGhjTjL=TAxd2{+MjZ0#iC$S6*WB zqRuDoM=se6T>k1iOxKt!52tGYd0kQOXnwAGqVe};I~rY7QD5~w{zYT^(a*D;2F&;> z&(yDVue~KzK>b?GFhHWQ=BCbP;rpsF;Q{&75$sq%&?04mNkhTt( zW4=*a``}FN0Ak5Na@5pPPP*xQT%tWAZNlrilV(n-ZQf+B0w-T`n;~1w(%6o@yu|&3 z4}j6+n%fV6{P;3@(m`JHyWq(P)y_7?ORuIE>&CFJ{5!x}hqfnq=~pFCNbfU$U%W5O z9M%Twn!Qee@(EM2X2fX5UqG7Rli}0r{pI=fgEkcK$_jFJkmL}}TxTo--*=EA8=|^8 z&h08tL$Uq8V8A{7_Q+vw<-j{({`dF%&S2A~&!iJbKf1RKVBH-c7a{SIR?Q3x*QLGo zzqZexc$x(Z?7tdTF-Aj!6Hl-s92A69>*@MF_oVg)3M~L4SmDdkfc)rmPD97|;-2Bp zs{bHg{|7Dqw*GVfOa0USZT$!3>-YDu=I85deE2$#hFkZw0ec}}NM-~{61kD>dt5&% zG#$t~CU|iZeO_wG7c#I>f7{tGVQS?fFmS1|G$rICx#RdZ_1 zX_DN~^D$?Gx2J`-Yv&C0?`p1%>ayR2SexGjtS=e0i2-Zpk@LEl_uY^F2A_~=axH{6 zki3+;dIyHjFY`n<17ev}QnO~n2vM5^#+unRr+RwpX?(4J-#opE+Mqca`Sbma%Ss~` zQD#Py5ngqWF5hyuqGVHOUG&BNTcEd7{|>z!|3OS|UyGeFiOJ$xu`aqz@qsq6#xU>dGNU(o7LcwepTspy9$tc>yQ zXsTXFF4i)F(U8A7r~wfO|A$|+PTl9H^Z?>An4z;cFb{JbBmZF0&WE!$(ynFkjj#vH zVr?6DBAQ_mmZ>23Pv2*@c{GT%9#;)_t4Sl5j(eq}lS;f`@7FzU7>`SrNTc=Y+UA(Z6D+@d!t{N~qMl;rR%-gVe)T4J7VvVryIe zl5E|58wv^F$zjzt_U)Yy_-t-J59EcEWFD2E)@JiQYH(5-ev%;}N-^|BOFUYF!RQKq zz^$Rg?fIf0S~5$RVDm^1HoJvF-O;?Zguw^uap+<(-sxSowcUS>)+0XfYi9s*TeI6A z<2MFaecFsA6O`s{hi zxn8c6t@F&1-F&Rxgu-3Yw`tl6H}D8%M#`b^tC9^b-@tn4Pl4F zkJhvaO9W1`Wv&bkv=FIU?L8o_HjcVNjpYkRMD#vS>x(cH`{v=vVe z+w})48j88 zb8C}J4PWp6G*WAi$>nA8&ET&W_P#_xk4t5**s@fy6=FgDkcj(5$bl(vT{#zqzukjG zH63V={T}oZA2lH}b{57CeBDAS60Y@z-skZy`1M}R`*hwJZ(|TvI14*RUyL^$i`6R! zBzW-E#KV2rhI3+}2sC>!OwqdovVGOj0Z(ge6I1{xC*9G&YlmKYZM#tTbT4ivDq5kz z;f^!8-qTvNLKMkTfEli#l9uSirK=xM*b=3N^n8kN^6Oc*k;M~5758z%Jt+%>?B%5o z93iN(c?v@$Xvl4Fzd@3=)h=AdTFfidI?5}dU-WF`uyj)%<5F5ztK60#d9Ns$-K!pLx# z`YNg}k<})zvfA_^5XBvpz9TjIfKa_`utzp?tnm)P2{iPeRFTLNh=JSnrUo{^t(RJliZ4S%CQ;J;w~W0MpZg{q8xC0yYo+vFhxa9u*ReHN#R631OiwFQP1YVT3)lV8wSTUIJ`aQ?gr zDYLn^%u^r#A%nP?dwDS2F1L$k;$iOh2~Cwk8miAHFXI|U87mnB=#jI zLGTw12??40AnZ&Z{WG|82v&XZJf%rWw05%1>E6L>^LKDH*1AOe!_SwwZ7_Fk4+O`3 zU7|TRk$tkLU<=n^gX$=3D@(A@LV3k-wEH3hVMN>zNbSuPlfO7OkdAw zJXOxk;rSa2e=PTG`2HXA4V8~s3bSsDuBvAL5cS78n->y)x)>y6FRzeR0xd*^Yd~d_ zS4W&F{Y_9u{Fu#yA@>1F6P?byCzDM%gszJo_A4%PIh4w*SPMSWD>t+7dO%d+RnS^> z&2NHcdx-77*z1|SFMxD(oj+q>5B4;cwf!CU03h~0GUn_EzkW*M+Em)I>;~KLi zqmSgPwjEd_bMVM+o;+-P-HJmS6%NQfoG-}Iw;4MAK~GSsofUvzgc9R&K%U2LHEOJC z_ELFzR%$h508o>&1kEwEW>ZUQa1!E}z|{*R#r*$>;V^vXC44 z9Hu@Vjw1lqm^etA{5g|wL@?Vh+#S!hGAvpNlP%SB3P&VFFtKnk5i?wf&VBxO>Xan| zR=iEL3f+=WZp*^slnOvuvQu*L){@FS)jfcVAE;s6>>ZGO{`j2ukiQiodlF5yGeOLj zHW3!Ny7>fQ2-N#vse3UIj2+*^ro@^Yr7*_oRByf2j4D;TWHg`dJYQ9VqI^|d)-Ove zq^PRPeN{eKRb@?tDVQuT2=#;td|NHBd7w18_)GMaSgsI;>lL;2no+d1|5>#)+in0H zuW~y*02WdNz(pPaA8Y`0C=UQotnviY>7@aV&u;G(R-GAYhW2*&>bk5jRI$N}P`{}U zvOd_V(>$;0LOtD~oa>quiWTxuSYw;e#OOh|~L{q3^n8tOXc>{_m>@)c8 zw7}+p%H-k(V0>V#Z`Zt}2>)$YX0-<6W|8fZQY*87)HS|VA8aj?v0+@RICf-ye1L4U zA`12Y2fJGt+`j);jX5)m^jD1OPRC8mbuUT9@9hj_`cQ{?M8fs@Kq1&n8mitP@NNqX zPRaZMguKjqy^k}>j8?P@HTk&j_&6IjY#a`XJJrW^i^Mo?J1FjGi(65tzzHkFi~!;w zpP|iXC>@kxl#dgiRg3h<1Mz-8&1_y(ma4M5r;;s=sMy%1!HL`7ldZi7UttzVwtgT< z%zF%A44zXSFQZhh`2Ma?JcD#Z9N5lVcVlUR-Dgu?WZ1dm*OYwLQ6$5J~+!8{4^x>Esq;t{U_dgwKQ0 zHn9Mkqo^${sv2$Lg*fFLvqDsz+ZX5y=?nI6r%MYVsPfwLt=d*StRYl4)Mw(+*a4;^dc6WRG8`v=hhc{XqYIpx(>; zdzs#M^6xw8y~N(*PU_qz?m_FM2^@>dtv0dV`*g^TTbxf}ef)W)_=Zv-Mjlk>#mT=< z^UvYodu{l>Jv=9d@Xv?ml_9()e7A;YeR!T;6keoZ4)!56C*cpgM?S?bEMx1!L`g&% zZ8wZ}KUu3GE9E)oOrnM|F0s+sJFYj~T-I{4#=G$vr65We*OV!e7RdOw1Ppa9m zWO=M{o*aCN$Gy2Nb|RVitnMb4S0ZDQb$*Zg3c%=~^@Q2ojeDr{R8?)){0`REQLFu|S@bg9B_WrwyUJ5q}tRaUkMJG5JAw(pfb22~v!mL1+kKBwdE zf@AD+<|b6z5o1_$8(95KqL`PD!87qDez+4bwkNDPDTPgmUlTmfzS}p-MC^;+oMm(N zilvMjbTw_+UVCY+W_-E3HA1499dvVN>i*kr^M4#ePo)kxy26^BZERxMa&#pD<7G3K zO5VkN+XprfRz_H99F`vbm?w%)Hh`JtkI%ZKf^n!?wFJ$WklboOELts)iuwd*C$?lJ5#kn5Yr_0@nc4t9%vjgA)1va%E(kCy1dOdu}Kdj)N_Cd zXyOtc98`jcwY4*!_9&&zdgV~G+`@ZXJBSvGB4w9S<`w7*RCAR9kZieWTT&ojk-}a2 zTUEKtLuNH6@5S(x=^^tq$nbvMStOcFx2eshC)%t{{)Nzru zU~N9_6{O|dxdK>NeU1eM%2YMdDGBNsJ(?XM!uC48+%`I;oXy%|TpNm7Ol(j@6Q&Yu z*^Qlh*s!J*A{`pIteZxs?L3=p=pmL<5vidV}>auS5gteqfZYmDGTxLZ}1EF$YB@A&hZW@Z16?bX*uJY z5LK0Xlym`5pUCf}u*tUz3jVcZNM+l*E#D^B%8;gUruu4qksAY{Qb6CJy8X3cy{#@l z05BWFtH1|DFRQhh1ef(UMHzZK1zfNBpr@W;?hp_9g7dX>HkiX&af1>f6X;<%JJf<< zg%(&$P_BJ;3syO6!GMZT3vQDTizER*p>u~ZC*~U>(N6FH`9_fgJ>J~IHlv+92@w^_ z=TCYOF+QIoyHt>!y_Nc4++F9<5LTBe+^<1ZyPd1^t@GOs?r@TauCTO`_c%pEz7Tf> z0+m4VJ>oui!x}SM1*4K7TsXa5=xEv zi5atud-YsvOl7_?4WDX^Dt70PJT%7AMt+xaaAORV(3mmS81Ld&7IzXo>ah<`XDAf;J(s|H<>up>OOkHKyNS9QYzq9 zo4z@5$F~f04T@09FvZ?#v3_*1EkrF^TM09}`x+#+hKk)!d<`9i8Z_G78NP;Tz6N6@ z>Q#S%U(k2^!->&~VV3u#61U3%P*WX*)qnLO8 zq`a*viz1BsiY?#`Rw24I{husqAhcm~XmnKo!3{FiV@ z1u71+(+aaOikfWBm|(>uThGVR0kw`wNk_}I!>ML$lA&L8i&f~I>=25>K-KAv5ZGc8 zrzfR8vrM2?mAQv4qg{7Qa)IF;yZAa2d!epRw%$*jv8`ovz3P;bI_N<&ON9BxFOPk( ze_P30Az`c*&AV|?i8aGlGszEU4X8ZxpQo)JWCI4|2mtq8Ru42$r~z6HQ8jTVAY}s5 z62fRQbhVp z4DgoCqX3YjE=X0aN+l<)q8bIdRpL?^?G#&NpaT&=)yiaREfXG_@(XM}w9PWpSl(jY zweM+{u`80DDUapI1B7jC-eUORrNiBrj-U7*)HGwkTL3 z@y}C_x7zsw$#G=kWym0)u1!_F!^L21P6MN2Sah|n<(X`~?tPVLvV1BV%(NTIT=fGg zB{;SA0(rDV(shcppgX~&+~pFWq3I6yst09(8fs$j|2(hkUcz236V>L{5?}^3_DsP; zRC~)ww468<%vdz(KG}LYj*6iFb}KzBh+c88JWes7<7|q{&3ae+Z*d>L3-X6_Tk8pi zDeU8_OJ)Ceinzx+(1#Jl3B1H4IB7d|bL&1KJvvqOtISm}5}dH}H&0d0uYtPFShYqL zD=KLDCj&m-*T{+%>Y{I9tyZ(qNUIF0!KmV$`9-7cUx4WcM5?T?P|u3HK*iH}7;v>@ zje+x{ZK_Bx5L`56BQ!iGDx>l~$uJio~<=yOfBxx8Yjg3$&Hx5Lb)PcvGKMqcxEO+0=&(ZQQ+ zo0Z_F5Zr;Z?pdNn*%|{%SwO6N@FP)8V#FCT^}I!Dz7P}U>vlri2Wa69PmlRMp$<#t z%Q1PpT}3tcqV7LkMJ?}C8b2c|`Jjnq4csEx+F=_oX2f3~-KmKMI}-}xWmtO5W3r2E zJc7BVe^g<=E6gwP0gplRi%u~Nw-R)t>hEdQ!GJ<@1YHp*?n~NK2n!5c>#PzB2%i_wLEWcT59I>BrlDn%6a{4{udwcFzs(_nu~W7hs_!8`P4! zP{6Y@ztJGFsa?#a3dm{sfIuHnHxT{ESXusVr)`r0^f=u9-ft70chXW=slqk}7 zfKOLwauA-Td;FJLDRx1Vs(*m&AZ|-Q28z*QNqPJ$sr&Gm0L4aie%8B44l5EP{?UTs zVqeTdur68WsThy{GOMnL8WL+^P|4Q2fhNr)0K)4Tct-Pvc6rXG#F~fH6^%#G2ZQL} za{L$hO8F&UB@O}{27n+e0>|w~ljw*_11&6r*1InF3$Tw@Xuczq#(nU#Q1JI;%NAjw zS)5TMXeem#`BVA)-f~T*@`s9|TI4j8|#=Epgdw!Mw~-452ao2#gB>!-S5- zz9+PJA2brQMs_(fGfW)niy5u?(RyN;k)!vMA%#o~Q(`>U7Rgp!HlK9&Ez#v1x#bb%kipRL%)J5tSfqw7IzsfM%LUhGu?^Pi$yu4ihbTWm@1sYFe2 z*P_>hz_g4XMCQupcCcnG(|Vq)3JTP&A@6Vet;tVP2~f{#ROqzZc$Yq?v?$d&6ikBwpl3#cD#HtB)e9~B9nIH^(>b;`(` zBB}{oQ`?2nRjn2(l&%#hD~h=s&1DW$yl>4bwk>Ka7S0Uld|qaKjXYDD_i5GPeqihM zg&k=rh|HSo5%`}>rdwVE^I&snzBs>BI*lB;Z>V{Bdvn@1om6U{o`c%gKtQgQORnf?6sa%TXToX9*dPT>37Jd=lt#P+z7*A zlTy_**Om;giE2x-(>K>-W|o-Tw>R;Ab!&p+(i1fPx?nBF?5lX`hFCXmtVyn{^^)S- z$exzNi;7yWdr|So6P0&Q)R6^IF}IS`v7N9Nezl%v8`m#EZYLT!@p1G)xo=z2YOOKV z&UUqPLXo`~;z#Z|8XD72G)XPV%qYoyPI#yNa_9IK**w0K{-}2f>7{@+9Ka++qH1C5 zpUFBDC+i6-!b!{VYS$R%J;TXy(A!X)+!1mVka5TiWvV9=$jD`hZ@0R0pMY==pO9d3 zaK_8PQHo80tS6Pc44XTFta1OVe_!1==o`Y#-DF5Y74ShW&47yWGqhRv5ANzarVGMT z;;wFkLWVTU{7WPA+Ym;wmxQ0YIuF06x6`T7!xv53&iZ4!+->ya+3nP?07z}S+@p*t z>mR{;?b|kfH}}%#M`@H{CzPv3?Lofy7s9iJLW`?=GvwPMgdY-~N2&6^@KdzG zAD_qao(eMWvI%SwU&eeHyO-}W39Nx`V1;_TdfH1a_}-+u;ED{TiYS7uC!4t zCspappD+=5y;1YTdF%_KX!l$z;=(|-$-YHl1^I;W-gp36>f$WZ z5WDkPXtL@5>Ie+;4+yBkr$CH=9X%W~L6k>;0IrYD#@gIf)<;*AS8#+V*`hg+TY?*z z^!NDlnE|@?;;N?lniM9zHT+~A-5^ilX1JctaC*yqvXY)^o>FQpEvKv{aarY`(NcvK zby%`xGaQyobK*?9^6jB!8b)Zvn`_H1gwepYm>TqOS(5eg!DN7Px+st2Q>3HB$Y8?J zsgkeg{eGoj56IsCQaoU;h`OVM*am*dHVC;*E6a3Z_xV#DV0>!H_4VK z-C9FQ>&F0|JGD?=zN1@rB?c;+P8?hS!dy^BDK@x{qD1w#^^{jh8&BBG;RK~&lWDzs z^kI!zOpZ+1`y2Z*nhlGNE(%w!RCYnBt9`^08)=9!wVucH5;Gw2p4Jx4LD33hZr9lE zz6Wj5YVpG&3l!gO4JM7->$JC}#&20n4`DDVtRQ!P#(26DsMFDvquuMP^a6{?8v=RP z@7`&F4&2O9Q@rQ*U=cLMt~T=F{^HYJ?15#_l(O76=pxoNcsiC@%s786@cKzW>ls|` zI2vs7;h?36@KQufBd3TiHo-ltk*|ElQbhNzD@TEtx~D4B88lwR^aa(EUyltY++^!Z zgX>#XtE`vC^_}z?_1*TV`chWk7NNfH4yg|wY639h-{jZ_kae|c4O;mFtj2xg8nv&I zr{T%vezkQ?$f7l?UuON@@Nyct)WmPvf~W~P8K$`)_qMGC?0Yb~YPGxTWiq8xxod$qlU*E1CVcN>6t z{ND~qCR-D6RYw+A732S^kfnhCnO0e4sO&VWEZ|#WLT)b$nJo5So#*no!;8`tt&46k zp4+1C6JyP#r5QT4F|MzJzIln{WkRy#bxe-eC+%X`>*@N_)kPkgV4&-D`LCKbaV=5w7C}s)6!IG%sMlj9P?~CdDmmo z!LIx#esJr4_>r!T}8CQi#o z`7{D$Wf)zIzm}^?YudJskcTr!QmmupnqWO%vz-I72*HdvmRiCtLnDXb>1TvM^6i zs@e`u;$OsFWynGhHH=}45-Pz{PHFBr(K>SR=0=(MVmaIGZn{^UF|&J6AxBstSCo%- z4G#(TI+`BM(wPUuirL*VvL!>_(l>8@tJzkE<7akbe%o#4w`IB6Hk8C?v=-Xrp0bVa zoew?|RoX|ywcC8~rlo44q3{>@Lj(GlOFiG+9a1dtho2pViHD%*b_LqYKE`|NYI+ zS^?KmK+)Pzd}b)UbA~YG$z8_Z74F8L1}QAUX^u%^`!6?o_g9E64AF9R>7%zLI{k1= z=Iz|DoZ_fMCHEh5tZZ%S0G3#?pq42yUbjn{zyvzl<7mI&hl&_a{M*H`gxU};( zk0{W-2xX&)UoQj2)Zc!RQU9R@>aVSY-p{P8n{ej%#tYIc!Ukkj+sFE`Qb@p}0^;1_ zHwEI+VH*)_Yr|JsrRt*^{|PdTb) zH#Op~Ngyr}XsIfH!F+34AB$ECH8`vtyh!o$CAv4Q5MU5~1<^e5&nU$i_9#M{{SkxO zrey2e^guvJG>Rx%(bNTTkCIqi(BRFLT%SG~msDzv zO|`VRplLOVOFjfaf=gS(joK=>ROgBUb%UxU-}n1{=DGJKX#4s6zMnsSe|+&Et;4Ew1_o-pY;|!LZe5hrc51)_{?h71=hDazH0;d zg?SyBx>HvHiwh4~xdNMcjsX%Bz~LdU z@%8FQaB3X|j~j%_V%HlgskTxG&T#sD3%(0w4=0!NJMG17q$ zu$MK_WQ0jG#PCw^E|-!K3r_dv`r~X-Z1T3)4m>Wk$GLdapb}Jd;&Fw=Vhl{Jvd11g zuEV42x?MQ`HlZ6}K%fiiIB8`;xCv%zBD|mL`r4wx>G_oORrL@GI5A>A0r3d2qU8rc zH{NF4Fy<2~NXMIEkcjB`D`F^{yo*1sfW;qAoxo?@69Weh0;psP;n$mNVha2%8HbJ2 zJK7Z?X}dn4S4-Ob7|**PrZ?HaDEuLIu00WGt$X-p)o@=J-A6u)2J21E_n(onCwk;= z)S`Mym)_)xDAJc0Dn~q>T#63}$TeVsQZiS1J21_Zbg)XFjHV-BQ;Ann0kgX{H1M~V zF@tdg^SUi8-5pr@Lptkhy6*suL+)|zRrTFMC>IHHcJkt-DKYxt4wML=t0BN8Xl$Vl z^Ei?-K{anr)s?j+eAUQ;z4>3v6Ivrs9Pu$kRL&}XiMkh)IxhY)fHf4Oo!sMpoUEE*&Dqg6juf{dHj#wMPN; zK5es!>F;i{J5&s!Qt)D(X?0{`v{4)t13Ri~!KOSC=gjB$eoA`WR1jn^XSlw9^m@SOlOi~2zaljZusl=K81(?TTKC3@8rzyM-#PXhP&%W9E9 zqtU>j_yZ_Y%yO=;22z>sW~5Ua7}MbhrA|NsV|O5M(+tW3nDN51rCd!(71={zQg@uC zX+fIma56XyRccq#Jg&OoexlQ@9-VF{Pq?2ds;G|YS

3^6gE=ai{2O*C=89zWadN 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�e9!5&3Gq8k#bG=0Z1+Z=*1_U`b$$9U6`l!=ZVj~8YJCst8BhJ z?IRE`rTw#M|MNJ}pJ-p@FX2zVynusU6&u#%d3aiCt1885yia3LyUa7_Fx?nqqWFEc z4)mCp$9v3+Uk_3z3o2`DJh_i;35B3Az;qHhC8JFWM2lQmvHD8$0f{ zaRJY=?8*k^(P1M-Ep9>o??9srf+eKsQzj~N95a;Vmqgmj^vT=N>CFOo6%7B0%q|$Q z;Z)^s!m0L0uM~^SR51-C90%X4*vb_0`H z%R%PUBB0*&nu!j1P4qEI$77>2-Vi5Xdlo~;!z{y)ja)pVeLoYt1|D^lj3LJiU{^^{ zJld%PnGd^npwM0uPi=LlRI$`x1};sFzgIhHN5?pKgyk2HV%lQ&O)fDoO)MAt*o}EF z(suOWZZbZrzo-P&Yw*i!^Uh@Z?yCjrfG@GD$Bm{aJIuNa&W!aqsy;kd^-hIVAB5`6 z3Mb3V7*;bT%8yRkgzlzWGUf&~WiXzgnP`B|m$@QTu~=3dPa3w^ZU z6NC8D9~s2&uq~gNt>WdV6H@ieVhWp`$>~L2{5$_DQEI-_d z%aM08<-UXcd1m?j=lAb;*S{`yp10S(gY=pH6?E;057c(InK-+kYc&O3YuH$<2)I?} zx!yf+pabL2dFJ_BfmrSFS1zF*h!YHmKQq6;1J0q70I)@qmj_~N^do&15PKH_u_gKr zo>lBCe!Y5Fw!`2`OLUJcScW&P(d}jsdwjx}9$w|(4Wd$eT;@*0k>+Rstys(GCk`Y? z@=VpI<^+h`ZeUVcTNL{U7^TMnwk=gEjyW_nJ{b*DYvK4LOuU(d_Na`6jFeI_p?ePy zc%H~S;-7c==gt24rhmS{vw#Er3-CMJx_H385b*Zkcbq;8ezFJTX1XOhn2j^R&(C(V z9adYx<87N9q5{? z=XlUHN1NX@&^1$=LGEpS)9{?k`5t=j?C+rWk$=ACpU?T{!5(^F><+zbyxTZ4#i1JG zpWEQyKI&$8z)Nf+Zx4PS%Y#qwL%=SC-|L*VNG%0yb_l2O$@-&vK=O+WA`8iZZa_UD zIR$Lb!?A^ywg*S~C-#72ljv|;IR2)iI~;H0x54q-9*zfkc#ZVW!TvecKd)lcW-iEHypm7;+Y3SNDX#AeN^bH!)ywR{^xTpP9OOsF<6tAsJt?hI(y z{#>=HuiF5f6|0u=*#TC4rU7n=zH6;cZi%PQ)PWz1pUxUw&%r;J80}T+r?pt=+U`w1K$0Sb?0uDU}|iD)OCxkK0nWrO%O zvuyNS%SfZ^jJ=Oit!iHmt9CFg*3#O!4`^37Fl#Y12PS`8IgCjg#XN3`Z(#aM%>+W2*@jj=u2Xm!=5E}7?Hz1|wD>bf$<|4RN3=l@Xt58;0q{|E8E zAOB0Mx{i&i5a%UPt`ecXxkkqeJd{2t?_a5L@o1ASGJ4ehn@ z&mCQQhXI zIUP==!j7-yG8$_yku zE5E`BMJlRheRR9k;dm;#8`Z#S78X=0`NH za(puLA}Lc^_&tH&6I(OKN)OlXN&KGNo~h6NW-qz?zB2GBvyLPW58x9&ytF72THg&` zhw1kWexpWS^*7YW+7~oeqiXg3UHAT7y-#rO6ZD>N@AC;F8MVA>`G2hUM!n;tbnrmu zmsI7SgLz79oadic`}Fztdu8U80WSZMKK&5?{0UFl(X#9J3%SiwIVmMlPsL`vE5U{B zn=vlzRYIpF(=Ch#2BcAiC2LJ%8q0#2)hRdC9UnZnOY$QwVt-iFm3krJLT#}WHdClM zJ)OVN?5&I@w3LL4TM8C7B}JLqOV8GZDL6rFrQ~sk5i-oGQXNr@(iGFXkoRmC>T@bT zwe{)Zve$&w)8k=U><+9~qh7Rd1kfIHkwPh6_XS(LAkdHC4xdt)xq~)c2IGJjIH_mr zMLwJ=P!P(k=$#`kor`HY(Z;(nOwZ$^nQ$#2s}0CvymgI5EiajIk+e*~jNQiENHN9# zZVwx2(D*Y4I1jPt9P9xa=FNO}m1*GlqR-bs*Dpjzxol0-DDAY}zax{3N#T;9J!aEm zmPbplWW>UOU!P&B?xE9oK$|b1pL;wG9<&*u`alINUh|Go#ABKsBsVrmWL{`(?yHB-up2R1W$tDG`R}=&x*-(> zjoS6k>_#Tpqimd2rgRK@PV}(**&o0_ZYs9@WBNeH-v+mRPK4N#zfxKh?YTl|R=0a{ ziHMs@&!E1lhBrT>MBkukutasd;Wc8i?UI~c%iZ#O?84%jo@}SvcCAWYt+bOxLE414 z&qyu297$kC48V+4S-iP;o#0*v@jBeSmhoEYUWf1+bFV{rRd*;hoL6f-WHUaTzecHS z>GE(A7wbVH6~&6zXusvXps`6{PR(DXd<~y~1(!)GZukTYi17wxS0h%qB_G28X4Um8 zdJm%K{w`q)RTNzUR7mQyKA1?Zb?7WoQ3cyL4FT<;-WN!brCL?UG&}Yt_uM zM_3>|nk;|3$WbPO<cy8zZJ-LA{uX%336y*p8@(v=h1}o}K?@?jJ8AUZ z*X<+n8m?0&;M{5{4()qNE?2v6Nva0jHtLa+YQE#XO?Tf`cl&mtzRh}ENX+I=fozk< zZ!oyXU}#eF>7u$s@u<5Y%I19^CMD4XsA4^6~ z!L(@tInp$K{Xht`4VtROSM?{ySGVPxcZe^Z%j%X{A=%LFt7Q3W0sei^3H}|We79|z z4;0Sg>66O0tMXm3ZN7r~Zd1NDFiK}m?U|4JB0SR19YW_GRi<*6sgZ_2tL^mfo2u_7 zW!;K@e2;My^snMDs=QeFp3mh&brK%eq_&EyHr=)vu`wh{rCaV`<5!cpPAO4Wg4#mpo3)Y$z0?U?p;vX6hK5Mb1Q5iQ>HvP<0 zU;P}S3oBdbLn3V!0l1Z926y9&^OedfxWw2q>PQr4I1R=g`yOZ%mp;h^e+O|-_21V{ zH=H_skde1;HW=lWZ_$+rJ!W-g3z6&-Xvy^40)tA03!ByWU1Wf)CFs}=S%SKva~{(? znW@VKv3A;OI9C6QJ*AE(ZS3ih9EJ(TQ4)Wygt{F<%!V8&OU;CTz zWNwU~sn(RUnE10SE3KPCdpYE~y9A`@Cn|8bs3c-<^x4Z`^VfOH;%gqCGtYg{)rGmH z8a)=_aTj#CjvsjQjqtfa_*{ljuZ_++{5=TAOQZoMY>U4KKX3SJABDf89lmBGC(EF? z7XNU{FLLGE!2fo;tKQr_UjM7aXk*SXX~94A_-;{}UHhluo5aSL@1$Q)iQsNfKUn4~ zG#&$Obt{|Bm=B%_8gG@Xmj$^+YRrS&Gg@0u@*wY274liR&WdVHscFT5XP!Y?_ALW7 z>A0LW_Jbuvb6*0^JM)%E-&HF-;D8skxNgrgZO>aQDGd#;wq82-1EI_z&;p%T83v!s zb^d^Eofm;^+j-TM@BA87q0T#(DepRn1$3o3j5%a^+#`#+s^y^ZSco%P{UU=nk~jIq zINP%~CA%eYL!q77nV&&oQ7TsF;^=fOM~nESf7isa=Hermmn;o^u-=)A_ximivQW|# zdK6je!l4wm<=abBE^e&NvBFX2DXWrKgkhd+rEmrvQh7pxJT%Le#G48|X+(ixOb7V+CG+ zA~RfAOQJVc4TsahqAgo!*)qR_Se<;pw)g?gt0Y8I&KDiKqntf<;0X37R zZU@Fuh*~{$_P(zG>Gs~vUZZVyU;jwef3FPbp(7+uR;jt70bhTu>MtsQ7v=YL{TrzA z)2uu!#B&qwaL5$~(mUJ9$}uol77Np>bRs|VE_wWVneWfb&{nj+>yNDk+Z(TdYOHZb z^S5JMji;|cgtG-8Q=Ef$&-wqn@*Ej*p_(%L2_g?xCoR^D|3XpO^iCnM#jZuJ;Gs`$KyFwR=AY zD@AmwB<=L5Q}up=d%sC}X1hFd^!_8gV+q`UCuiBa)<1XS87E{_qyK#(Py3<7OMT)% z%d{eMzdaw%Jmi00>7PwJRrzDZ?)i{^-tNEG@msD2*ZTA(o&~$n+5J=>p-{&H{-Rq% zSAiOvf_`>;hPI=o1YfzfnY5Hel^c^H_}z8$SptHlTlkC0l6tBk+EoWcXFmXQitFH% z^c!3x@CAlfc8#sHP%wBA5t5|RN2g1@2!&#Li)KG8s?cT(K9Oc8{}5ZZDYepzEai1e zK_eJ92p1f*mQ%{IL~lk4e~NV6P|QtkzAvvNgXR@I4@|NEFBHQv;W_!Z7%!v*FL z4%fT+JK}nFhMH_;eA`qN^h*q`rMxgjzfP>}8o=@A-KUb*eVx83=x@uFeV*Pm;61Z36aT)C^;cy|JsKRXot{x8BNvp{@% zp+Mxi8d_JS>7h)bS597p4o6*#W%Q6??XX+3!g~wFoXd~YNea6m^i zphvPrT+n)j8@Qmzr~8apI1f_%da&30p(F---8G2ElwdED7lQud2J!9!w(oVH!8YB{ zN=JhJ=MD|}Ur-tJzj$oW|MJ?P|07B3pWPzrZ-F`p7KhU(){0Njc31PAx8nLU&~*1| zzNwYpxqITC=!Xzo#zMtb%}Tpbl&?jM8iXWX!3Oqd+Qi#jke=>V3HiU{?)E@NM=2d& z)HT3h`3bc__$wt=1z#C6czO`t>wh#3PVyF9_eC+HCb6T(DoKb&E@5qv3-D$?E1$G! zRtAoAi|Aa`Sy^lkLDq2Vjk`ER>(|!k8lqXaJr)B(EaivjtBbCAN(J`%qwpyJN6mPD;BvNJ3B-vPDleNFi0I;GR>A(*|u8g1h23ucM)G$ zJ&4y9ms-YavwM|oE9qWgbY^>|7%a`?FkUNpo$4~c-JIFFctVV2)N9Km;@F9@dMjGcOsdfmKe(mWU|s|Mp8((TEcH)dnGlSWTq7PH)y6-77PFT^nn81|fT^VC+@t|5x- z$OOD~COmJqn?wT`xY4GBKRwKLLLTx>8rIHtp^xYOPo9Mh&tEnwRB|ld@Ac%2&9!`? zoKVS(cbC6WfYU4OCOJ@r!xXx{?!>3{vE-UF;CAV8wZop&${#LSMPawIVYI=zA$!C< zqL@zU#e^1_ZeOxG@$mpBmJXX$aai4I`tU_cOWD0mvCuwcAp#aJQ2$ex%hs;fpnpSB zWu;HrJ$PszrVKkO&+5ckb=X-s=>KeEv`Y+CLci0$5_`GA*j&Unq|LFK>)iJLcuRCQ zSobudSGaEz)V0uQX}N|DaNoqxvJ$-e7Bu|^!6~CZwoWvBQW`XMqKZmhxS^FnIiae6 zHv&x05G5tFQ>AUwXX=W*d)WbY*SdL1xcMpYE4)l;|natZt{i1rd!_e!zo^w2#@^Q*(PB* z>@+n^Lo^9%?o_fOdH9>b(?aj6t}|aLl(Gc6Y?j=&yojYK?DknSW-^vqxqh%vO9Ga_ zC9t*fv=zh)Sdzq|vouRi$olji(Y#FclNZ_Lzn4#fK-GC&zdIFFG|Y4+_4&=Di)kv{k@q*5huS zFWmOY+Y2OT-J7YVB`0U8Iy-xDb0=cTtIS4^^mow|?QmQp-{>EnR2KDWBYJGdg)Q** zh=F_k|L;OqcMFN60JF~_JZbklI$@b+&Umod=WcTLIkz^b{FbO|qm_3Iy_@|&R_?b| z%co0~#VuH&vmH!v#&*{~`XkQZ`g6alPYH%o&TVED{q-lKenV~a$uh`hcq5ihH+~Fo z%IEKu!%lvI)rH?)Y8%a2F)BbZ7>p7}jo<@DQ`uYlW@fp)Q@UtE@>$ixjb&p6~tt@)< zFnTd1wNUDJ=2kQGs$WG9f7R0M*lFfk(w+4B%KzZtl#czh|J~}JNBQ&t)UEHQs}0Hr{`n>U z-28z{zsTqNy)X9@U(Yn3zSyT<>(jqTxkZ$8#tEgoOf0+et5)ntvsc2OUV|4 zl8jN+@Y$~Q`$EPZk^Az@44>)?9asT1^=q{CF&|cayN)nqsv6e#p$Z|s0fR5~UaqU{tEW`Ak zU!*YW%j_fo(#N>$-rbbzpJsW#Kq~sAMi;*=t6ZPYp1$Y%y?-f?mmYB6>3dI5mt zpu2YM)aLn8cD;!8sNqG)^+pB3+1+1e|n)}Z8yMc@73)t?Le`X zkK|df*6k|RQ}8T#ukLppN5Isw{LwDTbo%a%9RljMJPjL=)aU3%bXDh7==5C;+SF`N zMUxi&={{9p?^#V`d6fDu7{bMyj3EsC4TN9%5V;`S64KxpnZ5nZV~dUfo>_ zj@{MH)97_sBY_e{vyWn=5Vqc@ni{O=uH?LLk#aUoLKD&s;{=}67zNjTxs<6(AM)T% zH~=^8V?P%5vt@;-<>x_d^Ytrw=2sdxPRFk|be0AULvbG%_T+-zLDOdRkpiHJR{@0A7_V!1Me!f%8eFGe5{Tg>q;yjqKi*q?o?oP#raJa# zcusXZi{W_Hu~MJIrhG;7hm&G%7t$f4tF&yUO;trfam}L2-KSi}GH6=VXMPxw_rtiH zrrC%rRUY$uej7h3=l6USZ#3Pf*|u=326Bqvol-Xhe>?D#E(vT|rA~sLLDwmD-Y>%| zbpi>pJt~cW-b1Mq#B)lWVD352hw;2pC-@7B)FAl7L9!khngdb=e^csiV-FKOL<2Ub zi@aXve1*RMsJ@rnJtnW$ZDprzEP%-Cb(nW)BD!|I@-Eajw;P7g!6q|5Z7b}QJ(;bn zYUj)n+U>ko$y_9-e&)41`{_`|Yj@W30`2Y>R?e;jhTtZt6?T_-h#2#GVCs!C2HuIG zE{hm`;+^INKbvFUmh>ZYUd6jiiL)LT+4r;_j-iRL__0&JjT2<}!c&@1OGbek@Z349G(YF z<)mfwM|wiIM1ZadYo?>I*T%v*E!N{3)$v5?4~gjjY)qEg>zs%4Axeo;lXm!rjrJL6R#~GerDF>9qj7tP4$h`R2U@q~5G^@F3#{XVD)E}r)b;Qx0wen;r?7uAdMtnzD5D!6K=PTuo_=26MoO6Tai5~h z%cfdY7KOW{_IMcZX!&m}?nH+kX!a%UX5XcGz#f^+K40+A$X%wSM(%+p$4*EHjjxj4 z@sj+L^J}TRZ0@0ojJwMrNv+HpVzzBGe@H(vqiM?OmvKl#s~-ecYNxZxEKI8k9vVND zG-=RN= zzvmq&j{K(9!zJ_dOG{yY^FO08Q4*b-J|*S-dWc!&mdTao_oY51%0GbRE8I`e_$B!z zFJ^(%zdnkSIAXeL6VlHkGq&HcbwRig~?)VDZd$?q5Xw6 z=+sNn3$DagSLWd)ue;8)0QoRJKRm=v;JqHuZNr?dIFhJ9PN%k)p$e zTD6(;bpTwdbyKT`YVzZySL4Qh>3I^T$MTh>rfC5mSsrAv;nUSaf``62wb_oX$HS&J z_i?!Y7^7T~M#hzdLI3$O(Wtr!Bumc=9z3z1Y*QPl+KI)aXtA2W$L6LV@i#niT2MY; z3@z1k6~F29FHY0?G+!1Db&}O+x?Z#XDkmaPeZQ9dsw8~@QG~oIpD6DjQ7BI08eWC; zMQ)|~FDdoiSE^e}m2Yh{`?rR{;<+HJlW$@)F%_B3n7(JonC%Rqi$BnUWv|5GaH~~y zGEs4#`Vcf8D&&=6KD9GTI=awAB7AJrE-zt(HrMY5&RSFHQBA)9XQ$sKoNZK3Db^(R z;d7vX-~j-QY14=z8e``CY2kX@bm%_I-c=( z`k_5N*d1e<+#K|;o|gz0Xd<}`&*aCI)k4Z1bDfn!{;EyT?sK~w>yYO5*IFFi8lRin zHr1G|KjoIvFl}>!KZdZN_^E;!Uf?(sT^iwmc!@6S!?AKTN|CooKsazTkHa_QkJ|tqCgrsdsR-?8L*nJ9Z%P2#B?2Ho2sr z{BV{3QjhY^R)pYVJBbmKmz4_^|G) zdHtub-y(wO9yV~*Zv_me-&Q==^bNMVYjOgg+I@9{yN$nYWOQLc9r!i4jM?Fz%tv+F z%wV>_M00+EjM-}wD?grWYWlQv;pI{DMC{((h6F zq?jH zwljrxQcpnw#=0FNufYp}TD-t(A<{Q0IBnB)?~5o_)Satw#41h)LRXSR98JMwxe(xs z-2qYxy5<1lZZj_HJHUn6R|q4jO)ctHT_v*Gc-U>5RUEHA1-H(qg}+d{tDYt0e!B2jdQdMYI@Bqs!7cx)NlTF>8kUp z&esjo(qnZv{~+1&7r}G&4_nUCV2&w^W` z#?ZRD65aHQt--|}&htl>de^nvcBdBio z_U_hgHj2-C)Q_QpFJptwt`95AGA|VHp{D1q9woll9j*i6dGUt#6?ZkPX_axVhJf0! z@CVH8K5n8qnf67o)H0&{@0l1;4-j-Q1=;2M1Q5J1c)ZL~^4~++Hy~V?1%iXKuE&sY zM|@%&b}=s1f6EP=n?hC}TEVT|~^h zuVXO4@cM-h)Vw}A_>WAe1!~UPlqBHU(Y-@$i^6rst-<;AZDqBvzR2IqCO`3@@ih9@ zaiANYub=qGPiO15_{Zj>VzoaBivnZ}c4r?N2mGrECu2{VNPz9X)qPR(laI$bGU|i) zY{;N^tjd+UQSZGwRM*TlFuN#0%xj+gG6Pvaa^v-3T(k0pGG#vG6i~ENGl9`}>ey3O znZ2%~8g3TiW{`7rXpN*^B|N03 zl4zWLTwd1kXjCd+5j2t2_zIFS>Rj%Ax2AZ~`RGvcMz3p+g|9F9uXm8!oj)N0-6!y| zL9wvpvvQ=^bju`>pUHUD5u!phR>kpAuvc{y^yi$)eT%^>hR+R(wGG&bL<@txZ}ktgOm4i!#nXhkG(EEwzC0A8;)t`vC6_ z2_F4sXXA7Alah}q{AyACv5E9#Oib&eQ|{BS#P-7k9^KH&t7x`$dPlp13FKz{Tlc(ftH=gwQQ14p$SsLxy zZA|yIYUFwLl#4&xRrO8iwzZ1#D-(n{&5rh6wniQ_wG{uO=ueufu;iA5rCaz**f;oz zX^qjAS4(O1I1n&hs?U*M6vC%Jns?JBr!h-CY0NtlUbe3YC&!N&mCB26ZD+HmFW zRyJo~^{{a+c_&Xx&=_a7hi&FGS!whYNeJA=lL&t+;U{tUZ`D;I+jE_f?gN8$b`5)( zV)HtNc>bvU32S;evFK^?T$(gd?+)^-u2^_&Qm^U7_6RG>Vk1iG(WdGz=aYdV{E1qN zm2>mP$Gu|}F9ow7)9=(vv8Au~juoR})xr`tM7J*!wH~r@xBxP96{9hZrgjw;mu;tt ziSvTlX7s@UD+(IW6V72R%1;n{yUSggmE~tMTZV0pp7^m%#5WJMnv;GC+M+bfFcy|< zF0*vPQML=Ptx>(wyGQwS@DS;DLi!#5LrbvK-B?bBwMWNb6&HHl{hSkGBA)uaz&{u9 z>`6bO*P1WW@aNL&Nu3aEr@&sYKxw_hCVA0 zkdkGfGDNfQd9-hfzI%(%{*$^hc7*aA>1(_YXgLII&aE%u%w)9XPl`2EzbkS>ZM@t} z7POWGFOP&VF~}IrUS3~Yd+B9$CO&fenMnZEZ7V8E zFUNYih{Hh~zI&2*ZMGa19@)7Jiwg^+)w-8k$p|{+;Y*w*8oQk(*2B{n#Nm!zaJw3) zCwp$t=(ZzwKSZ{nhNxJ~$;Vc#X@*C+&;U*X7Jq7s9+^v>BmDg|R|^O`;8E4h^_T4k zi`WJ0fkDUvj~WJzJKA9oL&+ggmN}W5bB;eHqf4*e0e`y3F^^}iH|Ei4`y=8ekGh2Q zmashY(4QO^+3KHv_Rlu|{FrCq>V#aB)kmOrVyzaC{8UK3t3{NJQvmnlbh|B~fPX^K zSt2(MplOJ9UZROAd1gP&f@6_+!fuK7MwD}ey*tnsVVnKa0e+jAt)3S&ihn`X;i$wh z7G=226ZVeink7S#Gkea;hG?3(JRY*-Yi?F@QxbhJgD(Gby1rf}vJn&K)y21uCkbvx zE2L}arzJY{sqN9T)|rW+0qU3gsyjL7R1mW@I#?}r2fN9!)b|3ST#i3DdQ@m5&^r2s z>FyKT7Ju*CoX)Inue@aPcZKdI0lca}Uc&k*sj}-@fcF#=<(LoY1!vo695Q|jd#0-R5gvQDVtP}^bG6zj|?m@?5 z6vn!%#TFroXR}Acv4{BT#cu?cg^jA&goSPK0nTan`x$+M6T^=JdPqMV1F*L>Aa{(I zNS14NNXwd|rav>79g%a;P^^U}Ptpz3aRhB_up--&V5~+RZryQ>x9MxXM%^$V5dIA_ z0qe|>#6jyiSRd0n$WQ-LUUzZLQn2Z?i3;A%pY_G zwCx<^?q&5x-|d4Ok43*V<}c`0O~k21Vern?4=kd&==+NV?IXWo54=RT8YzcZ3!P(WwR>@Xt;{+?24}xVusEg!c|er zS3r?;O$}Avm*hPimfX45kwrD>tC4G=dSjW%=oynX-RXMiF!tzwP@v!L;h(9tjjA&B0Po)p?9Z7hAv zz~`|nwAU$Vd~>QPA+Utk_8@gki$UWjf-FZKY$YE{zKn9^@OcLW2mkN09l36OG>voE zKzqp%j{gf(4%*^crZLP{BUkJaTBqQ$myrDivI|yXETL{~LSJ>x18D>VWxUV<3^+l-dziK}=dd$B1QznH6s^1oy+2(dW$Cw#m!%nT|0fl;V1;PSySlu_TFGezvJ*Y(KnuK5S!BX%lkV&jdSqTQZ$r>g{t6Xy6CjIZzY1Fs5$Xdg|gSrp?XS zv5iTTi0-uPCBGXa%*@Vet7^`die8nJo%X)a-pn8-H9<9e+tqLw#OsklJ0#YL|?eP1NVxPNR+^Kl@`d*+&kI#7D*-!x9#=#($7%F`r7B+Z#(?RqUvF9 zvPaZRxy&50W$n=6JaLFv*kVLqj%xpL??lDx!R&r`0h!zDI#hjjH)fPZXI;iHkj;+c z)=QSnlCSocW_h5yv4>kH{dGP2={B9dQ5;*f6XX^;*ly_>HvtqZuBmvp4jY4Ynue2V zKfTBv;Tc#V=BkrHqwabD6T65fzdR%N5vM;cF?f6n-4>>>57orTjc)z!GNy0>7vm!lt zveYR)aIdEjG%Wc&21H}c&B~r`Dl>9xO1fV~?$>aY$j0y8mQgmTY|!*=QO6D~K)awi z_LQHNsF~xiv-oZ4I2=5xACdFC9BL>r1>koF$Jp|$Dn1riy=(3mH?zAhI8trwb zL9uBoaEph(8?1>GO&(9xiSU>%(3trVO=`1%YDL@8Sd&M$uk)+j0NIby!UhnHc<9&0jt(;q+IRmqvPMfE8p5cL~`oB=`kPSmxk z13#hz9Y4*=r-jgO#}{!sU{A5|ZVUDgSRw`Xrt35?hX)!^<}ez}%cE{3UIN}YI#O3` z&*2Wb*KueIL?Ud}TGSPtMz9g@DeLE)?RYss z#SgEZj@Ov%6k~<#jZ2i6uC5&uJh)Ii)wpESP~JLD6~6&diSa#GWxX9VUh$WpVIb-n zjpyv3y0WZKSBvnq(cMlqCK$6(%q}tFF11v5s*Fe=g{-XSfAPqoy1U?QKvhkl8T>v+ zm)r2OV&i9-U&?nkC(l>;_Up&i-U zD44AK?`bI-weTbwX)1I{(_uQ0apj=61K&yu?J$VZ2~sPX+QR2Jsqht5XFQt*cr7Az(N{>Gf=eXtx%F+r zP>QY-Jak1*%5ipLxf+D#4$(s{cna1k6W#A?)eV>4&>2vm%yQa6qF~Nu@pv69X}W{A z;K5y+?eHeqB4rEbi=!t}e|MLpI7fWq)LIo-FC@FD$!NURD4g}&nGFHS=_yCTeCfIs z2$yJ3`EUL0+Y&*=__f(MK81%VaNc6LFw(#=a}+9ej&_UO0&hX}!b=MkkQE7^o=oKX9cWbMzI`)bokq=duzqp{ZxBc=nJxNE@o*ZeXg`VmkiTKC)vrp$Y9A-R+ZQk{LnSI6C#pPqAOw4vDGNmQ>Ia+ClE)cju(j9k;BC8 zJkg7ERlji#K8cI;WFTS5(h|Ct=OezS?UaiioGQ(MaILIc!e6-D**s#Y)!?>6XklY? zsx||NAEa-g(L`n#@A2I9L?i!;n$9y$$y{1Z`q3a_}|0%U9cal z7!2-6FdNZQt7pBt5u}e=YTY9S&E0N z96-XFMHazrCblK+i+(jKr7YTVJMtWCQ&%o+mX?AekEt0Gmp|6-tBn45i8(n@w@QNY z2wu8Ko>h7^c{tyFE+v_;53%9K!h!W>p*ZH3?C5FV?lzo!gb2rbgc!@S$M{@Zskd}B ztBsD4$N?Zas~c&t!Ybo*U$Z~3VlYAO-NVivf4eRP=_XYz&?v;S=s zSDTJSS*|KE8CuR2Ld(BtZ8Yh(9bFBby@ICmLaDmkM$ZqFJAFN-8mM%Z#{x+^fVTU%z;*CQo~AEZ?GV3iGCnWMDa;&ukV8I+xV~@ z*%e?xV?d#(28Qd6-Hj?vzv}0$zcHAPzuF803^^2@Mns#x< zh^PKxx6-!BMTI^vqv$+lD2Yz6RkdV>Y3{mf9rK?=rRvsL*wCt`jnY~ir2&VX!1*;stbFHWaO!z0oWe8qh3svjS1 zbSRWH&%p=YpQ)@pE-Ou{Al7uo{XnTudc*@_ignxp`4!xCN@FQY?)aVXD+<{(>iAVo z|B0m^5fdb2OH{?&b=;_ldE`MiF@NySzws3MgTN$k6 zG8W>f>wCgT?OH`2nm*$gdU%s{tz7OY7|%`EtvePCPWJnb-MrtLl%}=ti3NI7KUin^#0X*KDOnb2;o?Niq;L!!0l-_j;D$gz(Uvl7iAW7^SSm zTm7Yh?{I%gf=JFJ#v8ieJzw4hJ*h#rJH2b8wET9_L5uP@pPeO=%(QS}T^J51nuZve zFDw(amOJ}n-kVwgEZ+iQ3kX5uUuYrc>UogPqtB_eUUWr26jE`nwp)eBt?}}Wh>z-d zy!aU{s5Xeyk~ZtcwDxS9_*UPi9j+ZmPou-%v_b-!)u{^eTy!*$Yd(IxWnKiO2`rTCw zA}nmkLp@%+vY_v(*dIT%rntLsimmTUy`IfUwq0Tk%RuC%950Wr=Jy%vg8rwk)< zLI1Niay@(fi!n~M+rNOQnyX`v`oZiHD+k{1^o|AhKOg(zA7be<&*+u41^CmD+}tH7 zxTuQUM47!1Vx3^XL{F#Rk)RMZO(kPczGSt2Z3l}MGo@hBa1}Hx8j6nOu;@S?eRC6F zSk#%VoctTD@+CufAdwg@MZdJ2WQ)7w`e4FaQsQX1!~kWo+NCa`RW(?`c`iYO;85Sn z#Vpl$uwA#B2&dzCI9IvkxjLA2VCH1jfm+d;aGTViQ89!wqv^QOC$vbBL8L`}zoTy0 zJF2Nv)_x@OsN@mMxfPR(Q&~51C=3=JG^bl!hGrh7sdC{7uL(kB$K{mWhl~tN9ZDz^ zcJW82q>o0_dZzAJ&MJ0sOJ>mY4u;u8`ZTan8b?>W{7FR$KqVf)7E@Gw+?hK=txu3C zUa_=3lN)`%=wuj#)k>(aMDdCQ3^%LrrROsb?W&RC~ej#NihVt-`KThDkrZvU;ef4tj%Q{8n(y9%S$DKgNo|^^~PjhZUCL2fJ zJZzYrtYul*L#T(K8=R*;7E*qx#^7zVbA}sCWUSiD8d)g55Ind?vl$e~HkIF1i~0jx z+op9!tKDlJLQQ`zI)QCYe;c&1rov0`u26lcbW*LktCWqSxJ#&;tq)u+R|z>Fvgs1) zaG~-#E)Y8RYh4TTzN~KE51V@=$s(k*3UqYiP;17GFLd78DWiTARk1!a)QA>rQ-5#E z>ueM*{21$`YEmDhWVlOC)D5RYFJnKD*$`}XyO7-}bOW~H=vREmH1cNr$Fad2|LPlE z$7gZMnx^N1#))L}vzLXHI@X<|b5{+Wlk{}nw|Y*Pri7V@@d)NzBXF2?(IatpR_$>I zLeNY_&zcLOjX2xAplLp5!ZP}kwTm|_Q4`4JyOD?iDANW!3iWq`q!CpYIXX_w?klj= z+PahJq{ah~ft_3^W9cv1E6I!_34f*ZLa|ouH*AR3nz?JP@mkn&JT)FK7D92FR`&Wd z!ObyZj)P@>OlwxY(wAQ!-R{aO0hnm2Kz@f=b2SQI(>!W|Ut2b|82FI+>PH&!7-7@G zp(MCt*{8Ysl+d%jg*Ht{e~?kkdS>D#)mnYO;pknqzTp(tG1{pR#b;)vo~tBkjO;PD zQ;)E)#?46Eh%lDT#UskxVS#hhze!f#OjY+ASDmH6?Eo0!joet&t^YBR-FO@(!l{{| z;95&8yva~LZA4VHNCsNF1oX;AB!(L>oM)b7!gBgcO{#O)lbJIaj+U#8#TBUKKB1fw_hwYJF-_D{IOL zQE=wo7&3bAeM-9bab#$(sd$UajI9=oVdLAVWl^*Nc0>)-GQO>*;)%MinH}x@1lL*r zWs0`D->g4~1;2U~SKAVOvKo_fFHpmseR78}CAJQNKX<&~_*bEhzA~5-V*t7od}Z}2 z+IEtFPRe)e@8LzW^{I}zIsWq)s}`tp^k>SR=}Xr9S}6Eq+8jBtzHcmjQnA@*Mt-&K zgJJE>;vMx{dzIDxn3^SZONrd;yQ40Ggg&WOJ zT&B7W(I#6k-BFBL*QDQNqVFo zXjc{lN6lpFrm^;Ib2OK|!i4SympKxi>6GdeyQ=prpa6oC9;|k?R<2G@~J>-32D}N@p@#hleGF(Gy z(BJrY(EsP1_UlgBo`U}O4B|22oLGAD8uXe10ol(R)~JrxTk`i!?Es!>YQcj0%g>I$ ztT!;&$RqU$P~^wHMQnQCytMBs-oMO;?E6nX%D+!x10|b&?N0Vyx{45VBL-go-VsH0 zf#&HCHOx~}dm_-D{D!DQV&nFwO-4MMwk?9ye==>a${XX~owi?DA)B^W%_6$PX}iDf z|8UwIeQ4fZ+m8M6^XKpFjLqL^?-$J9Ia>?ni4WO%dTvYp{gaQ+T#{14_YgN2+s2t;-V8r$9B{B2-A725j0A-n(0{7unT^oW5szFRPV zw|-hMPkhME-xoIL-{0OjKYu&13qu}1f4jYtoxhV$?lylRE(rf;^mpF1|H1r~TOpgj z^Gq|@;rx9SuKNG4`72zHPTL`1|M%-r30sx_He*}OhM*^m64Qlt2-xT0d;e#EO~TFP z1^ln9M+NY_feTE(h3=(E;L)%4&gZ)KJ@=0Jl#HKJoTw0ra_80(>JC& zo391%iSl=1sXrr_u0gO4uKb1z6Y+6z{UM0wTtb7XY~q?+oCq2EkRS(nM*tVU=&gcy z54L}d$gw{9TFCr_g}$#>*f%Pwm!ki@ShGd$;7hs^rMQh_rH*7d(G^3YByhjGplF?AzqVc|B-+g_oRQ z^qP}r?{xC)J)bMjKEd{tU883gyEw5GvDWUoL_kfX?=*QfWr8e{r+!5(R>=0|pFrKv z-6S=sb=#9?e+qj6-^WXyorpYZS6lEtS@P^9l4tANCm_i>f%fMSwVxC8ztc&y_c)36 z0ZFv%PS{p%+D@!Tw}CP;-Dh2CkaoL?x?W#EQvkA{5201?i2E>FfuX*!z5a{C+J!yR zGdUD5m`C^8mpY<~nanM~SAcHl4q4dG`7Z%kW?~gUIPSZ_gsV+&YJHVtT=b9p3cTA} z`S`VJAF>zY0n@t6-BOgH@4m>e&RFZ|>P{Pnk6I zn>{r>|9~gx@7JovRS-bmWzBO>qdCxMEr_k~95=ToDqgAzZhm4+-zZV>T<&d|e~VRo zoO>fytmPwm6+s%3s(&?A{VqD9sM+pPEv#_)n7(UVh0DhDU7e^}@;>G;FU(C2Fd3@3N zRTF~7Gx^~`RFnEJXnKvkI)P`ys2r(h{zw{pwkEU|RWxYa-^!gT&<2fX0CnkTAJ5nZ zrdhj9AMz77GH7(?a6C-^ZZLhw!SwF!z%*jB(1f{7yE}p(g#1CYRyZvj=E@ zYo*NBZ2kFJm~O;Gu?Dw;TGY_h*LoOW+%?Vkr=#<&(%GjT%segKyk1@`tgzVkJqH96xWQn zyOoBne2Dd-?zbKZnR9{4BRIH5hYNrPh_blYhB>1UZr;dM0JrU-zbPaQ69 z7j8*-CqVGb(Zh{|{{$B&oReH=OfGXQTLXEUqcCdfh%6dz%-kxlVuw`vSeIV6Yw#d$ z4l690CqnODnMVv)lYlN4|H9<6M}S+AE>h-^2(KxXH_3r)L+f{{aEkKn$3h}g*)?G- zr1GZ#fpFO&wurHk=vxG1=K#P-_$A8v^~Yn~alP@HAvt8tp28c~TFBqaY>DAfwiyX| z$tX@WO4Sj-qF8X!>R9onsIRN?KEjiW2!CW%)_)yFqpaGhB~k{luu7tX5T8gMYspWr zMY|zrJdz*L&V0yxi8uDc)O0;h+C7op;{&N?t6RFYIrjq_#xd6BmS|@`jN9lI!{Dk5 zk%X&@2okDGH|?@fBnP?bHrr;)_CHQt`j$Q>a~opv;;*ZdGux23<}UX;$@KjKq-T=x zZ#Dl z$|tr3<&*JbyJU5AnQb`@{A@l)LF|YwTOrRAO0r3ASbm znXaz-HDgk!a&p2}uwj+zs$Y%Z+Eu@*tG>OfeodIJwLiZ(8!~^lP}FS|Gxsp zWUT(N^uX7r<$;mDOqaKHgT_Gwb~PwO$1wLmV6hSCzXOBa!~+~lbfQKlp`F$L?%b}nM}L@V-25@Hm;OB>&2nV{~oV+KA1Dpc*RlN6$H1a zWd5_PB2l~<0SF{gB6Rkw_{3{O($(cHHAVV6-fnxDSf=;ML-qF(P}MFT2VIk(D=0e= zl${L9UP3(V)2&;YlHpVu{aF?y#jd+gt1JDFo;?okpO%XP2az_!aI>)<4cIxlkd_&A zblRjm7H^Dx0K~!7F{w@N##mvoss?!>$ZhertG>CbJ{g@{p^n%FjqVu}7P}k9s;q}L z0`pJd4yzTTrxrWbH&`E8SM%GA3Qa11iLu48Vs`uH+NkFLNR`{Wf?zem9I{h2ox&_=kr?H7Qb_2KA-u!_JDiJ+R^kBOvE!rfA zu;X0yu!xAem4`ifQL*;vcoRP3#o6_NgHI$zUw@A;I+5AXN$`NN&W)!eXxwXOsHUN_Ptf>yslD~( zM7w~?X+}o(u$ILFp1`12tGYg5n$ADwvdGH=)+wQ&1HVU#SLVLq#Heoof#Pdad=*(d z#9a$G%ems~qkH8x8P*KKqoinYKhkx!b%{C?OQl;V&Brn-(z#6Xu*aKjcBw;1ZFQ-f zB1k7)>QGYW@k+{cmol8!TK8JXtI&=*V^Ws*If)K)v>E>UMwa9+t( zM?xjVo5UvC$j)M)j3y9&+_CMeg&XdWm<*CM5wVwq^KOIO!SqkOiS8Sw z5i`%RsN1x6mgQa9b2=$YbhqTV39%y_=J$AsE1;Q_IOaSb zs7V#6w767}io=R5Nr_aF?xRR$x_ix%N-aO5X{gKKZBJ6s5Jf72X%usLdXkC;AyN@S zM1x(PCp{^M4Dh-zG7w7x?a7*MSJtyLS@gd~ljG2T@R1$no2kJ<1{%k(%|-znPvr+! zHcsWNjC6UAXIYvM5rBt-Ac1dS%n>3Bc%Y>av7h#Xl=Ro8^m9#i!x`jf=Wa66d4Qz7OraJjaR`4B`N z^RLd(Ff%iKE`mQpwqxZAT?r%T`Ip2zvj@B2n`eSo^#=*E;`zZeoc9F)x;!X?tD;Vu=@7 z3@}bC8Ag_FVu_brOkdO<#x`P!<{IqqxK#!gIh--EM8KekFwP;B@miq{slqrRAEg(# z6k*&V_qrX7YvW5)^sVh;oW~}|YyWnx<>`rWlRU-=uF)cw=j8%k%Z_6YUOT^CS>Jmj zi$#0NFU4WeqC*|8)nLIUjl*38O(+0$luMusc&!G%9bWrqHg?1r1w44IHJ9hL0^W9b zt)S<4?Y9OSuNCm1HamckMJGXV8(urlB^v+V5w9&`u$dci`yTeB6MECfTyd;I0-%TV z<|SH-9g~R@5Hn9*BVEM3&rWiE#%=tO;p2Y)eAqu%=;LC`z1){tp82c){knf{_Rn6v z(BA%emw*1&o+f=~{>ppiJ^x{=e;zQ)wLZ*0J4u&v{SAI+pLBP%x;~b)%v7K8hyK~% zpDq6R-#okdx7k@#Sm$bA>O>3=q6dS7`)}leVL~Sj#Ua($>SAHuh zcm>g#|L6P8{B}3o)YG2xJm>j0&y$_sTz>PLd1vOm%{%X$12k+Ok9B7JC|dx*s&Scl z(slsz1VQ*)gU|{dI~8L{Pw~gUGpIa~OIUNLARB7<&#_YTBzqburY~CMC{@Y5ha7 zNim+%5{(9DI9X-66k}zp+~v1k)eEKzR`qDX&JY_~#och81+7ZnP!fzq+K5l*qsfO;K<|i4@(Od-on8kw+0a2VPnZ zgld7!peQQ7;JY*gVNx>IZpQ0p{QjZ4Yp($6IJ505j>DH$CF54R+O8I8UrG&UE|@lx z>>i>uIOS5~jn^_)&w9~yqOw)b(zw$O+>ytvJ3M#jS;}{wV|rGnc%H3iDdW{8xKLFN|3%PY-C zJeP70j_fM;02kJgAwpBxA<{--41__N*s#jk4Bs|Vjt{^rBEgj(FMTYOP^tq=2Ax49aKKKsL=>BW_Ab@R?$2k zU)zVJexL2@h$}U^9Oob&GPV!zN*u0E+@qb2>cj)KzmaP0q8o5=#f*cu<@M)UNeCW> zs#GUFMsWizL3Pq%#W;3CCQE;|z@9Pd9d1=Pv)%+R!thu*-0S?IQc;;g(Dc6q!V>|YN{GP-GoYg@%e_UC~npPuu&JIT-P$JTiOqniPDl)cHXS^VACfY5H zvnU296AsbdFB!L0KZe6vD!~&anw9e^ND$MBFX%(lViJsHK%di$F0Lb^~s*6XDt>*J6+{?(YYjTyxRkL~YsH%fUVJZsD z42B=A=9$Z>r}s8|B+LJ4-Nr)V$T$CthuHm3TsXKoadsUjq+9S>GPa3%?Ql_-P|dED z_*ffTPwSL!sHhVZ6H@|zcs4{uimkeP|Bc`PUL$n!aom;UA=t7N1sXJP*IMUu#QT%Wuem#siDtUL{k7tZ4q5^yAT5Hx( zuPz(P-tY|z$I0~PsJFXvW2extY~B!BmW_?2X%+)l4&lw?)U;v_G>>bYz>wE;2UjxY ztlVz4gh*-Wibg8CD@QyZD;?IjUsdAqDo(^S?5>0#^&8e$Se-g`tD3T#JAmy)TazmL zvF6_q(>!@V4PK+q;T3QME#|4B|D!}k)8I_xwnuX!m;5~^(*9&lq=Qvjm8vf32L!m6 zY=qEkRboX&!NN$(C?>Dw0bJ3z5;9&Lje7e)Q2FR18~azrxg_j6lo-vORW~e@(G$mu zF8-VNg2W5eY^Wyw!USlg84Oke8iN}W*`SD4b~6(g@})X@jUhZx@lLm1NwF-e`duMJdp#!otd8* zNMF7*CvpNbKa+C~lS>hU^e`I1xYRTKB5@(c5YoT>YF|jFwkC*Op?fq z|B^!JY1{5cA5>vXm+uPk>f~lYyQ;uC-=qHTS3m zR}|R_>(rpn=Z9o2QHz#c*}+ITOaL0#7b_%9=JX9zQkVe3Rf?6PH=TT zz6W*M{84^dxAY7)5W z<@{nuM*7^(rTJLafC*aBz^AN*XKD6W3!7lQ!xqLZ)wOC31S3pe^mO*Q2X5B2a9>*Z z=6qT>NG%+kZQ-iz{rM?d2h$=g-xnj8ZE<9VPRG&eNXvL0(v|%5<*&6#;%T04QF__X%ovmBhfOZOGB6;*T6ZsoZ za*^uNkM$7Jy7l)Ntt%VEaKJ>^l>97s0b1urqdfA{B}&E$v%RZ4j(dT7nHn{v??mEv z@NmI^ReRh0x}4*Dr(tL0g#8=et%zOT@6yIMwUNF%Tx!vaaQMJ>38P<=V1~JY`U?m= zY+%vf$;(74DW8c9%4xdn`>g55Q{5Ofy;4IpZMU4sbZKL0&d^*uRFmnz4JVU31_?5Z z(+6Q3;kSmRwDm_|Fe=}J_PAya&TZz`bDR0ghjW^FzGou(ucAT zd}h~7Ggs|mc+5*z=|SPDE^FL1xA7S4GpELAawUrnggmJ}=$C8RMa&#*+36$R0QQB^qM%{(Qiv_p@KBUy|)-r*TIh&vAVE5x}ncH$9TxP3|f=Ps?opmMTFW{|8BW7!Z z_iYP7a?-Tcs?>j!6zarycrLjrpN!qNu5ESi_9d_5xmdVL3P<2n=CCm zY7!@BNy4{*$Bg4bZQR?KXfMnO|M=FYFeEwd9n~)DH=>V}N-V08 zh2wX=LY2wKcQTox6#qCh(zDp{v?$9aw$Usq+gdQ?HCfN|QJ}7wl*C$(#Rx zU<#T^i5$<8OzR9*$px+^T`YC{D2L<5GvR(%MOfy|mPQnvj=EKyF#S>W)@2%mU>OAr6_T#b2V>YY_X>~K1~>(*HdN@bzNm?g=ZU7I zeZ}F!)u5?P6>(_sKKruP0jjF0R4ME!0C;5i#N8lEx0@Z}NY)0Ft55|E5Ym{~{u_#2 zze3DriM>VPM1e)?BiNb7vkaT~P?LJ-uww8jr{B?28ivFHn{xV~#o&1g_#w2Jr>n*q zn2<|@mrqp=3go0;4976Cu8O6VwgUA+u)ajaLUr9fmy zjn+#yn>0jLojPu-n#4bXe8fZQ(;|lpGli*?u}51gQo{wS)Gja5T|R?7o?BS(MChrb z+&54Y;%CHd9o9KL%qo_6vr(!d>p~bN`6&z)so1>|SSXXNv zRPon=V%&p3w}Fs}(#T9JR8SJ_+Tb0tEHeHEFyVkqOG!`x$>MMDJX8OjwJMh`DwcM-TDFEXT2AijKXG`USdWXLpu86@hi za|8Z@_Q^ndf}nl+MBv{Q?3>de2UXhPyJR2Fqrm2%`u)KMRffYRkpcJfA^Va{C9)vB znWzV84k*L^W--an%yQmMGwuiiFdIS_?t5dMA_ zVVdC9XV{peqa3+JN{smF5GPMQ#DIqsX)uqX88F_kMlGTuJZe0ayT@`K9Yq=+<Ljwn7uEC;PvSeVZc0UB!qlqNq$UP>DwRPoM8R;)NEcUt1FP?l z+IL{3_6l7;AwCsLDz!Ceouz1A(rA{74OcOBydqI4hFv6zg6e<8(#mtxMHMSoF+qaw zSBgyar~nzY!P&>6{7E#bL7E6vsRbe>!M82hUDoXI9!A<#+(V)&`3t^I0Y8`<(5X_G zen+R=WJpvLq)#%F7xZxKT*Y|Z6R6eUH>OFlmi-NdS111)jEo&X}c>x!FA1GFo+z&dQOaK~fw=@?Ps~Dyv`6=7J^V zQ~Ra+TU!1a_6S&Bf^u7?ottNf)9W~}6zUIPW(uszosv7HzWG`6$J<`CL-U*47H%>Mb76f-=xlw}`Cr?I`b6iCpPF`-n`QKXMLL4vI$Y0H2BZnJT zWC$V?VlfKm%xs3>u23IA?X?iw38DlOA-0o51?nKSlZF1Lg8t7H`mdje&7LR*WOi`y zRa&)0+PZ%1=BdEx`+Zs3`U16a2BTgu%o2j1D%HVdv$XX(*A+La_$$fmlEvX#^7;G4Xb-o`k<3_F^B%B++PU-(2v zFB}h(fv*=h7%froehkJGB%Gnk7$ObY4;i#`HE0(xXpI`Q%New38nok~*)?6kxiabS za-5ikxwSN@dh1fd@U>)mC>o;oG*v_(xEE@-DK2QqX1SolR9o&y>6A?H7KSieq}8jO zJYX2o;l94Kx+-yOmR8rp202mb1Jt@UR3=dcubY;4h3{bSjG_(?h2rk_Xh?P9>*-72 zOshD%a{nZ!<5;#q_=?4sra$%RJD={#h2a4fUz$GEhrjXpkuzMmyM6o-A3km2qV&f; zJkZK5N*54H=W>}3ul4V*@ZTNo-`~-PH~4aT4~mffkaWGjt55%p51;noJYOz+uYa8@ z|Gdwi>%%I-4bT5&{CC(sKdPwY$%PpVJYhEHR7AQ`HC?)m0;>SdU+P+mk^p045cvcj6O%Sr}C;!Y9TIA7R$5u#U>x#!-lsu>kw zq4{l*x-B`aqdGY%xWyN!E;}mkR(+)s{jttts({{9O7J4;UPWvfa(S(EjE_nMTsmoX z!}p-tGllr7lDpt=acy<-lEL8>i-vK>WWVw4PWwh@Bz~k;jE;P9L*TQke(m>5s&McM z3y*EhXTiEp-t0~5yt2+6Y@iE5W7y$dP1{ZiBX*Y`xpu;~sI-EScsm_2Rk1lvv3p@m zk%sG-V~fdyzFk~cU3T%HhKr(Tc4>TY-O*aT!%kvn!~t&GX!F=YRIpoDB^zj4YVtBI zkmT@SDkTjlWg{2gV%=KSc&vkxY{8ZVw`r5Ec~PO)4Cd}fp~Q~q`|_)qx`GdX6!fRN zd|3M$tFATiZAC@zGpp{>Y+S|c?W6zt@AvQbM_K#Pi_PehSNe!2HpXn7`){js3wPah!9*#Ul{G3uXrGJXV+e~Zc zy;9=EN0w~fi%(Mf^wp^cx-`W$@Jh)&ByM|Q-Qhyr@(T@VfVMd=K1s{;o_xFuA84^S zh3dqksNaQNffGA;u>i#3pxmPd?S|ld^GZ z^WJ=TwhNlOc+jyYJBH~U5V{)i5L3kQhGKdDr;!y9a;;O{BlDZLHlvhu9nUmDf zWd8DBnM^mXWVi~74X*&*n_;JTA&N)sW&CD=nyuz?l~mKgKQRi7(o6beZLr6^;$SZ; zX)+53q_SY*FpW&EW!*P~=9k7xLTL>wB$RkXsS4(ov-_tHS0%P}_Ht`-wmdvO8}ZSq zKWpyaajGMWm-sMFxY7Av;YkqVKsMA8Ea=50eQfu)8A>G)urnih8y32v|3x0I;AdJ`fMcbuC~W$xp`@QaHNnqgq*UN2k{bKE2K^1 z{%CR#bvZ=-7HU_5*YV6H8P_|U6~5ZxA8+HnFQ30_{bJrP3q2) zR=&U{lQ)rGtyN-!=@uJH0<&$*J$ZZbFQlla#}u(~wj#rAhB33VYp6*J2Wx~Twu9m& zG5dhEOUpyw)1RIN2mR$P8$EYes$cN6!3+7egoa(GO*Sp6iY0No9vbw_eW>}G5mkv@ zO2V%NU-^c}*a1)7Aft`5>#E$AV`XP`+1XPg@yQg|rl~}Mmq&_>!P`m21FupCufni% z+eU0Q#WQ~waXVd9U%+>3Idp?6nyFrR}nCB%E9J9X1$qJXG10UbY;)~LE`S|w4bFcyYUAUj` zkU>@A&vu`dp#kS6Lo6|lE~=B0k<_LY2ge=hrmGMEm{-n~Ckr)9iiS&Dh+!f>HB;He zsTBfYY6-yto>B5}?G~qBmC;nQum>}46R4sNI0{wRtRl3jL-;R15v=DfD*pmVfgzk3 zd>d5!r4hqzn?MW`<^zUKF4*EOA&qCU2@plW3xA2k4;5pf6`PnaGuV&aVv4f%Cd>r; z*Yir_U+rDlj{&bBj}lwL4|aXU`vNX2A1nI~`WxbkQQ(StzvRgt&S!-n$_a%agcu|@ z^H^&wN>*wVH6=-^BT49k0XFmzoIH@WI-K#zyN*5!mqe5KFCg2K3V z5eU)8uPOP((8uxu8sWScZHPg{7ieZgTJ914crk-NL>tzCzH3sWw@H6WawzvWcV;H( zy%YTMeejCe*JSX@X-Es{2_CP!bArPsyPxQU^pzH0oE~fO#p(TXLWj2;KIy|>fKm_u zs}oCd_zQ&UnL!??R_HT0O(@ z!L|Pc!@()E&0vksK^H%S8>96PCB7)Sn1v_+w=w1FO`wa0OG8v~F{Qp3s+hA4;M@eK zk;N0nXXK;Vb?a4lqWe9MCrU`p;)xvoaWf@JoU3K0V;#>3%FYBRob$%&&?YklA~Y)looOFp zay}`yMri>HVz$P#E;6uPgeWp_Qfp-3WY8T9<1>7+CiS2gqpIY*;R?#;*-?ymk_g{4 zFHX_aco@`gtBylRGfi@2;6;TzPm4tcUS7<@xrp{ZgwZ~)u_Kxo5B9vMob?C;vJ8Gh zpd^umF2Xv(`Ggazny=C~>)94icMT-w-sC6jlRD2Z4L~eB^U3hQblL=U=Q{=AU?=+E z4~FSHY42RIfX;6wJaVsT7JAK?q1P-hdTl4Ycdn%9-noPAx7dCM*>54g!5ru@<{bh& z`fzI;yC}NTX0V&j?BI#zgr8d4FgAE;TP=r2;ILQe{%H3CrZcclD}sf}43D#!bC*bb zX!YB@!E7?p`|)J@&qug@`o+fER&|*iC(w2Q+Pd^#H27_%$KgIA+lb@DtVUGMTjE`0 z2dAs1c|28NefX>6v`7}G@9^O>gi%EH=Y04Ep*!E{JjJFaEej`O^IK4~%4O)S3!=Jk zd`Yz5!@=FZ0SLN+$lPpK^xkU+Zx!}1=M_r02@bMuPFv>PrxiOFa*HGvr6x<0Adhj2 z(m&GI{e2@|X^Ug;)T9n;L-SkAnuoNOXh#QTosw|!mQ;4yg)tcS9L_dsAN;-{9c0XBp!CDc4H3^Ye+a4a@pV4aol% zrytqzy?Q_y_J56`u`W84OSe{Y;GLEA;fg0nD(Olgb z@R6K$yo-+2{6q!k(GI@Iw}%}MCXhw~^M!3l3kGC*S`b#p*GBO*_4F@nQl@pySb!=Gy&OUm{Gg4HFeb6QvC z&hDEuiGRK|bzNt5l;^^2q1s~OcSNQw>SQ>6C;PU1ybte>+xY$4VeTE=*BWc0@z3qc zvp8Y5@z?v?Z2bN}cx(sN`*=SDQWXc#HBT)^gPAO2Ics?Jh{`6lQq|w`^4>y*)4?KT_km35Xa{KUoEMznA{Ny+X zkK6VB2e#qb=lzPC!|}K+^S-oF;dngm-~WN$zjx#J`?rMepP6|-cRh|>y{(PM5WPQr zgZKM@9e93Uu-b=us`_a?z4%R0*8H~#s+#|?RWvfLJAErv2=g3#tP?H<68iJ)Rf%3_ zVqBS6q$37XSy$D`-*wO%bi%F7g(&w0TVUQ%>~^V!9a)dEI=5KkhgIHX{0|NVn%;L? z=?v8onf|5WAeEEm(#D|3!H9m z{c_EV;#+iGl3tMZU3Po?uQbIxS z<^fs^GiIt|uGi_W8m@|wLL0~8VR2z3{s{fTc4utA%EZEog&%KQ(fsjNjn~WGvAUE~ zoxgF}Cv8=k_*=!o^<=N#3Jgv~3ww5`Xnu7}#loI#$3^a2R&ixdZzL~oY-*c5D*AO* zq+)rH?xT9?R^+O^X+9mfB68IcyjXGNI+uJ9k?O?bem|96&E|(WY4TiT#nu*PU5I5|lO{BzURkr_&gHC7Y_SlVNrW|9IY?qN3MjRaq%o@{G z^XPCv-GHAmUl&-r71-T6gH|kLgMrA8ktlZ^Cu6k611jrwHNn(m|&iJSXXl~pS z?X^~67T8Fo)6m*SnwRkDl%yMtEspZ^`|4v+(Bf$ z%jvMo8gI9VEvMkl7lHfc=3I~IQ#Uc^XwSy;?On4e%k_G5v+bPQhZrKYUMEkS_ljon zLUiI>bW0_vnVBD)X?gBE2i&RSN>6kzXu46^aDgK8!Z$20*I9OnEA8>Z8oiV$UEr$M z+RQrVc%OYyl!T&`IlF^x8GQdYU;(~A4Sc^G@&iI&2SUFY6U~J^J5?-vbq7jrbwF?L zK6w>a;-_kBj*UYlX1TXS29{;t`T=iMEPQ2KsKwS5SH2?rZ$#rfSNg)OD-&xf7JkMz zKI0o@D&5>OW?a9nas8H$>$mKv-rho}!=;pV#O=V>17?>qF@@4osKS_+hJI9)=s(l-+q z)=S^}NpJ5G!vz_F;?QyWe#(Jw4K=eBbE9D;Gw221G(^Y}o)%t@S(cSd_i)`YI*U#X z94oizIrVUXqS(qd?vuXVu0t08cAw!X%DlTgQ>LoaWUWZ^bc$7R(&?%n@emxk=1pCT z^SG}m{e2SAC)A?)n9!Bp8v2rbbG$Rtp)1T2vKWF>W9MP%mDD{{plU>=Zej}7&M@>w$rDg4?@20W7Cm7kw($@ zHmXy4@RAY_qE!zuh4RwdknNsc!b_Ta`Xuv|=Xx}e{!Qvi|B;r#S3M+p5xnt=O`vPy zHi7DsqEN6#;mkQjGv`S}bU(uB*8$u($EswwlJfzd&5`6snK=@(M@}$AW*o;W>3ZU3 zIds&w)7zTkwvqSp5PVH%JrU*a8ja_(5BL#ZJDpI8clh`uAMSjVORpqUxs^VBH=q79 z;#q&?ne%qJ{-(R>G%I4vkLYMw(Qvef?ws+Cmr0LkrY+$C`h!UdpMM62A3mS0trhPc zU^FWsd`@*Z)Xcv#p` z&Outl0w;^^YPW`-cd6>`qRG=3qH=#2zNnStOyqsWFcVqAdzr|~$VZBBAU@KvNEMeA zz1~EP@%xBqj_spWW(VV!#731w;^&DBCY#kDu8@f1ndUSzD+oqGe-{WjwQ#y5M6t39YfQ2k+=D;w3=zf;a?D2sms`9Mc;CxHOgv8n? zeN!`QDtHI2T;CCBxtw&?2?GD8M@isc8Fu3^>&D2f=!Rgoe{Q=+F0!({!GKLS^rMxV zXz2M;qK5jk&^^?DSfXrQyoODu1cLFTrpNHq7Wi-6$N1AE%DYeG>H|OV|yb zZDbxvdUdI7Iz*-qBLX|leJVTv)j>dqBYRy2Q7)W$SoSzd#DdoH0I+i`=Dm%v{pZpx z+Z%TTr;9W9KE_spJ==>_?*=}`uAj|UK%+*&-ClNZ058&a_r;HblSPa}A7d*w@-cQG zd-o_3C&l=gj0(|QUGaQw2S1IS{7A=m<8r=(T~=Vh9pY*+uaf#ZGVlRetDJgzG&wd( zGmjgE2?AVuz`kb_MFYJbFF5pxKXCum)wAL0iVC zS!g@FGth(CpPjsZzJQ*1ICwxWrR@4s(sE=jT!BBWzVc4;A=AQuyp##4?PEQx{-Fge-|c z3v5p?Ek&KFqHW4Hz-8>reU~f{neptYq6bSiL}bbcj-pVA$kJIv_ROmqiw!vD6WBzG zVn3M0Vq;uNr{`iL@%>ci5K_}_abkeW)dGU$AAR^JVa^WHKVfgYA2b`Y-wRtm*IsoU z)(uVw-;BNL5ovk`g3BnJv-;aj*c<=gDIw`$>rvpWx>kMLk3MZ`{Mj#mUssaAC*wvg zYHMpj)FxL;xdI)0O}LDs@+cLV@hEC2=1kDSH&{`32!#;dBOHS0TWi?T-<2?mDk4MX z^pK{ahF^xvUE`t-&kUK9$A~Cb_$D%BZXr?L5n2r1wb9G}HQa~UaXF8D9Qv%M3cg2q z^M%cFAFS`DEJk8Xv89gLR=c=riKYbSi@9{Bx1fHlcd-tq!Lw9Hj>R8X(eMjH_Tgw$ z&mqI|O-ps2gXZNhJ3oe92+RC7hw=G+z0$e0uC?W20Wq21WBg)nBYl&kEKpnVrL2;v zPzryO<^b?=5q&9vAC&F`E>LmM#}tPe8Vl362rulDH|jC=;e<%Q z8CIt8ZGmvUwcMtFzx7q->~K624N~TgK}8bHHd#=H5d)~2EPCH&M8Yh&0k7sUfY-#J zj3$lB%ybp_QPHFzQ?o{yS{A&b_29=!sagW0u5)EI9!g!KC@vdZ>U^Kt<5HKq)NY@; z%%yg_R6#Wu!7deQSK*?{5sy|U-qglv(jnAjs+N+~DZ@>UtEbZ(G(3mRFBe~pX}-E- z$(15-skuGW1>0%We;0J<6q+g#O-yJFt|5t8Hg}zhc@&UnA4IGwc`VnloM+vqg!wB# z?P`<*%0Eam769EKGNd-RV)4{$blsih5Xg2bdY>BE+Uk26m={2c_64=Xo zIvAUk*DR~NS_>&hPCq^;20b`^S-CD@3bO32<+%8dG9sDO|GmJ^*(qx!XlYL2> zEJl8Vdy}~^*^W_c^4{d2;jeG@{(*iW)HZi0h#dPcpHq(`^LC1@KPVFK$8&7`p^+BN zahUI=l`*{3(0|(yi?mn9g*@9UTcTyAya6xh?fXb?UQ)1h{5qAMk{FMNb-#tig-WY~ zgAh8yNmF)fy(U}y5QA%DD@=5-UedQ^!s;Y=k!~pbNZd$nswE;z8$tyU&Hru>Qc$vy6zLa%#L?~VUPrr<&9wc^ECV= zvf6Ngo328I6@E_;ZR)0@UJk3YymFW`TjyY<;OA`hrO)7Hv$WA147LT5XhsixSNg4@ z;RK8vqK2{b?)sYG*VBc-oMJh3&tOJSX9#Z6)_n6@*u>l;EOq}b{21z6`TnhT0BLRT zBSTzbU~9#Q2WhWcuyjIWl8{+N}NKYHNJai!hbo*WaR! z!kq8EsRX5OI#t&tM2ruuE`25BM|Zp+%bUKUEnTmO`|OhJ^Y&Bp%r<9h%WCx`{x0OZ zA~xn=ui%Na45!WLiLz3;u01xX+|IKmi*7sD)Nbp}R83vhBKYK-c3gFS_IuySX~#u5 z?U+6}(~ftn9oJerjvm%{AkweKC=&l2>RY*z9LAh%#Piz{(r&c0qlY!Dky_!kE}Qd_ z_}OAY!u!EbCjwEiF;C7F3D=x$mHkdKze?Kyo~Ja#16A@I<^qka!#T#<26I_(E|@FRek@vNq_3gY!TPkNVA6Bn+SdeLxS%qFpY}8N&N)DEfl#I1?kB*s%{rAK?&| znf_F6RB=#URQY`zH%9c)=0yg8>PV%*W0yZcY(?R|&Y0=LEeG*{Q_f+LmSPPfZV*fz zwlfg{<(3DtjmD?bZlNlyc^Bqt7C+MTU*$IaQyaa$O>YyQ=x5yb0dn{plQPvjz^ds# z{$AMh?nnAG{Zz2BwfGpmY<(!@!8QF*p4{*sz?1rYa9CRHtS)r~e)@KbI8|}_B!)es zKdE*LENsAvTXtvaR4 zELScqa7jY)RF&sqT4u!70VwQUz~kbE-df7!-lAN30V)=gOMhUxmi8Xr?<<#DN@9)z zm{Sc)AGuWNUe*cTUdQKf4@8Ul$fccXBE+1DnqgI)T>60C*g!5-jlnCh+qrTnulLw0 zYjF*6;%RUPJUh&(N9CU>-i7$#-zfF!}eGy4OQ4hspPltIdU+WAd-$jlN9& z?_TZ;G8p@i#~1MFdT<$5F2KRG(1ME-<3m3G)>;QHv&JUdEU*#duNSX{7{7UjU-&Av z_)R3y*Zg$5cspV1HneS`ra8`eD0m{@ndSw|mC%kw!zVI~cw zr23yF5ds4-Pa*^bV(LC61q@tHeAnyUswo>=Afn6& ztTv*tGB|U-K{V1Lx!Hy!(y~8~HHkMIGbDaI!~58M6`!lq*Z|!vLfMcZ6j^jPx6>NE zK-4}%DC{nz;5y#ui|)E!*etr!;=UGa2o9STdAIN-kJN+o}^d)qEp31g+7Te1dtBa?aGeV)D_yQ@t7Z>&2)PlOK@;nF#oT^pmrN z^Swep(LUS0Yt9Q9bI;qhcTk41cAG9*)a5qe#@C^yoG&sk@FLSsw($&UizZG+HF>#C z8x4vK9A6&HMH}v0FE17x(c&XPFH$ueQlUO?3d}?PW(n$YaLn(RE8D+E-MTMUdX!&a zf+Kj1@(ApED6*xIxQX-(f17d}#vJUT)}Tg;m|7Dtc=9Z z|0=4SKcUn}pUG2I^Ao-4@2-)!_NU(TYk(;ImpzY@9v)5ILuh&)rwq4-CMEC$U>y`UsUhQrZ9S<67HK z;gi+LqSwF0dD&7fwz&Zx>W{hX7ph9vyQf#HO1YZyhDDYAc~UM<?;+1`@dV^ zUutqH4EsujC;fLTdQ2~&woQ#|A)2V%!@3zas`O?E*5pM7;}}pVv7l}x74|eIxa77{!L`^QK=9fX zA)F=g#!JQ(3jiPxJnvRf6~Z}^q6p^>C#*QbOMGxgTax%z20sC9jd(Hy`nCdD`@`cB zw&U7OH^#L###<+71814~A3q()g_{rK5(MN*&6(1lMP!_u2LyOjcSxJ4e&3YnkjgG z4KGm#V`!XB*sdp#nBi_Z_*l5@x=Ni-yhGt=$lVOWc#!#V>v9$ItAcAV`CwI2&L7*w z_b_<2UMM(gzKhRMy^(=+OpKJs0#NDVC0Lwp%P23844gQe?N{4+&2GCkJ(h((PF#6K z+o)Ca{VGr(+XAPYL!fQfqPCp<)_!#6bN5@Vws5~S!iT7JxCjXTf%%X?M;F_84DObO z8M8zsXLR5O?Y=s2e|~9YP_C8CNVa^#X8Outg@CUFr@UPm+;xjjFy$>{`r_R_VQc@& zXq^+$EAIiK^m=|mJkwsMhH&{Ofq4JJ*a1jiEkKH&qoG>jn9xV!4`HAmTOhJP|f2M{tUM9=qZD3gl2xB7ZU4g#NzzKo(;qBLhtUnEA9v%#DF#x4z1V0>|H@v8^R~nI-FJlV1?lz1OP9lhu|vBwnB%gzT~Rx3 zf=zmi8lKs&^_1jQQ(TBpGsMT(D6J0a#hqrx7Ds|J`Cw*jb12DyykL}MZyvH^`Q<6e z<;D+Z2i8-Pxi+@g2j>o|lcKA6qwk3kg);shQH>fF5Sr}h!!96U)hoQFG^2o%UxGzLOo&&#LNKn zZwctxb+yY~xv<~Vx*Bbxbs=Sj(Q$ z=7*pMKm?1J$bzyWXJlXxq7m%pO3N*6w&`hAY>k2X9<3PVOY2RpUsmmf7B$b7q-xEj z55b1PuYuczqU_W`W({0Vb$;fjA;hr-VgMP0u?EN0!O6eu3w<*H&&+&bHC?r7Q@+Gr z@%RuWidnun?C8eBUz;8BPlnPkS7UW{EI0fGX=?SEYoSK0=Q_&zR{W*&94B%@WXg#FO`8BzI9PF@R#^&A7T6!)=a5VM5 z?${8JS&+Wnz&!>4PXSu71!8@PR2t}dgPG6fKznh>(1aYTpe+rc-95FPy>hFAFLpy8 zXR(b90Xr{U^u!Yvv{iMyV9;K)0kn6vQ_CLO8aHSl)7_yOj)2m{8u2Wq9;J`sRfCtH zrWu``QOzA5-4NhC-U^8}h{Dze&w-Et_=FgaI?dXY3ucKowtc5!0h(XvLkR5&9el`x zy0J40=LuaK0J)Zn2prFwuH;dgjYn>^Sq{9{rEde?HHlAsiTza~X_JvJ`@|hd%xXQx z&*A0d$n%~M<5E;l06p4J>+$j#)U%NR%kyIXx2*M;k5(~P>oFMgo6&kay**lwXT*Cv z&Xd$d&-w7|uPDAaJXySFY-}TZIrH1FWFrsJM7tDIefMH5B{4?<3r6kfvlpxM zP|W;KXG2m;gZk{nmaB!%zBsd79mjX5-q>I-Ry77EFYdc)u@QDH$k+%ssn|YXQ&#H# zl#TFDjPz(kK!)El@qJ}*S}xPIqz}!JHBL?G2a)&$o6!bt5covl#7$UTI$<WcM?j zvYCEXC$c*fDGxpka0Yx%N?*gqBF=+_`5124@L+F57_2TOMsC9Da-EpiRct{Tw&Q0~ zo9#=ki!wsR!E1%RK;qS&O3-?m$7t-a^L6Y;FkzEQw+l^V?@` zCpO$ZD|C5Xu4I9Wb-P%ei}~%db%Jze`%K!5?Dm-?Ut)oKugAsw_Ste56YZrf%UsND zESLbydt!aa>vDObnxW-6Cv*|P3l@-kWnpb-SbjsS6`9K>9r3&1n z3eJ?B4@{IQK$E)8)hp;Lb&dO)U`yHMf?uf_l5_7lD=FOOxf|s?ljVX_r4Q-yp3qWr z>#5VvJWU|u6y$y*7PQH9Dw$uw3(PK7N*`Uw!%SRsAw9ev>OxjP=2%9WilHuKhlQ$R zZWE=%eXLVyOaUxtAEf{rUJx=%$WKktkAw}GCz-c#Vx5LwnXh9Qg9{p(fg^^ztBG2db>$|3EUuu zOI8PGXj5cF>UN_u`DdLHqLS^>0g%XYOM`x+ zhK;OPtY#M-LqM$?a!dD|tZB2Mx$hkD_*>?de*8#ZZfQLTHN!3ad@K3C1AV2h;VIq0 z4=_O!dFYKYc~#qeGznEBU8a z%*OxA@K2q*(U*UE=?|aFKi%=rzm|V`9G2}1@K5)$nF=ayWHC9Kkjp=vL8^#W$Um(# zaq-{$Q?X;Wi~;&L|8zd8a;DH>wPFt(+m!I8GNSt7F?8cO;G&{pp=utscRmBzGQl=v zp{|hjx-ScL6SQvw7V1&s=KmL2s8+Lr$*;0TZ^%MDj!?{I--awy)Ui-SdM7#T4L0$O zh1w;Df4Y`8KX<>W5C3#CtPT+GI$n&(M*LHS#PcuDKOKbXW6S*0#OtYe^Ze5fjLzgA zq*gihGQFw~|FrxUYS_qre^j%Jwj$UB|8!x^rue6GpXJpp^H1Ld$L4CA{s2PF@J~b5 zzttN|MYo>bho|&#e#Acwvv6_x0SgzUFZA(STs-8TihcI&7A{FoCH#E;Ny16iKR~_H zu1r<1vHi^J5@}O17LcyGjzYmVu>=UM0^XU~*YNZuRjs{V-3t#acVv2@GP>>S;#Z_R znroULcM4{qrMl-~M`bykehgH|_3V|y4GkG#T#pVoT|q;z1E+C}RM0I!$&uKL&*SqA zXNh}OhipT;H#k#-FF9;5?3hl#RV6qXWYkm$z^8+Tip) zYJr{OGXc)-%R*@Hq2FwdNM7c+ipR$jttn=V2oP&s%!|!Y7xQAXwB1>;d6bJuY?ch> zVqRjF3>HMRDdUbl-un|VxY$gPj$cXzBc6N^X_8^czvi3HJO1FB)Hx+hHHn6jIwTVW zQ)?M(!tTMEYPVq6#l&i(cZ`4OK|tNzVC62zvQopflJq^b*lxSxODd-}%gso=6)RT} zHN1*@e41254)J4p;E&?!#^!wITMf0reLChmysr$V+>-mOY3t}@qIW^vgWOg>iBfV=H7 zCujYl3r>@avL%YJIv6FbMvm3xY{RI!{R@+XYd?e{oXi$sdInGF=RR;0p+6B(hF5%i zgpcp;!wL%*F*A=jc4%JuEnjTC4^QyLCb(kh?-JrOZj<{H^G%yuw3AjrS<%)^1pFDt zq^xrK|6v-UK0f2tk`!X>?;VkSK7tVn(@!e5XMfId(!uVq;L6}eEpJD>v7OzfWc1KT z%YCe6cNAfPw9uuubTERE>79zC8e=#hy5LQGOUtus>VoH)Zg}l7g(9e&yMu*rg1?Oe zm8Ocm^PUQt+avCTFt=-#eJ|ON(H_Z~siMMnRm$8Q;dV`~bCnTXL!ppO^crfpT^oF( z%{3Lt`qR7xHiZeO%4JIHoY4Nn61~?9&d4yGoyX5cGW^j+j_9(|?-i0y=KuLX0X_dG zC0Zqr6xvJN()?LaDbo{kh=vk>Ej!4z5#l|l z)CRj^R)ip*aiw6}m?TW@;K%z>@EZLsDf3MkU4a*-hEcHv0tV_sdK};Yfb|&^Un3m7 z*zoOZ47Sq#l*pzn)8t`36dX;S8zO&Uq(6bB8A|g({;^=}F`8+n)ks z#Wou-+gc0hPfg7>ptIMU|s_9&Dsw|4^$j+8d?1W|- zoF>bQ*ntk+8}TOidGw``cm+D_(Pfc%DWMY{Y<8!=qO%Xcxb>h2f{;T51UGTRkr=2W3d1?~fj6aF*9Zxl{dziaGSsgN4IYlpP1Lb&?cYTf~ z45xF0LS`e}O<64bY#xK;Lr09k57Dz?%vj6ow&l&Fm&&%?%~&%6+5o4I=8epZg-*W{ zoMkj|Gc#6Hyf!!jJqt6_`@5`Iz)0nB>)Uw~I+&bxctg1uq}Txto+q7(sG2l&x%c*iBD+HT0-$AH1XC-fi& zCg{+@?YqWDKVT3m{NfPXo;UhH%%hTEgozJ*09PBXb$50f6G-8`U@b@isLT?FLU`*M z!ZUbi&tp2vjxB_t9ox==(N1q~36d4DEBdi2?$A2o-s61@qd&U8F)K^K-p_;x`&l9{ zlWy#XBGtwsg0L0YCuB?%Inq{- zJL*+|B-otGqoF#;F!w)KN6^ymd2i}(5x>=d8 z4i29VoI^GHqCRE{|6tq2OJ45M7OBtJWSPyUBfc$935Iwkw~oCO4EQl%YF-c!&1=|!45Q*_ zK2B;<7kXMja5*38T83sLow7E}qzFH-a(j(h2h=9tmEXrd6Puk>U4~6I!FGOQ)JL!CGVd zPIcnKseDUX1nb?{!Hh>OkCB06O^Z?PlI!?f&m0EulBpOq0s{xe zel+W+yzdz%lS=lMB)=(Mu+mhN`BPNh4Vr(ghbn`WCbD`j01N6h4jD<~EB2exf-#`N^njHTY8R(hzv05?2pRnJNYWLq^YQ6Eexna(`|v%V zU+m-G@Zl`NHg~RI^ZUnISm5k(p!Lv9^)&flj|KAr%W+;^l2^&vr8;?+XM>#y#8p~v z%-X@Wx~}rtyQqtK)_RbOdF@@Xi+R>sm@PO#BjdDpA6??KcZH;L_C*>xF5u<*X?NB& zng8MeVz8~TcFkq38qF!ax@ZxTRy9b^g{+cQ=c&+5liV@Pr;s9Uzc*}w4`83{SYsAF+ar1Tueip)$ew@L_gA9F6KvCh&Q-x1S`V3 z1(2gndAi>jW*KI(#H6C4Stiko$-Q*X9Pag(xsm>`mgOP)`vO!m6IpvmhRJRG8g=yU z4okV0mhMqZER$spAHejOSAb~a)G!3A$8gV2djcTy&3Maofb|W$)z)_+Bd4(R5MY9<-M&Z$ejF;i* zwmr0ZM@}821ScCTA}M?xE_uYKZ)4gVSEe{rt5ui22P378k89{$B>pqLBl1<3Zx&|#@?;jIxsGu}DYx!8Qofs6~{ zE*BHlp=7s<1+JtwFZ9c4xy$p*smI0qa`Ff_&(-3WpDdNtNp|2Tqh;5EgPUtE~i0DeE{v8yb!iDb3X1wQY@vKg7E{Zdq zK`+Xg&PuSMwJKwHDCi;EtNp6R8ksQAQdEs3QyoyInn$X&E9>1>*p*ZbidPb-tj2*< z4FIWH9ZD^5Wd(XtH7rUM>?tdtld1txs-RA)z)h-#BKRH*2MSQJ9dv1^b!l}_qg20j zn;QAf^UiC~5u}ECP_L&D;EIvsIY|dYqGgt4Ic8p~)#_EDi&2HH#w$>>CFWf0@RnL} zE~)8PcnbLqwbsoTo2XcPYH|R34J%zxPe2!S8e}XHUFSoHtAAw9RDHYpLzo$eYph81 z*MdB7oTTt)spfZ*NmABlJ(+Xr9)Jc)cf}&*jBxk`3(Imfc$t)5MOK8t0&++H2YFxs=Hg zT!lWI=ks{3vJLKStD4zxEkrA=k+$!;{Y_pe4o;!C${B^Fai*27=zYqip|5tM5V^Q%+mgU8g3j_Zkepab)bjA2zo9CUKt&P=brlbs6Sp*x%3T=nu#iNB`Jf0 z#-Kw%;$2}LOG(Ui!7UEW89RmQ4D6+JkEeo{(HwYT(AY3;1(Mrp)6Qkp$8|RSj6MXv zvp0;Tk{-6_I#pmdpvPx1>ZiS2=P3I11bmTOeG;>@EYCvGqeEE&B<>^kGhgvkm9y)LqD&hKF<k8 z%P;iW;8Ij0^xkhx@sztKHwdF@h%Nnlpe@F*xr!+`UCe8R6&6#d> zH0k)2L@uwwgy}LMxC0#ANpF4qzrmrTPe9Lrz0I(nOU;;^D>Njjw)Yv*T1ZRRfotXG z=^pwR@(&VvqURc*@Wbu=J?ZkHFdsdY!)KS3)C>J3haE{(!ANb%Cx;!PYL^1rjDCYj zxE(LwX)tb?$RXiom2#@~38nRS8}}l9!uG&>7q9oc`YZ!Eek}y)WYISHd}`kIY>6E( zs-R)Os^k4W#*qb$V|5QQc`)An;*U1IO+y_e@14Wp9%-{Tbbvjse>nN3|G*%j$)~yah-^zW6y`q^`=(#d@(KM>RcP0) zB~LmF?SjR1F>F<-AI0f`V##=kc+{%oO(hcv!4oyfdrOSKqT>d)sD!2fGp)x*XS?Wf zAMJF}Wj;FJMZ0~p%SAI@3ob-q5NxA6@67 ztv;GZZ^(`LsF#VGeAH-W^3IZCSE}A8d$D*b(V+i6LaZx;ioIATg79GMA41?{;Ki!u zzAhM9$0RzZfIX8_(udQn8At+TbC>2-Fl~lRdd+4C>GlA zSNSE*ZKLVY#H4OWs@fMBQW+EJRpUrfqap(sN2%{NBdS-p1LzjUBy>GkY7`dK+7N*-r7+O~3jspLf<$^iw^NA3)87BW$NJf8y3G zZ7Fk`uP6{S#s4)FfHHz_AV9!z$k7S( zQnbrOXZxtf5FI|c%;nDXQ7sp$YV*+^7j5-Xk0D|{>X%BBkNTxj@1uUHO!ZMM6)kVS z`s#eLUosPY)MJQRqQS~N*uVjasPo=U$y>1L(3(FN81`QxDrMOJsT?fdW2sJeQ60%* z|Kc1y#%QM#^{mHu=8UdC;J&Z#F-(rxWiH*-kGGv6#D#pgV$=jA<{$7>omjPM2k}Wq z?i^{Es5S}z&npyN)P1%H-3Bhn) zs!82xc@o|+hM0u?NfqM#pcAW7S6kK5)U;Tw8r4Q4*e?zaV#^jWLbsgH)eM#<8($sG zm!GpOU;3lrRg!AtaCcgVeO$AH*n}>%-UdwtH7m%zxwMIp^daI(9W@k(Hrw{cbX-)vlVN0#B?h-xevSgFojQTz!V=4Ys%%wY;+;$1dm3O~s~Lz%nQ->}3CQy7WAhU^h6 zBQ^bZp3s8{jca*<^|a_}5^nv-C88S^5WB562HO^A(g*=yj+bb4>U~>)_EjG8-mi$9cePDAJ>6iP)zeKjzx4DQn_zmn(`J~bF}h_OOdA<8 zp^Xca(FD_kVO?k<35$xZXnkm!Gk-OYgaZAl(CqEADq=q0 zPxq!UKU@y=Bv8%NFg;ub9$X5@R$$eJt6{lIUlyi^tD)PaYq41Qa5c<#>78MExEf}= zbS)Muuho!#2cSE7Kblycep5xfy@XpR^js)3{TECjT)FH5s(4Vj>3hjyk_a5>xl5gL zps-tZ5R1~aKHS@f2mA0cLWD7R#z{!>>Bo3Y#mjtl)Mcm7^WjsO;)kgCT|W65A2!+R zOVSg4_=u&u7IpKis*m&G5rmsNFW~(d2{55OMF-Dc%${Np{pT>+I(vBodx~P0=UMwv zE~eoJZc!KWT*`1_LBAid)SNxVZ%?(Qe9gAzO0;sslkkI@sfCmajVe;Lh0%P~=BzE8 zafKZlVmhgy8Cpo=6d5?K#0-kmSWGCYOQup}Fp=C7QL0}p?sFQ7xU4a(igJ}uyQ{*( zP}Jp^52{laa;-XYHvsf3c0hkR^z;jRP_t@-5xur^FzCfHK8hMrBg)>XT%tR z6Ci3%7&-LggF!-Ni+JP-<`R5UHVDlVf)=`}-`{P1s!&qrgJm z5l@-bZhyrRbL=i&1N^~ zy~X)&GpsH9iwAJ_7DIW=WwE3ji?KFja?wf{iH|piAvC!tf9K%5U}w?HB0e1FtPwUFfmy1t7}&Ni`ktRu^ZG=J#JWzZlTR{-S~}I6aF5uc-Teb%c8hYP|i$-t(P`@V=bTyb*61gsm{D!wg$A^tXU>4}2zpM3_kvimo~?a|B~oNYmL8%-r$IT8#zo_?}p zmKqs!Zkrd}bu5rdPV3}?=5f*F*rw*DPy00-S(Vb=US`5jGeyg%sQ-`qcro~MRPIFH z3$U?`6J9f| z?Sc(`<5*X)6;O-Hb`@`=R-G!A9yOSW4I*M)6{^;U1b*8SlyPFO`s~h+{l*~M*h$Uv zmyA6N)$*nFTC=XhwpY1y>^Z#5)V8*`lVsNC#Mr?jy23+bg4dM9*r{lShrb5nu&e2H zqlx3{D3Lu#W-Z(r=Y%n;ly=Ax#@18F^gad(ZoD9wT!Dg|+F&onke8&~5vO2{H^2w? zFr?P8)B_#l$^(EE3w~i^oxf@=t1|J@lK)5CxyQ#{RQ*3i0!6@WkszXA)dH=cv_he! zR1=`EkwhYb7O)WHR#7BC0#$AcN!qN-N)+-~g-R5w6{uD*wF-d%ZCa2=3J6w^He95$ z6ll4&T=RQ>&YAD-rY&Bc=l6U4@<+Zq_n9;2oH^&r%o%$;Q`$m$nH};YubHnI9cNa^ z(%P-hverI6`U}T<1<$@LvUWE}IIOUZ-t4wTSYC~?E!1>J7E84qm+RHMDu>hyW<%2- z&hm_%e$4wiWxRZere%|jS=lWobYWpB%zl=Wd@PnCuB%mYWt@$Yi#g zZ|Fy^s%ub|gio%5KNTPAE@0_N%m=TMko-R7rPA*SY-lF&U%)(({GR@de%qA}!8Fx& z%{Btqn(!Q}U(vu}_tj-VdQCLrR2)4`nOlCYe>gQc!6kI;Zk>wWAPlFA_nFc(M^%x= zo#GQe%@aM%={S-~a)Uw$9e%9Ybrb7hhx=&>b)TaLW-QfaSmnpqU@()a#E6+7yHU_o zT|bjS$c(8%Hc_Lx7X3`Ue*lR5|MW9;XpK<3@}bpm6+s8qTJCHLPg1v;Cn;Hk6US5K z{-$;wZN}rGFRJijt5x`0P$v=>n?Wfb) z5PRLRM3}wqDC zV6Wy)xHVnWMsE~_C|)=DlapUm)~Wb;8;?;Syd}3jTsx;EE!E{`u(5mg!f@P|CFd=e zM)ca#Bu7e>7~#^+oXFoVbWd*IH3B{YKWrB?S!cN_GGk0Q6@sC;`_?DjNVPYRGvvHM z)oi&D1cNkS464<-n<1Jy$f|V0I|@Ol7AHoD(fm!}xiY=PkBqJ8SVN{;b?d^8pqx{D zDAW?yNgH9~XOqZ*!Zh}zZ9IORwNPU&))-$5pIfxY^v*!Npz9@C7pw_IS~p57E~gVcEiR|y zJoInUI(3fHI*_%)h@s{yz{V;6nL|p8E7&!HYRA83L=OQp>kbh&g3OQ}saaIoC|u1| z{uE|j+Oo9Xg1JuaGI~F$g-bb? z#eE9%R#Dh0(rwM)!-WM#vu&a}QRN&F+5vRxT?p-iJ`^=opZ})1EtaR|=zciSIuiSP zc4s(BO@EcVuAi&D`%v)Zckv$VpUEo*3&Sy5taB4CIt}Z5uIgew29TkC7oUIi9oWex zeiv=>pJM0nU-(_@(}CAAzl-B$sKw}a@%UfjcX1V*v~V=PBx>a%>m*j{zgj|F4w@)>k*_jYKGWl7!^<=gWk+kCh3hpTT;bv&B-T=AJauAtm$Sup8ITI&4sx#TEmwXJ1>3oHV;R>T{~CPNdIQ1KXD^nc zj}0Y$t)4~pJnSI=^6tW#`dQ@Hfptg|frkW%^Jq(TD6dbJQ|4ap7Ro z+g#W==`%xdc2OeiXrCUOeFovpP*mG~W3gc-$Tz`|&$XnVJXwlwVGff#-!l|Xw2W&X zNwlQD9mv33ONv^C_8Ep~8J{7-w2TSXkIh7m(iT_5z5&r}Q4ZN6)<(>XSQ|03+&ov* zGR6U>64s6p&>q&R;thHAs<$A7A2ysOJ-O-$HBM;3CGACXXAavAL_ZK7C|d_|M9 z2aT0^6jg^O&bPupCCZ422}rC{C>9f*#JZR^nPR+69cXlQj^@<~mK}xR};@^3DNQBm!Y0Z1#uUUruy*gxV#|-Kc|>DP}ttK zSW5cDkx@=zo$kOQj$a%@auzI3_c=!nh;_diIq2w*xq8Gb` z;UeCO(56p>u#j!0&TDT5*EiDHH80PL*Wixh>>pWmp{llZ*@&bVAIIZ!ujkg z7QV!z zm)YaEUoeR~+n zvoRYt%%}d6i-QU)PpRD&j8ARfDzWhRlUQjRZ6eICDs~Shseu7Pl{#n@ZiJw? zDrAlwQ)7E<#NwL|a_f?KlVX*wHtw*2jy0ElO4IUAnGDS;iyBOgHOIchsx#p&?8JjT z^Z9A!fkBIfEe!U|A#TtHFxb;!zg5kky;C!2qaU>Q6bHRa{-R^}@P~j3s;vgVeG7er z)06sBt#`Q|@Lt3s(Cu!}#L?{mEa(X;J#Mj%Znb4H*6z=i@=Pj2&#C{dczfCG*J>+o z*JA)(@K7~fCbZH+qda8i22ByRZFjrxT$h`t&emsNWe0g`MO$CXgo3RZ`9p`*PFj+h zrS&TFZFw{O4ZrI0XKf`Pp{+k7kXm%;R&C6PD2%IJhkT_O>33at;FE^_&3hv6QpaB| zxG1%#dRSXu^ZDfXMQ!$BWxCljwLAtpOD|(Eerv6Y$*nn9x7KbQZk4WmpY#2L-dVC!;w zp3ZKDIK|{o-Xgt|hdHzgXfIO5QtfjAWthJYs*R#$5YsIkPYr#hDVP&Qzl*c(2-Q7T zERi>`5f(Gvf$BO5*>QS^k2k|Tf6V zG2Jo-kV&ca*c&`Ug#37`$bGW(RGdAMCN5J!6#LSX|iYY&w7+0vqR& zCf!kb2ciSA*1wN83R_z+*q+{DhZpyzvNJksa~F?p5H2=?ZK<|P7-txBD9~tK(nPkF z)t0~gY28>{6W&J(uw0=wc;vP+ybTLvY3w6{0WRjF7v4U{k&5>~errF9rMz;xCE~Hv zxGWwDIdXkyXG3DhTX5@}S?(;);0hA(Hy^7@-qO9=T5_*Fxp~#r(lgCtHtE0K2@5mG zTGoHhoDAV8W7<8sdIdJFaO4n<^dE5++d?I6J6x_~@wq(@~yF$)re3EG#Qyd4h<|#eQnQTxq+{w<<1ci2@>LwZfrDk_yNG~k0jWC&c1ou?? zsbni$#y?-5i}Bkt;f1~V=kW=O#)a4=s}gw%PGQ$okSFfxy>pxu`+ck52e^#gQ^S(g zq4^a3l0SUyUX3qbKh?$lKK1i)i z6e7`O=&>emE3YkWE~ZF6fvu3Ylf1~g-5PP^QqTQ8S+uqiqCm_we_(d?V)poZ&KfrU zK^IM2OsUN-aRKE&mQ7woCSX3&>U!&vM$<5Oe~k?V$$5|t6QQ{?aRZK~jhsoVQ*Czv zpwNNIrLdS^I^WO!N2C38_#h}0Qh+jzkErfz{9M$Z;&)B_z8SwC=!(}r_dE#|uQ1Ak zg^BTdNc^Vb_hO1kX}^ZBzDwh`C#EO)8)Epb`2A!o*A(+F+t9d{`+taWm7?TynO@B&c%~GeryYNeh!t5~Y8#`96+;No_5 ziEId0VO3K9U`GF`Tg%Sh8hs*3$V|o>D#(^)Z8+muJ8c`!}4iFidO+Rjc#E#=b zP?9lS=aKM3S+wb`N25(w7apV6@Z~gif%GKz89Zwlac&#vsp)@Dr1LdZ22p&AN_mA2~QvJ?C>Izo>Zad(Y^UePAL%CTBDIz;bOf<&VV(8XMb*VPO+xT;EIhHO@Dx1&Ew; zWS=>chUf_}QDXST!xHsvSBkk+l+eLFC6>rh_(!e*Mr}`gBvcnEQg}&nq{zh{iWDg_ zAT3g)=!}r5v_)!-6sgG}EmGthLS~GO1o#3Sb=$+vlOicD4S)Ecu-LeTHm+LOP_<{c z)L*pA<4{pAaSfIIfJRe1GoCb6dgpF;8Cg!X8~!#3u%)Jd>RHDG;bzgsA~G0$h=R$P@s);sQW;p>nMuJaOqcm7*E`&%@P%;FZU&l8lG6G7 zC}Pvu`#F4X^HDkv;}g=OQdo_~P?^RM#?dwKK{|_{PZ2$-lCX<)`jdbCix|f{G^iTN zI3?4e8hG7jhkL>A_Mgiv^WtuvhcW2fh=gwH(}=@fXJ9SBpAD7i(@u z+JSjOD-_AWw5|J(7%?o$fSQJ#biF@Uc`HUf05DN~h=O0%cxd>7%;mU&R!Z?r;j}_q zup_}>1hLetev_vBQ8}kpI6+z)5|LQnctFHjezC)d)%4Uzv&^vIMy^PW84JagG&=cB zu6cBLTClO_8@*h#L8(iTBT#3Pr$xG*q0q3GOm|5RUF2sfGEQpEg9)*osd+Ly4Lj^& zKvCiGuj!?e79EagDbZ*oUiBEl!-7=#t=sp}xzBnz-B4$ZHbr#13gB89HCRz88RjTM zq|YMJYEY!9|3zX|PlpieOIS0@i8Z<6_CgrLP5~r(uFtd(c8etXlTT}CJ&weK;UzRN zgwIH((y98!DnpSt?{rXf(h-U|@fjhNEQfI#OC&j$^NU+1$yQR3TMmC9AxQ&DX&o<- zjOhbGMTv_>}wsJPtOu^Z1bpYk1}#R*P=|sVN{|@lOT*;b+H4lRc0$X zyIcb_!-l#PzP%@vJBKm*%|tsA5$DiNI@`isGrd~lF`2!OfS~uFwkBC#4?wJVL{fpw zWi1~otc768{E?O0$x>}gNi;vF?qoZ%O|JZ?DINdW4*ff3p-?YT0MXa1KkCB1x*(Rr-K3d){?WW| z)YCVyo9IcrFb;m`c7}g!V)xm_Ipqq?iP?QBi748Adfe{wO7k%w%=S>%+Oa6{Z7={h z9rmB!3WYY*w)RK+&k@*vJ|X+hE6pFQ&25v;afT+y{$qJ$|9M6BAFmcpiRo!WxEk(< zjWI1|o!Ec=v6=m6M~!0!SZMMC?i1`WD{{-@66q;A2R|o>~&asb?B_7(t*=(>`6$ zr;)-LDjG%K*+1m{tc2R4z?`+ksqkg98D#|LI9~3d1E9iZ`B!c?`bVn$A;qsN#v7>| zsLmuO;l^6ejBc>ccAje{A{l$*;#V#=_5Vo*--y^%M|>+W_{QgHT?+h(Wm+&z_2#SI zzR(Q5;sI3pYQhIDCKF(B*1*${c!W(1z9TQYlfVO5!Ziu?41(Nvn?GjQgOM;G2_Z^LEK z!n5+-^{FI%a7E!w%vDAFCp-=FOfd|PC|qTCO(T7{;Klxovo+%#cCRpXx~+^ znD8rmudV9We85`dG#jhl$8))74}m;N=*dgsYr?K#^6z@S02y#ycohS<1bA3S_}UbM z`w&p>-o_Dw5isb&`}u|4t59v<{=!dVcwYSeHh!Or->up`|5*DjEqp0{Pq%M>;d?Rt z`I!IhR<|x)OMIa+WY1YV+!uj!g z7x9IMV&Dhy`x4*eyh!%1Ixl8}(V|IP!jjuHGfJf!meksLa(Zp)KL%H?)Dk`cE{tWxO zJ4%LJUzfdW?e^%E+P|5vsPc8m_ix&-q`7qd2=;gTFPNNK^d&r&Ht$dEsrK6`;rQ=+ z&5vC0q0G!-70p!~V&AHE(rXv&kXqER6@6>}28)nfE%r*zz<*-3s4x4HqIyjDuI!2mH}CRWw&36gGW=y4H(?vi1&m!>7rfF?M)$xJ|qKoV^gLAnJX zWs>v=L^o9XiHx&YIvo-YgLL+8um(f)912PNSpDyx%7}+DX1@*-PV614!~|TvYGm-? z+qOhiKBZy1Sc%eNH~w2oh1`rXo3`hEFL`fX;KM-26h*U{=m4+)0|tyjqA#gCN~EjCRg6!~wa zS2T(kcnednS33Lp z+MSB^9e(gusrG)QwB9-F@YJGVBFw2+OrGJ$May_PByvp6!qrq_m-!_>t*wkzcsDJy z{5atUwOILEKWsXiy~tIYbF#}mT9V@9QjuTDNNRI=vzMS|lhxHM+s-E;8cTv@Yd3=S z2YpG4O4l4u8xXN)^HLp1i^dWYO4yXPG!sW@!Obdp7i#i01JPaiJ0JJLWN<09drqQ}^p$Iyv1Jc+s%1j0~ z$7m@no&)&K!t!$f^HmyuiDqySx={OKD_njKK!6~jLz(@e;b=^?o16n!PpZxV9FGB> zeZt+?=A=i8MWS2D$IN1Y!4Nd=?oY1#+#f*a_P>B|VZZlUUKJ_N8_xWQIE~}?rW9EI{#XPs%1-(URLM{&x3ai@g3NQPB= zpJS4r0VaRm>k%N~3Nj(dH&G!qtvcIkdez|Iro>Uub@+-^<%pK+QXRHewk{qDc>V*D zTLu8QavS-ZzIgh_1wrTYlY0j!29IyB$Ss5Q0MhIv%jz(eI_ady#=!U@3L|y-EcJ{5 zSZovHzkHs|`QcWv$Lw62?_5jV{(nL^si+z@=WQ0O>x4uf4kUO0n`sp3D zlR&1?R7mKehIIZgKMim)s&v>*VtDJ_P2_2LLYZ-V-aK3lRJed%(hApol&rbAeT;!M zLQ7!Xq&J)EAdXjmjaK+^*~N2}uiqdw%J%v-VK_QoA6h<4XUK~_$c;7h!GW^#03>XF z9-x)BKp*LYG+E7u4mR&Kr2oH%kA@S}sZ#$fYjFrutjEb|fM_!j0LxDUq;u28g!8eI zGLQpUn9`GXZ||`&L=Kb?ZzH`x9~9J%-A4Vg?Ty;}S9GFmu2RF59}_h5JWUoWjp?#9uPdfH(5Z=VYU(>&<_YM^L65XC=K56 zdI5FG?86dz7@>5b?4hzXnUl9Yry{o?{v{JU3Q#1Bd2(e2Xs6l_6_TBfbD7AxIHX-V zA~@Hr#X?Wpzn3Z*mhXWcwHv=g5006s_EuEX!rY>sT8!U^2`)_KpUatb**AGQNvBD_ zN(F2JeM&en>pkFvSpM5gKss+znwq6neY+^tc7Ww>c`%vaS+WykF4B3`5ArLPx$uU< z_9`Sgoofu+#eM1Jerh7&-b-$U#b+NSo6q5dt51P})0KUMay(B6AV=v`TXvB^=^bTtzS`Q;`>`ppr>oM^Yd@-ZKq}U$*y6>=I9v1zxQXq;sasL@NZf{;BUD2! zc{F{!r@18DzR^Qb+O6=MF2lC(>Y*s@4);(4Jc~Lm<)!;#9>O7~_8IH!#+PZ@yCy->AdtC4xP<5~7Os zz<2{=S-gSKOi$`3y`5_Nx^*euz$nz^TQXd75S(zYD*$nu!bX_y9VZwj?NGimz+yNWjvo$W;mtq&&mEEvpkwjec zpb6I_*5^8T2HWS_FK#5*WbX)*Q`kh&h%t@_=5>oS;Q?t8V;VhV@Z=7bha$#QdnjVz zLJw(l)H2aS10EXZq2QrD4@F8E<)Mw9Ho`*{!gI#yp-4&VF^bZ&NJ#@8ij=g%L!-Q$ zXdrBTi*WgdIaC~P6P;jWU-dHF8C-s=Xc~BQZV6A{Df@laFG}&BSzP*kg5!R4&U4ze zj>~JpPv1;%c|Z%qVS@yd!(K~MhRzX}S0JF-ZK7qiRW#%_kzXa^beCbLzx`=`IXUER zkJ5)f>UJSFi-f&de}>*}6RAMy4pBK0cTgf;G6Hj@GA^-Z>4VVd7e6-n2p55YfXrQ1K#XH5-N;rA%&@n2^n+E zPVM8Tan|hA<;b)~RuUv~T_$UDg-I3Qo$s{YndRE97V{$d$=ZG3ys^bD=p@s4oZPMp z&)XsJ%DupiJ0fC^QoAnmDqr{<>YG1b=F`LbWv=*e5%1leFbkD%KGZ+x9r9v~uK8?}1L!1K#qH&eiB$8<4$w3ND zDX+iV%oblW_t{IHI@jz`frwod2*eyD)Q6JdUnFX!RHDe8*lv#%S5s`K$7Vcsag1&9 zSgWY?n*0in72Zmb&~QvkS;N^)Gl+y??~)vBr&ziyb+$a zw_3rm`94oIPMg|gfsJddHJ93@r@@N!F0`!HHt-o|A?rbEY%I{DmSqgLPXyr&nl_dw zabd{Q8Lmwp@1RrdRlpOoTnL;+3Yi+-0oB2Qk?mB<(GdoAI~CSRPxq!oGck|8|# zSbCxhb8Saimm*Jg!D17h98cWBdW$@HuTN1iPgEG5x@UXw%Py2A4Co zLS^MxsCsfH8!&4kQswR=mP{LCrWF>vNnDLsaop4*R)ff5S9e6Y!Nuefr!QmgWqh5V z2}9>+H`uWr9OGxg!ueTZ+9i%1S#-jlOZ;1VjIeN10*z^h-*P;ky~fC~&p6&W_E(5? zR(+_}$z0_{pv=3m>g(Bbg;hJB)&`GQHM=|gho^40;l3-sK91FWbAEk4CuRyqY5TRf zAIr%57&-9n9c2($EznnZRF8=PM5)2SWO4$FVJDV^@IohZEO$ZL#F=kswo zUG%dO4c=w3t_OSy2|uCDtuVbMzxQyND$?ng?znx^(-+a49Ney>$jbsV~cJjPh5(_=l z=xM?=(i%L}=b>s3E%(qu53TUfL=Ua>&^QkbcxaS|f`>#qv@Y7Ag%KXw=%ES^If=AK zMIuUXQIT*8X^)CTR4cT|Qs*cmEn6MKf}hLmv^wm0178`uw&pA|%XBmzn2clxdRcK- zs#zCxC4weT?3y$MFC)hY!#00rcRjg@+NjUSsrJlng_3bY>A4n%^*b25;wYC-fbB!K z^!e@NcX=E)JjRZ2!X{0uG-Y;AEm&njWNYsVxuj!v5*rAKke zsS@RNc-im?De(!8tR`QRgMXTXF`|NFnaMn479Eqb+jB+~YVc4*p=u9B6k6z^J}(#1 zB%;tbPm3rt%0m%_MtEqz%T;(NqEM%YA__$`i6|7&B%)A6lZZkQO(F^{bfk$WG=B&R zWoRLs^)qo-BmStF&Uel9`0pBb{oGXvcb#^9iF2N2vCdsrlu1NCJ=v-%DQK=3a((s{78{${ zp?q~M`-#OnM|j?QEqu^48Iyo)bsuu)$W||n;wi~;xkNv;j4;jKYG3Ax`Z8V)ez= zZU36$MR=a^jv+!GvAyCNNMYhOD%7Nb6m?{Y7f}Tx(PX`$!X4NvexvHewlKA5Nl?Ar zUeO%t{bxcR*8x%B`_rbthu4@9Q)gC(wGeT-T;2UKBMeG92rG4kzNFSh4HMmue!OT^A?P}g!MD4?Z^HKGIy4kXT7sA24qXw1Fi6db#t(^G9h zM=7qhSZfZQSZqJFi^vcj@h57^c70`t@|dagRcj(3wj4tl6pJiR0%Yq5vy zZGnv{d1PBfJ-6G6->}%$kS*!C9Y5Zb!_RUKzpcy9GqMSXzu<=@?tO*DI){G&$vENa zcd=ca{9c8%k>8QShgk`S-)qef4nLdOD(bmIZI5pyw#Sz@vpsGqL7OCqWIRNIUd-Ub zL7WdMlb{tBb*Q|Zb=a~5J&aP(3<>pnAs$HCPWV|oI0+d{#Pib}FXJWD}TMhX6|5~SA zb^WG%K8kL&?*3(sUsMyv55Fbv=Ip+X<&*)5fo#U^7jE@W)LlX1UDe$)5E(Y-`2(C; zDQs&tF!4WwrSpYODic2t9}qtn;o-TWyb@o?c&t$;<&Ca($%|dW2r4|W$H{tbqX(l= z%S>ie>{hK^=2epl3s7@#7Gtfu^iH%$Ya6~W%0fNr8GJ$2rN+)vf8YxZ_G!0T{xx3! zlO(+s6*!Y>V8~(!Fk(reiN)*EAGx}4U{_QZG8ELM{y{UN+CKG$L3?M%Zuz??Z{mH} z>Mdxxb;+o7l+8;*d4~z_Q#)ihS~j(V_9Q%SCXVxf%#S%>P&h{i#Ebj6&cC6P1%j3@ z0|yjvMs!jm||tdoDP(cyvw8r_!0j-fe6 zA@@ANhp#U%Bd@Mt90c=1FTQ4w<=a(FIKqq7T?;s)^+Dh2gUGZEzZSnO@p~WN!T|p;ZxvpQk&PB!T6iaZw?DxP zpFz0rAp*+0uYH#mYU20vG1GKqIw@v4CnmPV@AqP+pYtu;8Ur6YQ8g|tJYkvo3%AAi zbrxP)xRM$>&nOwsIDb*@pP@GU7CZIPYoNsN@J-Gf<7-yvBaaKIw#VI2wF_%0GyegW z(R6OY#>-{cnDE0Kp-G&dwTB(jxhXSrPy>7Oq?fp3)2g*O+cN?#$O_AedYNH(O(eHt zf#T^&_i{dUxF>G6+#br*QXSnx+e;tGviyb1d|4h0SFKK#<&7LT3nN}7ICOja&bTGm zW9H}kQ*Aewo1b6z?QL_sSC`Eh*D1Pxka?)My^T_D?@@*8>_DPiJ-{7Uqw~sEm$SsW ze1c^{HYir>NL}_GP*P|Y8m+9(AhE7glNP>flDhW18NlXy-Y1)g&Q?&azME2@xNU!* z-p#M+T>0`Rva&t9QWpZ(N*W;r-|D&J7J~U3trt`Kh{N!jGxtJ3S%BxNr-%qD31pJr zpg1>V6BmLRxgM6^h%!WO5ffQ7L&?5*wo8^atZ{-Hvo7^Qmz8F)F>n?7&~8v} zPRmk7&50+5ul|5zUn@uoGvPW~Y%~nCFlDI2b$vQ}x9+DZls7%IE_;btb%@bs5fGEj zhb3Eut!ErbCQ(wVJ|o@oqY)6L&L);0b%iMPn5e~}pT3x(T6_&F^}8YJwn<+-W~ED!0)T{i35&gqIorMG#y1P2pmi!?O3%b=lC_(SMu zyNeS#I`Z$dZ^uN8j;0~UybB$*CvBz`wb2{49%9hj7 z5jy8$XGgY3M<3w$97J#lgye!Q6jI+E_s^Bk$+JTP!crp~GXlrHkVzDxOx@`m`z20o z(10&5iEGc}`kaV*H5b$-A{t6-=}qXR$LJy2l*_5djL(}=Pp{?`9zdN&k&%v$uQ?%n z@S22>_5+Xp{}R$A^yS|oqywJSjBSCCa$@4S%HP4{hZ53*SPBZiWreqMeswuxD>a!( ztV(bAsEpWrttkqc6^cE_ScW-Ve_gtizbUAs}!xp5IO->}VAe zPn6bGOsvh`m1>ipjks#oO}@GtOi0as)(GbTUMb)Q=fKsq=xT@+0!m2c%~lp?>})&O zq#J{^rOFo=`ekGE7nJIxX2M1?qWZqklqJx9boNq@)!F@-X5$+n!U+unK7XA!Ryik!^~`j)=&dl**T)5@GrJ zW7b1TpWeqJWowa>sFT_MXj!sjE=9sJ<12EAfHHJ-IvF~vnHKKsOz7&bul)a}t37o* zRXeHwYJvLuGw(uI`)dm@SNT@UrgZh~D(LD2J7UXvLzbEj6X)(VsqT}15>X{0UFD9@ z1|fr4u5v#Q+0u*O1xbS(D-%3(RVU6Slq^mEGh*BoVmyuh>T$Wj@Y9DGKxvUWUk1u3 z?9Da_L)%4HfpT?u7`@iu!SGG9V(K04HR1cVl~{SxMY5pUiK6&!#<^G1Q(LXk=f_NtO8)o+#QfW5`OXsL+dgH zt?E??@SD!g|FTDaI6vvphKGthLU1{_WtZCg(ZkY{bKL+`uMOOjYM;Tl#y@C2r=?2H z`-hciKB8>$PI-Yi9ywLtAKuBNs29Gq>EtcxEStO(i%Q`ZPI}k*mRC(?BCEq;W{IoX z?SGGuS{)ub&sPVogPOn^-pgP)Jfg{U^z5tCT~SYbzBCzr90r9iswC1xV!8TB>$x>t zE>YbnIMij$3|Bl8c2ghl(`K}qN)Fz>5VqT1T>C{^I9UGASzxT+dj#hlqKlxNIjjGR za5_03ljtLLdUVY@{t7Hlj6e1eirMT$?wuGv(s?`5@Q0o087qhU+20~!l%$e4h%)m_ zR1-?xp;j1av<_%UT<-LcOHGl5B(9;Hy(BM?I_pVXL)n^~OHQr2MAaJi25q~exV^lR z7NnifST*pQc6@l^I|+Z^0H$gEwLT@h&h!w3PZg9p5|xmsNhF$y>mVvDN=@qwjeOi3 zp?inc@u-qST|~VnMcsZkUF6^#wk&S*CoqlA1n^X<2@T~ZF+1qlukde4!tC^Y3{#m4UmTeDKwqD?bB_>%o`DI`rwwj-C z&Vky}NK~>=2M~$<@Ik)OF@<219f(~uL9y$?-o*NaK69kVRUV3<> zfXjyG+SLUXi7^Tvvvren*Y7l9#=llLin8_D`wKbNFSd~iU-_IHSk8^#tNAK^@A$1c z%EJ%E^n8pTh~fQ6NAD~g5yRh&>2K9~xo2ZoU*-F149|(-_ffvw!jkwGD1VP(n(?FL zeuNBRceoOMyNIDKw@4w-)DAM_W{D>1a=#koO191{a7RI+60wF)9}_m)Qm z$G;XA(B(6*^Xy`oNzuisP2cTRug%?|aG%P`pZQTc>Uk}A7ZLuCNzNo)=0l1axI+Bmt^mvt?ty=8K zAn-FP+82ZRy)ypxhpd`_ezEbq7p%?dVXL;$%gL$l3clRcY^0xn=*rOp3fl>x4u&3H zgN4)hXIWcdlpU71+DX>Rz=mc}G@Wgj8Q!=Uipy2K|19!OuDbY}tcXyipBI~TsVr{3 z$Mt4^$ug>6RHxHh0#>rSo4HCVv5e zOKZ(v%zO(U9`#sKpHcJXt02|(9cr$g`019t@eY~JZj{#$TW zqat)-9m8Om2=($(s)@lF3p3oH2}m8$pU&^RO?drMEtr-{QA^78YIwkMnpMl2Cirk^ zn+{FVRHNc18NT36u*!(e#+}OxY=WeMQQ)e@FAA{{HjLDOfET?~+dHa{$DCAO*51pZ zcEg@!?P{1}75&@Nq-T+YZuh4Be20BxDG|112i*QKD!o8Z2RGU~#@Wz7u~gS2XwwW~EUu;bA`!bhmCx-5UAHtjf_Mg;2=;`|!K`7VpBJn2+c?ws)i z=?FkX_!|CdXIM}_CijXWQ*GbHKod@(OrecmIv-Y_KYdv782b&Jneew%`0*dFMLd_d zkok=)lL_o56mDRX3eMR{`+l08RSRX?*e!YbtVD6cf?UZ0bruDOFi<+QST%l6Hjg1E zbIRAL0ZkC@e8?G@S7?Co!t{ETR5RW7&T4o*%tXWDX^EmA`1Rx>cXI6Aj=M*kEp2Mp zE^JiFSzpCgN!+Np9%=g!{h22S3`>;xHa+2unw!r0XlEM?FGsoy}3{n$cbL(EJnll-siEEs3cy@ZHNhMF;5mk69HcbP+ zn^W;BmaF`nY(|)-O{oEc)#bX}*&Sz0&DM>c0WQnaP~?yrfRvhA#CXv<*=-a)7|Uy3 zoi&(EMSk+ys9Y>;Gz9nkAa`JjWz}?MQFKohRJ9`uwq$rzC6v$S1lcAHS0Asv4p&ZX-OAEg>C%g z$tzavOnvGIo&jR#--W?pFE(QdL=rm6I&IH;)V97ur|+>&zeA@lvwa=Q&$+S=ci8UN zSXDoSx{>q(gb(dT@=Qs@i>$g z>`Hw$uSs;SM@z$%+EB7xqr67z)3SE;hkOxAmPP1di(ih-wlwEsBd-T;-?Es>pElasprsd;T=@3i zRDnM>-%t;~m5-FDC+9jvBI#U4M4TSGB7Nt^twGyisaeNzj0d)T?MfxIhGG1^A?Wv= z16%Xk&ZF~<&&y2Dq;t(%4OaoPoaCI(k3GFJHTLZ8)Yz7Vsj<`h!a+JpmaA;g>ZO7B zs}=9snbv{zsx~n9D>O-F2N0hLFKCg;Rc>p`puaVi&kKucZ>NtH=nl+*L><9fPFuV+ zt3{4>t0(r`T@tuJ&p1@HTz(?|2T|$WF>O9CV5^|jV$<=@$|c%M<`QPP?NYdIrdQ?w z0#89vl4QUBd%B$5!ykI*^Yi4l+hkMu5mg&*U~6&ZP}npgO+hq0g;ih6Y|*U!TKKdq z(0OxgUcTVkeKK?cL)@XNV1?PNdlp;$8^ZWi0;b(_SRi2Nil?VxoA!m(ujGdfPZkDG z*2=1EG7`&xrL(Yk*(T%CO0cVeAm6!-d`rg%dYTAEH6b3Bjpl9^(T&Vm+`){BBIu!Z z!YR#?OS?2f5^3#Y0$Did59+!1rf3*FkL{bNTlAaDImGkB^=6@68;TUAx}DTE3bXP} z?+mK{S>4d+ACceSLKA*7O19cH;nu}!yUU6@Gga(7#crXJ zs?@9-RLL%0NhVfufwD(w-NbX3zFja+=Z2f%Y!bWSJvz~njbeQo%86ofdN|`3;~{36 z29zC zw)mPF^vB6QG(h7UDrx`4B_RMW5ZGW#&7$B|0 zb&);1fFatZTG&=zV4M|5^pxix6!d*A1o4HK`g z%Qr&1^TfKtm;YO}+S)=?r=kugs_=`oQf@K;AB=Z-t^N5_+mY;WuH7FKB6h!YzQ@G9 zyf5YB9}IuAHKfa8qu5!S^#$8}^XO)3=)vGGZ|gKwn{(N;upU3;oqAs^XU(>$S+#2e zVw5IgcBt)ROGii(U|2eR`!4&-h07^e?6+xibhClB=-!9CdkVp<*4rlvQ9W9ZY;jr^ zcD4>C?+7bfVMm(o1WdMSDD)frP|Jid_osRA{R_#NdZw(MgP_x04g@Wh4)ZRoQFuIrFzn;r{3!kvr42b z)gvh>)??jyqF4{TPG|ob9{wZk`>Lu9^S)I36y)tpuZ-nrGj_W%)%H6GP272JVb_q{ zDcel8gS+8dx4I7H8B()a239>ZfT&;Nw(&P@Ku~_e1 z_ytRKoX?3c?KxV`&0bBumglj%Nz4i(H)-dbq@6RY9ofxk=WK81%9FOx&N=kDter*; zqO2W1)A6I*G&Lw5(s<4jt8o)!_znBfg`*0Z*lNVsb7tap(DptHm+Rhw(-HAAh__4P zg+)t+Yf9B&QS=JDOSWt*$q;me84E&rJBe98E0 z2dHMem(6#o3mcXxuV1Vi>VT(n2)uq|@Oe7b_C0jv zGLS-;Vbz<7EgIZvvt4B*-Xt7(=D8sSPgTMFyx=s_DcHfJP_T^0G^pTmxN)S?gz($H z$N&Yi?=CEYu<%*pGQCD+#e7%Cd}oy9yG+3GZG?Zz%2%7eRJdw`_^1ZKIaaDrSr=N| zD7!dFYysspm$LDO^EH zglXYffiGv6s519 zroR-!Ux?+diQo6e_^sl%F@DdB_RqFoMU3kN96xr3kD{Et3yKLtmSooDnHov1bwJSJ5SWM7 zdnoN8DeI)o@KA-9Yw}P$Rx`~*(Q@7Bp?IvOL7}|+yfdRtClTR;wqIKL)dn4|iObRe z!zQPxNS1Ssa;__=|CQZGl;yN6d9JxwHrYtRa|R<-(@o#F16IE3$++bu3GUqk+?*tRV9v+NK8*zqDxgr zmq}G0KfS~wKI;-zy`TujBtelY`A^5+i)|KEaQ9Omlo~3wD?Y;s^8K(g&_HQYuWKvSQv(T2fk1* zn3?VnVWynn-d_!sN3Tfa(Qmmt`c>z&*Mi^<%x~3}AT+n^_jX?_#XpWkHG%Z&C))1_ z#rGVUK(Xc*MJNJ~r|6w4LLW*Lp>5ZGt#jhN&8N}ZVV2bLB6HrYk!M$ht!|)rs~N2- z>@Km5^^lhYLtS_GjHUa;8&xh>d6b63G^BO5=JUOU!L_?ce<_noFZ>ZQd~+9DH1H$X z)9SG8TI*@5?Gfxz(1fb0=>n_t1}-rrhr=fLYQ{SF8#9dW$Wz$m$j6)r?hMb@;le zZ_#N{1Rf(lmgv}Pc(jSaWjkS0*`{*wm@|Skt#5CgYWol?w@Yi2SW;>_4j+APqS17) zWR`0*ol+j8@Xj_ZqN-6l36raiM|E%vItUy{u;awC-^*axN&L0GKI@KM)$a}WlC}Cy zD96|8!JpZ@)TO2lFtfkZs&A_Fo{m8ew2Uk)VUjez6Yu2>Ax&5jm(ZgP9Ck-tNA}|! z?uJFBmWh*03nRSQ7-9LO>HWNQ;USLQXrlP7Ia2Ph-&~&~1(>5z5@Qi5I-XM2%1PBW zM|Jrb7@`&^G5lF(hloPivoqm#!fWxhSDnZ|g^NIsP4F`{`%pNc>6w#c(&MQEGNp6d z4t8oi<*l3@Gv+J+?O$(`BpLGNKQTNjx?%aTGQHv>VGZ_pIymREVh}xwqKwGN@rjL& z%AFzfh+W1tcBZF=2_-$Bax1-@=pl4bqj;F$C!Q~W3j9t9Wtir`oMlpd5tzyup1jt9 zsQ|zn5rH|GngMEk{v1J3v7y7w_eO|<;!MJEHVd_6D2M0SG0gVCdUeO8mv|sJN-jNV z8;RYgfgowuwsaa;!;y4A=KLX+xq+Cn?eOA> zrAFl}I~T0Jm&qR05>7ONa&jo{n$ro5N7T>(Jd{T)O@I15$A8-I?y}z^7X3vjM;QX}qE6+0mvuYj7hiPOczFC=$C*U~<65XD&HlBS?~S zlz1^dI~B^ecS<8M9Yb>&PJ3MNnXuq6gHNaB!9R24(`;~)J$%+Pt)FC>Y`VGmqE*>l z$bN)$aown>__pVF1bJsK`(5YQ<3qNd=oI8PMvrl3Ky!0whshTh#9(;;%jnY1J_>~( znZrlVU?y9UqarR5r{gj@*;C{sf{tc1k$NJIIWwUo2 zYqiza)-``v_m3uRZ%G0T42W)yr>O5nozDHo->O5V;zXI>)SMoV79L0$(&YctqAGJW zHu*xD$bk$s+AP(tGPo;xU0$HI6Fq-ZDZdzCIF|f{ClPg`ojy5vkXlqNM{Nh+LN^~S-} z*tRbLiBkt$3mi7oWgRLvyhjG+q9|lw-M7)!$&b2=D@#|>om$!6&+3(e;y-9Cw!GxatzTa(FXiB3f z{Wr+G`2zyZ2fP=lwll2ViCChlGlToJ>{g$Bu9gjm=8?Q_GVBwn_T9FYS;zJ%T}zod zp67U8OSK=%rUz&?AE1tZEo@lH;tVwY6r7Mv5P7Li2c*5M)R4VPMzyAW2u zHPHl`_ugNGrk^t^!qlgTYC5g8X#8|YUPGw}Nw7oJ3Yxbg>2pu^{9TLhew0Jg7-J6W z36Id|LH3GirK3fDTEXF02Gwo{O#;V-L*dvr6pky(;P~=7t`%zPbvZ2Tg|g0Se)Jte zZ+=zP^9!mKi|2lyNX;%Oporhvpc|Zi94UXx7`iDJ64@TD?%`LDQqQ}-G;J?< zj86?cd2PEGf(0WVe>9LGyO}p(+X$ttGG|O8oez!ALa+cO1=^`g>nA01?m07HC2_bu-#_?Zp{cX9n50Vjhn31!K{HV!C3{OUf38 z6&CC4`Vf@$ge{L?3pM$@uN%CgG3&qs5>rI;HT0-t53x&_Yja+u$44r6Jn} zS#}8AVR@v5=;@uaG8*<(9MUKPoecvh(Ag2%uEVr<#b!WtVu!U;)yPQ@xds9wf3$gyCi2xMrP^D5D|_s>EDiD z(kmOw5O>}xRW4F}^_SdWF4^>MQIj%K{bQpc%|^1<^s;_d6!vD<6${cO6@~vI4YDn) zVXE%9RB5y2&jA}!vh*ao`0|^p>e{d5Y(n9SvLR6}J<_i+UlG4^;p!mjaqX#AcOE802ctB>DPVtN=+s(T{8Ro9p7yQJWGmlO_-otjP=*!hU_1%r>7lVjfTd4!NH(CWdCsO2$n=Y%$w{Vj-WvJ2+J*E%Zh!`+gFMgCoXJ; z>`b|WXoM0~!fg8-wO3U8Iz6NdH* zGI|EN)a!B+j}~k7y{KxDN4?+FyrVG;)w+1xIbQqLi2j%6or~|WDO!q*oM>K5VZLER zy0VG2FS*Cv0q8@6tud9aBgdbSTGyv7BxFvRarDQy{g${%rr38D5(!oe&`Gftzd94P z_e%c0pVX$PAC>QcSoZjsw61&K+6CW%Q6+?Z*88YceBu=S$W=Wx-h})sZGF%Ra@M%g z>hRsN-)|tkC#%Mv%Ql;yMN1_3r2WuT=VpWq-zk6Br zU~9;q_o@VmXiM0iOoAR{iIb>N}hp*#2;PlQ1pczR(cPSqNLq2!+5< zq#}Nou_st6TFgqbI=qd*+F^rEHcyVadMLh~s(T#5w-fl0vCF)OFQ+IrSGkM&ZCf0l zNVYh3Db#Xs80Dx&SM3N2@V~@rAHyLtD z|MbI*hf7c7u2VvGPowr&y^rxD(<^QU7@j1cr#$yfwZF_ykd4E4H+3`an$&;w>!@8< zU(G1)A3aQJV$$%-6gkD9OF#BK`khE-Tf6{%58TeKQS|WxrKgj&aW&dUD^cmOnCt?5 zBzh=aPaP*pkKz+;=kF$txA$2dr=xdFYV)!JLcF+`=!`c~qNp>Pma~%mwQ|{*7dsOf zP0A9$4f7DTq}nOKH!nS=r0jGp^k{oYoaA{c2-h4R^`08k%A7QwO>a-!poI)P+j+D+ zEPReYaUyh&AoB*(Z~(FO`EQI)<{>rvV~WwC#}D$OsAb$RjZhJaB{4UFUUDqv<~t3o z9A5q!q~Mib=3BtE2Q9KsIpq~lzVVy(aH4sHwW=lxe5L!5(2O#V$Ki|3Q z4PGYFPR+g|5LLj;_%0aX-=0x?PyV+~#zc}&nbUILGTjD&+sVGLJ?-NM7~)v_h`q;b zs2y=N)xHPGLetS5z`^Zdj__?#!Oy@6?SjA$1ZO8oqv_gQyB5s)yq#&R%QcM&J1-L) zE0=!UNw#kCgsmp?lQkmMK1O)mdPxTabv4DfM?RmA{^~IR>od8hn@_5359KuX6dS@_ z?y%+jSYvH=o7z^pbv`0CZyECoDh!nC>T=`4RbHf;BDQ-V$(fCJJ9t<#_z3;m(~`_a z8{@+tZH1}aUhPDdmGGSFNt)XBbgKR5uFcKXqCUB*!d6->A*;qngtBQ&*!!DACBM)7 zbm{lx!%Dxu3}})(r|zZSxMk^R*R$0n{=Tb+8WljoG+ zOK66N20Ya0q2Qru9$N3A1`kDPH|?Qhlfy&FCWnWjv^&m2#w5gJX>^Q7B|9C2Qf-e$ z#{1PP{}toayFsQIU(XL1?{LcVlujSrjEvV}vJ3P9H#8%hnkzA0#V3sS)ZQ{i5(O9- z$%4p8Z2sIgTlCo$#;Zi)qAfmQs2amG4yu&%6VzqzLD4obz>J5F!lvOEX37!g&?TJ6 zgY`U5@%6$6;%QTJp=^y7Oq_Sx-L|2QPU6AG?}Is+Ug0E!IS-vl`uUVOWkBs8ay;>? z0z?5jZJY=naLU{jgEtfiYZDuLM9 z_%}_!r8lU}b9TJz*I#|!u!773i9CeAoWdl#F5vQ!fVTV!#>O$N{Sl?4c<*19E^~US z?H+97MQhn@1Pb4^qYl-+92SOA!tK$vwMt*gz#0T{k7%;Fy^l(S@4`@SLEz2Ho^Ytb3wPtqjvX|2dB$~JGKVk%44(uLYII~Y_l@mWEmfs@_04Xc#dH;^&hsS zVT7vk1!aX&FSpeAOkHalU@$3G+0Z)(wm%Xj>*C4%>$%mTvD}<7+^9=U9Vq08qd!el zjun>$t8iLz-i24ET1UH-UW*(Cl;B3;6PI9aEnqmZb__mcbsk9>M5?VvA97L49>t^Z zALf>H;R*gFr{1r|EPu$p&8rIc5gF~u>=yocwg5F@!+ZgtY9k-&$8}3>o|~zOMfqz7 zm+64fqP#Agx`d*enUbH3-VWurI8?*uq$aX)FQqLkgrT`9c}=SAg{?3ppTsU*;c0$} zY;G8)Z+~Heg_jj7?Au=$5z~Kc>B|cH#qjCzdtuCXm3@~Mro{Lw$zNDzfn|lcG4jS3 zZs%LFAJu06TJt5W=8Y`4HOJLv->x~fHv0+=6~D*>uhq5+uTEe7+FnR+2HhRp47N1Drx^NROM0-Sdaz~UV9U6{mNA1ZqXt`c9c&p9J_)P9QmPXJ zTtcv#1)WKMZ{9cAXS=8&ojaaVB;~%s| zYhCDu$JXUehuux@P?dWj52kZv_1z)Dd-jJz>YL6*tXSC!r9dd^T)Uh!-a!Pt?epF) z=A%yRyY>rZ_nmT;_k0NK;YO$)(KhlqY<-xD`C45VmCkXS0->t%YLva^2V%a#6{_ed z>)%|}TkJ!f`e3f~Lzyf6vi2MjsrHYv%oV2aFTyQ}zm?hw538%7)Pog%8RAjCp3m)t zwUD2=bYzyl$i$iymHV;QjLc+~!~Zg3ulh3TF;d`q)9xh?{&|m*VE0nl?~}@e!cUjk zX+Do}2SG5}W~RYsnp2v#|GJn_vJIS?x>CV2A(Yz5?%ptQGrJTk!*JXYZ!esiv^LeY z6+cS;Ev_5wlHcESw7QRe%M(bWy3G?)j2@KGMMbgjF#mTG6=-R?QJLcTF@cv9fi*cl zCYTZ>So-;~{rT0h+`VG|v-4w}Ss>}2cAYtKfNaug_}Ut6uH`Dz`)k?j*_GyHJ6@sr zhJncz9!4`M8olvzyWJpJMn|-hqkmx-S*YbDcKK*U@bl8!mP753tCY#zb(MMYwKHsu z){R~vfr^;7U-!QrDy^8mA7Czj4^Up?iyO=NB3_MgwwJH^@ZX9?S7dOM4J>MRj+d`G z)R{HmKn|{H<&7rRRNK!a;0$0YEa=YU_o961-ZTA=4kNu8Z_`zM=LcT7H zxDco$XN1;;bKOLuLpe}qIOaT3dBR4dc%Uqx#NAGb`gmyG`1j#=XC{up$`UQ4j5pOb zl0faG$jz^KkA;@<$i;98579B;b;h${$Xu5fQH^8N9DC3QycSQNA5qPDx*rR*U5MpO z804U=@WnP~@k@UN;bt+)bNhUiIDEAy7nykjVPWoKLD{b($vo=rM#3yBuD1!ot+1b3 z+Skg#%d%$Xf04tZV^o2-ev#KVgv+p>lrwn0ols)%tVJ1$8GBE2R3Ty7^xGMK!p-T2 zG7|qUmjLb0gC?WM9#(%!9$1WZ6*=U$chXdK89C;R z6x0$#e>MVU1>>SnK}8B~^wbeC7#D@%F&Gzxm9cDG6r^jYY+Mx9$6#C(cBO3Sx=5t9 zv?v73etHLbA=G`saH83j{BXgU7VEzs`bY`!e^Iu5bhnErkqG|# z{Rt6l-#ml}z9F8ecK6ZM6i|Nc`7z?tL}Vt8O|_3zinasVKEkgOrjJyJVG46#I>4|m zj#LXa!NoCXD9yqegK;|M$Dk0O%-u1#(1UYg(D2u7T57A$Q#)enat~%=&^Ws9ohb84 zPc{9D;D85b#LRKt8)Goe`?MI0^WG4Hao*E080Wn@2IIU>jKMhX<6Ms^Ej2-~tbzl<5IpM2ZsZXlDIomFVk+o`sUO{{xXGZ}J~WI0W0efBmNI(dLtqe~>t z1F^(F{EeV?IaiujO$0>#vqZ!!=SpE1g;=k|gbrl2b7m98SvU~~5_ z$S)?HzUzx+lf{}Hlv1Qk>KP2}EX~Lse;#ETyQ^JxQ$9SVD<2}@W3Yw#caJ1&_k8CcM|O(^a__@VqQL@GY2@Gj!r5_DMlqqDTWe++32VUm^ai?Gz~O`eMAMXAYSJ8 ze66+L=bYiz zNpF60D3R=L<3y^&!fvz}=e^VTfu={RrapT=ud_ghh7u{sY9`3Zn7I?U$VgMtl{g#t z18%7%^d*XCUz|-xq$%R*4B9w%f!a!>JSrF^nnOb@*haDvNiDp7lhH(-;O%!+q=_b# zbrr?1;+8wCN1lh+HMH<&WP4rqhJ*}`(SCcP_S-)3Rwbav)O ztR+T+iP4tOJe(yqk~`pc>_xhf zpiX5zii|H9Y9uTmHLAB^Bns!IX;ntk+4xkYjo)^G=s1Owqry>pVrz(x2@SFt& zlHIFDNT~`>S`DC zJYndpIpo87GK+DtliUMw0&hId_R{OZ`)Iqc7Ma65KoSmOPpvKL{!(*_Z|zM2<7y!r zm`o*zF!Am92IE(5c=Y)GLV<)GsX-yekLU(oKMvoihyXCT$buea?gW2lLGnxN7?{@p z`KmFT=+n_$Yz`nD@QEM6B~h(9>ls*lw^V>7XIVO5D~2Qdb+P z$uDU*z92|(jVYU zBK#Ki7GDt1^b)MY^JpqpIe@e_bv2mCMe8bbyC-bVkqeKfqTr(xC zc$@RK`X~qHhm3fH8=gG&&_EURKKneXDE!l+zM%3$Rz56$Mk~VrQfn76P|BcUKwLx* zye9O$z#zU#9~I#+)!NVPSTCCHEs1U#FSNw1h#RL`#!SgEZrCyxe#a1(>_dl0DMZE<2bbfZJWZ zK#tJUaEo?8j^N=?z5XW3AJ+XqbLRavsiLzi^B9Jo?AK$V&2{&GWX>9@1D^W$A+9Iv zsn6Qua1EfYZ=qaoFGYMO*-_9)wo=S>NlvgeAD+E|Ug;_YP>?WTyDEAhf`Ij}dJcwn z+hZZa6h(?(S#{fHJq|UrZPqqKiikvwVS3Iai}5Xd5&2+jQJD|!{C07r7=CeUHGY>8y9yK~F-N&%-y1zLVF0yEXg(p4aSom8~w}OQ^=_e9L zq6rr6=wi62xhZ2!wtdqm)aF>2%DgBxraw9lOrsl1){bLAVF_6r9yz@NIZr}&!aO*B z`ljo|iy&-rtx(jY{{AOXlX@IK!WUs~b(}}_S>qbi-3SY(@JET`EnHIg$TMMG|GhnW z)N^9;@4JOd3zrv*jZ(4EL<^5tnZ<>bo>y2G!w;4Dx7GfgKEXfUFNOyb)^XlC&MH4x zILG1-7EU27433e-gviQ;wiuoo!#rW>{L~NAu)qJHc$oH$rgW}(W6`9kc*O9q_NTeZ zYr76a>1#J?;zSBq(KO|8+3V!0#`Un}eG0W)bLL z1J{Za)N~l1X#188L{DILg(rUv4rn`Em;Dr$ZYn2Bw-&-^>DI`XAnf(I!@}&OFq;Fg zdxm<<^>GT+c0FUQI9pXpSmA`YC%-MLA%7+U4_o?sJws#S)~`kwZu2CKh9r$G{F0;y zia7t@Mha-@&@@47&m$soe}5BzOAKARdoKF|MaF^%C#h@G@V zBOzjb*C_ihqGRkOqgf`Prrn-SgbJIWYs7o`Et{b0UCJ<_b*ryOwM^P>-!8L#>azDT zyXH$WNL`z`g~1MfD14Wb134AYC~~>=0y-{{>7(Qjyf{eC;JF^dhUn!vm)odf$&q7{ zw}J*~LNv5KHwlj&t?DN#@8!zK=9gK%J^n%6^%iSgWknWrdR-HVTp~v1l`4Z);s^x> z8e8Oz&9lJXy9|BN_H*X*O?dOYLT{t2etH)sqQ7Q~4LJ*YpW-66f7z<)7XCPDQ01@v zTL{tRsb$?2nIv&aGDPBkWN!{1VGerLBWLOtiA6#EFilB)|0XJE5_C>y1@5bixkZt! zxMpV3wHd1lKTY^k&R#-i$2XNOVJ039KNa3HUtfnzU+`}y*Pn^u{xNKe;WaVr=ON&{ zxED-h0MTe4aTj>Sb0X>ND@M*+U+dGgP_l8?LP;xK3x(EUvJMThE7G|!8y|XLv-dLd zRhv4+v0thEUhRoER@cI<%YIyo<;CM>RwIK8Qx4=N3ysp*r@>m2A|tx8lVWmIFMPDS z^y9A2#*igML)i#db(mQ|% zNLr5UylH|}1dof5$OjZOfT*3clUP+S(R67AIbe|rfLc+v^G&oaB3IT{Zko#2x!%XL z-^3UwSv-a7V{;KrD*94U?kwi;9mx|}lvKXbzK+RPqW&J!QdICDZ$i#!BWXfOendNqGRupJor&6pZY5`MZb?DH|9JQo#_xut7NsqGrtOM=oYrF> zCHa4%y6!*#=X<{g&ev4l4$XiTu2b)8DyM#Mpssc(R-3wZDJeHA<=V_^p5LdE(hEBj zBk^@l{HJ*N!fA?;_=YFGf#z>`YGGbcQf+o>D%Wp3up+yj^l3^!Fc{uzBmXTQ-fP+L zp35iNYmPUGQ)T{{YCBoTkvsV3ZyyNNSvUfBR}&6AZ2MGZm?2GAyQ{B@!*@$%1_^ik z9t;ESf$!`>UG)w9X92&|6}u@@4erE`;tVL^_sU;rgWt)9xRZ@(CmY00*6Ci$rdoJr z`-rwKx!Y35;k{qeJ}0|^j_Fm(2?G!7lgd0t`<(Nx?VXYwa(K^FW|=d)~`<9uhb8AbFWH^gSBdvRHEa*qlK(P?ui*|PZtO`gfGHif!=8V!l~|# zCHdEH-{kxi>!Q-(+DOHCA*oFLtNS>K9RKoPU5@_)E0)hsNA*9HI9Pc4mDc1X$l_b9$#1|3 zQwwKyUz4NJyRr6Wc3+dHyc^e~;W>i1t;y^Yy2}~XQP~ls)&ng^6pzX`wp7(8xhl>llz2GeHNz%m?op%AigBAIKJ+Ff!b{bzYmi0YFDaFEE_RjS}Eg6FA0M@HrE2bhQ?s$SrHRp;dL-M zWhZwZeyFP!*cDnCjQ3xqh)yw72}5}?FtkrnktGuP5NZ@9biTbhoM9V}@>fS!H6|ju zn=FPw2$68D4#@(wC-ch>bWcg%q|eW85_T7TmLyN(85=iIj5=-7v&f#3vS@*rt=WUA7Un3nCq0)VO z^Z^~P3xIEVPb8plk;8yfd`#B?V9pxM0Y-6q^r}t{5mnR&*$Z)VLffNhKKa*dW%3tM zqd57tJz5Qk+iZJOHu)xo&PRn&t9M^#Dq1T!!nTKTvqW@mBN>Et8p@VPG?{2eGs*0U zG|gO|@cH%kxBA{Ka?9p=xuJ$gE2~JV&+vCX$EaEu6)SQX9?yNLAq)Ebb+-r#AMT{p zX16)~2=RWkn5*g!l|f~9By8Ik+i_+3fbUtVFR%wbR0;om9pXard%lE>;$rJq?~83i z_@I%Fm5va1xteIQ*t&!DFnZEZ{YI+o5bIKOyy1xFK7oqsDuPwMfRbJBZaOpNwciA+ zoD8l8tTP>~*KY-^FLHLp^(Ezi*kD0OiRtCr}lTS*E^t?8Xc$%3*xBan`;$gR!5nhlXCZ zhMdIs8amvLE9^+z*U*p7wvl%_=pX%4Iq2IBQEa;wdRSX_L&UDA>%EW$d1T7%Xz{<$ zHG5KxVU#_c#^zNRTzWb!zWKR2G@YdB;-uD$5=RFc?K{#|Hs;r)A4&U}@Ir_j<+cFA;2N0vgTkj?U+;W;I!fUh)?iGxPT(5~DwC9cq z?X6IDAQq-z)5Q@bGW=qGrls{Ocem~RO|>2cIp15$CO6&8Sex05H46$+OOYEofRv%0qVceT zCs{1&9rBHySD{rH!@QoRh&G!%Pnr+%1`%_>Wb-=x;QNkPa-E(} zlM+^aDiPUs6beb*uq51ioQ7-F-Cz1;P52MIpqXbcCMBni;(7zre)d@OC6#-^St;`^ zxwTN2YL^^)mQ)VM7T*!oa1q|f*WhZG9(xXoJS$?l291h54M5d~s(tmDG<8&Ijp1r^ z&~-~~i%VTh1nf|RWvgxLgDBM5d{4HcoR48KnsQS|xK@A>O(KP@(cPk7nFEA!vl_5! zx6^0_@5+N0PTvBhcN%9CB8`cevaHzxu!5*HAC96M-l9D5s1Ip&j-`(uWglP0;KTmK zkFQagaE5)^k;h%s+A?&*%OWZ*FvRJGQT4fTC8bq@1cq3N8(SZG5e*En62JcogeMUp zK#_<%0tm=%+$3tUc%RG?bB6G;aWYsYC?<5Uaq#F&+y~sDi8G_DaAKX!p@2X5$tA+_QkX~xu*@RPm1QaI0N(_oM2j|f-Nmr2o z(~T6&7h(ARaa*9zjne6Mr-%=aRZ?_zxh8y0Y${ioVKcz#;T$?5Wwkbirm_GLHo=zC zxqbeN4TLa&O&SVrsvNH>=9?O?dqeC)c3B=X=T+cl*w2#efRyeUHz@8VkF`#i3`(AX zwU~FH<#n{EE4Cvv=^{LJnz|7$LYu9QI_XwT8%#|RU2Sx?Pl_Zm(#M1=3NzSeh97S) zb~a7AL<*{p3^9!QhCUTdj1B3OdW=$eoIqvsdc<(SRCRI7_x);(;JL=j-w||GX}YIm zPHB=!^8kX>vonNN^oBo<}_LmC4^ z8Vf^0^F6SkGfcoIqHm9X#e65*V^f1^d(6gao7>}FM~SvAFkFE<8Io=YPoaJXO?F`) z2uQ`D9aY?jz?gC483sa|w&X<5K$vQKim42P$S*v^FZP9WzOheg;51ELL4b+&CSA)5 z&vKc+cwSfA^^bz?I4ApS^1l{!rMo=t8^qgVxOlVh#u#4~!_#B$rz+ zx9$_^IoygQhCCcEt#SWa^C|&aQu6qD!e-a&64l9&tvS=qu-HE7ft%5TpWO0*C>$|H zy|Hr+I}nnPyHNxp9_!?6!&(%^k`1e^pM)oN^wDT@CXd7B23Rb50?+Shv7Ae1uJDdR zpsU!CBb!wuo7XW}k)?Jx5kjiWn^u)a!;C7Kf4s0Gwmpb1M}swVei9XdNfckyT6o3I zc7u;oyopgtD&2oAMogV;K4X{XuSnGdTk1OB#NUKHm zEyg~w!{<7=EqR#7UFD5##2|^AdFsAbw!ai*q1m-L{W7ia<^;z_%aQ55-32iE$UF{dga zO+_$RjUaJ{i;Rtlz|i##TM(FUB4$E6qLprmz?hNlSR*jm4Wc!jMpbMN17TaiccC`g zJ3(bOT44K1bS~N`joJ!vSt(7SiEE4d39Y`(mIS=*!)c4DmW!Bt0njO8a#m{NPsUHT zuc=(B6U_wg9s%zP|9A*qRfbWe_uaBj+r@g@8b_V$<*%htxH8j|H8{d6H9ErS8Xn<| z+BXv3tN}{fjc9_HG7>Rm3}VXI&hQaOqzEUrZ#J<+N6_1pOpgAt?VBrD^AhMyIMKd& zg`|r^%{-{`dZwbgVTy{6Xv68X-l2&W5)1gL86B?~P1Hl({iR$@k%sEkskSUXig;P> zw+dFbiZ8HfkjUwKWx|A)Wb=Cc)NabpND@s_np6UskyPq0Gt)Iph)|-U= zi7M9)ggdE+jJo@i=@MY0#+8hjqM3wtgNATZ#6f=A9hxF$ZUrUbVHz0SzEzqj6DNt7 z6BcHDC@r&+dh$IUbQR54NrAp>$GTh-gafM7z=jGVicGT-YERH=TcGi!bCX*%uIgharP_Ki7xGpjU4Dltm@B`ymW7lv z2YSAqP&>IfeE8t_WHokkh>*yGhK~~l3K#cfGrv__oVb(lF!LLFzy})Z=zG zp_NrSnzobU@g|gIyux%|A>-x2)``LsdrY2u7OTR|Pl~OvCFx@4qqhp>8>)iZu z!gvZ1j~~eWm^ECcJ}o?9<{g~p$}7x#bv>~+wCO#ST~p}$+DBrEeyWo;8#Nx8I^Y=X zsD$cK%l<%^N?#G{Yz>I|Tjnwv4c`)r%N>xiDk~E__JWl^S>x0^Ejg_XH8_}YnDMl( zaKKQS)VFU#7sTGzFhkJK{}iR+@%mp#@!o4f1F^{PyTeQqtk0HzCmck>g@2Rka!fjR z%m7vvo%$(SIR>E$KDcB^n1Y9CD3K|1B4uK0rlzvOHI>&D^w}5LU>F5m87=?^Sx;q) zl_A~nZNB^?nwQ;T*OP_s@w1)qM5A!YeCMhLK1WA*PvTWcDV_XUK?0i784N2CTizup z`ThNuOTULOvq}1QT;xHt`2vlcyaLf?4;B~0xC)6WTz!~LX?<$MM$Y#?bp+SQziuPg z2npbF?IKVj`e~)gDLT@);#M7fmV8dHJ2*n+a@$)ODTOfFmL%#M)A=D6{HRhi*pvc< zrVUU(vUX=Pp|#|=ejuA)#KiE)g2X%2ztRt=RcFF@eQ-=GsS8GShRU}-it2*1Ijr46 zT~PN4O!+wmQAU4ZT%tfXiJRpP7;Am#y%5xN`m4T049Iu#o6Z>JuFebCsZ0e21mQw( z&kE5}ED+}F&_3tr74;7i-A(cEjM3N;Ei!wGhg51U-1{xn;pr9Z6$Wk_>nnsQncqr9 zJ9mf>uku7T$`SvHV%4E^pbU1~`=NHK?P^<53GD1t4WQjI#eim~Y649;TNE%%qwcqE z*`jGy98_Zjs_Pw8cmhg5B_1gX^Hl*~_SA z3+uAth?7%o_Ypnf;#AvRgoTT&0#LA-H4@{_?4xelP{UCuH)=rmYH=Jj`=kXuh+rx+ z)7Di-99Z}Qz2AbYjOGBM@M&~PCE$X%x4|C6RmUj*)}g;sx`1B-yvxaB-$;P|Ftho;TAzm>xV81UgP3UUfCt|Y zqF3z!2`oWAu1~{<&9UIho?yWDUd$%El-zCORe)c*(TvuU-~ z=R^8(??Y{UE@Yp%`TD#Xoqq|0VVL$#g58(63L3FUGra<2V|_mR!_xYsCFfej1GLh5 z94}D$q4>bD0+sLCkXn`A4OHk-%S*PKx}{r z06R58td&Iyzdwa~k)6w=6seZ$RUmPX7eI=ds_jf`A-=!r$r3Z);i=N^=I2YlhdYzE z+eA&!4VZsq_-8FIG5i~m@565f8AjEM;kO)paVqmP{s5T_z5QUrj0)5#_sCCRt5GX@ zH_yBVdWl54!7Z%2M`@YI9c1o+Bea9a+I}l}d!X6Z?|&R+#Ont2{>11}alYdLmi51O7^B{N+KW=20?C6i0P? z{JXXHtIy{pWj12Ms{C~J{RXaAM%AlZeBd#Rb|%nH_|o@O+lG8ne3r#t1UXeSChy{n zOD}r$!;Zt^3Qfx$lKdYa{E%rg4U>U}a48&G zNY>#DF{rJ-JfgYM<0VWCx5kVNgkA@1jbJ`C-U#Nkh^kI0)qzMUlaqME;pLlC#`lNY zY#52zTyojRsHUNc5y!BLSWXmK_9z!wa>tmk-qkn=`D7s&oUCw3L6Z2dw$IpPa>p*t z0(R}T<*S;&VF63x(Z_}2S{(meSy}{ZEY)pnPI$JI{w1MMRQe5j$$qmqzC`VYM_C-7 zrwcaKQx2xna)&oO8j*S6CS@&$U7E^_RWI`C9_gCgEO0J0<-1DA@T}Z%)<4twrL#Hd z8^8!#8@UCB*KrweGlvNWKQ-^^?0w;CR39vZnX44fc`~nX*&1-x16Pkly>#e3Q zfbUWp!O4)>7f`rdTne0zIF8~kKf~HCy7d*dgl}Ta=P%%lX8g0PgkdX47`u_pX|Iu> zwC`j1n3XLevI%|V7+fUJm;DNpnux{ctWL1_Nu6nT!(tS6{(g@7mAs!LGz-V>r?TQyfZ)FHSv_-o0Aspvce`9FJjaEv#`_@)?N9pmT4_S<9q zf5z|!G5l2wKOgHQ-}#EiA;|4Wi-j?>=5QD*KYyiD~gG%gNRm>x(fg#A>g_a4!bO8LPb~v_9Tlk!^5o_U}4k_2qb_ zWWV~{J*%`hvmI%`z`1K6W?F5QgdZ&AbrO)yU8!4M^|?9yj3za-kh0NgHcaJbg;H}1 zZ6AkyjMbRx<}7xg#-p?@9p=X=FKd2hLT_P*ZPdb@UqoK*tk0f5Af0bur-$3O%QE^h ze8@VGeLS9(%~~a%bGGhHS%$riqsDdK77x*6Wi^bGGd8=~-I8N7^(rw^*&{Pa{a89| z5@S%Uq57WnZE0(Z()hQ;*hddO)M$n6^<8CPw4(be`p3^%_QP6fgd$539Oj>?h0^1B#AZf-#r@fCi)7u;%*I2z&*@>uah`7emgRL!G)@ zeSb_Ezl%qvfqzTiw`m8AQv_n}(+gVp6DBbmQ*Ab~(*)VVABjXgUF)TbDkhv)21l%N zTga}jnXf9TwkP?^JS~!5c{N5Vb+}~J1&CI|jy`F6<=HHnL1A$$fpUG{zX1)VJ(bbt zR84RZ9J-AD%V3i?hq5E)g*TMYI$|oGzCqM#JB3TN%`l!ltl7q=!vf0{{l9P34(Z&4 z9zDZIKF2MeJ+u;PhWwD3PTIuJss@iQDoDSk4-M?vpOxvOM=C?JA>)CM`aysP6G`;5 z&Jkn1!qMdTeCd42+k;eZfMUnEuT-W9HZ@ogKqE z*fYH4oWxE|xDXOvvbYzye6c80*=cfF|BX)ZNbB)@WbH3udZ&mx!YFF)bV~bQF+3)Q zBMC*3n`3-Z3|k28JTG1h>>1W+|J}N{Cs&kC9`is#Ke_lR%=Vb7vQe6cD_gVRf}0;(l+!UVME| zeZBS+-sC*B_Ovk%Bz|Y~fDZ2sN^jj-Z1=~qQ^}2B;g_{JtY^f9&Tu8|uD!L6TO~K& zp-EU$crb>Fm*01<%f815M{`{fuMjy2uY6x0+UI6%Dcwj-#p?XVBjWYM zuloUhhssgFED8u^VBq(>!*=v#%VSvRUJHoG3JI70hytxf>zOv4CSAoI!*D-;f~}$A zY6gdSiku!03=qc6mhu^w5lTY2xfi5V*_yHg=~6-XZuBdDt5W;9Zr|GfKmJyAw{K0n zHa7WbZ6Uigx%`~}wEL^SUf%sw=1A+i&C1EF(C*D%^dC2S)n?7Emf-1@Rk$yM2W!4k zZI2thse0e_1y7omKwF}D_uCf7bOC=a`#toLQu^*xO14CUAVaP%*q_>mcd{kgo6T#O zq#^ir$N-d>^mHf|e#UU>Y9`MD&Dh3tyXcB~vIy1cWvR9=TK}huHq>RW)ZVBrzpzsk z-543Ka@r}?Wv6S84wvo62WXU$?x|0mD;-$Q4rvhH4*b{45s_oa;a z^W-^1!yu~HJ0C zyX@}$`H0mRq|!YZfIl@!iS;z8oB4?a{_y@LcveuRj^s&zY{T3zh_yhp~3L}jdAM2Kx|4F*VPZhq`G-15$lciA5{o@!i?9oQBLeXx?c~H zuMl&J@h^UC>sVWh2rDJwsNMQ1*?*uVV3jsmzTf)Nv9>LSl9}TmvJ;iu{nY4wti2vX z+^B@Jt3hdaM`KjF>AjrJVaerjzcpUE0ThiLqje*ztmp${tIjWgr`TKZ@Jzr7=NSt$ zwxTEF+g@diQKZrJ9cHgSO4NQMpzoafndy#8o0jZ;G2Ps)-0~( zXf;gvoV5B@)0!Oz_rvJCbFdmoG+L?5eFg}Vhtj!Eb+v0rL9^28dh&#fq}Kud@n1Y- z;+O`b&q|i{Z}^d(4LO{`H`eY~ZqH!y?@8AEZ>xo*YGtjrXKR5(Ml@7I-CMmhbF1>3 z(}{c;ZvCvhxO3f$0j-k;*^Cpz?oIqmxaTgASDW)I(Mr|lE}a@HB;tJB5r#ifA3Ki; zsHR+QEOPyle$)&`DOHlgevIjY);;tZWNl!0zE6g=(S_OrM+Mg6T^!9P)dQ7h=3C zhF>GS++NWx@)mtdh;Fh=SBH(V#*KTu@7U?W0CJ#{qM9Yb+Rqas@ibWFwoW_^FLDX- z6xpG%NIXTf!uP)>Xqiux9Y4d*T;)2B1dLSbg~LfB26x`Wxgc}2&YtfT=~JJ8mUYb# zXNUe$2RHK!?{IsD*K(4+S3Y*9ycUSksng(r!$e3z@%}pIdj@sXI5wRdzjSYu#2+wV`J!)5>vbc&|za zz_!shcam|-llrpoM>k#M=d{+ycU-2?uL5M#P7V(+qG?Ye@;N~~InhfkF`2Zu*U$NA?yN1m0H-dj`ttFplPmXdH={%W_LQ#kiU?(Oy|!cEj49(C5RbrB3hIQ z>?n_`4e{VE+JmO?2jgOTv z5=M5GY~U`P)!pC?fko>GaY9Q*kNB{(>9`p+CuX5$+DzhBFU^V}ZS~^php@E7oB>|0 zE+=-tT%ldmHE~|o#5r9PXLU`Sf!B=aEn`h1Gsq?yN9+{WL5G&-VD`8Xf160Iud#a- zsmxs%u29Z{WJad*U4{UMwaI$Ma4 z%ik?7Z{xd0C!yM|Z3yE4uTvKXS{g~QIONZ2$QR)J#Y^~*r)#el)gg%s7b7*PwznXJ zVIhR6ATr5&x$|deqVwgn$FE&o0&ar?qyK6+aJMM{L~?!!_!8iEl>Ht^!6f~oG8MsI zP)%10>`CqY=Ow`Zejl69`qYT^8s#xyKJ>=O&wG5jzUJ;(^ei>y9sb<F`KAVloh~ zT5<8})=tukcOv4gUx+NfW45YmF2^m~ z8%|Z23fJ2Fy@6@T9Xt(IQbspeRR4qofcz$^RWC_pP7o*~Hw};BYX&mCIkj2SA9UOq z+ZNt$1{3D=Dq=$BJ(Rlz;cQXgY&6b@mn8O~*uc0QopDXn!4o#pPSGE;%B-_8ZA`Ht z^!M*DgnsgmLQ5g^D(JvwMC}#JbfWg1yGnR{0Go#d$7@|Bh6RA|`nb6XUT1rE!|RG3beFv+ip@nJD+i{Z5~Y>eUT82&YePsOk`hIa4? z3Mh&hw1D4yXQ-E7|m`VQbYMqKvr0?f>v40zN)R9X>`gxug``5=~v44X+7W-G> zvDm*w9-HA`ZzmQe4p(n0mq4o3Lt~1zg$l>*tA%bv%&p7Xoh{rd=2=tq^V^bD^s6%R zf3v0f^7-__(vn$?_?j%A?P$Q+g0#iE{DI}Ow`9<7?xfZKAgiPyHGJLLUcMi1$bO^~ zhIQfWT}#W!d_CU71U4$aq+Q;l>xS>*aJBCx!85uD`>3 z9C}>n=>nBQ09((DnW-EEbJr%%g?n%kERdt&`DifGpK#f~eg{C7 zcTKVz3|R$x+A*wzG_y)7W`p`=VwJo3ELrr7+TV&@1b<){W!(%P?_)X7ATn>Z%w8tP ztzVDFj`+9e{g zo9Od!1U1z)fb~6pkkl2az84QoSBhX1FDCCMtBJ%Yg2V9^=28FnIn{ran?9WBhFwcq zf2BOW-WdKm!bUhAo|(wpC`VaH8|gG^yt3IybJPzlG{n^rKL_36Qm=mF@2CzD;%vM1 zxBN8K=!-I5a5vT0dY7bo(7(-(?jKi4ZVE}5ILKS9k1cL_fJ#|G+8X z=Tx4{6J?$}d|%FSI@9@)^=f4tjjD(JI8Y$x-{cg>$tldvmTZn7rTOZkyyy^;QOPOC zvtoFD)Fk@%Q}4h*i@0jOjKRfki1vhkNj+}}99p;6=UmGo#Lz`?E&CbFGw3i*)15bq zh6r2^nwwqQGD}4qYs9Le#f-n{3AWhP^d>T*xy}2(hET_g=f)BN3>uY5){3sAo1Udv zE#WW78*B{Q8yhz(83s4bCRjJ11nw{$O+9n<4fGY*!_H!q*vJ^uu?pb=&tE#a>7=3jM~UUNxeU&7|1atXYte11g7xw@6xwVZf6dBOZkVN}?PgqTWxYnXr{&t4ujCHZ(Dg;z@*QDqnm1=D z$;%G<%k3;QNxC_A8{8-AqjAyWzVgCF>>~?DOA6I_Libaplh? zEF7UfXT+3W#S-Vm`0N-yXX%Rz^J4tv*z&$H{7THHWnVK zuYO5Cq`s2m{lsr1d23&v+75vEGt@0L11Ekfoj-%*O2j4o(21Dy|zm_PK z^sUtWJS<*g$t){t)T)iLkcl)|#&*)VH2d1-emc9V&owones+$W9>mX{ z6r;pp{1k@sb0|Ltd1{)UqVA+N^0UHINAXi4LpbpBe939n;~xh*b5+Y?$!9dx=g$DG z7x4 z2aqCnH%Vl0I)9Sk%!^fSjeAUtrS=*_hnte`y?3rF0nLFdxu`nXX z`?IPH6Vy20Pg@|P`ZR_}=5QLjI|1Hdli&=qMj?AnsSeUH^VF4ewnu393*Q*9U0sW6_@!gziq`W-Yl(4fl}aO>$8dukcW#T49q z$k`;(@o>G&0CSZ$5Vg;>nk_0_9Wif$&ix0dx6@5%AA#-dI?nusIKrcGnm^tPOR9=% z--Z&I)_ap?j?lCOg$>ND5VRp{*vx!fd@?LQYY?YZR-a)>*0DL492XlxsSU%LtYJ50 zg*BWWP7z8aLN>|56eSCrl&qO1xetMowVaf^kzypTkEOLnl&pn7vQ~gfYm`b};mONm zvQ~zYh5nQl-mA10MK}%53i0f+znyp$MV3^XyaCvGUZKH-NY{TxG#WA5&?xLvYT>0J z2J#Ys@8?2B_&Fzng+=^|`b4fI-V3-TT3(lvsJXPzYHMCxEH5bg^CS{$r}jUHH*cH{p*Oxw!ss7yNZ{8sY!u|1JFQzxDqR{=h=;XOj#3KfMk38^9{R z!e)Q#>%ZqG!2k0R{%Apx^?%4#;m?6vasB^hio<_?4DTZp{2wMPgTKAtRP@^>-kZ+d zGlL*Jw~-xQa$eV)qkgD~iGDr!&Bo)m(hSyA-CEQEWUpZYK60o{avyYe7-$g^#=)vReOwbZHJ_({CV$_-5w^8g;L$PO}=XRi7LVI zTK>Fu5et#Elo7s7p+soJnVX);5ETv;f`ZkR^*EN}ST~&^N^TP4gQTn@5Ui*031ew%w#Z&1CvEu| zfK9FnmYA)?TvgH-jLG6@UG+=uJT(F;s_O~2RmVwEkB!^@03N`3`vG*3)t0h(fZJ~H z!*|~l4y6q8@m*OhHq*4D?e+q&+AAu_y?n7yz5Am^b}#0LOH*yvAShB%C>DMoNNMkp zBe9T%xw;-QT96msmR|~%)$iJTdCiUCWrTHHO#O2VAB^db6PDi(C_Yqk`D=&Sx|(ci z!)!;VHJmYTQDA*K>lsH@fc&W`BjGbB3^3ud<5X>|SLx2e0yB6q#4>dj^4Tg4G-t1+ z@Vrfgc{3Hkj<{`X@mRzvyGUQes!5&~v8vr;5v!(pEMk?ev4`Qdkuu}h!dh1}=vyNO z|I-X)b$03g=yR3#-GbGu3}($rR*Mn@!65b&Gl*5KI__ft$j&L{*09!DN*1kQ)!)sm zVby87T)^159T2Y*fJf>-+lF}AK>e2yYm18UuiOll!WvMy9jsMs3@-*#eVs?IM%Z&s zdShE86UbE1|7-h8vn4B8*NYWZVaXkdRcbe0j*!``>&G(l1i&^KSK*hPxzVnbaSF6l z2xq;b&$=%`?ZD4M)C@x;H{|o{DPTvqkE3*&qjrw)c8*j#-iVdqr8yPFoUG6A+*EaX zgq$sWi?%?g3X>gCt_Yu2sF~S_)hzo!CEZX%6SP7NBYN>` zz5jYXZN(`^+H(3*+v|bhQ)hP39-~-7m*}u}kqW$sw~XHLt8;j-PWm^Lcldg3tgC*T zADksv4>3oeYu3}LnUB=5e01KDsStADVbJg(v&{31cW@a=F-N84{4ClbnZaCqI15N? zg+W=Os!U6WSd()htv6!Y_*1gQWAi)~>5RxSdCi{J>9KJhlL~;mCXX%m*eH*!@K~eA zR(UM#vEZ?x9*Z>ZFpq8Yyg?pIIH|`X&Fkke(LD2$Oc(a_q)7Pscr23Ep2SjZU+yXP zvMyY^js@gWl;kHj#zOJxXkAraqlPLgp}EC*uw=nYnOH>nrPTLJB*t!-fuD&u|(~l z<1|b-1e)4W^hI#Mq(oDWRk0=(*>Cs$ycpN^BHH?v4y~YyRNKqUYs;oDr!o(d+K`{n zzhs1cmr`VeJ&zwnvzO?YHyTGWCFYd3IFCj9$dmm*(r3>7jlRLmncJgu^r4i@ocTuz z1F2EGn6=KXGtF*ioAdX`G=fe{bWVGkP-no2aU&~is_&_L>Ybmk zt87hjl_}1#;YB8T$-$}^mevGp`<&joRim3 z#7)EQo;1gjX0I2}d-&1WZ>bDE%p)g~)m6&;c0upeYYz1}QU4}`CM<1fWjKD5Leln&4Y|&K}O1_+M%aMF9in_)1Sj#C~ zONST-_%i|FrDfCMsmwv7c3+QsDMjnC4?l|Qkrl|L8DEv%)?(rz`$;nok0h+L5bY&H z7Gkr(&}<%{A4bAvQKLR*YY&nO5{1W*@ofdN^bBWgxy41;7=8_D10T%Ztf9Sh;bG(~ zQpf1l!`M!Uk{O|oh8&4XvF4mcUGFq1x?{A{ga3ZbW?52-&$7u*&mO$BSyrLVXL%i4 zZ3bY7UX-xRDpoU!j5TgRI2-e@vU*&Wyy)sgkh)hp2e$~CPFKri)`r||{aZ+DsJYFq z%W_4?<>DH(;_R*W`?_Rh>#fDQt`u`_Z`Gk_0bTG0C*F*NCY2alOqN&`vqwI!Yya z8{K*UVWqbjB$+I_A8Sp{^=>uF>Zidq9r`k=o9ULQt19S(-u2yp6U}!q5N3H(ZHTxPi2~?B5Fq+VN2vlOfUWV}_&KvClI{viDEof2U!^*MzjU zG2x8VLT)K9F6_{){+ci#=ARJrCt%l}oImPf0H+C?pthmkbM*HBf#M5jw@T?fm0soJ zFzR0Tt#H!xARgb37889()JV`x?C;E&ukzP3v=WP(JKhH?>~CkFL($K%Tg(qxFig73 zuF!Fv;AM{ikUDv|QrCrBEHy%LNZQJ-3BMq<3~FfG3~E0WE884u?;2q-sKp1Ef!Zod zEQ8v?{uuFlh1cqQ_}R<)-VnVf%7*Sw1Pr7uyTouo z@6JKMzF0o2`2$!~8dg71RXp;g^Cs__FF!zmPd>Snv@4?@Z7*pDjmP4~@Ds#EG=?Q4 zyZrpM$V2Mxh5X`^g*(r4W$yhk{HdicE+k=FjQ`p4mlS4t91-P1ZDbupg?D4^m|J)} z*1D-!`mwUoIV=5O;r>|a$ryeV!@d)&PkduWS*`P94?c|FT4bdkEOfe#3A{&nHVzmr9gjMPtSY#mG@6W7<8qS>7k-g&M-S@xZ6Z8yWL;@ z*iVVRajqu(KfTs<_Z`=Q|9*CNh20qk+^tJc5O0`}34_EAF6Qex@5{ygv|mTdt^{}+ zS-Pby^?Hwqo|6|mCK^p_mB;3JY=y^!(c~@nSf|I9c}(=0yiSiT_t+wjiE5KK&tt1R zHpgSZW3xOac0@_2t@^pqW9=Rj8zOJ2$0R!uYw?)4P)R2_$rIzIx|vw`8jY0QJp9bs z2++%f3Xz;RK)<}6tm52x_x{7Vo8kS9a~Eea&Rv|z<=(Y8lX31ky+^zC@|3AzfGr8rYF$?{Cmd9xd-@dZj6b}C=PT^1iQ&(% z-rJLw$jF-0h}FM2%CH*20r;?v{DZD0ER#+Q=2=(%6pLPR-zA#U?#hHNO>tTT^xIR8bFG z#C)k;C5u8_@b7BXsF|{9LM24$7SGqpQT`-F|HHXiJ4G3j%rL~UlY!jtw*l%%k7%iXhC7816NPRQQD$v-M-)}4%#l)6U&+FJJ18B%E!=T1mQ zF<1PfbYc4|GK-F*I6$N5S2l`YJVe0g?jZlizy`0rAm ze$Tj){yhkqmHPKME&7G>-rf86c^OL3t=`>?n^q}mPVgY!IEa7j-m*% zS@9BFej}>`PYhw0B!rx8V{HdvNeN;URkl)a10N7_1!y#6D3u zI9{Sr#L2#x4Y9JG)EP)OKo0^Ri-10kQ?J7I>_E!+@hxi%6sb0ugLUV}yZlWbFmv6| z`HVD?OF+O>+Z0NcwNSYk-~F2LIwz#P1fzydh;J7UedZ8JEZ+ z&54!5ftn0IUz6Av#l_u8Ej)rd>bS9(*b)Y>P{ARi-`97mP9|W0?C%(UAA7}@oO+7qUyHt1v~8AWWiqkxWTwSQvA1k{Z1Ih zF=KdTvE@zpnj(vqd1PQhn#!r@2L>&vt=5FoP@5Ol$^0@`wX^rUzp)|pd^^Uljh^v2Hyd_XyE#QTe;gF4+5buMBZI;X-A|x7JB;s%<}8 zD`2(DukPvHcZ%SF+_l>d<%74tnRbaLZ%XP-9K74f&#MM;u8P?~?Ru6i#V zvt=n;5*e$6*A42X77iT;p;Q;a%Bi*E!uHlkyidF)T-&|2c3Op*480pWIl@$TRpO5T zcwaEfk@S#+E0(d7TPKyl)w#Dh?!4aRl<1{k_BjcR|1F?8Cx>?(oXR}zl!zw@T4ymm zsVTaNW3+35ek9kaonyGujmSpe0Zjs~{P&bNiOo#-a0ii+?rg+(Pl=7p(p)EO#5LPX zsMVc~yn`*y@d>Hra1Q4iB{pK`bj)+O2W!aWg$*t9Q=<;zjYy#ME=IX-f-??tr&q+j zOV=mZcYa~(*k|{X$`J6Ne;NY*9BC%fpRFL^jxVXu<_OphL5~RdJ)7b(1RPY3fJQzDhGLaW5h zHci4rlzefDwD6M!eIZR1&LywgY8&ONZS)UpwLNUqUWE1cXUCOQw%U#~(as$l^ff`& ze;@2ZU0iKn|538qCQ24A$;~@TgBcYZ0?G>|@E4b#9ZTXtrLEI4U5ZQi>{eFcX3Ni( zWVjTo4<U!C8V)S|u|x#h=)V7U) zmuTk8I_wCzd(FQop2N#E&A+KBmME`mh#T5)EAUVFGWnTQ%ce4arjWcgWi2nza;BP4YoFO-fg#ie7aRe$1+2$U;jG+7W?1VUms;4#0l@~~w za;c2v++>(mzE)*o6AJVe_r@(ild{|fHE5o1dtgTy?vGQ|8Zx^uH5BfonjN#=Y`ZY$ ztogakUNSZqzFgLfD>dn|$^hd@1Y*>+Q;!`N&Y-!%$uwnh$eQpJI9%9ytxhl&7nYss zdgw=D_<9Wg8pE|Qye)=>7~T-WH8I>6!(OL(dzZxcPBDHC@xq=ll7tV$Li>9<(|R4~ z!7zkxg+pWMx)>%+PKdSkis8wY|6n0QSomR#{EV>db!+sn$$jpw+7s)tIE0spG_ISG zkFYJcQ45;z=8d-UI>tdl<5MBirs_Oppgq@kqf};kPE$pt)+D`M)ujd1GuL|VI(!b2}CBilHl5l*^8Cq*vK7V)s)b?B2b-Bs2 z7-~z+rCJAa&XjpbGt>G2*4p>#SItaIo^mGkLsf@GTLODO=>;rXO zPqeIsi3}OboViMfnjiATfp(WKoU7E_G?g&lHBuJ&iBb5jb{Bq1#OFD*TgidY<4&zq zo;)o!n-??1o^N^5_9gb(zab@#C=Lf|deiqcX}vqp0GaIB`+Bj*T!(>M#((wI@7HDT znZ@|r2C%00zU(8C-|refv|=wNHiG+}P7Bpf_}u4u|K(Ks!pVGLYUVUykv3wz|BLSo zHRC31v@6c>hl0FYK*0!@o`jUZ-IV8INE1I@Z{Jc=k!m|KN&ugFkd^LFE=d29vlkV* z8E3xITPnooQ*F=l1Di9EkcRy2oh@;W zts!S0kFNHQ*;(y~AkofjwUev-*Y_Zq3;W3G^H%P5G-O|?J$z(EDsvCn_1U#+`vOEi zuRnY@-Xm8f-3VI9#q$Sxv^_boP*;89EXI+#`hLCh(`S~^6YD^5BU@ZByj6Wa4;g!gRpc=Bw#qApFuMB0)+Ls%0ncpFRW+><>~1yi32VHRNb_<-^apg=kJExC_Z1FfZ~%o zRT^q8)1)9@H3m_^4S=-fO<4Xb<#1T#fMb&ySD{8Qb-x$ItnG0B)}UB3_DgD z^zc?>gj-EgPwap6VcGv!V!3e8=EVd9-d=k8eHpMFc^yn8auc%-@y&pdnsYGfZs`yk zV>%BJ!m?Vf;>@B*ce=kWaRlWJS^tY4ks@IlDEtE|I;8;D8nU+wHH(O9&%A(5VLFGD zQbyUb$EhC#W;G}|Eu!S~t)S!?s*;;2ER@k61m+jE4}rkY(om)m0)vujsCtmR;Bu-d zViqWORCJq@Z*q*AsYGF<;-k~q1r<~j-4NoDZeH8im8>EvJQV&3akUpAoYq1JuJ^Og z*=u@?R@jKZr!v&JJy_Hnb!l!q^&Yn^SkTjIF4XBN?d<98$kKqC(}mp)$!jYM`j81x zA7DZLFbgt+2*RZTv&7H`!hV1DYfKskYhgZoUXSjL82tK~!?S0PV@`}rAk;!2^l|YV zeEJLkrMa@UCu0@ZL~Hze+nZxC4G=FX&AOLHF-N%QUgm*ZPOPetfUY$(9eNqy!d*-1r=ET&?pW~dsaJAJ=QAi%q zVtyxDXgYk}wiPlEmfwk~UeESfj^8ZQ8tKM!nQ;`yjKFnOC;~?HTypGLJy?s)EJEwC zxwLB<5dQF?cJZmrJp>b^2J&uYRxE z)&EYl&EiLq1k7z@RIqR162e2|PMec}H^Mb2h*`M(jAg);UUC^@W;@lj4CiQ?yUQ3& zRAC*ZDFMJmN3P_E%47^$YG--b4TkO{;A9RQYENdx&Q^iiQ}~si#jnUah|ZlylyE_( z3Z(kp94Uag9wmNdpeuy8iv$qbo0)|7Xpu57VPY9M4G%%KlWlGF%&Fw2rW|aq)7qvx zUHx3D?HH@-Sjo$owaH$cANEj`QcR-J594`UV(VGwSo3j{I81kfT?rnLp@*pW}@wpeeO=r_L z{XyV!zQ#5m;E7@U7=1o`<`A~$ET0x_J4g6+J+!BjyJk@q1 zt0UY+Y5}`EOrC}o2kD}R9WM{<$;A#V;G+KKZgx&p^OKC(dP*qzMvbsW5|(%E8+3M^VSODTX{RaS9sIys$gHi~E*M2dCPe z1N&Mw9h7Q&f*+oa<|8aWgGtOlfu``a1X|l3NG%5xn+;@FAIRgj*W9PyRtCZg$?RWn z230sdrWQOJ@`6lth$m3FN z155?&67=C80{+jKx$hC<#S;NZ8RUUMl zWIubU4nNJWnJM-oY+y3SP@`lITD(1T9Luq#L)r*t;7TZb%ccWTnSDqV$1shV4o>T8 zd?Pc3XQCu`X<0_@=zAaLzLXe@v4Nzj!<13`>?t@1<5%6F9E;Q&vsPmNer_=(*O zfR34eRN2gjfv}RoD=C`@(99ZqYMV4IL%B-$W8Ix_*jW_vrsha(?A zMupezK4vq>e;Oe$%Fto%Rw2JHd?`XcwQ&0*_Di)j0GuPflxiD6SfqZlt)Z3S>J`P} zh5kjj`+TkfWP-?1w;4oYs|N6wFfRcF;|Wyab6&!-=8z^V+DL1H!=Ud+IE<5I34x4T zlDKuz4kTesW5*VU1UU)E{*mu?+fB6Tgsmv{o0tSw%T1H?Y8^j?KLoQQ`p<@>g5ZjXsVyisX$78;M%k=Y@;RZs3$0`iSnE@X2jbCP{$F$X> zO`$eznkGvyi`EZ-Ia75ZYb=R;TZ^)yPC%GAlNZNyI^f-d%~jAcsFR?buIXq}r`qaR>fr)1+y!$kAqzshHI#@p z7s9{JzfxWD$)oDCBhQv-C=|5CUy`|s5PR%&^)f!;`bJ2ZR|;1WWtW6TSQi8DYX%GZ zoPLtTFr159kIG1LD)Tw;KOBlPA4`oAOO!;fz zFh@l)lRt@u%Q*aPvI5~T0H9E=O8%s6-bGRzcT*+b0@W0Uj|#Wr%T&pw*L%ZH*dK^} z3;d@FZl^^UMrAU91344@j@@C81V-?TL`Ee<9Mn)F4JD$r(zUjgZr*_4?*hBhwXT)k zOnEI_rD;8fdl_~aI`q4XxzH0)OobsuIBKc^eq<0G|&1xDQY$Fq6>J zmk7#Gccj*VP*-x%{}Jl$*1fNbQS?S>fi8z>XzD@T6TPFioVbmSPCOu7d<&f%PVa

v(TC+?JP-N*(~ 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

dq!31%BCD{khDv2; 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­MNj8~vF)hrYx3ShI1r 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 z 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

slT31gVyqix)MTBG$# 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 OKigdCvq^>IYxW;(@mV4O literal 0 HcmV?d00001 diff --git a/mybulma/node_modules/node-sass/vendor/linux-x64-83/binding.node b/mybulma/node_modules/node-sass/vendor/linux-x64-83/binding.node new file mode 100644 index 0000000000000000000000000000000000000000..8f61a55830a104f3bee5b808163705cbfe4af408 GIT binary patch literal 3389088 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

A9 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

-eIq)5Lq!XM^9H)my}G!TzKC{8w)iKaYOt z;;)dOK3<^Ci~PNeJ|O;C^519-!s~o}6rUI5SuYbmL!RsSRopuz z*3lcpf0#V9s0Y1C{07v27r&hOKjd8W9`S3Fx75Fb=hgef-^BaL7>`oVN#=LH2$opsXqhj`!1;D6$IOScC5(R0NAnRCqJx3f+Wuk*Pzd@IhS zjlV?R2KZTgKQsEPV4o{8ms0p2IF~e@qdqhEpQ)cLUSba9@a@@u9$$d`7x0hqzE{LI zWc?EUS^BYzugp3Xd~fzs#S7*ipO3z-Wc?Bz=N!xU z73{NuU&?-}c#6KR;hT`>I({E>qk+H5{oces!2VnK)znWLPqBUnKLYRK$FWWiKZf(| z<7YD;2Kb8PVTk{V`7pw_qc6tz8T4bM9n}AxtP{moB|kCzC#)04=i}TH_(yr(B%b8l zQ~1;LX&PUG_zeCa&zr@+z+B4V`*JRMoje!t1<6kdUx9Nk<73XTf+yK$4gU)9b^J{7 z*1*@Io?G~L>C-lT1n1Sk8|1Tx@58zG@qg041AKYr+Xz3MeU9-Fd5iFK%#Fx%3}1rt zO5*c#UMYM)-ZJ0{#?rSj10d{Sy97=2#hDfjX?RvkKqfEpE!OA>nHG?$wLzF<0<@$>?e&U*iQz(mHC;)bM#9N z-+=nb&Nj&sfPq!px=}DJnAHkpG*ET_?37TUzN|zMG8_X_LO zsjDi!J9SdWpC+Fj{0r1u7r&Ew=;0sYa|ifA&O`iB=0la=>()oapF)1d`1<5Ca#N6> zCFsW}{#oijhF?g%#qoET^X1p))}Kw8o*=%%I!Sy!=1&TLjOR+@OAw#I58=GB_;utV zhd;nM=J7M=-vYig_eBvujPokti;~YWUZLJ9_#5;^6+aBG;TzMxb$ki>w}J1*c{TBi zn8Pjn>*TqOzlwM8Gg-fjm#McN{toBW$L}Ve1AHZ(Ylz3m=Lo-$&mH3t@)`Mk&=<#X z?ooU}_8G(H(Z6wgXX+$@uS9;5_<8h23jY#$PUGw189dKAS)Kgk@Hg3i`jw!6^*r$} zvrYlOn0yxTr$N$Cti}(S&M^*4G$wLi4o%P!x-oeixK5}y~H}u}^)4j_& zyE4am_^ITlk8kR^<7+dohWNYWXM`V)r`W$9=?44P$E>qB{SxT}@h4J0QG9FaIffrg z|Hkpf=&uC+0P7_2r`b;me~u&Wuflo7@gDg};9q3_ zNxa7VFWwUDM^E1|-BYadHO?`Ow|NiG;1BS;S^QP@lfz%*x$^ijoO=P^igPdGA0@to ze~I56&@7 zyj~*yTJm4U?<1dC*3m1(ze_*nh}Wyc-_6|16R+2Z-;p{m5UCjCtmLnzX|W94dV4a@uzd{ zP2%+d@&Cs?(js0T62A-iZxgSNh<};7yR;dX)J4nE!p^^%(J= zWBmc~dYt%e>C++cdV=^qc^(n3Cy9TFxiltTPZ7T&{T1OoL{Ag{2K&$88?jD|b@VLp z+fmPP;`JQyyD>i##OrzD52Jnxc$@ku;d}9Zl3{(lO#H6YbC!6$Lj2X_Cr7+qC4MXV zH&47?BmNfVPl0&7PW;Y%T~;JsZxDYE_kM|Zy-EB9)NPq~y+!;b?59G!-X?xc>ZeM) z-XZ=f@>3&T?-G9}?@M*!^&at;lAi|gdY||&k)I~<`hfTkP;V{b^&#a$C{9^pN65BjS|ydEX~7v!@~ydER|K+bnSydEch1NJi{UQZDJA?C@5 zcs)t{x2c~o@p_8*^O&oVJ2!s+i~rdp)YHVT&K!#pujhzggnKHFuSJ~{@jlO6!9UI% ztK#3{yz2O)+(!-kaq2(*#@zGHzB=no;!ozix`k(`!#4h9^54P#NS!qJT)j*D?ZlV( zJ1o6Ne3^4>^YFDf{p6_kH@9 z_-|1^W&Zw4kNj!wb7w;zX3nSH4)&u*iT@4pF}%%tT4bS3-tU*$64B$tFHXI+-V8oh zPY{16^C5}3cC3!zdhV` zf1utn_zmPIt1}OC_+~TjkEr+mCyzf!JruZKCY<(GnD&+xe={Bh2`jHk$3 z1;2rHI`7S$@9b#MtHghUxsl=C(QCwiiu^a3&w8EsgXy~rdC(igzefEeh}WCMufzGq zcu&w<#Q&Q8xA6n`I;DgEhI_e-FN^o_cc{Y{-~U{a{)*%KvHv7qqJPu)Gk69+9nawx zQx7@nK`#)01$ijq2T*Ti{3h~Q!C&MYtN0n@t%jdU9_sk<^icy}6>su)=z5Fz`{~~< zegShP&ilFEC;lVMu>qbX42u&M}E^z~|=h*IB=eKgQf{;5(9^F1{K28R6Gc5AnN#eeTVBLIQshPvZNt z&othqk23h$e4UuZ_orX-_*3*n0e_8kiulIlp^V?c^H%V;sJAM97WH4pujCvX`1Zs% z@sr6z8-JdBcJMc-&n|uxbH0y%ko*kr$Jx&ij}kw|S7$#FeqT4oexmqOZF1HmHagE9m#VGKb$9DkDh zC-4&aPvY~_rzyO~`#>7soOLqz$(&;r{{Z!w!+$|N=kcd`Zz+GkD zZ%%v#KaTh+zA5>y;s4?s>-f3ULj(UZ^Sp^i*-r~Up1N)0hp?Xx{zdlR#ZTsZd-w~i z)5oja7X$oW)*0eG_CLa(p})rXL*y;m3+n&poO>L9h;vWiw^3Iq{EK)R|10w?i+_#v zbNDfwV;+B$0Z=iD3kZ^>H| zkMX=MJdL;UWvQPIz90MP;^#6ad-!S8PanUL`7^+u<8z1jZ>hHteh=q9#=ptuM(zvh z^Ox*1ihqi8iQ%8&9OL+V^h*MNjr=6>>zTtTJWn3d_>HWS!9UBnXYu=4CxY<2l%jcHx+sJ-bWfV*{T@{WS5XnR_ifg17PS za9$mJ4f4>%A0}@-{CUo$k6*&QIlxzA{tWS(c&-tCBIi5C-=m%*_XqWV8F`E1KW2`_ z@QvxCIQ|9BD}gV~`bm6U_LIVoX8kn25b+uOY(6)OKf(TU_>gt-_+^||0k4wJB3`DR zOZXN%ZyEmvbz8;n=5y=#x2eMhz6Eojh40OKV;f(9y6WO@ljk1(1pDmcJMz2(`~$=f z@y*G@2w#cw8sk0cIr2bIpEdFm#kZs%WB4lE?{WMA;uH8id~OoopZg_+??64I@vm_% z8T>@fF^k_$K6Cg!-1~WaW9qhm@67WS@r#%nC448&y^Mc~^Qz$2;Z^)?>aB+FMn3EK zz2v`vA4Q&<_yXjognHGa$WIdg3;RsrC(yrX{4>m%489ljlf~a< zogBUc=aR>FWuFDSK|K`lGg+sEpT&O4_>VZR3jPM`RPhnQG9NBDW1*BHNs_o(P!g8Dz4 z&rRU}=6RF&F4S!rKa+iC@I8pn;$`|JhabmtiBNtzk%PwKAU)*dEUZrX8kt42Js#IVD{g|-yr`z{9^9kKE4!n zHNbyC-iG*d^u-8Yjy#OoZZofN(V z>!xmv=X<9)A;FU+}D@a32TRs5HH zZVg|NIb6qoPyICT-Kftdeh=%n@Dr)qHa_vqpsrY zQ|}T#q^}#SulIUC@OtZc|Bz{}wPx7T;eSJjypE$=X z>+56UcjS4S{P$t?NI$5D%gAS*_4O$6E76a6{@r*zM*Ph)@Bgah`~Op9eLYV6&aB^m zG02aeAbx4?-!kj#N#b`UKV$k-PZ9qG@>6AfJx%<=oL7n8qt-LTpU(Pq*4MMdFH3&1 z^KbHgUT0fQ&k_G5@54>j*Ym``LH&36J#)Q4{5N>sHtXv};veUEJI@8@tCxtslJ}f0 z>+5CWqujGO_ODlne}MYwv%X#>{z2}MHubO9h+mm|VaWP=o%r8yzGLQt-XQ*D=Fgb* z^(OJ#F>fQ>BYKPYcgcVB@4?*A+r(FxZ=Dx{^PO|Y-czXkVQn)US|@%NI?9)EYEkBHxm^UAWmJ|_Np-rEP<<9g(8 z!8xwS{`0J_M~VLp`yZ1ZJw|+!{)*$v`nj(JdDaue?@xS@edlP^c?Y9QMYy0*Ym`$!<=t$&*}x@ z?viHg^hJcfH_;o!KTqEcSzm7wKR@~G^7l%5i}-IcH^!{5w~60}^DVp_^sn9_ zek=Mb`j5Hz*%a$t;t%7zM*RD(dXM;Hd9Ul^eezZz&-#G)Yxw#)&OY@a@$(ZOqfYb@ z@vHNGl4N~-O#DimW0AkF)FTfE`CNx{NwdBlCH`~lC&8T2W5nOUezL5u$BEyXIacKB zH9bN6E4)wUSzk{QpQ4XCAq18u4qgejR^+brSqtt==I1D$b?NKJ_N?S90%+nOAy? z_zyEDyR5Ibi7(TSr8j~+=pEw!=v-xey-WNrdEV^e!TY)1BmO%2Zpiw2pZFVj-VtAa z=>y`|VEr-c>qFuTXXxFJz70M{Kx$|i}fd*_%k`j3V(mCr-=UxU-zY1f5M6X zB+onI>rg#I{NI>YS=OI$;um23IA6c$IpWV}e&$(!!ioPSbD+Zc>ILGDp$?0zKjFl$ zzNVq8zs~xf(23uN z^&_tb>+22T=Vz`qS%1Qb{|cWw;Ois3Mf`ERr?pvs!ihhK{nz;VSMLyCr{BA*KjFlm z!CWo#@2luN;?LrF`>a3V#9v8&W%)jXJ|O-Qo_EOl6HfdM^h<~S(nrLv$@*i~pK#(| zXTBA9pV1?a&ehdytJhdR`gDjB-(deezK^QMh<}6p$MKJo=kD8cpF2C}^#t*Mpw8p$ zQ%@5A81Hov?rS|o{36VaB)>Pl`U$bHuO1J(y*E zJx_d{uTS%QU7#0;zs`8p*Nep8$^P5SNxek;dc+r5UoR7XF85TFukZ8<@jv4|r;0B~ zzeMOqy+-_Dd>vP2pL(76O*r=?-|x~J#9z*PY?bx(Ch^~99wzvARP+|{3v&O~Szm7x ze~#}z)QR39eh==8ChO~6;*X~KgHLl`hfU6?;Bm#*N4O> zINuWURv!_crf&PJ|Np4E@9^ZyyZ`@~I%u>NQwPR{aba8-7siFLD#nGgm|DfSFfJMw zjSJ(#XcgnaxG+}5Xe~yo7#F4vj0-o$MdO0FFlxoPzInaxaD8?+ z#)q&z5&Ybf-GlMV>-T*4?eH`xITLr<2&)W8NvDa|8Qv{$X67J&y6CSpOiNZ|n(--wX4J;`;1Kj9(4s!GT|ou%|Ho7u;WQT%SFS z@mu5mD&Y68*fSX4iqF9$uFsyu_``6&wzX3kK(zrf*9^FNyu~@5H`RlTu7tcR?0^>Kpd5hxu>`9Ej4C|A@&!N~;7{590 zuQ;yHp2qn7uwP|7f7mk^e-WOaNnD>ji}AbT`=J}pPxc(fe~i!HG_KE{$M}C?J-zt; z%wE9wb8-H&xITLk6yx*wzEsEc*<%=A#rK&ouFoFF_#JTl6n=fjp1}CO;rm_`*Jn>+{5yERIehRUk1}`s`thKMnhv!RH8j1mpYg9Ps1%>`{zA z4&U1wc+RuOFg}dy2XTG&IL7zj`aV2o*b^B4IKJ0~aeekA#@~VYMDab1J%#b(I1f== zpFNH7YvBBQvA^sYj9(A?70312vl#z0J_oC~zu0paAHn^S#P!+p7(ao}%{b=IUcmTO zaQ=(vci=f+#dC%|gP$8NjrWyBpT>1^=zqlLQ4zg}=Sdm;csvIx==Y*m(SO0`NFDtX zjCbIB?0XpRM1Kw6lU?YK;@rB?e~;^X(3i#g^`XCk?nmDo=Qe;|!FdRxpN7{Bp?`ws zPZ)g^pKDR{+wi?Kj=mm#zbl3QIqsJ z(J#dJw+MPa_BVAs!xZ|H=vnkvv5$H5YjFJ{`WHAqW%O?J z3c3^PUq#1b($PTQ0G}@|e108+^AJFP9_txGe+~N;M&BIsiJ%YT{)(ah3q6jWz={7k_)e;YZ(%&u#RJ@VpJ8Z-w&^LcbjI52Js8 z=S&3sTD-3q`l^^`9DN78uN3;tScf$Fw%Fec`Zl;vv*^Fa`^ux=k9ii*f5d!>=x^bE zETNx{&*d_D1Lw1fej$1t{aw7S13x!E0q4_+UcmFpg}w&X*^T}op2HsW63(p;eM@{E z`O!zQom?o(7osmJXihb?_(bW=Zix5YXX z(a*(oO6W7_W%T87{W|)+xPAkD2|Pa?_&I(M=gNid#CR|IvN%@(^cAq4LG-I}{Sf*d zxK0@Tc07L~=uzx@6ulMaIgY*oo=XYzd5lk@{|)CYh5i-xJ&k@P&Q%6|UtB+nz8;{lIqbq5bO(NJco<&SiM|n@pKkOAa2*f&9yo_y^usaU zhu)6vM?VYe89=`otcKw{e7JCEP4$4 zl}BF(*Ds)dgzFU1SI7G*p;z%-Dx;r-^HxRA;dSfiyYoEY_l+|c??S%|pF3{!C(u3U z2Vfn%=zHM4^PzWQK7RBp#s|>%!#ND1cjJ3h9Q`${TLQg^>m<AbJsf4ZPnH`nLGI$ZfxuNmFDmWBlp3juU^r;!*6E3;ig}-;4eOJ}>;} zE91O{(AVMpi+&!?a|C@a+}Ba`7CeVz=vU!(Rau9 ziU9hZ*!LiM8TUm9{R^y57=1mgX9Rs`oX;rwN_gEkdI0xD0{thqfr^&s8t_?l>nt z^q28@`sV0y^iHgE0{v!;&!F##eaxcYgZbys_r*FF(B0U_BKpNR zZ)NnQF}{L+6`reA^fR#jb@an=Uo_BbI6n^j`LXqJ9^B}g;r;s1SH^n!(YMF=0Q%#2 zUqSQ`&RYombX+Hlejer-K|ciVD~f&+&TS0+IXnka=vU+17SW%;dX~_4#W^XXuY+De ze-Zm$MIXdG>*zUrzBJIc!g@OK-+iBq`Mb~`!}UGreOON~`d_dj`ti7a9(^9? zu!#Nx)}e&{K6)Ab72FpU^l{9mivDNpR~`KbtaAhXRCFi)d(yw+Jh;(c!{@#S{Wz?r z7yV?M{{Z@RI42?WajZia{W&~mBIsY@c^E}s0rQEWZ;tuL(GSNuC(wKGd74Cj1nZwd z|2Nh@i|)qw9Qv_%-8}jpShq5I0Q*uwKN{n!=!fESvw^-Po(~TE_b*pq-Q4I$Vg0@6 zd*Gb=&||nS{OEV#{tckthWkB;eilC0Lg?q?eTC8A!#pGCC*wL%^girw41Fz}!zB7A zI6o=$6LFn1dJgN5MSltBKZpJezW)@^zs33#(KFb`68a`shYETg>rh4C6Z5R2KaF$i z!k?dc1kVjO`rSA`9`yZiPW$z&?~s#9r$zLJyo3z9H7lhyD)M z*^i#W^#kbl;hYE2JF%W2^o_7DQS|NcJc*;9gZU@W2eF<>^b9@+Q|O!GIhjG<49}S? z`ceEmLSGv5ETDgn*Da!dj$TIhV;w5!-{5^!(Qm~4Qb&Im>)${x;68Hvx~Hw8F7XGv zUnlyBI9D$8D#p9f=P*wX`iFSGe)I!yUqsRO$2p0iUx)A2N%RYG9@6L+p=Z!<#W~NS zua5gVhaSNDEur_~{Z`O_!TYVFf5iJ2e~$45ysj60JM5zmePx_mKl+t;ZUoV9$G(Tq z$8cYV(PyzfG4u;?zsJ!J#dQ+sC*$)mi9UwUwKV#5+%NRAaQ!TL66Yk3z7y`#0{ZKi zPZ9lg+`nb?6wZGg{Q$gf1N~lH-+{lU^gf((C;AO|zb^DH%-@ZE8P1yreLK9a7yT~m zmk<3C%*T)ZCDtK;{v@7DLG%r9KZemqFwY43pYgnkp=WU(;^?Pgo=NokF+PRjQJ$cZ^!#hqF;*Zq|g&MS84P& zxxeT>oVOhMfw*7t=;Ih)K)(a)UqU|#`&&W31@o+;FURKz`YU+d2KwPRpAP)@1^eK> zcA~F|d3w-)LHDBHiq8cf`aRf}0)C#w?#K9dFrN_m4Avon{tP|`W9TblK5_JWFg}64 zH}3Z&`tmr>DfB&X{?q7lSpN*V6XUb!7vVhT(BH!A7STUMFQM;<_fNhzz35TQ$B+I9_C0{^#W@e5-+}umj6Q(zQS{sJeq-pTVV()}J#fFI z&`-d1(&#_nbu;L7JhuzzXX5j&jD8x#co=)@@Jl|aCRm|Uu{xHsu4}A#Z z1L)`Dz7C>4i*=5oe}L=9&>zHg66j;tmn3=u-%rx$E8;w4(I3Ql&Y>@f^PESY!uSIE zUvX|r=u2b%W%SdrZWZ*0v0qj6O>zA?`jU9R4fG;j*MYwea4$TsTca zq|wjCb+YJdVqbFTaa<>l{x)8>h(3XJE}^Gzzm(Ar#ro9I_s4u3_KlgxY75(>w3`7#`V4EN8^h7cq1n#>dfD!1+m`ABO9s(O<&n zX%>B3JU4RaUt@ps=tp2Zi|AY6{Z`O-!}qQ#`cpV>b@XrXx(##}uJ6Eqr(DE-Inn!Y zeII%N-%I`I`{0}h&@aU2Q4swZ^bqilTR7zhdZFj8CHH@VY7V zi*X(@=-c8vXVDv2{~Y>-n12!dFX$!o8}S^gps&sQ4!s%kbl~rU?ZS1O=p#7)F7$7) zK5q0F&WQ&-i1Y77e-z_==m%k*e)M0kZUOXjG0zZs7W)-OUkmFQLEj7KA%XrR&T|s| ze^`eUdK1oVZl}F$)=KPIj9-%D(O<>+DWGqN{Vk(+qgT+E!}?Uw-FTkY(bvbiHPCm) z=d}}mPsnF@4!F?I#CSJ5p0^(K!|;B+=u6;p%7^{|o+m-{8*rTvdI$C~jJ^lv89{#> z?<g7t5p?}>eP z;_pM-5Z8C1Z-sqvqd$z#YY+ODIOjg}FL=MB?}_^{fbPM3g6PZOITJ#^2J?xc&tv{^ z^l#A<=-Xg@lIZ`zb0CAh0`@D1emeH0fIf`zMf7hm|1$cc=oR!;`Rjf3v+*2gps#~< zcH-~1SpoayLXTqo-RNiGIzIGmu)hKH?{QxQ(f@+;A4Xpp^NFC}iTOm)A489!Z-?hb z9Q|V4ze)6yaKEI`_rmiejlKounM2qbA2=NbJYbhqpOUROt_6VG!G`q?<=Ui9TK-iMCmbokL7 zcwYf@KY9=yk55Mk{T$3cjD956CxRZpgrevV;9SMfKg4rBj{X*&^9l6N_`F3w3hyh0 z{uQpDM$h7WX3+nP=YJOc9V}1|{YuOykA5Rww}5^n*0YFS#q*(reizPL8GV0TzkPA&+Tz|?m5x13=S816xVU1?~dzu&>zM9?nQqB>*GVm zF?9IR*T(n&`f`|05FN+O5kjBG_%QlGI42SG8pcP_@pc_CbRWJC#L>6I{hmNS4Cf(< z{s~?;h5k6MpGIFA*U6wihmFjle}kSwZ^v^xkNyGf#{&BLcs>`=SHyF#gg$_EE~8K2 z{;ic@OC9#hY^dqsJQS^)Ox-oP-4jplHye&rp z{dBBP5`7n(hZK4@_A!nA3Z8oz^jC5HEIQtnBZvM6++TV0R`de;_E@(f`fhl`CG?wc zPRi&FtY-!N9qfA*{cWs69sN4&djlPhlZ8Lzx|e-l(h;m--JIx2++Z&B>#z=P^ewSp z9&}vZ;YHs86Y`;#@qYd2xV$5PehNM?g6KHrju1MIgCmTNZFEG?Td)pM^t180F?4K; zBaZ$g{uc@Kt#MA0=-5U_3jHN4L>j$_?+F?7HF4gu=(k{Fa_9kEKac(%ZtMd3J(zzH z{Z@P)mC(<^Jj>`WV#6xv594#HioS}S;Q#v{b@WH^x()P=unvwD7tenu=Ho;^67ScA z-iHT=8~svzFnG}2=w9?wu)#j`4y>mi{cfC}0D2$pmmvBC#)r^bv2J1X!|=W$=&NCT z6#X0AFfsH?@EnVypNRP+&{xOxljtwuMopn#fa|2u-^BfxK_AEcn?=7B>y|@b6Z6TV zpMmpPK)(&=r-;4}&TR>O0Iyp{KL*#Spl^)lZ590loaZ|F^Y~uTKyShNI96Ib|Epj= zPV_(F`Rqd956=xZx(nC$ps$W|?nPe<>+C~s!hHPbpW?g)(BrsIgXovxoP^L5=wb9@ zaBd^$cVIoE=r>|tV(1THK5=vp-fsf^TdZ>ueQk_Sp>KrsNu%$K=S&7Yg!h$2KNb6u zL*D@FlSe;+=O6uFxW9_%Yv4InLjNbuNg4g$Smz3Q0`Iqq{v|%A>gfG=jy2HZxV~fM z#q%G>`*ouK0q@I&zCW(xMo*%9(3imb^`akv^W#HL<2?A$+i)HN=*{@N3!<-s@gej} zu|8q+=P{oMdIs~4q92cQ9z)+4&xbg=2hXbn`WHASN%Svq{S^A!m}eTji1(F2|1HL6 z(YMFz=Foq@JoD(EVSfwg|HAnxqTh>kE1^G&>zC1g#=2F|55RM;ihe&nU+U;XxK0E8 zRy+qBt1O=Xb#YFd=%?a!UFZj4J>BSA;dMReOJNW(GS9PTc~B+z%ke3Ix}+C{b9`}(O{V1%12mNha$BVuh=Ho-(1Mka^ zUc)&Lp!;y0Ao}L$A@t{QoiKU_#z)XM#ruk)H(?)R=&xh_K=v!d^8T93_{#o?R@VYtljWN$W`XSi&0(uC)ZY`p(iS;R=H*nvT(QBAb1${%z zzluJM`>T%rPdo=2=q~KLqjfJ^EnVUo{JO@8K7;Wt^!xCB-RLLdIv(^_@%-_ke}(J# z&|k)QKl+x~-vIiWcuoe<&%%0!(9ghgIE=m(t{*}F0neW(`i|Jg82W?QmpJ-nm}dfg zYrJj}J%@cvp)ZGD=cdv3!Fp!U*TeWM`UuA7&=0`;^XS`Po(1$a-0wy7`|vqfLjNA; zq>Mg=Ko8<|9jh&#|E;i(PV`OiIp{(^4)>!Q{ZF`#2fY*f z=tU1x> z#OG8AeS55D8GQ%z3i@(*ZdB1v!E>^XUc)>a=y&6Oajd?0{tv-;C;E< z0sSege-ZsTT)%|A3*K)T{d%0A3i{7@&Q#I=i0jnRcSUcY7qGvMH5Si*0sG}d-vQ%Y z=o@05ZuE_?4j%N~Fdr}a?&v=Bt+391^n-DJ0_eZR`3$1pjr9+qKY;m%(Z9y~jiA4P z=Vugs9IqQg58{2r(JMI53G}nDZb|eda1K-Gd*J$M^ltPF`nI?)vgl9Yb0>$sC$5u6 zkKyyWfc}3c>Hq$Zis&C>Jxl1TU?0oq+u`~Z^d0fstD>)f=XM=^Z_K}ez7M)%&BgP7 z7|xp${W$E43q6GExY74R_n`j~=go`$GrA9bH9X(^=nvsO4WK`Z`3KSW$9zKQ|G;?& zqpyVfC4znct`kLHkLMr#X{=iu{RPZ3f&MPOmnP9W@!U?KABg#+(GNn;p!;ynv*-t7 zd=9-8=Pi$Z4SE567wlIN{Xm@068cJ5|1x?L)}eyFJH8K8(bvU&R7XDn>)b$hW4|10 zEuR0)v0qN~3_jmo=qb#{jlK##r#$G_WBtA8f5Q6v(C@;&`_X@c`2^7Yc)vmPi}AW4 z^wn`6h0))^{zlMW96X<6=(}JY;^=2%o(c4q@!U(IUx0I!LT|zK)943ceKP1_ ztaBE<2iM7=PvTtV(GS6O3g|y#eTwKW;PbA8{u!=cMxVm-u!8;xo=a8qGjX2l=nmX> z4fK9o$KhE#|EFS}PV^J8{x0-c+`n%09;}ZC{WP2tFM1U3*N5If_oD~!ego*w;hYE2 z|BU&B&<{lqqyGgxf_@l!6#XRJM=|unF+PqyiuaX3KLqQaL|+2?m_ok*&xbVnV|XrQ z(4WRUv*=r4A9Lup<37rxPvL$kpdXFrb`gCwoVODCJ9uAZ^iQ!474*lk?^W~&*13+p z1kP;({TDoE9BVJ0{{Y^X6a5%m$A$hf_R)==!#aD=v$(z&{dzoaedupvfBoo3;Qa>B z-@*C>(YM2MCWO8>_9cw|E_ww0d)!}9^wqHMG4ze`JdC4z@Hv}6zZX4;K7w^lp}&ap znMS`B^U0ulu?|`EQ*aJ*==-7P(RaoA6wuej`WMlU#D0~~U&Fa7qwkLESJ02bb*kw9 z!~I@IzX&DSDcs?Z1f5!clL|+o; zB!#{qdK&#fysr%Uv6yET{oh#69C{Sv^XSufE)~#^!}ucld6;Jj{dkNoqi>G&si2>L z@m2JPdH&Ilz;mO4egdEW>nxuCWpQqu=uhAry3kL+Jl*JJ{CeMmUckC}(GS6M!-u{D z&Y>Uu1bkix(9g#At04LidI)_0=QE6c64p6_elmI#{ZM><#n59IA4fj``;|Z+Ku@A? zk9nrh|BCCU(GSMwP6oXP=OK&!2dqyHeJk`l`gb@d1@t|!FGciiu#YA5e$2m&z8lU- z1^rR1LlwOXuUkjI8~1es{jcbbbr;Y7@tCI*{d05|`r4R}8~u7bCq3wIjcoI&r#>t@l_%T3*YThy z(Y@%q;CbRh58^!d(Ve)z0_dBg2hq>Q`wgLQius4p+p%sD^owxLqv$i(-x&IDF`qd4 zq4+#apnr|^NunQubDKgx7w;>L{$HGj4EoM^?q$&vxK0lJR_uEo{RMnZ70}PeJ{HlJ z!skc{J%x2Eqo0TQRM0QMb*kvE;=ZV(FNO2dKtCPp?^u8F{J)6z*hiq#5~>T zFJs?5=;vd+7yV7l$A|tNzDN1dFTiyI==bCK97JCe^9iBnan8f&zr%eIK|ciR5Jle% z<74PeSkE}R6Xz;{elR}2lIV}~{G)G%=W`l;9`{iO-Hr2*MSl@JhrTp=9{pmhe*yhL ztWOa=iSZ@$65dxCJ%xR&ppRpG75#p^-#U5<`_e$a1mhhWES~?T@w!g*817RS`eAq; zy3seq^T&h!CHCEmzAnz85B+4^*M9T>t`k6i9`{iY{S17c459Ce_Zvok65q!n=zg4s zDEcMX-x&JAn13AoVXS8YeF)b{qEBHyDRe*XuQd7~o*NnTpRg}k^h@!&IrJ7h&-3V) zVSEAo@90JJ%h5~d&A4C6=mVH%1^rZ<+ba4C*!Md66?okS`b~IW4)5am-w6BbM85*- z??Qhc^Kqk}fak3T{X0D0yy&eshd%Uk@V@-$DZH-$`iq!n5dBJw524?M`zVY)jPVil zb#b1f=vQHU4EHZ1@tp;og#V^^C_V}i1SlMzYWjl3i>rT4^{N<@f@q8AAo&tpoj51akMX< z|I2Z1o#?Zej|=@atb-eU7kqws&_BWb=taK`>)=D*3-8O1ekHyy1<=d5P7wVnd=Ctv zuY~msqrZ;x89~1Z`x{074Eq~H58(T19Q_|yw*>lfc+MozZ$M9>uZ8!UM*j)xoI!sI z^UR`ufblu>f8hM&(U-&i7SQj&`zoTpf%Pn*--+>M^c}Ik74$5|SJ5}aI@i(f!uSUI z>sU9(MvLcv4C9^XPvQD5^t&j%(Xczy=a z_rU9h(D%XkF#6iKegyq&oWm&k`gpF!(Eo|`iKG7oubV)>7vq!YeOUh#`WkqSrO}_j z`^}(tVg6b4<8VH6=sC#5{tMo3 z9sNGczk%+c#R-idxN*3E@}9X=P_=)2;%?Lj{o`{+fl;yL3(zaR7QqfcPJ z0_a|>PZ0fSKL62=#JLTl-;aHapzn+K6-9pl^NgXdi|1_|{eO7B3G_2D&m{WJcwZ^> z{cwKL=+ELh8T4Op4zuY0#{6^W52EMMXRz-D^y@I6BKnh9w-WlkIJaf=7ctKY`ny<% zD*6Q&Uq^ok^KYQ%(H)yCp8to@o#;>Ddx8sn1n1d}K7s3a&~L}N@}ggh&r=`zp}4*u z{ZU*$fc_Hh(;)iqG5-+yW4KNj{T|FSg1$M{KZ^b^<{v{J!>yheC{;Rz1VlhW{cWP}^fp{4h5icWnMN<-{btbj#6D)xU%|TN(1&oHJo@u^zXkNyabFbCAHq79 z&`-zbY#IFpT)%?ej(JwmU&Q!2`jyzP2Kr4{2ZwJj`@hyyUcz;p=ojIAxzJz6csIHq z*Y}_|<9oXo{S%yLANnbH4*1bac-;W{6Ijn6`YRY8LO%=7fiQYMdIWuC^eB28dJO$l zylx!*Dy%~S{d_#flIZ>DDfHKH{WSV{m`?`%Oq|0kJLZ!^e;wD)qu-6|6wsYGpGEYQ z@cCFmKMUuij9$ciD(F|?oK(?s_eg&55#jafc`wLA4Cu0`58k08uv>Wy^QsVpwHlaMbY=d zJY(o*;yE8jPvD#+&>zIUC($3nb3TP$!Ti(c)0lq-{a36*7X4A2&m8(YxK18@JDj%y z`nwokM1LILuS)3s*vB&ZQ&{H;`g^#375#nmI{JzD9@0R+7uR=mES~>+Fy4uNGv@C? z-y7@TMn4tfJ?Ov1IrpNsV;y|x58%G@qhEu444{98@j>*{@cay+e}Huhqd$-H5J9hC zd=x#(^N)TJo|AF(ZE>Cx=%ct!5`6}*n?mozeUwJO5Z{wC=x1R4v*;h<`Z@HE(DUdc zSf2v=b2wK;^dqqjCG-t&oih4)cn(z1zr*vkivA(aPaXYDoRbFn#Tf6{V)6X{4(sDY z@4lp7rUlHr+MLz}S(}%tk*4dB#0GbHQzfSZ^a86w4PhkFT^n>ud)Puen?nf{Bci49y`cpV3e)QMy{0yM~h#o{=2J;D_ ze~a;9^#5T#5%dV&ZxsDX>~9Rci1!;ue*~YK3G^PUe-iy|tV0UD8T*(cvgi)XKZkx6_BW5d1jZN8FUL7Aq92I&TS8wG@2iZy0na~r81J`={ygScN8bzA zX`qi{o{nu6&;R+jU!3SueEy^Vg7@V{-y8Gspf81W^P=B?&o3W(1?Sn1{tBKO0rWJ+ z2hl&oI)~6la6ZH64`F>G=vmwsQS=?KFER8xG0!;qx%i%tKz{=BOrl?obxWb&j_aq< zAHsfR&^N*R%A#+B@j3KK^gMbH=c<6d7S2x*{VseDDWR`}btt3%fc31Pr_rnEOJjZN z==Wg$4fI{G?+*Xs`CkUtaiXt*b#tNj<9X;tzYgo;L0=p9g%|w-e17@RZ^HZaqhE}9 z2GFm=_n9Di4EIF{J%M!yqwj+2N6?+QK99Z}dI9}oT&IZsJB%-(e~9%jqpym6ub}@P*Qui4 zkMmYXAH?^x2KqsG-a58jJpW5!{hjE8_;r>G{XCpoH~R9Jrw6@;`^byFH}=toemAb~ zM?Vzd#{}Sh_i2f1wrG)+%)~$@*g4eB} zuY_}0ML!1fsiXe^*J+^NkM8JPJpU`9JJC+a=%?WN0ra2o{UL~6#lDBom&Q2^qYq%6Bj^)&4oA@s#C&4tZoIEJ`i7WK0)17C zPojT?*G-{shx;Xs{tV7T2K`TX4rI|+z&hm6x5j+(=&k4l^jp!3=-=YGS3+MM0{xr@>9(^@@z7)`Z#rY|szmNN_guW5x zSw_DR`&B_-5AU~%zCL;#eFD$J2KvT$UB~u|=YI_2o#=039bD)h%+rm&0p{aD-v{gF zMfc%#edr(KKJugQh4}=~H^l1((T~OW;Q60BgO@IK;*C2yf)^G}U8?%$g})s%c>Yt) z|NP%?n*6%e{x|RJ_;tMl7yjq+YXuhme{xj+%Ub2vh5xr+x2#vHmCRkT-dU|+?v!=H zYdLd=tQD_i%R;??TEEQIx5mGva5Rm@YecBWP`Ps&>1 zTERRa>j_fJna5>4iEA12n5;XlmNJjZI!U#Jc|=}Cj+uvLw;VAK$*amC^Pt=+2h0QV zYO>GVFRw0p%zg42vdi2nuPHmsJ@Q&|{b#-Z{bi3_F?Y*r%O!J{+$I;yo$@+z&fFod zD`(8@@_KU0+$OItC(Nz#26D{YB75bCxmn&&4w;+eb~#|4UpU&)jbxvBPTpAdm}lip zWS4nH-c)v&r{&G$`cJn1vQMs-EzmA94? z<`H=tIc6S~{c^-SByTH+%!6{L954^a+sQt2zr4NdG55(k$S!lQyrb+e_sBcR^&f5j z<$zoE_u>F@Ka>d*&A0d~_U2?BnFn7vF$~kj~e3YCq zx64P%DRY~AjGQpH%E!tvbBnAGpjyP-EFUL_%uRBi95Bz1EckfYXP%Q!kUi#E`9#@e zo{>+I9p-8IWVzn3{g-2M#XKedRW6w)<$k$fo{&$GbLMgRR5@cFlTVXV=27`{Ibj}= z&yZv0VL2{G%tP|uAx9p)bST)Fd*&KPi{Y zUGk({Fn7xTk#pt_`6)SLZkL~yQ|31L898BYm7kSk<`%gqN6gLgb8^VsBu~i!^Za!S zeqQ#O=j0b;k9k&pQFfVUiEkYAH?=5hIT zIb$A^-;h)0QTa_dVIGm+l4Is!xhzM_L-N~l$UG=d%K`I%{EqB1_sj3f9&?}kp6oLB z%J0h#bC3LiT>skkU#`d%bGQ6oxn%B=XXJvpQ~prSnLFf<Oedd1oC)s1}lYf?7=3e<1*CL zFn7wok#pt_c}Y2AZkP2(0ct68o2(z<))MAcSwD)c#mp_Te)L$2n44w&Xt5SDH_7_Z zUM*mrzh=Su(Ou1Fo|E+>yPC&5E9*ycHJ5ot){oX|4)e6EA7Rz%U)ui5F1cc!l2?#R z=1EyUvZxiz6S98vP|KOerxMU)FDZ)+*+1S-<63E1A3GHo0K# zl=WMawVb&_URTbT+hzS$UM*#All5D8wS>7<)^DNJV&)dvD@V-DvVNhIb?20XnMdV=<%D@e{*xRt56fXW zVjhwYkwfM|xknC|2joA?K6Af(sO&NK$$ybu=3e+I9p-8IWVv3o{g-2M#XKedRW6w)<$k$fo{&$GbLMgR zR5@cFlTVXV=27`{Ibj}=&yZv0VL2{G%tP|uAx9p)bST)F`p35aaz?J0yX9NulDSJBl?&!h z`8GLc?vVc>XUy&L?Q+W8Cf^|^%&qdBa?IQ!XXS{wS-wjSnVaM>IbfboE%)D7(xv@=LPAJT1R0*Jo`1<&s=6Psy*y zCG({Gs$4Kn$gjyc^SJ!FoH38dZ^$Y0sQjj!FptP@$uaY=T$Ur|A^B}NWFC~K<$!rW zenOedd1oC)s1}lYf?7=3e<1*hI+>#qcQhn#(*RZz?;?)AD9={axFC*(X=bQ?mYvzFNsVDR;;P^Mt&GoHLKhTgn;p zn7oyoGLOnz%L(&{yp0?)56gZzVjhyWl|$x1xl<092juN!pSfS&UiO&#8hqnVaNpIbfc@bisSdKJ%Qsm+Udm%6rQ$^Ng%NnpJa{r{#U+`n2u8 z9Fi;MDS1D+WS*4wmkZ_z`2aa*9+wZ4Gv+b*AUS0omGw`B)Dq?q`A>4pJS>Ohh;yX0QE zVD6NUlyl||`6xMKZkLaiQ|31L7&&2Xm5-HU<`!9hz^oQAH_OM#A#;=5CkM>)Lkm7$ z_L=A86J(EhRz6X7nP=paWQTcLK3T4pZU5z%Trp3{f0aw-Nx5Gxm?z{@T~3%s_L=+Tvt*CCPd;0AnS14P zWQVy&K3A^4W&1BDhI+Un8f?qw=+K!aO2hC&$dga$1g@m;EFUl_SjQo=9Fi*=b%k@`n|K*ZgF;B^_$R+cn z{Hk0qPsp#yIrF&ux|}hO$#2Lh^Qio$oG_2bZ^<$9uw0fS<{|lQIbK| znfv8;WskW}eouCpd*%0Khq*`oK(4=H`!84Iin&|s8 zE`Kbi%x&@~a>Cpye=5h!EpkP6&{~(9VgYvu_Fb~K-%06?y{FCf4_sKuYE_1K^i|jD>$iK?%L$8Q!~ zF?Y*L$R%@^+$0ywo$_zwoVi0@QqGv$<)!45xlLYLPMBNeW#pK-MRv*&bF=(gIb?2< zo8^Fc{=x+>EBnlI@^Z4rJS+cBcA017-^&j3w7k4rf64Y=cF7gGVFRw0p z%zg42vdi2nuPHmsJ@Q&|{YBeeT8l*#65txniD@H|d0khhR?=5cvTIb$A^w~|xlQF&`Q zVIGmUkz?jz*)K=TL-MwA$UG=_$^r9$yq)Yb_siSM9&?|(gX}W*$~(#qbC0}}Tz}s7 zU)De6RI8Y~<(=h{xl8Vn3+7IF7ddC{kpC!W%@m;E`YTFmF7u4MkL)l{%lpdpDcgTJBv;H+@_us3 zJSp!l7t9m#0dmefE*~go%wzIFa>_g^A1o)#Bl4f*n0Z(Z%MtUCtbY=^7BUaYJ#xT2 zApcqRnfqn^QyMjoxljI!>@xSthsh3ek9@dXf6n$_j>r{rw|s3jwA1UX| z9r96f#@sF+EvL+F@-cG4+$tX{$ILCV{)4hw#M~?&Cx^^Ua-SS9&krv6c-d#3lTVO6 z=2`hf*=3%QPm&$xY58QiUbOv}V{*kjCI3|}nJ49bxnQ1|L<+kZJFSIkrL zm2$~EDG$p9^MrhroHLKhSIZgmn0$?#GLOpF$_ev`e4QLK56fveVjhyOmqX@3c|;DF z2jm-MpSfSYQTCYo40?egt%%G@U3At%hO@||+b+#+Y?h`Cw5OAeWvwca?Cs|=jDibNPbujnFr+wIba@;ACZ0Le)&<^WA2k5lU?Rs`El7{?vbC6>;JL+ zmkV;m+$}#Tm&{%Aq+Bp}%Kwpb<_`HOIb&{@pO#bRHu)JjVQ!V5m1E`>xhO}>&GK_{ z$lN4P$pQ2HxeIW| zV4jd)lXK>A`E@yC9+TgYQ|3|mO*vs6k>8SI=3%)kN6bU=+j7V}C{N1)^ML%0>@)Yv z@5&x?pZuQeGWW{w%MNpo{DEA5()M4j$Q5(9{9n0b?viKZg1J-vP|le<4A-l{o@|Uv1 zJS~4E*9*4)a$T;Nr{u5Yl6g{|lMChv`5QTB9+$tBGv+b*J2_<@mH#Iv%p>yma?Cs| zH{^(UNd7?%nFr;0Iba@;f0TXZe)%WaWA2lGmR;sv`4`z??va0$>rdGJ%Z?=%Trqdc zOUNa2m)s;5%$@RYP6&uPTSkgL11JFb~M9 z$v$(xyt?c$_sMI>E_1KErtC2H$ZN^<$MpX9mpyXD+%4;$fUA|vU9$cOm|DTyDX$~v z%pLN&a>m>)uP3L>ZSwkZ!rUtBpQNtE%q_D1$*Nk!+$?V>hs;fKyBsjjpS589)gm>Y zc}~_}`BC$jXXQ;~mw86sRCbuB<;~>!qqhIDPp+7!3+4%V3pr;Vm$#HN z<}rCIIb|M|x0Vy;5qTRqW*(OPa>P6&Z!3q)gL0=FFb~Mv$v$(xyuIu(_sKiRE_1KE zqwFyE$UDjPM{NJ)fLt+m%R9>@bC=vD7tEdVE^^M?A?u&`t!2#Z@~(2q+$QfPC(Nz# z?sClBA_wJ&xmn&r4w;+eZaH9{KXbu*%0Ba)yqD}T&&qqtF7u4MkL)l{%m0tFF9EOV z>fVnb=18b(PNiyAgo?43m~S))HOA1C8cK_*sT8T9Bq!PKF{}^`|kbj{jRn4I{WOs&vnxYI4gm#?!d8(mjd?y9?5tb`YS2C^vj6Xe?F_&>g;6cE#jLQNK1|G?{I52)dCL@M% zA>cQFqZsD~9ts@J_|XKy!+=8>-v@pZIE3+S;J1K-7+(b*4(!MHJn#tMtQ|c5z$1av z86O6I8#s+|3NZd;Rz@=8B;a>|6B%y-9u2&b@jBo!z;hX|0v-z-%Xlg9IN*_t=L3%i zj$s@R{4Q`5xA>cURD8{*g;w*Cd=+>$upi^|z;l4Jw)6M{ z&jn6rd>D8ha2n$j;Q7GGjFW&r0#0PS1^8p&m5kQ`F94p)copzM;8?~>ffoUfWIP{u zF>nmyc;F?#QH-YoF9i-~JOTI<;84b+fR_P>Fdhp0DR2>4#^VpX z5;&c4d*IK2(-^k|UIm=YxC!uT;6%ptfIkOb$+!ma7r=8FR|NhNIF@l);5EP_85aj$ z3mn6^5b#&PQH*l~uLBNe{AfJk^}wNw?*o4g9K!fE@CM)@##ezi0{byO54;IDYb%dG za3XLzAakH!%`0vyWtKJZcC5XQHGj{yfUz6yLC*pKmf;1j@ETX_6| z(}2?%9|ryrIE`@%@JZlg#!0}ZfD;*S0X_}9lJPp=pMd8wUIlyxIF|8J;IqIZ8P5kk z2OPsV9{6YAD8^HP&jW`uo&bCSIF#`y;9r147!L)$2pq(?Kky}BKgQ9(mw~f3^Y{a& z1E(`?4}1kUjd4rhtH8;On*d(}PGnpU_&V@P#x;O%0MBJy5%?x>EaS4kw}3}7E)Hw} z$1pAgoBeSvkH!!#3>?b%K5!A>5XQHG1Av1VUj@dWh|ln2d>%LuIBO%1 zKQMm!IU}9%Vc=rGX^c~VivuS!P6B=gIFa!dVEpN)jFpVn0o#D*GF}B-5;&IeQs7d+ zBN@*J#-C8nh+!NLTn0Fb@l@clz~PK10G9&}WjqSFJa7o(p}@hwL5%wYKMU-~I2yPD zaMlJMf8Y?{bjIz0p94-~+!DAVa5Cd2!1!tZj6}xufGYv7WLyKdGVol+6@jY&$1*Mp zTorgE8fMXaJ0?LHDsU6vaK;mW@zcl|p^QfXzXTk@cqp(PIEZn7;AX&n zjH7{@181%0@dpkEPG{U6xCL+;F0FPumAGjxQ4C8p0`~djAX`1!0!MjGTs6_8h9n+b-?(OtQm6| zuL2$m9Lsnq@HpU+jOPQ72aaJJ5Bx506yvGD6M(}RPXL|>9LjhU@O!`^jE4eG0uEx_ zA9ymbALD3X{E3>3tTjCTz_GyTjN1dh51huhCGb?>WX4T^rvWE2t_M6FcqQW+z%zj7 zGOh^x0dOqiN6)qJ8#Fh&a&$$xuG8yby;iIw<^AT<vd=~;m1F5U0PkrPwKTxO~F(3x>T>xFQ{HExhCm#OKrjD zpSTvPBjx6`i{f>9O$n9y`+AM8D>z=SxAhubPs+{fVa4b5TJc3~S6{B@^;$Mea6P>a zZ6LUKL%B}S>ngpLZ6xJW^_rsB8jYoVonE)-^`u^NH<9}JPh2N7mGY}kTwA^*#F90Q}lXXuermuf4wH@HASzvTS$Eqy{^;i zVZENz>s7tpe&SlMCEC;Paq)lM9C80TrX48lh`Z6E>njfDB!hm@JIEMAuPz-41QLRi zo@?P}{BSBeJ0fnsBcYAqaE><|jW3UW!QmWp%P9X`Zokauo~SCwRk^4tGVYd9=6-f| zbYxt5uih>C^xa2-H(qhXJ?205h+hvk8q+b6BjFiGLcl$ea>S)N62i98%@kkUF>P;< zBd)-#DEf(U+fs_B(cxZpHhO5$qeb@?-CA^wi2M5$$NP8wNB_Lo=zN{}$v%t@oS)*i ztsT=I<&AXi#?M#>&U_d^zf0~6I6ADHpJPDYd5&BMv(t^^v_sodngZd7yBrbsgV8aS zS~+KwMq}zGZbkw6WUQrqOhiH(a^_xkRB4BEH-7j!GVYNh?tl?_ny3leP~vb-400rN zH;lz7bB5XHkW^f%QT?b#^B{-QiQmzVh&xa>*%9Z=`Ul*X$xWvp_u*`WOPtf-3TH_{ z>4ZAWcn~-pKP=fIzU1_ifzwyh$Jj@O0zcjx`zRpr$kdTEzz1?0^~LURbf2)BrD6I-8fR+B#Te(N_FWZP_>C??F2W$AR)yRo zpN}9cN}{m)Y4ce#V5+eUiIROFeg-Vbh@c6djA=;G8z0fQ%}9zZ+>1yU(Gwa)AxOb%x!WM+4BGx{Gj*8Hw1B{S`edV3uSL#ombh0;S@Jc`tm(M)0U(;xHpu z3R>yqF+pS-jn1(>@WA90K!3?pPj+%*Xj?8{OXU#>-9qU8&JLW8e;N`oZBjM*h=0{W zQ4gmGa3gI?f0v+6e1YkQMpt*tI61mf>|ce(f#4SL~jV-^y3jUn=1N9*0 z$VDasvV{w&zuNIZbkmJ1yfarNihkhgA4e6X?zo?!)KBK==_f}Qa%9sTE={B*8C{J^ z_|~o|CQf@)V{CCp8O5?xa0)K}#Acj-ujJzketKhCjV}p^EKXv4Cfo zgl%dsOiCzVbh%9wxoe_b{E#mZpEcE=?<-se5*nn;~Hv$KX^MPIiy`n`d3F`43Cf!tM2ON)NtNWAG7A zUek`kdz*OlTsC?=^sN16fYiQ%TAePPVP&S$43$RnT14FRN-Jq39nN=3V{ZAH-a+De zni2wa_~B)XA>g?$sx;;mPs27+01!#E#7{=INS$73FZ#COG>-4)SU7vGVYNEOe*>0kX|68 z(b97`>9GMtUt?p;q&6A&%CYe&+2k3@;N29;#qJrQDS49=q@kQkcdU0P%cj8pRHHbZ z4k48FD164YOm_W5j4K%LEX~oF8nigboboTbIGu=tP&WL7YZkj(hoQz9mV1hXayvbl zpA6-EdOL|wCT*2E?@%V&JVRN}_GBpM-jSA`p~Niuv{1f8Z8CaMz>O~S#Bhi5fN_$( zEn{?`uT1OYn)RwHls_14D2*Z#8gLaR)-a?M#pKvm62w2rbpyX|NlwR8L(a#0M(rhN z*38Jq$sTqk!c|j(Y7n}=?{k~J?lzAWb4ltXgzla(@pEx&4|gXFByDnlHnMjEVKAoYVTmxpdcYwUAFiNR?lZVgLSw#R)r6ZdNi8`iV)Z%sYLqhA z%eutWiSDO`D6x;G65}f#g0SiBT(#eFZP@gQa`!b_WJ0az;t851_*d+_b$9J-XaYT4 zjQ&#B^j9e3Xw$^PjYv47B^Bi4@)iUeHFI+n1YTJy-soZ`=S~ov7vzzSJk~ma)31{C znFBKLhXuT9xjAncHki$kQTX?TW?!D0hX8CIrkPB0eX9@5NvIrz%6GinAstc)+k?r z@1w!Mr#w^L!p6|X*#{;vME z6m`36+@RwN_T8AM{e5#eJG(`KEYBS8@5hM{oj0}U+oE5KSKX&hbl_Cl*hP=?%vx~h z_zJxxs3fk<9iujNmeA%-Carn)8P5?w6njz6^cU?)_m*yOOcwXpkuW9PF(aG);9YyV zlWD85x(Mw-oD-`>I%8?RN&G$L=U(@rc=~@9#!USKZkNd+V_?A+dbRI zJ<-0ghd%smL1eeTtz3N-lfH&}_GPEO$lod`OR#ss#c4BM&*5(w;&}KQHjic$N*3E* zqEVx=XhaERhVV9}ZjSNzjfOI(e-#Rw{!NlT&d@s(R|j9A1CRLZB@c48zele$BtCX& zztFS&8&9+^NXe(|1E&|Ee5V*K$j>nfoQ^+~LbwCjNHGhXjz45X_%7uzVmOdKXXt0d zHjHd>$9AyGj%@=t7DYYnxI)ipitSLGS|-?kr#q2?_8}2ry5`bu;$*HN)_z($6YH3; z2IXWeB38zzZ0_z_K_-4KM0-x+a1iZ6oJxsKJx&y2iJZhXAm$a~mGVsNBE-!8ISech z;t_hBxbyu-kNZpVJwF*Qdh9K?;s+bZzaA$lX)X!6Q2Uv8&MjOKX0QiXIM0`jW4JV`h2?+ zPsGisC^GK05r{+K1bZ@GdyxOauL%Aa=6Cy=+U%w_*oa)E{gK1jZ9{}}QUNOdnu?9% zR7RK{7Tq>d*>aR6QQ4rtd&%GPdyQ2812nthzrgDLo9LtQh;IK#=g86#IDy{RA?}VN z&VM0QM8<`!pi7|6gEKCSE*u$m6A!?1^oVv$+gBih{;X?6<4a?%ITG3=M_x}a>_`VYH*9bpe`SHSUD*W$+ z{}%XJ8<;;^_+6AAE&Rg5|4{g0;3tDWZGR(=bq77zHyQuCn9DEY7BArl-3GdCqF;dS z0>!09g4~pLR219R`N;dmk4Kk{NXW0D8%;}z2gZ785HT&aK;{(#zh6MqGDM}3q(nN= zlRojH#Gi7$gL6#jNav(Y5z~Gx5Rs72qnCe;fz(Tf#=p`~()f-)1NnUhe%~i^hx=Z` z-|I!b8|c>k&W-YY6TKj*VYu(y^+>!f}h?(NjV*i2_d6z&H&`f=Jn;ZDvQ z<>(ntMjxdqf`+q$@F!Cx7KM|!38(!5J~6s%WYTI0X^*88^|p zc5HVKa_roCb}URBTSY~VxbsF!Ho!Jfh#yiZJo;L=6@)unxg~|$Nw__g8!O!W!fm45 z+uuUX_PlT_DYvU|@8dAYY0szJJ;Ht1hmFnZE;dvHH)mc(#{Fu%mWQ@$|D)6c=nC++ zf_4CY^faNDbi49UC(Z$wE+Xh{ZA3!eN*YAu9goL8m;yI6jSEH~b!6)KH9=D?kNbbZ;lM8|#}$*`7+jl)uACc{#cZRaxk z6b^tp89E`oWbV42+e`+Uv}!*&Y1Mdg(yAhp)~^*fYZvwA_=dpBBVWO!uxhZ-Y5%92 zBtsY(Kv{mX9P(o%wx+`UTDflu_jjCJIqkERdxp;LC?^7i zJ6^f?z7m;oNx0FT<(3d`FX2{E?quP9E8HOE;{4bme}1b=S@MIX%yoc6 z3eEx?14yVmF&FaZ9m$_3C!$}CuZhaf6r|6+A9JRU?hiuPIv@Gd6i0gr_Wg33{?m)S z{Ix5MOkJ2Q`SUKHWnDIwV>{rUOomXg5iezC{zRi}ESK5mP&bir?)(WvMoRvC?)QJm zpN+ws4?V=nP*|Bj2Te3+22PKh_5dovWb!8-(g~HnEW`Y&!q0j|@~5XXIU-F?QYo6G zVCnC)J?_a7_)fVm2=^P|E?4eC;hqrgEamzMce!wfDtD-GR|~hRa!=FgEty?LxDAxs zOt|BO8=~B`;CjzLott{(Pip`(e;NX4{xr=Fe_H+&A*w5XHl47{pK5HKkNkOz)4K%w zbh)#4_u%L~=t3j&8=be3iw)ZH$XuWzgt<5EMrdS;l;)9f3V#n(;?CZ~O?b-6hi3F} ztx0^3l>4&{rB^8_GgIys%JOiTy$|=~PPt_m6M25s{TH_V*XLJLnS!o&XUG2OOpcWn z$HtH>rQB62f@4!@XF&P0ONd9Q6dv9AoP+SHa5pNqyKv_Scd>Glh1*WJ6O>y+xC4ay zx^h1jZav|)RqnsEY#|#O3O7`_L%{XUpLv}rOU&ojbO7`DH4Z?ZUyuJr{`h`=y-Zx! z^K1CAoCzfBpGIt*kNnw%lVn=|$elf@8;3a`wJLxF*|7lX-Z+P&9%opXICj62IM$L4uuT-=FH{PTz7}o;;qFmxN#S-9?po!>3OB!S zzzMW=trMj`Ewe;%%4;MbN%z^ z>G|^sab5XS`-oNkB(rrM`LkgPt*x+xj-~IeEv9v*F(w(qWdFA;XGKG?e-^bfhSBk| z!@1x+?CqUli7g~6e&Vgkf=OJ;3*%)}W9*UQ$x=+)!mtDsui;{Q2*<;n8{x>dgf??2 z9e?`E%ne!&bF$B(tl7d)QK_nO0FPCI1axa62fsuW+vmw~lgCh3hBWGRmzh z+!Mlm+(AtFM7XCrv&}cC6gKz^x4m#vl{-SXYlXX6xj(O97h8YGL*Yopue@Z}J!y3Q z6i&8@btH_T(AkTllY|a)9SPkQQ#4mbCQMoznJ^|XGU2TqkqHBn9SMC8M#jx>V65V{ zMe)VilP?Qm_%dS%U5x1I7$yEpFCUnfz=X&IX`CRf66{0%B%k8^e~g5%e@m=zY!`mHK)2S4e<)G}P5`V{kOHsOS@cu9Rjmgijl~u*c#Fxp+ z-k-wCupM^3Tbxvc8|(*K&QsjR1~UI)NA_wYRU)~oNs~{cNf&K0pLYPZBf@=2xqmO? z?xzX&S>+BA?h4@+P;Q!VhYR<1doiVnaNiN`X)1*cp9?qRB{qAza*GPLop4twcRaY> z^Yv#B{oVVGj{(f};!FTtFBYbo;3=uohp4X9neu~Y>bTxV#IkiB^R?%B#}PUH=_=1} zX9tdSM`~g0{RE-ohj&4^Ne}PZvIQ~o=YLHpSISD6nLoEtmXFKq_abuU&k78jY-7R+n1^d)?3CH*^XFlo=|IvBpJqLANh;G6s&pXdh1x0)u- zX(S+A-shc(_c3dReMYT(-^w-lq`);KfitRcf&Ck~HT%5G!_p0w&0PYg!|pcbd!ioO zblZ5uE4JYEg*iws2;T-xN~pflBu$z;YzH@P8>zgYxA_V83YCIeSGYTbyHB~F2={b* zwqt{G{e`<)xO0>{Lbz*%`>t|-Ud(1cE8O17Z6)0Igxf~B8^Fz(d3+?gEl)nbjQw;% zz-SFns)?2W9R|`P(P~q9a;y6rh2QE(bO<%jBhe1Dai`?XM^rfyz0;P0!AGL^DaD?4 zBwCSraUF>c#J_)_Bhg?wO!qtzos0bTW9NL#59@J^lVGneci~$R9OmO>h4C4k?CSiG z(NN}xqPz=o9d4eZV&jqQ0nGW~Fv@OnnSBIxD$Cp+pvh{_FGQ*#J(mR0mrb z1S=megq2}EVWHE0w+(XXyfKgrptzPS$oxgZPoqlA?FXevQ)#kAo77{QZNr4SOu5U1 z`@C=`D>t8Tn+tb{az_fcsBqgW_dKusZO;g|zH(a&H?9GjT~fIlg?pk#{%jZjaYXsFt{tUy>Q-b}E zq8#a3V);gDVZ62gBg4;^ufimMj`QZgl|PHA*hrExGk@Yy_9d6uJ5e{D`O_R3Dfx5y zt}B23KhKxjh1jx>+Hy?)Zbg=*ery@g*c18n`7#!t`1$fCKH>Q?fCQiNoNi4#R~*mo z&hdQ7B2Az1tBE711p8LW?7MB)%0001Ian$2d!xR@Z#FOcUGeKl#l{3FGvn7DWrMiP z{wj6j8NY0dh{W&XJFfWshx6p+azC{bEB#>Q#E)QQ*tr)ukuSD{tLKdyc!(ubUg*!U zFD3kBs>J>0kS4pN$trEK1&dFoEweR8;6vq>7w&4|4p;66!u?*jJ(Zg^pG}!9+$PG6 z7VbyFt)$%j!YwG=e9EmY+`+=lY9aP62G{%kD|R`*`~J%dVBUWZFA>oDuV&^`^X4c~ zU3s$tuR>j~j$P|JKeo=t{g;U&s090HdHil@#nC%XmK#^*Asl@FRj()c(^0kz=K8KQ z6&p>Y%*>xcD67I{_7NNa_XhlX42I-S*W3S>{OOmU^C7=j83ZevvXxvI0w4VV1+ zf>x50Ki%^%|7=V4Dvc_UKLw=8L}{``n~cKZ(`j2T+-1uBWiCp?1_*bua@z`big1T0 zH&M79h1*`aWrh2SaO*2~x^NGLve_k-`z!AnY*mHpr`(?4dgsq?e|Y52bpSJe&H`xu zWExM+pRbAP%AZ$vTINp>TjwKx*7FNTdwsdH-)g~;zSNvX=Ce5n9p_I*9m$`f?4N7? zIY-6DBiTln`EwX$H@VC{g}U*af2LsI^!ZP2{U4tHGM}V|vy~yR^6_jQ;GVFM-e=K2 zR^{hE8Gz@1F3z7t!cV74e*R07rqU!uo77{QZNr57wQ`pU_j%#YR&GAwHW%)A<&G3? zQQ_j>&%%`Ryj8G0Biz=?Z7tlm+H7_e)}skaA0d>zzOI))jEiKhpus{22#e zKL2k%HGd+B>dK!A^g7mJ{t030eB{qCoH^0+KOaZBmRSBP{_X2)PK=B^|7%J99Oq@b zD}NSKv5_QYX8y#Z>`N}Q&!KKS^QSp7QlI}f{xA7+DK}d=vl+)X6jtu~5LSkjhK2M# zi;6I4mB|3gpELXl!`4IiS@bWekw3Gf$>SHe$w?|jll#2Qu+Yu+~dL>s@$c*Jtf?(%FQd>2;nwR?r`C*5pIZb&++~+$M-z2e!LQ0$ell@ z0nGeK1mPcVL(imA!uMlyX#FEic1e?~O{B>d-VxX`n{ot>QYmt+yl__w zccXGY5bpQFU98-!I5uUra3?4?TDTtx_jTp&7j8k}wpDIz;SLsVsB#yB>plOpm{!=G zKlK63{HY3{`BU@iQ}gHVsfFG7vx43!TI5eSTj!ZSdOmZHUpCsu%U!*>2}iCtv5gzE z5DK1qYE_r>nJ%&&F~5&io{EiTROWF$Qxs)2sLbrAbDKMH-F&pabj(|3*8X@6LjHIv6b ztQx1{)kd)Cwh@hOL_%<3dM`w&_@VHBph}#%?3N~FrO6s?Qk8cewiw~gQ|>(B<`wQc z%6-fWbX$Gl_Eqjc;ohmrrZiXX3E>tHZgu507VcT$7FO{x&&(RhH|M;|6n?AonOW38&u8%ca=MQP5mnA-mcbA{pXow( z#naAbT2e2r^O+y;0+G&VCVgdbJ`>BQ)*ksiX&GL&t)%bQt)TC$^)&M1tSZ4iH=Bp> zP(uz$dunC;GlOcJVG&i3{-YF0jA#m`yGz zCQre!b9*s)O=V7v*Qp2-=2lu7(myU5NH0<-OKC9EBrbI&LxP2#0Vb#3xKZv$*e z!hJ@$nRxx=3>zifKO?03Zo-`{+{;vouc&@6+`huytK90s?JwN*%Kb>V=PI$;PUZf? z+W=bw;f_=8VB#86$Fd<8!dm#n?M=#sIUz3K7$M%*IpPjF_8QMR>K=5wkvuRi|C`Pt z^e+#JoN-J`$>n(e(MSs4mUGG?%Dx1~DDn}}h&EoGnR z@S>H`m&+#7kAQ?F5~dt6+M_6;8@=+I7(&HsKx@Ed9b#z(lv%%pUx&CXqyYYbma+aF zPJv_{*)cDtgH(+0Y1H+!{XKKM za(iGD+(Gy2@_#5F=xE+$e$5Cxkmh zxqiZ3F5LFY#q*hLSS{T8$~_&+W|t9eN#!;Z?l|H4DR(WnIUh1uFK<2*j@Qnbc?N%sznuSy3a%^STc#@^r=@=Cu-)7L> zfby*Y-kUgW-wHpGkBe^^#$-4a)?1p)*Ct(fJ7G%@?t9ApPPnav+fTVwg!`&+9m<_6 z+}gseq1;EjLbtsr+!D%tUASL8%Vs~IlTw&{T)6p#o6g6xw~R*Mdgt43=Zm@X?K*&& zZ)X8C-;SJlYQB9aphaG@U8Q$ zH;#xB?AIUg$OKCtv#EvAnflOtTM{h!wg)>4_xD?8QL(X3%FKM5fU<>LX0Jotc;;Ij z2onUZzmKwG;ka zs>B{`yfn!y&rL>YldHT1v6T~UALT|0_mps(DR;YY@6}>Eswp=_xO;?KNV)OC-6z~X z_=xtF@yA3qyRmT3P$}}QpKuomH(9v{!S&9!AM+G<=i7b&GvB@i(0uEC`l>kfmeap#yZYpmZT<_Z>sn{4! zWgh#vW+;oMGSB^7Tj~%0(SEKDx?W02^yGf7BvsJPtO8vu_H*OkMEtz>bK$2bG;v{9 zaNO!M6>HK;kaE^sHM!omx60zwx>J*#UO;^qA=o$4cc98jUQrSDbMYS_NWo3{1&-}I z;dg^3t^V)6%S~dWNkeVY15KQ^xx#%;xqF4{5N;mj))emR!o5pJtmt=va9p;aCXi!zdfGE`1ewj5`#5w+MX^I_%eK~JBT+ibnRBXgc znK?g3qiigf**EclvHN{ZAQDK|e`yf7D7MZ={ygU69Q*Wp9O>OvIeO1h3*)yj2q@=I!$rW&RXn>uwlnbf|;%Tu-@+=T+vY{!Ztk89&gj-nE{S z6KGohDZiTVUlaa*@E3UUagOct`wYEtl0@r2c{~M6AIEVf+ZiVblAlYSk^J1li+k7n zHj9dlby8;L=LD23L$nf4~e1czawz&zvkz0gY#`%C5}uGtXw||R)!UTh4g(Q zoXyfg%0>oY{U?VQ?S!93mAw9wCYi;#34X^HO|J3|z*bJU%aj`_+*87xtlaIwz4tuZ zF+{l`!rdd>_R5VH?mpqxSMDEgv)PS>TT;3Ggu6(%e#$)vu6KUcjVtXjzX6!}Sqi{h z{~dm6e%_f?+MS;#Xgz1KzfI$V-y3wa8DzY`Cr|cm{B;7`uN64}n}}dkWRJRGFa{Lk z$j(J^0(KDz_Lr{l$nBN}V^Q2EUn`;7Y2e9Z`w zd@U+l7;`>7N5#e?UZvyTv-3ahJ&dxOTxPF8-FW8f6bz{3Yl%a!|G(zzvp3o6)aN)% z$#fQNJRSin!+OF(r~OktC#UbfkpYyiC9g7nk?>=w68U;inlzOr{k2Iww%ImJxRJ_T zCfw(RTU)vLgxg%WrIkBUxJ8BgsDa!E=XvRFdq%j|sT4M}7H(W1n|(mJ8-;r-g#AlY zZfS76^R?K&9{HLVz|7Z&|G4vYed<&5^(awY^JxWoeQJ?E$!wjE=kYKcA<_G9d2-bf z%V$#yw%%6CaeaU6^IvfD^^SC)OQu62Y0fgwk z=FcU$Yi3s9_@>cew6W_gSQ%Ct7Seu~iZFRqCIcvc&fvWVt^b5Smnt!Kv!u!60B$l$ zo80GRzpbWl`zW`MaIXosnQ{*ZH~U$(qndI# z#8DG{|L+Dz`fe~sWI44ko`czvKW`L~{FyCV1atoBNyWwlDKqn@J<0}gnY}p&z@0zY z2%6;2$NM4lU-M`A6}GaSSegDJSvheS=g+yqoD93E2m^70R*sZE3okOil<-$lCC1Jn zO?F9>soG=wJ@%{fpGBrQ@xPnPeHN9tEVyL}@Z#n~dUJf^EHU-&5`{LlA_p0mAL4+_u7cVCK&v0L`DwKw%&p9eK9?7!a%%8(3 zyUAttS2+Og{F#D*)AbLz_22X7S(#5#OS6@Ju=4RB9^js^&}qL|M+Rab8G!WFC4lqOB3$trD9k8QRM6Yht~T_)V;g*#li`GnhCxIL9SQn*Eh+eEqNc@=Ma zM!1!f+giAB`Pl4y%H1g3Tcy~)tlDC4X>h&sr$rBs{HYIM=1)}s&7bvqo|->@clXGj z3UjRUhwSjV-y4RbCtCkp;z-vL%lA+V@8l9ZYG6OXbl zxy=452f&>_&5@D1{@D#ZoquxY^23>``C2+~#=m}C;67x1#0Bsmz%89Cii)}V5=$IkCod;xYvX` zR=Ed+n{8t|Vw4*y+~dM+sobT)Jtf>1l$#e^@0_?hfJXkef5~`yVVMr_r-D-ee*q*^ zUi95lb7Cz~U2{rdr)N&^zb6W1%Y4iyy>XO8`~P1!a=~Ktzb{avI}bplIUknfk$l+0 zy8zdGGK-3hby8;L!vvHqc(?FRRhj3WAzCWxC zD*y|f_FyW)^TyMAFr|5jfLA*x&4H@NVuWOJqWIM?rh#b z8DgGqehy&HCyM}dKIxtG)ZBTKsIJ^OL9aV4_EX_(osaw}ha0|EYiNaa-S7$58;L@ zcNVzb`BSWES$F>A1u*mHVG{zHKjn5jHGhs0)s;VUW?ARYOhm{#emxfm?O?iXS2I*3O?t6a(fWI%d*a+b&&aNP;%KEpg zpHYO%>|cC<;ke@ZqTClWERhNJX5XrFo_vGNrv0xp87EEtogqzz^RC9WMz{u*B4^I^ zWv5>i?qTJ&6z)XfZdLBr!fh|yg~}}{+)l!cRc@?sfB1*Z?yub2ygIi%FWgAsMmj6s zpH7~3kR~s^$#=(PDsoIagdd~WAI&z7h~^s`?>SeYpJ{iZc9x)LH~+HZE&6%4{dD~J z`xo>}=fO*}FjAN3qiqp=q@Q4?j{(!)Dd&gZLC4h?5l>y{QF3$BSU5VNy9dnoNn+)hkPd!*Pn+i#IP++yg#sn+T zh9debKP7E5RrLGb?D3AHyZTNEUu#MMRbN+ zbO)AoIY$~!?fg~4+><(h>uGQE*aobn3JvoQRAkJeX~JumtBZJf5noV5!hB59tbkj* zsinBBwJF|ILtK*z5MLFp1mQp{;Z>3BbshqeBwj_u`-%9H?k=y7V#$_stSOgIaz-DbjIKnp9Va*6 z*}>cHkl@-6EW9lyf`6P~!EJ@a+q*s4+iGsX-rj;pu0GT;d;8*M@pknH@wPWz)!T50 z^YNt&V=M9T5$y4& z)RxA#t%^?;@ts{=9^b(tKj-+8xNRVH%;NRw+!5CNay!TE)B(cD(=ELIjUJseUH(nS zXe4~BfOzdM!r^Y=cPxd2N0SZLLguq5*>@fuh4+Mtg{D=YCqBAzWFk5chj-8tm@ zUU7N-01HVkuY(_EsQC8vBL0Dj2o^cvxQi!7mQ0In(=PtRbZgOzYs5uQhFNjO@C=XYbTk9Bc*?dL5Ftz4$p zJ9OS&OG*&ORmH!6c-mA8uMf3luiuk-`(i%v+9u*rZt-cniOF$mL43NQA)mNWLf%Tn zKN;o{A3_}C6)W*(BHoWhGus z!~-PR2C4Y+SJ?BPqg9px7N0?T{vFn@VN$9RT5 zwHCY~V~neYxj20^##o6L5%CCWOJSa>;z^y^<3BsPJg#ObZfi^(^Hdt5VJ=P9=#q#o zDTbewXk1J7_|7I44N%cGA{y%!{RTS&FOO~ehp1>_xu1hqU(YF;Fxeu^`9$>W1{PhM zTf&?c#hw;+i#GEXm8p~dAM5J}DKf6LNmRlckkEv}ThdB&S_}3xh1yVfpI6b|BD%1H zE4+uW)c5i<`0zCy+cI0_7W#3pj4iG@w#VtCv1F2k$Nvjw@r&QE_?NlF<4c{`<1%jX zNK0{B8|v7#21}L&LU1Fph=h4;D_Mz-5z)D_D5$HVZ;0sUkuHzVV#)9A@wuz&@wheO z@xwvl@mad6$JZawjJ4)H3y*I%XOEjwTMGA9Kk@iZNA|d?TRhrZ-1T_ectFOtBUwWC zZ@^@?a4RY@YFh~p5aChOmV}$C@H-;B@nx6SSFq&w_WJ4-bDpN`#7xqdT!eT*w|G%_ zy?LUA*XNqC*8!5*d$ODJ*7ZRL_PVZH{B>_}S7u|K-IWprGgeo!Mnm0VASKsJR-)ZR zG(?gsLPg&f(eK*3JidqJzPHC&>FV)4*-P1~k`g?|RmCeo{QC(O9v`-|$KS|)>gd1X zab6K`?iL?qDQ-LUx=tWX_e z?DzKi(Pj0zmuB~s0pfLM5hfe_JJLtv(7P61?|6y54wmdb^N)C4RKz3P;_q3C+x{Uf zo~z%a*$CtOCRw9%HH4j1Z$w!M*A?OV)Q-IFtHKLjX0Ov6F0b=g3r{zNr_nhvgnz%3 zL%0Nl&yKh7cwJNW_+@HG!q@*6kIRd254UhUmi{@zjoF<~1FKh)yO^y4wEjZzfp4 zWBO?Hvl4z@g!{`AYM2VIZqFWHYUlE}n58gn=IC~sB+H&)e-&Qf684`DVSFFLYk|M4 z347dv+LFijAB)E|M0lWEcrljzIX#AxOD<}H?Vz)3cpFMebPX8!n(4LwB;puDti+3n z_8!PnEz_X;$3ChT=18K`B*#lxPV){sinBBE1&pLW>3_`UQH7Bm_UAkaG;g& zC=qTY>+13<+*O3h&7p81qM4czvq@d)W){uimp;O}EUdHQqcMfNza zJRE-dQ#=k3VTW6IqPH-09Q+=2%ul9aI(fWEaYrU!bBkA_BID(^EyCSQ#Oui9(No3e zw&HLf33qw@FP8c_y+%~en&Cd6XV|}<$vMVnMp}sOs>dGBm-Fjue~8EBM6|nGG|pPI zzbU#?CXV2DpAdb`O0c~bIt91f({D~6wy@Vq+gbrEVu!T~DW zMucPC!rx$NpVMnR4p_9|b`f23N@lG&ZjV2tkH*ZmEW%w#gda<|KmJWTKH8i;&hHj( z;w_BfY(-iu9=%Y+Yp8e)ez$^CfxSjiE8%Ii+2e}Tjyx`>!mo(%?3Y}j-ixJuPLGjK zDJNC<-IX%V86*gczT#I{JkDRz+YV#in-*UGuNI5jsV#{w&l0cCG-I!exy4&siU+hI z4fZzZ0$YqI^E7*mvf7E^cHtLrRr&twIme?x0G?F zkN(Z+qfyaH_*D^pAW2q7g$Il9swOV4f5P(K+v_uF>h(a`xY>f$>x=w)gS}27j`77% z3$IVtWUs5s#%;^5;`Qy9*z3w}@t)S=y-e{mJxq1b7{l|PGS=|ihD57oB_1K-AIo8C zn2Nt8;%ghbJimbDzL)2=t>h>t+Ve{#(T<$RF`?|IHyy^NH!QqPsli@nF5yJ`?yh+K zM^pB?j$63DweT>~Vd0AUZ0?d%cmNq@G_VqGD#EwL<5ns>QG~ZQa(SGArM{QP0fopT z7LHJle?Bg^))IcHBe&M>Ar>BQt|Uu&p5F5(|gVl~Bi! zu+H7Q;&fPv))mnr)P_X6si?CFhxuSbm$#3x#P{;n_Oa>hz7-;xc`T>sslgVWZmh?i#9h!KS&hOu_TI&zA2}C>}|A_a8(iRNbN{?unMne%-)`F z;PN)WQaHFM>2Qc`^02T~CQBfUtFB1yAEo>F;vfsJmsMr2e_p`ix9MOPU&pB^;(guX zbFs(p3U%;2>X^lo*Rj{OgY?D-;-&e`5li08FMTz~EytI%aw{(F1=>0$MJ+1DceiyXWK9Hpy@ z@1&2$n^xjCDzWD=)RsJdSH(9sV9)Qo=<>XRwRngr-fp&tuc7xV@VpbhXW@jaPw(=K zdjl*yj~4O5)Rx5mz9pX57x58p@m1IkczGVM{*Zc}qAQg7R6ydkb^KaOrqQuh!l#~R zuj6HfGEIedg|XKU>bbnG?k${StMi(ScW@aJmQV+jq>n}}E72$stwn9f+oCGkRz%-- zi}L=%%Uj!@^d5)r?MiZQ2Y-H0lI#zD)d6o)j9L9H!hEPAdwWODMi$(ZFdwVW-WG5R z^Zvt2IQS*fVc}uA9;>NiTvLQ8;{J{3qfyvOyqSpCk@Z+<6^|0}gu1R!^Zp~JxGU5+ z399`OCs^>tR5R566DcCb!q+T3-t`=N{AfOhdi4$Q_`-|qaY?sm1oj>|Mai4s_N2ic zXXvhSo*p;G@jDjI>V8yYl(7;I74Z$!md3e?iuV)oC7~{lk765;Q(U$=^#9mLmv@TC z-yJYLwiP6O&y7{_zoKcTGuH+W&;VlY}dy)ow{H^XZE|U^f1dO0l zKb=HIV~nd>iB}ZyiL%qEui|ft_?kK{kI!QZkkey`U-&`An=F$_q&O)-99I>86`rqq z)xz^d71;BCW$ym=ns|P%E_+_XEzbK7Z}EPnc(8=q_Jw+mtBO~omrO=2EAb*CenrCG zM8!vm_=egp&w2mhEq-OcdhQn|o;&Es5uS&-#cRRy#C{f@zyB-l=**)PpP`VOuJ{PeX_fkX5j=mDQd04?}_lY zwOn5F{v)R_bsU_zPrW{zAYQkWBgg>!0bdPybNXl`^|kPNgow|kwsd=?UJ#)~N z+~U0d@D?9#if_|}!bMVoySS?Od5GJs#IKiU&)=0~Yp>!{MSS-QF3+>DBKHyxh@*}< z>{&D9-cC=EuvZgtn#1=R`}&Njd-c`jvtj!@$t?Bam5mx73UI#zktKwTemhq0K%z`-o z30eMjtN&%<7>9dXcurh=>v1f#CC|@Z7S97k96xcchjf#y#V4EM{<7t<*;ITRzXIX8 zyg$S{Sc!jEmclv{inwg)-Gp5sB%N_Uy>kdlnGEgWOr+e&m}8TL3(c9=s{bma@|@rCLx zkBfSX;@%D<4NkP8(`BsxB~LNd4fq`lhx-$VU+QJy@$({navFy_^P+hCyomR6i_gQh zAg9OB7)o0F>gXgrJ_Dx8EjH^ZgmS&GHzR#j#Rdi!b_Bf-O%j5EvqQSw` zKYRR(E`j%}$GGaPRg9cB?)0?q*e2pDWeNP(FXC}s5r5Myz5?5UoF3B{)0f4`)28|+ z_M<)W@F>hLfjHE&sK|K7N_ciD_BvbU@K_bzQG>nyy{gOWDo+vKLgR!%FRQ}m-D4aG z;YU3zJkBq|V`Yrp5PYVfNeldkD;}3w}yMe2a;fKkthcLhTH3C`e;nD5`V8G zd;K=GrO71zf`mJzI(z+36_?kc*5Y+d@hBA^uP20AZt)p7n)I_0|INnYB}6~0bAp(6ZPGW_H7;`PyL>~(&(a1(3c zZ_LxdRXUN>AYoE7{{aZ{%_wRme60j~JX9u=aw`0a2+ywU3in=Y2fREEPT8enouRi@ zFM9O_kN@IVV4UGM>7y~Pn}ydsMSO$YTFZYHug_FvuZy|GTU(2_F~zShl0+?fJnZ^?ZdsGQU^Pr|>H=_WWz& z7>l}Ec-~UP2goDy^K;_)FICv{Qf~3~*5WUl;{7$t@wb)X`4+eM6nbl7l(iE7wm5rU zMY6oAioYu2OP_anehk|KZ_khKRL}p^G5?7~A&#qteG74nPhYX{`~?x;DPz9wtayI4 zGJ78E7LT$Nx9v3#@3Lr3O`^f!qy+JE{JKQ;*p;k=zbM9D?~t{4T@`*qgg>w7^7<^c z2Hswu+o4|1lquDgO7Vs8Wqv!w<9!DqU(?0H>#`#LvP`L4&xqG|DzVp9-Qv-f;hR+kv+mb~TZk|-?S&1$RVvm~+i!qiKn?m)b17?=`BjpwEal$e|QQVqU-M%Qu3I| zc2d33+Dh0N$liv^`n$6V$34#>-XG%f_90f}IlV<5{cpRD@1}QUGMPyUh4Ed%?`C*> z|E3}%HOj*4+#>!CwWUy>J}q7s5%G3z@d?)A6HW2kdP^-;@fwoVWQTtzvcqU^B|few zd%jU_sU9jmry_fPxPr^`f3PC=_Wa*%>iIF+JzxwftN3oW=a1;cg>kHth39tySbU!B zJkFmI&x?zA2e){vwfOs{cHKfrdtJM1&J zYS_oB_^*0exRGC-u=p_I7~QSJUl#EuB0fOHKM7&a&jhaTB-&MaT>^33R~qhzxW$HAiB}czh18Zj zAE)A*o@LK(mvea@Y%Tt*DgLR7|Dc{<#Fn@@)+*c zCnGe=dr^@wJ;Ea7ck{7$Pg#}DJ0_kVD#xDZb&EH&6t@NOSR?qfV)&(*ZbrrXGFH3P-e^Weeq&zYs zs6b~j_PDN{LmrsG?$3Jb*Q4hjksS#LJ8LPFagZtN8qq?D?^0T%P->IQ=*c|45A^ zj((x0^8Hx+LJiHD7dX84PSQ{CVAqFv)VSEn!rA41(5$TItQ z`gQ*fafT!A=cELp8VAGCiT%nb)Y_7$8T~rZEBF%tzuMTw{5`mxpS#@xwDSw%cArU5 zr%JmE_)-4t+-~5x9Dj-JrcvQ#`rW41-=fu+#YQn8I{Xln2k6YdivDa*=w%b#0!scz z>wX5Zo9GBo(%)LQ8>pd)HUWM8SnECms%)Zo2W)1IXV*y@4kD zPwP4W-Fv90InWRj)djlpKTV(%(2+m2E7jJ3ZCqP|HKCmW16098gMk)b(7Ikg0VaAGXzF>bvjaW+Sy3IJH%;^$ z(3Nvq_Y6>X6Zr!jIjeOK+Y)MRq70zDXSD7DP%{%91N!zSt@|D*)I^(szB;XStAU<1 z(E^~4PHEjtpdu!E7wG+yS~m>n(T|Gy0*x?HCmskQ4W}+8?&Y#e_%0Qh=R0`!_9z+%G{QtZfbQ(px(J{*Ow<(U=670G3#hk=Dgd3^rFF%Cx|t{s(BUMl`?D3H z<|euYv~{P}{R~vyL`Q&@@6fv4K&4Ey3FyObweB;ZTqgPmXu@`_n*nrho1$?*Z<^>0 zpetLot~XGB6LkPO`;FE$2Z}OLU7$l-wC;JJW+t)$?b@t$`GFdl=&zQ9)+JJ1+&=y{ z&ipf)*`o{cs^J3F(w7yCeGPmNl9aH@7h#DK-uFcquY?$1gdR$0P6Yau#>E5aw<7p& zyB>&`=J~f>v+?&}ZyMEzu73~qp;6dZr@6J$+hIN&yV62DKje#$tc10`2rHB@(-&c~ z5(fDq^i@I|Uxb&GP{|jeoD%Z*B0LHgH?P+B5r?0Z!0$V)Qe=k`R{H8;krJl(B8*i+ zKVO7yO0fGP)K@}zUxa6r@c2a^Zr*P$aX9ab@S_rT`XVGMVX-g593_nNMHsGx?!E{e zln~~N@PZOb_#zZm!teEb#Nl=`iNi@>ghNW$?2E8g33GiBW-4KXFTx-tbo51Nql8+% z2$hsj#1|ot5;E)hh{IL8#Nn_n!d@kO<%_UV3A20=rYK>sFG4>hwDm=>E1|M4LU|?R z^+kC6lDK&-)JGi7D&!gjipMaY}gA7oocnn)xDxDIwSwp@b6tuH(ba z-$3!e%8b@kN-cgz>%zBb3m?7onpP8u%jAQi9DFp@TFtb_nxguF_)Q_Dvjt~Hi89Pvd+ zQNlW3gwK=^=Zg@lgdx5NuPULPFG4dVRPjX!R)W7T!rzU=&Fe4th{FXX?DIuPQo<@< zge6LN-xp!L5@LK2dMKf}FG2$)JnM^KQ^G$reYp8YLy5yLz6ht3u*(-=ixT*Kr`0lP zo)X^m)x$_7^z=pOq=bgP2(^_^(ib5>34hk`5r;bsBo3#25soO~8()NVN|^795T}H< zeG!HzA<7q_of7K!B2-aAQC|dqCETs(XLHs4KjRXG&PbvwJyaxR%9Kem6I178MoLPAN>oIunIgG0GdP`&bbXXAO7-YU z7ZSyc%M7}qbU~rSI*p7}u4R7j_uBh&KA+EAis$L~yq-V4UNz^lZ)>l$_S$Q$z4qRp zkF5}_szOIw;k2qMoMbB;R#k;R+8Q!{Xi)_p*4qk8s;V&GR+wH@g(q!=`>Lui!dAGx zstP@Ag|ws;Y3i zt)S;ED^nodY=w4JK{(4+XjD~&BW;CUr&hs-pUyUXSW{Jnk8Fi^s;cm+t?)=y74Ekc z?x?E5Ew;ktRaFSu3T>*YaGI?UsH(zYw!-#Ps^G&9$%YRfS5;w&t?*h^6{gz?k*X@( zXDbY1cQLa3?=X|_U(swy3#g;XoTh=9cDF@ZlRroP?aSg1H_3)dNpNIJ+*osrG8e1bH2Pr3A~$%8F{%N4-Qg z9}6@RepzhjG4u^Y4L6;BReF!~E4v57`?2rbG&6EqC~|M}rdiQjn>P(cE-4GVn^q^h zsC84EO~~DocvsHAar=^LWDi}C2(X#qQn{rDN3mGyA6-_aEkog=O4{`>?YbuKVxzX& zC}UYL+@~NI9kue8!03#Ez%d!i0xdIErk8zzPmDCRyQicfAv1D!6Dd1Nd&1X7xTpQND4y8h+l@c z5cwr*&<>*+2u2WI?bH~3YrnFNE=#0Sk|)zUzT~I-A>nPh8vYbd;wS%)<)D>Hmqzw_OHdgx zU(^hS^KT}&HI0asJ`?+wFw?NlO;GK5tX1pEtUCHgF!`ki%Choz1@eBc1<;X{4|?f zbDM!>G-cnI;}R@yiQ3@L4}j%G=sdl5&p_U0^pB1?goPLkxs{E4r0qM#N7{#&pJ>1i zhaDLwZOsvuw59UOc9Ql}ATJr9<%A0G=IufcE~_}-gApAReEJNu5%N`_ib3`5C$qCM z*@9nL^?iKE?g9)c)U-2X-GQbVvX=NhoOj4lq21+CRQA*L4?kVMV4UobO>7#c>yN`N zT}86`Cp%=%nFC;}uQ5Y*f0Auzhit`KJ7mefbI8n4IRnQr9)T%ghwK@Ew?lR(z{~dU zfMqnL>uBGQ&0US$`~r+x`Zejj0(ogbz>ZnHGPIh@R=zR2xFMMu7sp0Qn~vH0b>p<1 z?9jGUc5Sm`7R50yxw!(o!+t{#F1%t4M};waUT69SIUn5Pn4OJZIT4`jG+Xp5P_3tF zXUv|3hB9N81A+C9Sw5sfHf}0U*HAR@;L%aVL#Ns2C&lRs)z(K&vy+rAOtYotAlDW< zW?w*Zz0>TNukDzP+E@8BTZ%6W+A;gFR(#ABmVl)5iDfk9#d|qsm|?2Lq{b@b>X`LQ z$29AK{_T+Uf^1983Zy;Kz(?AR%0(Tr!;RYDycmkUG18pkozS;Vvnv2vW^XLds_wra z#~rexDbwYrSt+REG@AhCamdEtR|Wx;9kKvmNH0x0L$(bH$_&{e2&{L=R&$QFu7JmU z+5#7k2bx&U7s<&dDlw$%@xv@#MKbtDJIw}}lW29UW^7i^KV<#Cv_rOHPvt{)6x6yM zvhx7mPP4iIFB3L^?r6#%_Z*j?qov~}mw$>}9kOfs2J-5ldplw?AlcHLZG4k#Q+*$0 zZz&UX#I80oi~KgxTO7v8J4%BT?B;*WrG;)?%2fV!Z8mC5CiuR(}DKSS0U> z9kK6VlwixoU2YWP?T}lwV)))10LYs#>1xXw?~ad{W5{+=FT z4X})+^cvw)jL&{dTec)Ce{)Z$#k=J;QU|&@whtUJ{*mm*G>R>SOxtt`)3-n^+4MT5llRBdA2R(M(o)E$7vLw* zajOoZ#vUQxo{t0dX8J3%k%>bSf9q0nJ|*$ZJikfWnLW3<{&*smcs^ zAVA?}KMHqvP}st1<4{f6qun=yI;Y5%fCIru)Kju=rF+Nh_(aD$;)G>L;N6K858AQ)Wu1Si6t*jmRIo{!`ye|dMeZWaHqvL z!t@ZNgVA~q4#zS#no>Q7KOF-2nfD$!H33%5&R4H|XGVui?j8z5aDU~}BHUx5v{nRF zyR3$RCJAfdYovo4N1-SbdA7V9t6u zT{66Lc!!7W7BBX+5k4+gQ!~CQznZ#hnX*}@#-+4A`KSU)>+bML>1C!G^fl}ss!>XV z;T~hZ2<2rjhy4l645E_^d}E!!dFmr(wE4tB0f-yv zq+tpI-dNd=>Bvn+kNk3fV@O_+aEQKI5njdke3Y2;>wJgM}CK19{y!>E^Iz zG-b$QA30--ZB>wSw8DK%7i$x>b{0qjIr&^7sz%D1C?_dlHmg`R=n_FS74TqNZL&e; z>>y^NCQ23@ZOj^;s(A}`BQr8;EHps{q8O9|rp)qki0=;(*e+SJ)_Pq}o zR;9HhkhhYuR`P|Ca>gPbDYJ`gHR!e{SZxWbDgQVmW93FT7Z?%@L$S0V+8mBenc;mL zky;MA&%l3<&4P)5@aF*xl?Mi60#qW@+{75>s539_L|$xqJgxQmIrY9bAUXq)F0A*O zn{Ll^AF#^N2TWtp%=uNCt@CU8?K;0^;%D9}5_6hb_jp8Y#LLmPQK+BB0dmZ?U$vI1&fy+UT9K-bxekWDqFDTAOfsDl; zOe}J!A;eLJAsvb|3g)k-mOq;fI$#p(=W;O#E+;TG200V6!W(y{2a*m8f6bq+wOKcr zVg+4R2LL%=3t<-c`vg6`+$B9dlh%z#QHQAfqo(y#!n(lNE!T6g1Gry9?<>+PAxv43 z^RRT!J~9+Jmt{{wV9_iyI%<}@iDJl{iYO%FB6>GgB975@QxBpY{u(NiBwrLz5#?he z#S|?U%Qkffza`#@7XPoARTcg^9wuHzQjEr6+-jJdtoSH^);=g?4>fY^7vq6 zWH89-@(HEjO;iFcH0tmGHb^qGbbdijpJ3$eVVu1n`|{-F^wl@WW5#sKkbP8{*-7%w zXC!_Lc@i^ATse6$v$o1|thGqbbM$L-mkhJxU?O?J-1#>HctZA@v?R}fRG=UO0WBVn zQg@^+fN^j;0vk4fD>ISy9usJT4o-Do6uTuZ_aLpCT!yF!z{Of3+v;hnx8!IV(1_}= zlGn<`JDvDdDEwvj3$-BT>~zgoE1QT(TI{$j-H3TV|LZE*XCU@U{Z93FZoqv^aC%+`$Wn zKSHqJdBdH?l-<-21KSu~gdz)#}Hw18zGC6;EI>{{c?+QFbWL#F8u&)}pZ* z%ftF2pDYOE-^shZjLBURl)E*^R4n~g94O1kgU_gZ&6s#rAdl7LpR35Jl<`A+?6|(r zWydK;quMZ3Q-U-GSWTB8rLtBR4srTn?i~7eyYyRe?5h-gK+6Qgk~p_|11CAgAaH~q zfsF+&0(p4bgOslHA~3ExyDF7ydRv=OT~-1att-Ae?{s;Dq275KeuCqx0`n z7zDW6fRh#8CKKVIgbIIe3f2YkUIl>k=)KJogZ;~7G}bd9Bu#n%A~@LNRv!nOI0V3} z?az+SG##s~s1=p>sc|E5iyBp>1LszS=~K0ys*N5+Ploq$3#^bvHWCPO9Yny;i(yr{ zAAz-k2juw*Qq|05W_iYi#5?LuOR#W{A?s1RV*=4~%$G@X4~LY^Yl=Ui{=Wirpz}(Z z4KFMd8IuM-W0u?uhCy@A;wQC(?K_0dPlIV`1_06($bb#k4EC|1@j~Qs;emOz4R3Xj z(+tkQgA(wb`t7CikOrL`LHZ0T+0Z3ZezUYMks-#xm4=XLFut9vhtGr_cMS6N_|gKm z$3g6Iwz^iBi`wHQw#O#E9%)Z(kEgml?l-QTOb5~Ev9Sy?Jx2UJw)ONVczJ|$^7XhT z!N}_C%65mwQpB`ukMH~%r!j1MOg23>l|69wLF38(9v6M!(s(MFze?8x4vqb7kL`Uu zj&ggv$nCL_?Qx;5GB0T%<4uq6-QweFH&2f*kgNTCJ^l=%#d)+G_Qh3*b=)3T>Ox5s z;*0PFs0XvyW906p2;^9$&_>>aJ0mp=1{r<~K6&4z`6y!W%}17PIoFgk^EMbt%FK=dh4g6np%^ME^AWIG)W3xXFm<5QuK@syzkGwp zmIMI|`vSbIL%znk zUJH~5j8|obx0AU^y3p924xE=V;%0c99+>m1%tkLVjRApZ%C4Jycn+HH^0+JEkMO~- zWAXf6x!~Y=ii_uurdM)mAv{9Ga~EE%A;~^CpJ9|Oo;O3=f&k)qVmUmYCZ2m>B7kQf zKc0)`xpoKx-@xKo0?J)HTf2Df zG`$kfVz`Hj=QD(p>VvaRT>+KPVcV4e^79n>^pV%81BfRF?mO5@sD>7N9uMO1+=kER z0|1^I^LY}KoP5nyc{F9%03X|@&vnVEMKs<*HJ4qT_cK*0C-}(es|G>Y-pnOu5BxJF zX9M0OA%lEy>MA*<^0_Wb)Om<;p=(q{R}HMYs$w(%STfo9218;RpF72rtag0yp)!=&Zwtx@6JcCxi?|$C;fI)CMS7nTF>arIQ`9mgycR;t!u1r}Qg? zHWto;{g=^DCK!)K#@(dfP?uOmYBp?_mJo`(I|V*zW_Sp8jti1P?cbe-WGI}G5XhSi zAA$>#>Y3p)gSkbuLt(AEkUp#gIV0dm;12U+8GsXBqIaVof`W_Nff~)xrwm;JM(iy@ zKEieDe2iE;2f5a%*o_T8S&eEgBW~Pl7;%A)02qN)NRfeC5j z&~S=wV5&czyiNweXGPR0|7_iF`9K#DcQG73ZVA^MVeh5sfrzisOPBgT=*WX9m*4Zv?^Et@7mU?NMxW~|T9Tp<)RD50yhthVFW2~0S z1rRZH7Jng}Hvk8$O!>yw-EdEL*Rt9K)17*ux}1=P=+Z7NNYxhg{T=aY;r9GfiA8jY zEP^!YtT`4S7vlc}ISbPmUg~w2<@n(`MNU9h3}c({Q6TSL-3Z*yPA=ziED~jHZ5|9K zhQbeWsViHk10apxLO$3>{s1(yE1<0K0Nj?J$wg=&|M_1KUEz&uCq6>ED2t7pKaZ#k z(izD=$x^I=(d8SQT?VsIbi!nS$PB+or#cvZ+G5=ksgm;$yfN`1O76~J;Pgch=4BV9 zq5c+G2Gs$?Nnd6}n_n8P5ewxmO=R!A*i}JhsszRtGkS9zXn@?RAR?ZPsn2y}9u_y9 z!(0fk%^WNwv`&#kesrqKb@W6ju;)Qw&4m4Ut(mZR^?*v^66p=_n6Njt^-NeqExi-A zM)N@4jg)Ro*jkz4Q!^v15TCS|le(^W4pCl&yu$^--K&F%ivr;UWz0&lAh=3$ze@}r zzLLBs*cs?q5Q8L?4V*0P!EBejkAE}dy{O9`h0A$a^j4g{SD^=;`uSwGjG!w>GAHXh zRzA?oqk&Ag7)yWY1*b0`?^;l?3gnew&@gtx@q>Xyc00g`c0y#MAQ7o<#5qzkKa`e0 z9v~-(oRXWI@l>T13?F9c9}6%X4*IKzZ9!$FymcX(h7pi1mYIecD$^Qp*1;$WiCW?B zINZ|peGt?Bb#@xayBx6O3$07?90}5I3s=DP{C0CJ3475NlB#?-5EEwiyj@+w;LA6A>3+osM*2kQt6Me9bv#@qz zxUDEySZ!QbzqvMV1>8KH_s;>Ak;?P1zHrS5c&<}_9Fz!b2w4oXgv&)F$;V6c>?gIIVUFq%zeh4M00VYgY#$)F* z4T*B%udg!Q18q%tuo%V<2!;PiMPt;~a11`R%`lyX8bh1?0kf9GChjL1fD1fGl*J<$ zQFS42pjxc`UIlLS1u9T}NyjG63{17yRO}i$@+Zd=pZk7t@R2%9FL%@X!L?Xl1CsQV zFkQAMUVk0aXS(SRnf@Zae;N$W*2$a)MFE`o92hybzfrutM3`Q&Jq~{)(|5S( z!Au|dbG*Da(+}*3r@JtHL_CdSfM0b^gKExu1^k_d?#p%r3cKyeUmbYxgHkXsn)9I4 z!uZ5yB1L;@jPvJM_}idH>`Iix@hyR(jO}vqS;zDvZh9&j#=5xa`7AGm3AXa^D$_mP z^i-x3+;oKL$-l~2KQw9Vf_Qyd$MohnzvV-wuW-}znO;fWn)&c5(+lJB6pAi1W^bpY zLk+|(-NnAr5+dF9L@zB12lvFT;M|Fy7nQ+mKhT|Ty_sHB5{KV~>GrNXwP*TCH{A+p zGtC(P#&BCZt199E^ry!=$o~%QDx0BSV8Ou|%J@L+R|DM4H~A1MFjgH|@+OtBiS1tn z-$b56n)>$%{zg;gUE_0#`oD%;1hh|~qJNwTbs^_dVrAeg1tmk_ZpXGlSb#V6kMvQ6 zYr@t=EsLD1Ez~s~UD2S$v=;@>6iC2+JPZ?3jA*?oo)#3*~&NnLpIZFF- zJdP_}^K-1z-BQ`Ej$x@h4zH4Y>54!J)btE_3=AbNvlMi({DxV#5J4#@(jsYxg$75b z4GOV2qr0r{qfDBxHavSjzOh%3n~#0om8gR^M%C=r3;SU_BZHH;WwI8$$Le7QHkRsV z@Wdw{vTF0(=d0YX0=1tSfgIu}3Dx9NP7fGAe?*h3kK zeUEmP?myvpEypM{Zs{~MiFH%6L%rLdix@zt14_AvaTbQ3`|!Qtj>PV8?MoM?!|^n@ zHBHV#9s;P-Vke;y_WiB~1Hgw@d+5I3!mF^ccM=EcEX+WirS5$5%2OzOfFjkx6{(?U z6&I<(_lTh*Qr)*vWVcGIz5La1@H9xTk!neSJ7q=c23_a_2w@YsT2?#4ZE8`Dar#oPPk zBR4J|-LU|SZH|w-bYdESRhw2mo`0qve$|zUGnnIb5wKPI?v4-UXI!Bf?%s@5yB*99 z@GV{aFq1%{DbIBG4dw_C=?tdohlx&K*n}vOPP|Zz+JYS0-CoQg?GE}^ zJ;zeHi~b}=?v0=L3;mFTq2!RZR?x+=W{pQbGzR}UoJlD3>4!3|@e$d%(ueQzmyqk# z4{acvu6~$DU0qQ>*c0Ji6)_ApRaL~*U$RNP>)Jp!L>i7b8$Yg!81%KOh~ec_gtK4i zAAeUrbRzCxK?$syS3k7h@7E8lm@cOuxZmv64_{)yz=z1?svn-c0{S7Hvo7$#!RQB% z$r+DU)DL>R>Nza?F_ah<4)Zx!4PX?d4%ReQKaAB8M+NNvV^*5F^5a5O7cJFzORE_W_F02E3KOq=2i8sh|9b}5is*fQEJDU^yBL&jVjfYRGA za|Z@)EntQ0TE7Hts~)Hikp3K=W!qsOK_qgyQVY%e3du;<}N{KcVqnE zK^6P`_Qp?7oR^#dvZX1s4L|^iDY99|82gKmw$2E>WF+s(NZy>hE)>m3)Hp!Kw33rx zpW#hr*I+{;7+@i$H)SPL7yccOEBBN%&#|U8(Y=M+yrEY_)=6u2kTT85+S7NWU zI`vL|3-pn$jK!dXe4M<>nJia80(nRXk})|HF3b!s3ns42t{x1x$xQtomy_z(4&uo}nX|j>RrGG6jP;3*~dA+Q*tPD?WmkGj@p+pE%sJK{_*mLon_zruXZ! z80)ua-GoqaG1jAH!PI4e36Pz#;6kMM57_MuOn}zMaN)n@!TjZcJop1;!NQFgq~h39 zak*EG1Fr#VQRc6QNvq8XfXirn z3SZP%@r_&r@z-a&u0OQ;IzM?kEfoI4y8FS%aJV8@qX8?dq z)+kzOQSLOP5~V)8k6;wXY`9-fy>%Vth#m&|*Gy(;AY;9lvL!GjaSI1VIQ--FGISRl zS45yC6N9frEDl^lO~Vr5|J)`mumf`Z22w z{cpJRt0~$lOWr>;`U$&A`mc6wDB|2*Fmhs$4n=PJgzVF$HG0PEB28FZLL}PAJ_vk; zv+q2fr-#L4zv^}8>{}FmIxj2imj3g-mlcZT&QdICKQTrCdJ9T%qV%IzZ_lBg^Al-C z=S8yYN96|}JE*;a)hL#u=F9)L!+7`Vdzf)%wL&fZ!BiCF7xcO& zkoPU-Cl|py(F(Bg9Rz|>zXDXrYydz4u-Nk@SRk-U6F5@nhFQE%YPcjV6)*K94$P)Z z{FHr`WD|o(d#n8GN;cfGAonk5gmgFe`5DLwSC2Kuu8Q>7flkv*8$H2Tjkz7&MzNnY z=!yFPs2Pi*)WoBd|SxQ)w+ zSM$76F!72np$lZA{k2S}=_Pm$|9y!u|Cp1JOc1?B=Ez4zmIpTdhEkjk0ZB& zeK;F-ll^l(#qGlo0hDEsZ)J&2re09e#y+&cOmSEO`o~H~)_ziJ$9d99b-Lk685U3; z`!E?s-}0rVB92DTNMFxFEuVe(XEU;qXyJ|r)!z@IX?cY)&0VR+6= zKHBEH(1rXA!)v>L9JZRYKZ8N09{U1C;M*N|FRR}^JpC97Dz^`dAP@j2uYf9f%)qwx z;WPwBz(6TeK~Vef!l&`h4_Ca@K72cqGC})rB{A^Whb!Mh+Gii`dmcHCeMtEcoi;UX zT>H?(Z4|c;bx^aseb^1uUHcG2%C!&coU((k5B*NY#H-9cjJI}o^b4fVwGRuP`#0@F z3IJJ|UrTp__Tgtt9JLRPq3&J#aL+5qE^i-xgJWUlAthtN7fh8&KMbA6K6KMzqa@3K z6}Ennod1SuRcjw!10bJ$colw`qu{K4_-Y!mXdlMd%3k}>g=6H{hoMDEmJHm4%s;UY z=fX4d+lS4IkrQe7;y>c{VKp?Z)MJkj_}MVfar>|bUD7`6fCTyM!v=~}G$j|WX7$*I zmmfy1*FGfSO}(ytcoOELqJ60GvNm$%fw&^Mek4yGQ+zA`g%aqY~=g`x0onK0Cm%aXF-r?mV%v*piNat90dR@d-E zYT+Fnf{`&;&hE=>iC0Ce(h@Gbb73sAQup9U3?CA4#I8SE-y(N`A z0Q(q*lCe)7@ZGl!g?C|D{ySI*|FCgpwZN<9RLuGY-KX(2p4tik#3qE7G}n?W}MN7Gha2To_6$4z>I` zl=w+DHX*8o!iV7%(%C0xhF9q2Ic!;E6d=;GOfFqR_8}3;VzaDpQP*hZ;kC0`ZqG`U z>|+rg!r=h;)InB05egQ!O~L5Gti(?kZ9#NmgBGoZHDgg$IGbqP+dL^0uG^eL>haPh zo3MBE0uqoAO9f-BpFJ0k{D&A!VPHa2JR$m$vnDJ2GomTDEqV@eob`O%zy4eJ*Ai0k zAMo!8sLg}s-#4#U$-jr+{%`P413&GrPRc%p*XAG@hXupcg1L(zvRBted<^TCRftEq zSDJow%cStn_rZ_Wk zZ+0z)jc{;|raATZK;BOT!JCzPoj5dC4!e*Wj3fqg3!xH@Qnf_c0t z*b-q%pdr-}#wlu{s%-KbO37@fRXxXp9N9rGK2;eZ4p_aem z4FdFlppSy7MTqp~Glf9zWE-X*ixnSL&3E!19B8!9Ox%tH3;;H~;{Gj;+z=_% zy5E(pgflzV4BnOSNU87ZE;6TMj|MVw8KV&q2%zVN=kBS)9f*6PG1X}ZYIes0 zTi+3Z04&tnV|&1P%LVjHOn??Lh&eL!Ojt`Z9m4qu$dqrP;Z^#vp2@GxoLk|Tqb{H6 zM|4=r-r-M>_qNK*XoT~o>@72LL{|QC-WE+}t=mA9hVG*~P^k99INWH;>T;xkZV<)& z=dY=Xv~p&|pcyWTM2Q+YAP&&xvX=_Wyn^ZzI0O2qmE~D@g+SJfjJnycYX!Y#a-Z=% z19_`BtGG?D1$8+Z90xszj0mI|jUtE|M}zy-bPT`v5^o#BnZ`62vV{y?WJde9kR9{1 zcexod8H~&yi+mF+PLNYT*x32gkdu(p6tU%QPW%_W5^zJ%V9T>%&$r4u%898n&;SRa zIUoFvgwtNyKfzA*z~e9kmSSHbqyxJm=OCC7I|alT{gD;^6-MV0#(S2-e?z9(?>N-? z_t6yP0Da)w5q^^QHLdgS@+Bnu@1K9yP@eyT`Ikyo9_sx2T!V$B@&MM0Je{ud@6&&h zLjU}m`Z}Q_G6KJ83;dU{atoR=!0yM$Z|7f2#j>*b zR|?EL^DjZ6o0Yklf0GP!Xa4o0YxtM*Z^SAhsmr3Sh^2VuUlT0n{PVB1R?zuZ4TXAi z;vnYV#Sk@46RsCI|E|JxsW|_Jy{o;8Kqkx0zZXH+pUuC=prd{BuPqjM!N@_(zxjv& z*!i~u!JPQ~dmEau^7$8fu!{L-%>&*SIAj`(;9O4nNE5k6dry-Nz>P$uL zZ7QK;{RSSCJr*5$EISy{V5(X_YYC0a%`V zy==z&NW=*^`?#+wmp@8k{j={xF6KG=phfY3*;m2{AE#bqWMjzQ&Fsyb7KR0E!IWK! zgcWDm{|F&qe}}Oo{Bk{M*(V!NCTsD>iuY|;j>`%*h!{|jqr9egGOz|RwjX&86(hyR{Eb5Ii@SfE`qPB;@hr`^(8= zcPPbnHJ}u^i`pJ40f!BeaWiF6?swILx%(2ck3)Z2!54F}=M2)y2Ida0)A8DTx z%YYVV_h(UG3|8l8c3NVn|AF8*O!Trbfe9-C7>NX69+>a|5}Ao zZ99j522g<3{Yoee)(R_f!6`*GszE82VyTxTSHq);Xnu6Kz9-=-%<9a@>#PqnfDSk; zCnMIEmHI;YYQ4=FSS*)-bJQ(vMD~A#mOvQi(=pU4#wgKc?WJPMJj;TsSIx%YluoZE`9K# zt2SsGdjwI7$#%cdyw3&4ZxKhrIg;ZtBRA9z7S{ro+;DR7B}q(&QrBl+4TJd=Pak!r zY~WI)-Y;6LYi*nj3We{goqY~g=<=*?4`6_c%dTh|iriH@)c!7{GQP@LhJ!iOX}ODQ z%h&IKnW^9Be2nFCQfB;RSLS^!^q2d@=0F~dU)>`ZsoAD>8ocu#a3}?DAI2h^*Pd{0 ztQI5N$AlsmG&hTg=TuQ|l@W|wnjmL(J&DjqvH{K@cQbo&@-cqR`*~wWHciNG7L3fN z=_Qx|bbFuJx$*v)iQtmr4EkV}gQXu*_CJKepD5@dZq#DgZI?WDu?Cw*a zYODMR1WKNE*8`E7*VQ^GdR9&2{MafllY%%s^O5VL=YHxZ(lf5G5_)Q?{esLZU3~${ z@YSW~t$LuRrjMRWV5vxkkDj;S3J{&+%F*Ku{`}5Y0*0{cM(`&TL0m5w>4+C^hgu#8 zw%iks1MMLr{pYI2|BgK4Vl0zo;68^{A#h74(qkE-lfh_O?X1M@3_=|h3Lg_p-Jg8{ z-p+_nF~^5TuQuoineY^2LE-d0!PL)890*?@cH=ZxESC z98RXf*$Frh-ynjmh1;tKqn&qX9H<`TdzsYas34%66+WZ6jb$PXQb|0>AJ4?yerG)9 zQk&tQiD&){-J$W!xwV0dIUg1)V%^~Te4!SD(=vQqjchn(jcIS0m~ zGfaRW4uOU049wlzDf=k=?RfXQIKfu(l`YR5-l}HKizVA!dH2f49|#WeU3%?gbC^<_ z^4TfAt&cZGAlL34EusO!)sieog3M-hwFzMN47nJ4EnxQypeo0~nlaMEQzJMZ>l%-f zXK5R5&hCOUCbyd|JGJz6+1_*sD;LP?$1cM?rfHWK`MdlKuCmkRzn1a2$21k#A`x0* zW3XO_3DC!kX)=zT{yq^I(UcB&^_gdjr)W5G)hGn=s-e@YNb}~hid9`2Z}4<@E;_`? z80(e{cl+yL`r}|7h3oOKWNQhkKO0mpoUyav@#@}N7Pqz-IptSuzh z>KzW>ZaBo?-;CIU@qGCnd9h!SCU$OnfBa+@T@+Q-VRNVV=?Nsd{98xQdy?$hEeprf zkHS+R?@@4B<5l6}WOyhzvT_5|C9QIld*ymlH?|G}Zsi#K!;1kX%14;kd}m`@#s|;R z-cpV@%{Q2P?@~6a1Px%AGyE7=5t$J*{{tA9Q9~bGD@o)%(yq^x-fN4PG!2X|^duNz z2f80(A9&;rd0S|Cj_G>1h?ujxl7ahDxiEs(&crPag==iU%%yLV@`kD28ZN4_+jt8q zS@IN|mT*BZ^{c>mdU$fJL6BM&^JF{xZ}w8O6t#HYmQD8Fr&zH3lh^c-T~CKU$*pr( z@KQPKCF8e)7>k`uhj;0q7EKv-Dn3bS&?D84gD`!W+GH90tYI+s1I+6cmc!}8z(`>} zAVgE1@~enQ4stnl@G_=GoUgon_BgBRVR>TN!cvg{DzNaiWL)&2)?tNOAVaG!k@XNk zuvqdSGKQ}d?=77B9=_HBTY2dDThq{-S1?z0<@CjZ&$4*HNgNL!5!v0JUAlflanb-}sL&W8LIy2dkC%W-xYoIuojmYkz4Yn4oN=8+Mn z*P#6%KNPK4E~1Yx6|oyAXOEyDw&5@4lXL&-uROs1@Bo*UoS=5La{n(q6aHTyk4)4P z92jNpbAEFt(1QwU=kW%Y<;?SVgCEkZfH$}hN~(qH4H^cfVKQaRm15Pm8FNeC)Ae(o z*yB?iKZgEc&ji-{OaE}33CGDbXzcn^gOTg=r_NW64Sy;bVpN5Hcuc(iivD4*!_x4+ zE?5=UKirKORKcIR0e%!EZv_zW`-cW->rn6 znsOynk8|#ifvFC}~qGQd2f z$+dXMjJ(P_&cVndQ`mJh2U~z^vO}TNFR~&760(oWOx>B?5XUFQT~duOJs8yt1b0-&6C0e`rG&vzUACHzzapLJdMOqGMrEQN2RjcT$_>;XuP z@kd5-+yi;Np|a%MF;HHY z-WH73oPtOAg{zpeE*R*%$b%2U3(p~6ZiKfAl#7sl8EKroz2N~M9_^6J(k(Cyc)`rO z)fCXObRZo~8OM^}VSmxvDR@T2>tWot>2NIbk2dhe*|Z*zlz;)bClwVQF(7X=Aae}J z?JRj2AY&P@fs`xtAFcf0npqI9|HZ;ClGehr62g0GYd-Z;$Aq!%5^~0Xwl>y?oBK3D z#I;7$>6Eipmo}g0-jkFV$ol{shUZZrCye5dZJ<|Ch<>Fm()7k_Fh80y^dz6F_zBED zMmDDhlwTeP$=J88g=7!xTL*r}s6dMEjRU=vK;K20KxZ;Pn)20&KA-rz#4U!d*HIJp|_LmuKg&a53-PL>vAC-Ut}o6gRkXE|6bGqA1cG za=jWWPxJES0{FC)^Hb0u6z<%-v3_Ad&jDmcXH5flV)qcO@P@LLC0{T8JNa!hB3s)mO$)s+a+Xok%5X$y;{i0jI^X18wf>mFc`(s3P{1f z)e!0i`G$H|@1VW&Wh%6~%)j*+?N(f}aA4XifFrWfJhnsdw};Z8V*cInkd-p7D$ zxyKnLXIYSq2A*X>1~_V0muq3R?TB8c9LIW~SegSHJ%!|y%K zd;;7?JEp!Q`YbLGqrObigSst}AZiv(L_gpm1{eb>4PP?2$gd-_q;4m^+ zFcZrbc;+m`>dokw63!aqP%Ga??ybPLGI`vr#z@e7br(pUOh#W)Cyu?$!s?7XnF|r% zl4%E=DDX4yxbml*-@O?H=9KdiTuJfXf>{r7p|7z76v|9`Vewlq>98tbtQ``?hr72OS>kngIp+x=3arLHLaoqMyT?Iam&dYdv9G$tZ17BtJlm$}{;*G$GjK6tQT^ zt&Mz4eq;c0Et4Mv0`fen`I(%?m7B}t#Mw;h>~@(<`$Z;azspJ_PykrXn z*2s4t4|BFmHd9Afsg6MqfX!G+xO|BEu~&Gmi0?y@*Ssz3GW!*8%YAw)tuxv^!rG%z z8&o#gOgq;Cb}oawL&R&iM;W*$QT@V_(7&ag5jYB-xj>x5p%zW!%N6l-sE`PMoSg z4RBW)a343&-nQXqULS%x!w1gnzwtdO;7z~UkxsSY47R}HPvO>+Z^r|-;!e8r#(jSH zFM7+Hy_9W4H?2)K15Gzivzt-uX6Xng&KIc}{t@G8oPT^46p#zDQ|SgP8L-0WT=G%h z>9($+B6dAGpKK|D5F7s#-!b*y|H83zY`^`G1*mu7op@<=ayQnxpjvhpoJPl(o{}qx z`32!iYG)s2#s}Mx4P_UN#Q~bN;#eIx2q0vM@;&A0qm*C2<7eJb67oCD2#Pr#&;g@O zaS@A$u=pEOJl+)dGsUbm?^YHsKyf*I9m196HHXAJyfLHMK!y{j9fO+Ei+&!)70mCA z_yU;XLUhK@ESNB}ep~N_*I2R`?~2qsjNK3-han%LSv~tCsqg8AM};w_v7g{)+4!tk znZ*an;QLrP_&?pD@Ly7s?StPy-lTDglcDRQI2i*#l=kCY4=EK*5BdAEF=IUCAy}A$ zUQfTHjSg`=J?1G;L?g0G9t8pM_4G|n{ua5Hqg8G_ZN9Fn3@opI?xy|;0vFt`nKT|E z^XED!8Sgy6f^m3bc>(Jr5?fnV(6V_~EjpA&BMqEPr@vGNz5r~Cxl*yK7KrrOI%iW} z4XDIFk_4GmeRKq@CyE=G;s;D|Ll!rsNSDCO`SdXYomJ~srSE3=aED4?bI7@&??<`< ze?i}POyctNU7?dP<-;SDzPCY#q3?7x=k?Ap#jly-6c#Iebq<}ri5P)Hr7s&6!q9ib zLD2USY;t+}?x?RSsidCL_ZjFg^j%6D8?D#f6n|ujd$3sPYlY%N9KRXB@Q~??kKgHZ zHUDD#im;F@Pv653IjGz^hJau2W9S=1l@_gcrzzf6SIN&|vC`KC#pUVq##?IT4o^zV zzFFfMrGo*=tjQlms7p2=&A7&w%#Wsg0j9az2l8BRB_xoi;ZyjTE0JM5K6$a9LXy|v z3uFGd5t|_68pCVLJ6L5fuJJkMkcn&Xm4#+wpKl)-P$1W%SM`u}>#I5t;?&js2%J=b zBf3%@?XBtIr91JezPXZyw0=XyoHM`)9vXu zj`P-(8Cu0C7~BI#4<}*u?jvV1+#W_^LgxJ?u}*L>jlE!;=-ENa1>)Kn@g{i?Y4URd z^P?#%F-RVMUfv72KrJ6WIDi=Y4&6CdZkmY_#Ghi1qr~{H(hQ0<)+p}JQm<{5Nmx|I zvXBXZxIt%f%DN*|Aa1PV2*mlfv-5hLO!51s_yrcLx;q}l2P-cNZviMHFE`!``eq_c z`u@fIXv#~FMGt+qUxQrG7nhf5$guK~(?=o6sPYVU z+L&W74Zu+$E-y()|E0Xl$He`&kYVK|gSrRD8M0o)Z)N)B zN(}p7=$AzF>dMP>c-+)4gJ0sW%F8eS_sYvgcnyCkFA;c*|F*nz<;3xl^XK}d<3QyC z*d+YL1kVhpD{O zsO8AZ+FRLqz3e9B z=L+(2V2Ud*s{tLIbg7~8@;QEtgYt?R!+LL<;xkO~(KQ`;iJ-WgytwQAnhih2LayBY znq68WuuFRs3}ag@QuE#~oP{7x*XdHu*il_?#qS^gYC#8e9}4%kTbj4>;mc)szX3vr zfk}M-KVIurJ$nfL;?-*VnU37kSiZyPQ-bE98ax_oJj}}E%H+u#C>74e!v%1sAudt_ zvSBw64mbNW_(m<=m>Dtx5psQ9LlQ!*!AOIWB%JGj|IxZOIgK=0&TW)bL^T5}aUS#r`%dG3!+M)Cc3zO$jEzBn6U_R)93D^Us0PwOv-ZEurbpXzqY@rWJk}C{! zyU+D2yq0<7_u<88lQB)sc7W%tb6~H;L)PR#-UM`j$3A#DVT&aa!>kB} zah5iBNzijV$i@i~06HFZQzB4gxK_Iw|1U=eIcQtDx#T_Ue?A0}mCq--K#~hQU~HU_ zLskGzP(lif&&!ihnb<)dah;N4^~&)ejCP3pwt8jH7{Z1Zydg7OBE1ll4;Jn>pVj*V zpm^Cg{8gbeCPoIm(={UriPeEQ1v>+$Zw$;S4$J`~PG5%qKie7TTXPYn7&$c~_OsXD zjCKfD2R$|Zik@hPRMuNR!O)GDBVs26=jkIb?Bw^f*hWM@b^NBWn<;X;Dao2*ijSi& z%W`JaAE1>cOQzEtm9%D$$$HSh@rR`qD#W%R3~K%0qe&@Dvln>c%jrE)*x7siOr%ya0FJoF)D^tz)d$0kzmBamY@ z5SM2mmy!IUe(61N{uM}I{>sBcKsG{zc%80Be7@6pt>Khf7=z4+9;BldnG339I$&EW zgTs)1MAORJWyIUE_Fke8XYG-QCYuP&W~hBHYkvjPqhZ1ee*?$m&IA`C%zKY@O{V;Y#$ePfXZyl=!6P|)4t!4K>?^pZ0?zhcVT6|JZN=7dwiUe!4`=J(Qw|k{c8yW* z^lbNybLfyy;rGdY*ZF(6blbg9{wU*>535Ue2DWN>w@Ao&K9E zvo)Ro=+a&m*CKfo(k>e`t(-lYXj{%ML$=G=UQvg$Z7`?2oK1TQFs3RDugtbY0}p5S zp=Uds5B`&nDzh~}wdL&BuusZa^WCtN#P1DfAA;)ja(30_gzL)eo3Y9`JCYG;)1 z2db$+6}-K5A9)+MV%0A}u4}~}1rlWKM-U`0Yfn(UrWzrgo|ntoouEp-xymA2B=>`Mf722(s7#_|}0a20*&{k+$K-}d{O)F<-5N*rZ zYl%TzXtzV<8KGSQ>GE>+^Tz?>EQR6a><4Jz;p`-pR2AB04=X!4S*MKDM{;%u+(YFo zzjOjC_ShoB*;8QX++$n2WdIGihqD=*EoU9SOBF(3h$7EE+M*AoV~HG&J|yo-q@yW? zyL}3wYiHKNOIOy>iXDJ+PtG=m6zM&QV!Xl}w;XPU6zLhitrCT6g)ZVTir!esAh{rmLAx81WoJ9i}t)#Qo|003ItqT7Kr!Ry}x;mLT6V^{Wf#Go~+e z;Vfp_^WCtwnf?riv*cwy?Z=4?p+1fs&!@-ubP5TUIxMAka*w40IX5)y;7cw9DD@_8{=Cf z3HcC|-kOF?>+w$RMP)Rn`F7^d`)Gg(Kt~p;QKAnKy58yj z2V7@60slE%AF;lXTd(B=z&Vr;b&;BK!D>*7?wZ4(xf7sNZVcITi(NKZ$;TIT%;ib0 z5H?5ySR$*r+9`OFAoT!VCeq+XQ>Omrll?2wk;_ANyh;xIH^?kAePr%E@xJkX3Q9Q& zr-NRd1ZDEo-Rugf#qzp3hXcMU|FWP2X$A!mYXvsgb-mRub&+lPQ!){879F4X{#aAI zJ@<zM^^*D4VtEFn` zQc0YwT<1u?1PU#)>L@XAsh7$|2rSROo+DSWW6#@9uYyMKzx^~%b!PP#H39dv<($XB z>61)59B~NbU5FAn(QO!Ojf_gp?+0_oBqd~@Cf})j1F@a-h>BAC26Q}x+NBn9izCQe zVL_-pXQBzD3n5w(l@6T=qU2Zznmqsqd6Od`kyZqo+~w4lUom-jN#pKd?#QHsK>ow3 z`?ksjkO7=qxrtgI60}x&-vPQVCT^I@T#@4lVm--#ljR)DA(*4=d!>dzPb)egBGRzz zvyM2tX;tSx;QhvqQFc)eR)=XQxetNsLBAf$IOX(G{&YBF$FT|X&IK}3?J9H;t=GjA z=b7Rc@G~!k#ot3SIPw#ZC;q{sLM9D!8y*l9;n46v;~H5m~Em?|84j$Q?pjHu1m z=;dxq%-vTbFun;O=NA-bOd;s(I-&3d&5=NL#Egaxn1b(|OimB~jMvxnnVjCTaA08A zl7x)#GQ7YIpEaq$k0x(UFO+Hn1GlxF{R`*nz`%i;Q}F~kk@gzL1?8f%DoR?9_M;iEr~c1uj%Ich+#|LRb9zgxCAD|`aV zs-=E0I;3TIvxU>HI4gVs%BrKRwP}}IP{S==oLa=jqw5Fp8Iq%yvaevvFTtiId|RPj zLU7)#k%QaW-Eh<3o;scIJzTgvxJ3^J6=b#C;(jb;hjWFV-#R(I+$&CZsGqc3?x(2Y zlQN;iBHXJ3^E0OK`zZFcd9$+H^KC)l@0_?H@6A7|Zr<5?iCpi^-;R6pYw_O0=#{v{ z-tx0xVF@q1f2E)L!v|GnaMzeh@=T~2yi*UC6pJ`dYRVsu=lCmVUDyeP(rS^g2$BU*1oASM;*rsq zoW*8x&VZ@H*-3M14zCzJ%IfWvT>gX?aRFcT@s-*Qrlt zzNNxRj(0lZdvlavI&>Q-(ck!h8_y~{O4IN7bTXrcl(`p=>*1#9- zOkfcpZ>0{Oh+Sq>{> zcX&x9kiU?=&70sLc%)<^6pX7K;T}_Du<4K^hCcrQAE*=7V1*Fr0YTY>T>6Adu+Xx2 zeLYMcIe2fttAzWSeG!3%BFFHiN4Q(#*eCJ$sD894b|U&W_#kfkpb4htK^QQ!_&!Yx zYa+}2#_V->CU<95}*%}nuYELQz{ABroS?`t?4#<}YK zA2ngR|5KM6MY=OoasLOKKEIeFpS6OiI2zfWr|o&|F+TZIA%ynzIcLgV$N^<#lk(jG z=gik=hdTJ$V#y{q9R@-2j$0Yq13Y_a_)UKU_n6M~rk$_5{JZD>XrzJPLphv7_cq7j zUR)!%#C#iQQT*FLJqC{3msBIWt65LIqm2&r{9m^AggGmZf+_C#KPMmO|CCvk-=~A4 z-s5d&Sd9PvI;AaAb0FRN^5-*eheFa!Xfnrt&w{`AXXi72d&>_$%fLUZBK!tY-vhs< z`~v68_1~8|{rsi>{_4e?u^50NNgDx$F;&x!|K1u|#(%Glsp|FL8$fl)P_69s-}St$ z>%V`Tuj+@;Z-8#M>gP*D)bL1^_8Ml1*MGnAO)vlo^~O8nJ~ZAIS1K=bu>N}l6SmyF zBlX|A_a#i=T_nR5JV}r&fR|+%U`;gTlM|a%6T& z<1a3%VSTIckyJzB5- zz5$b#YW2&`$_sj%NZq0yda0zVBdhv<3n;YA>N41=D@{R+@!uZ@0I&c4cu%B#UoTj~ z)epX25cl8jgvOV?rk(4*_i-EkmH++^wk5G1|9v}`s1^P9OMocpEQPjq{r7R|oo|(E zAZQ-{{Zd`c=@PQvAg8{x#pJ2Xf4>(p;Pc<7V!%YGaDRKSx zj>|m$`wdVs9{;@)=8yXCr>o&e`Tlz~FSl-X?8ikktkHUPOz{#^ycs{n`ZPoF-{Zf( z3?~1t`R~7Nb^P~rc=|v8{Xg*ES5Q>{OaA+I8d9(S-T|vjjZeD%`}xGj_1~wOCNt!Q ziy($o`|sbwFjw&34`3}Iv5su$@!tiGZe{*^5^RX;zdygk*5K9}PX{@>-sOTn2}nbN4-wVZD#mZ4{EE z+{2a~x}l|{-pIVgX0=}za~W0Vw!^THqJ}ruwM`%ZOB5gldJO)E?XKVP+-m; z=?TZ6Ton*w)-$G;my|0`FMHthdV3)}Q*X4dUK*HHdA+NA^@jJasvhItE_G?(W##Y= z^VMri9pT}Ep%-rrEFFUayfx5s?w#sNwc)wy7DDnaY$D9M4d_JcE#IW`ui84D ze?Q{KoUFZ`E+pokDgJ(~7T?O^rT`=tq1etp8=vI65%9u4(7vsw{F17Qkuo?X6EgTc z(wt=xP(e|t4lP9$^&#`4Df7Pb$>d`#k;@ms;w^peF=mN?Mv$+geoDb?09eeDiP8a} z!O@9?oH&BdJ;vhlFNzt<*`UL+LE|&>Fh+$P_A(t_>F=<)r^D;mAv-(E-`Pq8qMXhi zh1cru><-)65qE>yQ4~7Ra^K)p0so#Hu=Jm9qYx&Q7b)Sxwv7 z)0jFk1N=f`^mlfGr?ZXJGd=-X&`mLutJv9_cbLvnO=rjd;Onfqr?Yn%IHZ6a>F;c2h#eSd zyt6`Qm)p)_@TjCYy(v)k(YZ?5SGXVNVdLYcBGMD%c zz3l8J)5&XoDNHt<01Lc@fw9Rne+Qf3JUG<62nHcoh?uNSE$la2_$L59*Z)W37rMp& z#m&xS6K3gdS`U0`JeFcYgHHYiCx4PZzu3wD-k(3y$!`~rH!A#pI{D?k%R0u%|IT0k zCMO@m7vH}Fo|ifK55)7OJ@R6k;%RTZhMO_Nv7@(AgF^bf3QC}V8y)_D ze8!sQ;3)QLCzGvsOQktLst4w-xCtZoI%=6n3@S)RWSQ_KC6 z?A9KM2AEKG&cOi_X3`!J9) z{vL+Kh3&ssQdJg9WfS~1y!xBWLdczgpC;Os&Z}RsmXO=fl~Sg0mPAAf2<&UjbBo(( zz_p&v_t!XeWiHw>&eB27B(9!)(lakX+81ZJRvo13v1*VI+FPjuU2S~bL_Ep1vlW6y zT)t&2yX4|Hh}g%-aN@dl|M;W3SwCOjGqD>mz4C@nwEtWCe^3;#xZv*p(Ei_-9DUvY z!_)u85B`Jr!TprU|5E&*FBZza_`x4ogq4dQ?4y9Y@q;c1Wugi8|1cB&Bz`a*2M#L4 z4;Ea3DfIGLZ0Ly}%s{lSviQMDtXtgp!42x01aFyZ;9bRxy4s z*mQ^vXhFDNi#}uxjzRe12R#2~@%s8oeI!b6z{&fY;|J?n1NtGx58j2ww)=mlp>?_V zLFfxzzg+Z*E>Ld3kKO-M3tR7WQ{2oHzs6#-|A%7#`o*#5!>8H^|LM}2*!u1HKA7H0 z?0I$8{4;xgUq1}@HxN`bc}e9Uh(6o}c-&vF9&ARJ`_l3#_l+OL%>I<@WqB%nB=;^Drk33GyJo%Mrj5 z_B>&Y&z^sNJaQ}8^E2U6(gdH|Bi?_p+yYr-W-=TlzdgT9yHb1JoLxN&x5KsP$$d?` z!=aQcZf^jt?Pw#PB0K$ zdw#qNqB48_`)%y;Z?)%7KyUo7+4CPhb?o_vc=|tk{vX)$c@(Jsl0Bc)p3><#&(m66 zUwj(X-48gO_;~C&SFyC`SDfyc)Jo6ue1@Pz1$(|7Q(V4=4)@vfuYg5m_B`Pfa>6;! z^YCjPdp^6T)A?WR2lQsl^APR%zo0>B&(8v;{{4VIjsY~UJ+DiHWJ0ZPB3dNBV^MAG z`StKytX|r3oYs=<2%R3ZJ>LYyTG5_QMF;56+Vj@BYS}F{2bQzvzhWt5@j5)qX(8WY zwemOH^E$-m5bgQaL5@z1HbLuh_I!j|>XbW*)Sf?#A7jr~siCRY%M^Dv#p_wD_WUgr zS8mUzxc0n{ij;4Cemdts#r63)todj5{H?1o-1Sh)7(;qj&mzm%^PIE&_B=#Bq1d){!FW6$>&|DQeo zkIv`*NP+q<+4HWL89sa7M_pf^J?}+)Tzfv4t0da<`>^Kxll6IZ#O^BC^OHJZ3LTCq z=CkLu0kSfC-sVJd!m;OzUhvrSAK+CS-1ZXkE^pzpR!z<@p6_&llmx*z-iSu=VaY z#kr=q?n1|&e+N5MxjheJ6{{!kPM4^Pl+T{`ItM6JwCDX<^Uv%#@25xy)H249_WV<1 z8GHWX>3(}Y8{;EMTG_ike+CUa_WZVM2@T^`BsDZNt?~8|m^5njilr+=%4g62Y3%u7 zFm_&hele`CuFvajsC<3?8)k)-&Epij#@kEbo5>*f0=f~d@%UyDY6vpwGnz4557y_$VGZ@)vggm3#kPCjCfZsRzIT0oKLy;i=TkY|Y0uxnn)6TW z`8f!vRj}t>+hYo)Vv70fc{?sdE4goTT|;uhvFAIV^4Rl++;cjp^Lq2Ssyjq`UaK>p z!=66~YvZ@)eQE)k*Ph=>gJkS^edutx7HMnG3)Qr%Ub?uB){?G>A0D(le=bNY%HOxy z&j>->o=3q4+VcTe+xYDHm2gQcUbl2`TF8Yb>+t@a_iY9fpF_0gmq241o%&M%t;^Z- zuhmkgte&Ixd?$X4Jx_)?#Cf54ruc1Be8IbpJwFP?)}H@o-*>u(2A=1AVCW9|yk2u{ zbcpBmN)c&APdu+zqm}2p-j`1P7TE@&f;RA<*Q@${&9~CJ&P8wl2f4=l`Map`)g1dS z>bc-tD1xhbI1d&)wjh|haZfOkSFHg1u9HV4ONz z$LdIqmA*AGpJp;z?-Ns8%M?$>k2%{l5XI&^q3%CdNlzf}Z6HCKHpA#qoh;(!JwM`J z@in;igxZieT^r9M?-t9l2KdciH~bu4fZQ1joQ|vM#c~DpEUraoRq`bO_kI(u@Um5K z)sMN~Ck78+%jS!A26`5h%-8dfh95b#?@`2|0QHG>$d zi`IMF6mNT5i*s1q6tqbf6qkE{V7fj3#{DB+^wKvV59N_H`ROQHbI z$QtHHQ$7dBJ;#2Y#jXQL4&;5IXMT$16J*%<$MnM#lDtZjQ1Sb&q44ke%D&gSn|H!p z2?(J`jppW^#riP@T&u$&DGt_oU@ZshJ|3E?e6XB%7UL`FsB%#wyp$MUc&^br5=_Dk z(n(nW&v*1Gk+ltxc2nyW`0ecE4qeKC`XXtBRj8J3$U;HvGNcMi%?s!FomMKy&sin4 zIFMV%BJO;dDlq99+m}qMuPpd~)O`tfR7KWy0tDiMH?j!sC{e%#L5&a@B!NV_v4c2@ z;)0+k;x;UH07WF)9iY9o;EtmxDk|fO8^i@j*n%so$czdBS*mRm1eKsd{`Wmq_x9~h zSoE9kd!C=?(e%Alb*k#r*-uqn(@%HP&!LHa-lXH{UTk+S`oT$7-OmjGqCaEx0Ub!t z*9N$)J{uzd>c;>3sWC3I}XUGRhtNL*o z-U8jF5EbYdH!^O4n!(Ph88K*DXa5oJeIAW_pDU+<%3{-HI|=qlsaG}3IqxUIEY>j5 zsTF>NWEo~PO=#^nq#&NPDXwltPyh?U(O%m?YN^36&118$`$WE9$bw!z7Z$^W}cZT z+%*0zhuI{a9&LP~E*__gGg;gUz|~qPFLG^y-$fp|_bGI6xJ}{4yTS;JMB3)Qy)z_;t?hki~kv}SEg;?`XR27Zaa zLL#>=k*?|#tq!+7E>*PJD2QxUU-U{D{^XSV#V^J3IQz!SRX2>-;BOT%8m`tB=Pq$Aqo2pA&F*h zI&1!YGj`Va99?{yF20P#qPadr@qy)Uy`YxAw>NfY)PytYk7v%PFW*OV?t((}%;-cj zqwp+45xw!kP(0TdMP*At~5gLi-XWlo#AHs3sn6cwM%5oTklMwF3h+!G|Z#VsmbZ zE{goDZU#~KE4D%|A};um9z|hfqtGo6E-%3C_FwQdwvRRjHLXOx%@Lz z)g0=Me>!Y7wGGc4{}#T-{roT@Jk<8qZ)W@t1HQTGpZdqE2jI+U`1+9V-frNZr}U&W zzo}axh+^mC6?mpbY?++SuL?_5;ExugPf%Y)8&~P#qjhomYYt0|MzM3=g7VclkKnU2 zGDafQw$JnM&x+EK^YGJ0FeZnu-$a}P>>m5ky}tzaA&0iMZ>OE))3klz$uIqkXd@QpDtc3FzW59P@6m_B= z4Qy6+T|paKpE$m}J-(m50D}naOjn0s5Z0`n@hQ|?h4^&)ukomBKd29(ontpb1Zw=? zP)!VKNp0-Fc{Iqz{Ry|~LL*P3U4LTv!bJH+D92YZb$Rms(AxLY-j>Owuj78&`WU_H zjZ$+zZHN|y*@W7OjoeGpJ_dDZ@%?ObZxj^w^I#p+p#sB1L1pLi6f{6gjlZc@Zw5Yq zaH4E)0e?yq^bVj5KN&mp!G4rYglFL{NbEY!EY?xbG}wgF&|E*4M}_UVByHwTCK#G@ zKkfHeG^4~U^r7dWHiE|007eIJQ54J!4AP4qV*`xv6%*_VC_6*Zm@n zMsD`I32W%Nf3790B2^!-%`9gejpv=P*9~gha@+>B-)J-5*s%XV>QAG#0BS9UgT4_64X`gW8s7%1@&92XLsMc4GrU?dMUA+856;qcy1AM9t?x zZQt!gZR&-Tlb9RO_SL)KJA>K?`cMrxuV_v$=xGmXzxYK&97duqqugWD3k)?*^AHG%NgxK*GpFK(+Z z1dK}sh8MT%>5eAI_HCh6!EMj(f>4n+r^`>`_90l6g4-!P!ei$=G+E=;f3_K|!ENM^ zWZdp{_Shwn?KzB|Xx#Qg9|pI~PpKKS+M_wYzfRnOqx7}PBYt*pE7vNw#vq8=E+8Z? zYHbjbA={a-fIO(Z4zp4Lz&2$269``YO`Zj{!#Qq)+EX|LS0crRuOMD2M;7}S=E`*ryOHa(M2N`)W+fn425bfo( zxe`}>HbQ(z?WkwQx>!8{a#tJVSuopz!#0@x6t5GQWxiGu?K$8oFJ^lb0LC){!;9H7 z(7=P)J?PmiC(pYXfzSxEHnR2`*os25dqg|tJRQ=QeH12QBI5*qe0MTt3!Dq9olE)T zLdtuNk--zQFSIrDSg1y$54Dr_ax~{s7#kjeFbB>f)u+CYvI1iuW+#A(ycbe_1u7EF zx<&m#wlEh`&cuvTGJBKdK9pD`?uFF)RM}weSd+x}Jjd|)TK620x|Po>@vN@nuiau` z<)x`h`P9Ju?x*U(=ROHI=kR&Bc6|%rnzrWiCOoU7`6~y?j`}{uep+;!V-_`%`y`Ji zz1bP7N8@$seKhN-ol@?ToC9v&-+eSUrof*=YO*s%)`s6y-Rps$p#}jmOrK299*%K$OO1pO{jA@amp@vzDG4*B1P z2B2T(KFO{^v=XaW@i%s)1K*@bH3nURhR#NH|g69;}oI^0m&eYe@oZJ~nq+4$r-ZEqA-X}Rw%M~>Qr0-@+ zpMpT+fX)FE80&DNz{k@9)gSOl!nNt#DC@hV>#`x2X5KQqED+z+>E{Ucm~X5^K!MmY;NK z9?j%B)V^Qw8-PY^J8{3_@2!B*&0=17?q}Hqj<4%}md22bG90;I@!9*BQZkZYK8!if z{VXqZM@X0VEB5-A#1VQtBTmm}_@nm&K2MbuZG5^e&ep{RESCEfLnuZbROtPGmXG*Y zgkYr_4*hk|`G`lQ(Vxsm41gTR5;GqWY~smB^mN{DR@dM?VlW4pk4VJtvoRhz`twCC z)EQ)|6~7-y-2&|R`28rLmW%aYir@Pfh;WU&?;*Ir@9J&18b;7x z0VS;C>WtsF!whQ0?=OQxaiI8p6>SQ)pZiQdy%POwgMY94;fHA|Xph&9-ye#e=vJOg zQTo^7_gCnFa8>_6=tuR$Glg0=zK`b2cs^-W4~gL|(4C0ix4D2_A6)!CjxYmY?s+Z= z=6gzDqEi#UU&w0O{J)t)dKb@PvMo~of?aL|@H1PbmU;>H^a0}cmm*|XD}Fy0p5X!F z_s6o`!?21}KJj9ILmBFwhM zbD*{j8m@*TkG#q!^#8o@duzYP*^q)y@JL_rTGU$*8~8JdX!+yy!&zjeo&8h+byw8IDF zxA)JjgWop7UJv9}TjM?XGG-vIK@?VERd*zH(%f|NEwEuaxzFu{%yt<%ahdHV0MW^^ z+gsx`nC-m`QoKo)`R!)eK)cUwVuf{_8zxxymMK_v;#-KjZebWe6ZZqK8`M{LCciD^ z`)E$*XOmX-Nm$j%{5Jc1_I_~uHb%pYCQIf*4Ku-SmnDX@8+NfOz_a1ETyTKlxAtUx z5Yc&%Ihx;6;&DX;OT#F7EWW!;WvD_@MaB$&VB-B8c=l@%*7N+;E0_3$l)MB^4q@iBd-Ac`_GS*(b6T` zyZMo$puxyab>~Nhz@3-1l_2t=m?!Pp6&R>tg;9{Ou!m8H`4K;ijf2gPFuq2~@YnJq z>u@hc3a(P}3qLyaCHawOk%=&?RRD%mlkm*dn!xwbob68~t=1)kj=`1wU4VokkP)Y1 z{`n?}bk)v}bW6bB2=iE-W#G5b@T-#H|Fqt~N9n=kN7jk=zm9r0O!!Oj%<)(9eKe;$ znc5z5;6HrO`H{776jSme7s1SM@+0%m0s3kAuyECL_@lXMl<4Tj({%CfhopEtizVgQ z55;xG+dca|9Ddrf9W&AV^gLXB^#h(c!%ci2%{eq#f4zxM+6f^$`Np+)Vf5EKU@h{~ zhm2v@)?W@keFS3NKR;as65T&P4WUp;;-|$>9{c8}mY7U}pFV&=O@6wM8c7ER+JJ=< z{InZJ$HDT`R74H_IzL$y49U3KFF##OmtL>d&j?qkZg}Qub>e$`9~tJ1NBX6&(`c&A zPc5iC>&Q25(>6cp{ZYbShiAh7itnR2lat{;x7NTvXnvZMfPXIGk2CN`Y4}r;sV(1u zfAIXo^HnMQ^g9%|!%sue0p_vfL1CCnCOQ1nMs#rFKDzi{y7(a$3qNI|*vn6zeB)zR zBAm0&eB)W7t#rQe3Ma5uN4`<}^Zv-s$Tqez*~Vb8$u!;%hC)(rB$Ne&YB|4{+4Bcr z-gQi3Fj{Gly>*5VHdpU*@KC}rY0LP$c1(h8z@iEv4wFetL|Tk~?^qLGNByT3z{-fP zn2dbiZm4VZGa@rO-xpspcpv^Ku2QS@y~(HP0o0YxI|rjy_n_1yowWRrz?!;AyA8(R z+>I=bjxjHVzmtg3EmrHmsp@=z;f*mbVcI8=7(y!IGRbjp%1-Isu}uFlW5~db3T1EiBGTm znp{>ZpLa5(oHu+wLgbZ%@1MZhc*6HS%u1ajuDgUE*C2YOTFbM9@B4AwCVYRmb~6lW zpMj&SQ5%HL@S-*hVp5C`Xmp{uq)Kl`0}pC1fW2r?yRwbolho%!uuRKabv#(do6jq} zNu%~liDqK72DQzp`#q>_E{T!UeBL~UN;GOWg2D}I-v^hea~aBr=9~yx^@zZ||HfNx zuTIJ5Ee0WZaeEYa%p{$<(A-L-Mz&&F>MNMlW}0^+cBCrhS#bLYmA=94Ol^G|+;&HB zK;yP0oIx*c$&V@|FuY`YBpP^dy8%&J)9EOf35IO9!u&S4t$>;6&F9@aK;!mK@xK$e zeV-6@pX0a2L>&@pK2{Q6x_BxSkA`r&IcJpAi6DFlj zme_(!vJ&L3n#i+YwkL;eF#G#v{$6J=8->Wzm>mSJ@?!Q5kfZtnm6HX+HE7_$?3qHT z(&>EYVnei@U?mx%JshU9VAkaGZn#)ub|Fl#L_P%H2dDD)V77si7D>wIy+H#?3xt)h zn`Isg)eP8ssx{{o%?Uw^dj!G{U$Q}JK5sUt$eYh=1hHnK_-9b$n0#IpW>hPm_bFXw zPd@KMK6~$eHrSMk z{X}v1oqW+-A{V!)2$s>4FS-lCX%jw~bg2BK$$JA#(z^0RuR%;E<%>RrzEHEoGVtV! z-edf)j{E$-g-io@UqtdnLx*_sMGwQm^5l!iZ;~(iZL%1xO~YceK8-&*Uo=8AUgNKI z@y{VCZpLEC7hQ_t|4zQ>NfBR_DxXH>!G2HW25Iys^F?Qg;*oq&0m#F>Z@Pu^ezQ7* zWRsFFa_CW=MJqy5irgTtKT!8OS3(mn?b?)lcj4_I)D-)@vS%xaJjm|AM(Tb63M1Zd zKytjwnw4?Lv)$5Qpf~nKGmgMdeA)*5(ievF_GbV*vPmh}qZrQFc=ZEbsWlMK_`RIJ zsqcJt*XF%ZHQK!Qix<#AsbtB0+|&`x_z=IrcV7R4_iN*FZ8{2eOXN@6Cce}YJQ3VC z3{FW&=d|KGFys!{D(L;bj{6m_;??{VQ}HtOPpBl4BsRK6o4*cmgm3+{^5rhGN}mN9 z)Yqg~9OeN=S6Jbx49VDMGsOBl1Ge1+ERRgSa+v@MW)tcIcraSyx>a}&cjac9^Uh4T_UZ~E5cg8YKS$M?WwBz}%us@H zU~oOMV#B%PP{(t<`vc&dOyvhBfxOYGeqxMM=nB}UqyugK(BHDtg1yuxXviY_+-#_- z;1PcNJPz$GXbDIa7&9EzAn?7>H=TtOZ(O7A3(xPLe{KE%;9TfHJq1W;<%wOQv zL5;dzdg0tuC-kD;rp88);DMyYz55GU+^ep%!k2IeI!C`6a+|YW3rEJ?iEt#`Qgs`k zU>evWOX}GRk;A@L!|gCu;u!ezW}aeCn!4I?d;{Dh)18WpfNBL;e*16P1SVfeJP{_B zzp_C#2?gd7Cj;nM5>+TZSc7c!z+u7-YU8)waf~$M=q>J#V8Lh*)kXYB*>2E>_N|OZ zo#G7S0S@E|029f{VI1eIU1O$l?lvp6n-6}fZyH!fXMhzB4;y(*@6#y6LB zOIw_l9-E7uOcGz<`4V*xKpQr*!X=PBSY+%#RwH4-ISUmVg7;u19S>Glqh0K5*A8+x zsQ|ArB)Nz736#3^PiOtkSZTwL$Fkps=+{{gEBpjHQ1zutvkb8?Ub*&&qhBCeU+f7v ztrdgpkJ>{N+8MJh#p_giszQ9)G5GFf;(J|FfjNQeXp>ZZlmdUMhJSf&_)XPy9{3rm z2iL^4rU$GsK^zDn|EdZwfrS2d-b4T6J#~O{ zzCq->IqwNw2#we;GhpMBZ{`SLh^!7W{2B6#fm(i7bst9v&3=)t?s?DhHG67ySVtDF zQL7P0*kNTAVjmRthik;i_X}b6w{LvVQpg7t7+1GixvoLVzWQw0v(8=mVJX6rM;Cp<=9XNOAh3^+u z%A^wC5y`?VjqS1NQ-P#@fG1&W59;;)*ffaaA2?d^GrR_7DOL%7o%3{W5c~Ep9&;*J z&wVA}jAz{g10o?F=0v_0t1Ru1Exd_t&Mt%Fry@EN9xUy5hqvy$&| zz6mSn!RJGZ@fJfXohiao%WLpznR=NU4|%@saV^RVpj8Gz`^8$ga+&nAMSTJ78!N&~ zki+~^p_XGu3AIeeA59K-iPmcTf-e4Jq!e#tu@KYMDBcIZIA@)$(g%qdy^@p}i4R@k zE4SuDm)7|AS&3*^BS8ZptFh4QY6+f+hH}1-<~#(S%Y%md7YQ1IHfI~9Th(zIPM{Owy=!5E{R|I ze;6dQ1`vrx9tOvd1gZbw!}i&~96ZI53pfR;HZjnW7rb1wiKEm;UppdgLP2n3yduu^K=Osc+Ar$B^@C#$@b98h8z9b&zm&kE2ruuvxlk8B#Dro5Bf5^d}nB+A1m_%xl;utWV5t`l5hn|OO zhCbA!<#>+fw7w&WkFTu2TThbWA&i1f&q+uvc;mgpL82y-{y5gj6YuSbX{oaT-1tae zAsnSnmS=G%t`O0qaeElY;No^F0>>J+cfeWl;x+`rR%@3Dl03M*4GlcF?JACu;FkMM z4Q_kF_`px%_Be31;MUfMj;43kxLvi!jMm_`*%A!PgWG~%>WZY#1p^q|en%@z=Ap_U z2GltiDsa2w9^w{^qmvYS=Had2R+1DKnnOp6K}cTI9);MOL2VbN6FvDK%u0Q=)C_j9 zx*JBfs+4Cz?H@EEocs@7Cs5lRkz#VD`{^Fvx0!FEzHc$KZ>)|_4yx;jpGHTzaUiP3iwzDqO4q{|j+fEbFhe2(B^r68&9n4Jsi@?!Q2GD16n;l=E1H1H7ZM4?o{?C~%-9Q_RI*AVSZ zuonfhr;0YnnSHs&?1>PX-Xz5UYG4m$C+#qpb>b#+=;#n=4TIVCVqveN@lYRqsC)25 z6=1gT?j(WWo5Kc9lHzUX5Q>8)pdxRQ;(CUHxa)C?ngHX>Nm6vdj8c*mVvo1RLc~r? zoDXWs=UWr!jOz1wmg`rmod6#@En%;H$LAXp?N{=7W}^K9J}*nue}~TnwC~(+dvhEq z`n@m2f!CjYoePccUl-KjPY;JKcJc@A_pjj{?a!b7rBgEeA`QP`ZTR^9wFf@Fe+>}< zJ!|q4i=2MM-!%3_o#%~Sh38;wgFF~b>M3~!HOhITGx5rN{~DZ?Al*f(DFw|xq%tYf zq5MA}Crw;~*1+d5w7}z(1lLO-OsM#)pM;CxX{gs=DtgZw-GI0Yh)>-BRg@rIeE)jB z3HW`z%?fl0lYT&Ily_NCSqVD=a1IvMNaI3(fOkm z5P(!(>!3G*ZJN<|;`vf?n;(0VJ^7>av7}~6E=F)d*H_t?NL~4(+aP9>@<%rGjT$MI zg(rVh3}&w@e>4?BQHCS=qqC4TaL*h49Tu7=e{>FAah^B&K>X>Pl{bq?e$6egx#j-x zvqfPxeo7a=tBY6RkIo-8Me%nb#Qd=vKl;jf zkNeMv*nPy0#4JyVA35=qcVVv5?Vc_ceVtqCP5dYkPbr73K%$-k8^LuDC7v>PHcAd6 zo-!9CXW}V?z&9!JlvYs4;KSWF$;z%D;&@a2DCDAz({=HGbnze-x5DUEE{c=mDJGuu zSN-EM5T#LYVlT|lM5?CoeKcn{yghgNmFgBK8O~k&=Ye=V9i{7zjDOskdJ!=Q$3H#?ro%q`<0TM%f6_m`k>+b+&rEX5P$Mch#)l`V$T<;k59cO=O?}TwXXeyfrUg=9scBZt3eR$QEL3j zK_9UL?enx?BiDTV*RRyUkke`$e4&I6UaTe|rKP@K;E*JmOVW+|13l)WA1;uwS=Yj_ zG~~;83w}~%m?<;=3|wp2WV{L^R)VqaHGsw$kE@)IL$4&x1@^}J^`T` z?%GB>Py0LzVL7U97%CWSwElsDgE18tZGi)oaP1qFGH^3Op*#wg!GO=ETry@c7+ zGRjLZhcsm)j~qj!*vU_g;qytfn{^!TRzBm9rSp6>p5tK@hS@yTp3XSaVRK|c#8s0$VIXy}+76RZT_n$rJ^d|SX?yw|Fhqjl7O4fGC3S*S_S)00(d^WD zLfX?~h0MgBZURf&Q2d0=@{{)THLx1J_Vm*oFjHu$W{ALe?di*)(S?aWt^I{jv8U

R8CIP?N__uBoL zg+sshe}|mAqG%XaW$~#s+?=Qi$UaSQ)}(1jA6>hyyKnd6y!zoKldm4feFJa5Cv!g` zYEW@g{M@qn+4xN?a^rWW@a>S_lV-Bv;z_gdhYZIijWDwg-|g;K!ED&&Cg8ksCj{if{i8__1a4v+;viRljy=)~ndOL+raMn-+WvAA+ z{FE3zE`%k1dZ;XuamuwiPs

  • 0td9>VRKcHa{CbiA8Sw>>|EgyZPcH+w7NiGCvDF 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

    CF2kpljAI@HGc*YLedfv3P5*_9iE-9; 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�IdZZBf7(p05l` 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%0A80lw|ol?)@dr^-(tL8!n`tSi`Op=UX9^p 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®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 XtG|2*2UYdo|FdPj0`I`L?4mT&Z literal 0 HcmV?d00001 diff --git a/mybulma/node_modules/nopt/CHANGELOG.md b/mybulma/node_modules/nopt/CHANGELOG.md new file mode 100644 index 0000000..82a09fb --- /dev/null +++ b/mybulma/node_modules/nopt/CHANGELOG.md @@ -0,0 +1,58 @@ +### v4.0.1 (2016-12-14) + +#### WHOOPS + +* [`fb9b1ce`](https://github.com/npm/nopt/commit/fb9b1ce57b3c69b4f7819015be87719204f77ef6) + Merged so many patches at once that the code fencing + ([@adius](https://github.com/adius)) added got broken. Sorry, + ([@adius](https://github.com/adius))! + ([@othiym23](https://github.com/othiym23)) + +### v4.0.0 (2016-12-13) + +#### BREAKING CHANGES + +* [`651d447`](https://github.com/npm/nopt/commit/651d4473946096d341a480bbe56793de3fc706aa) + When parsing String-typed arguments, if the next value is `""`, don't simply + swallow it. ([@samjonester](https://github.com/samjonester)) + +#### PERFORMANCE TWEAKS + +* [`3370ce8`](https://github.com/npm/nopt/commit/3370ce87a7618ba228883861db84ddbcdff252a9) + Simplify initialization. ([@elidoran](https://github.com/elidoran)) +* [`356e58e`](https://github.com/npm/nopt/commit/356e58e3b3b431a4b1af7fd7bdee44c2c0526a09) + Store `Array.isArray(types[arg])` for reuse. + ([@elidoran](https://github.com/elidoran)) +* [`0d95e90`](https://github.com/npm/nopt/commit/0d95e90515844f266015b56d2c80b94e5d14a07e) + Interpret single-item type arrays as a single type. + ([@samjonester](https://github.com/samjonester)) +* [`07c69d3`](https://github.com/npm/nopt/commit/07c69d38b5186450941fbb505550becb78a0e925) + Simplify key-value extraction. ([@elidoran](https://github.com/elidoran)) +* [`39b6e5c`](https://github.com/npm/nopt/commit/39b6e5c65ac47f60cd43a1fbeece5cd4c834c254) + Only call `Date.parse(val)` once. ([@elidoran](https://github.com/elidoran)) +* [`934943d`](https://github.com/npm/nopt/commit/934943dffecb55123a2b15959fe2a359319a5dbd) + Use `osenv.home()` to find a user's home directory instead of assuming it's + always `$HOME`. ([@othiym23](https://github.com/othiym23)) + +#### TEST & CI IMPROVEMENTS + +* [`326ffff`](https://github.com/npm/nopt/commit/326ffff7f78a00bcd316adecf69075f8a8093619) + Fix `/tmp` test to work on Windows. + ([@elidoran](https://github.com/elidoran)) +* [`c89d31a`](https://github.com/npm/nopt/commit/c89d31a49d14f2238bc6672db08da697bbc57f1b) + Only run Windows tests on Windows, only run Unix tests on a Unix. + ([@elidoran](https://github.com/elidoran)) +* [`affd3d1`](https://github.com/npm/nopt/commit/affd3d1d0addffa93006397b2013b18447339366) + Refresh Travis to run the tests against the currently-supported batch of npm + versions. ([@helio](https://github.com/helio)-frota) +* [`55f9449`](https://github.com/npm/nopt/commit/55f94497d163ed4d16dd55fd6c4fb95cc440e66d) + `tap@8.0.1` ([@othiym23](https://github.com/othiym23)) + +#### DOC TWEAKS + +* [`5271229`](https://github.com/npm/nopt/commit/5271229ee7c810217dd51616c086f5d9ab224581) + Use JavaScript code block for syntax highlighting. + ([@adius](https://github.com/adius)) +* [`c0d156f`](https://github.com/npm/nopt/commit/c0d156f229f9994c5dfcec4a8886eceff7a07682) + The code sample in the README had `many2: [ oneThing ]`, and now it has + `many2: [ two, things ]`. ([@silkentrance](https://github.com/silkentrance)) diff --git a/mybulma/node_modules/nopt/LICENSE b/mybulma/node_modules/nopt/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/mybulma/node_modules/nopt/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/nopt/README.md b/mybulma/node_modules/nopt/README.md new file mode 100644 index 0000000..a99531c --- /dev/null +++ b/mybulma/node_modules/nopt/README.md @@ -0,0 +1,213 @@ +If you want to write an option parser, and have it be good, there are +two ways to do it. The Right Way, and the Wrong Way. + +The Wrong Way is to sit down and write an option parser. We've all done +that. + +The Right Way is to write some complex configurable program with so many +options that you hit the limit of your frustration just trying to +manage them all, and defer it with duct-tape solutions until you see +exactly to the core of the problem, and finally snap and write an +awesome option parser. + +If you want to write an option parser, don't write an option parser. +Write a package manager, or a source control system, or a service +restarter, or an operating system. You probably won't end up with a +good one of those, but if you don't give up, and you are relentless and +diligent enough in your procrastination, you may just end up with a very +nice option parser. + +## USAGE + +```javascript +// my-program.js +var nopt = require("nopt") + , Stream = require("stream").Stream + , path = require("path") + , knownOpts = { "foo" : [String, null] + , "bar" : [Stream, Number] + , "baz" : path + , "bloo" : [ "big", "medium", "small" ] + , "flag" : Boolean + , "pick" : Boolean + , "many1" : [String, Array] + , "many2" : [path, Array] + } + , shortHands = { "foofoo" : ["--foo", "Mr. Foo"] + , "b7" : ["--bar", "7"] + , "m" : ["--bloo", "medium"] + , "p" : ["--pick"] + , "f" : ["--flag"] + } + // everything is optional. + // knownOpts and shorthands default to {} + // arg list defaults to process.argv + // slice defaults to 2 + , parsed = nopt(knownOpts, shortHands, process.argv, 2) +console.log(parsed) +``` + +This would give you support for any of the following: + +```console +$ node my-program.js --foo "blerp" --no-flag +{ "foo" : "blerp", "flag" : false } + +$ node my-program.js ---bar 7 --foo "Mr. Hand" --flag +{ bar: 7, foo: "Mr. Hand", flag: true } + +$ node my-program.js --foo "blerp" -f -----p +{ foo: "blerp", flag: true, pick: true } + +$ node my-program.js -fp --foofoo +{ foo: "Mr. Foo", flag: true, pick: true } + +$ node my-program.js --foofoo -- -fp # -- stops the flag parsing. +{ foo: "Mr. Foo", argv: { remain: ["-fp"] } } + +$ node my-program.js --blatzk -fp # unknown opts are ok. +{ blatzk: true, flag: true, pick: true } + +$ node my-program.js --blatzk=1000 -fp # but you need to use = if they have a value +{ blatzk: 1000, flag: true, pick: true } + +$ node my-program.js --no-blatzk -fp # unless they start with "no-" +{ blatzk: false, flag: true, pick: true } + +$ node my-program.js --baz b/a/z # known paths are resolved. +{ baz: "/Users/isaacs/b/a/z" } + +# if Array is one of the types, then it can take many +# values, and will always be an array. The other types provided +# specify what types are allowed in the list. + +$ node my-program.js --many1 5 --many1 null --many1 foo +{ many1: ["5", "null", "foo"] } + +$ node my-program.js --many2 foo --many2 bar +{ many2: ["/path/to/foo", "path/to/bar"] } +``` + +Read the tests at the bottom of `lib/nopt.js` for more examples of +what this puppy can do. + +## Types + +The following types are supported, and defined on `nopt.typeDefs` + +* String: A normal string. No parsing is done. +* path: A file system path. Gets resolved against cwd if not absolute. +* url: A url. If it doesn't parse, it isn't accepted. +* Number: Must be numeric. +* Date: Must parse as a date. If it does, and `Date` is one of the options, + then it will return a Date object, not a string. +* Boolean: Must be either `true` or `false`. If an option is a boolean, + then it does not need a value, and its presence will imply `true` as + the value. To negate boolean flags, do `--no-whatever` or `--whatever + false` +* NaN: Means that the option is strictly not allowed. Any value will + fail. +* Stream: An object matching the "Stream" class in node. Valuable + for use when validating programmatically. (npm uses this to let you + supply any WriteStream on the `outfd` and `logfd` config options.) +* Array: If `Array` is specified as one of the types, then the value + will be parsed as a list of options. This means that multiple values + can be specified, and that the value will always be an array. + +If a type is an array of values not on this list, then those are +considered valid values. For instance, in the example above, the +`--bloo` option can only be one of `"big"`, `"medium"`, or `"small"`, +and any other value will be rejected. + +When parsing unknown fields, `"true"`, `"false"`, and `"null"` will be +interpreted as their JavaScript equivalents. + +You can also mix types and values, or multiple types, in a list. For +instance `{ blah: [Number, null] }` would allow a value to be set to +either a Number or null. When types are ordered, this implies a +preference, and the first type that can be used to properly interpret +the value will be used. + +To define a new type, add it to `nopt.typeDefs`. Each item in that +hash is an object with a `type` member and a `validate` method. The +`type` member is an object that matches what goes in the type list. The +`validate` method is a function that gets called with `validate(data, +key, val)`. Validate methods should assign `data[key]` to the valid +value of `val` if it can be handled properly, or return boolean +`false` if it cannot. + +You can also call `nopt.clean(data, types, typeDefs)` to clean up a +config object and remove its invalid properties. + +## Error Handling + +By default, nopt outputs a warning to standard error when invalid values for +known options are found. You can change this behavior by assigning a method +to `nopt.invalidHandler`. This method will be called with +the offending `nopt.invalidHandler(key, val, types)`. + +If no `nopt.invalidHandler` is assigned, then it will console.error +its whining. If it is assigned to boolean `false` then the warning is +suppressed. + +## Abbreviations + +Yes, they are supported. If you define options like this: + +```javascript +{ "foolhardyelephants" : Boolean +, "pileofmonkeys" : Boolean } +``` + +Then this will work: + +```bash +node program.js --foolhar --pil +node program.js --no-f --pileofmon +# etc. +``` + +## Shorthands + +Shorthands are a hash of shorter option names to a snippet of args that +they expand to. + +If multiple one-character shorthands are all combined, and the +combination does not unambiguously match any other option or shorthand, +then they will be broken up into their constituent parts. For example: + +```json +{ "s" : ["--loglevel", "silent"] +, "g" : "--global" +, "f" : "--force" +, "p" : "--parseable" +, "l" : "--long" +} +``` + +```bash +npm ls -sgflp +# just like doing this: +npm ls --loglevel silent --global --force --long --parseable +``` + +## The Rest of the args + +The config object returned by nopt is given a special member called +`argv`, which is an object with the following fields: + +* `remain`: The remaining args after all the parsing has occurred. +* `original`: The args as they originally appeared. +* `cooked`: The args after flags and shorthands are expanded. + +## Slicing + +Node programs are called with more or less the exact argv as it appears +in C land, after the v8 and node-specific options have been plucked off. +As such, `argv[0]` is always `node` and `argv[1]` is always the +JavaScript program being run. + +That's usually not very useful to you. So they're sliced off by +default. If you want them, then you can pass in `0` as the last +argument, or any other number that you'd like to slice off the start of +the list. diff --git a/mybulma/node_modules/nopt/bin/nopt.js b/mybulma/node_modules/nopt/bin/nopt.js new file mode 100644 index 0000000..3232d4c --- /dev/null +++ b/mybulma/node_modules/nopt/bin/nopt.js @@ -0,0 +1,54 @@ +#!/usr/bin/env node +var nopt = require("../lib/nopt") + , path = require("path") + , types = { num: Number + , bool: Boolean + , help: Boolean + , list: Array + , "num-list": [Number, Array] + , "str-list": [String, Array] + , "bool-list": [Boolean, Array] + , str: String + , clear: Boolean + , config: Boolean + , length: Number + , file: path + } + , shorthands = { s: [ "--str", "astring" ] + , b: [ "--bool" ] + , nb: [ "--no-bool" ] + , tft: [ "--bool-list", "--no-bool-list", "--bool-list", "true" ] + , "?": ["--help"] + , h: ["--help"] + , H: ["--help"] + , n: [ "--num", "125" ] + , c: ["--config"] + , l: ["--length"] + , f: ["--file"] + } + , parsed = nopt( types + , shorthands + , process.argv + , 2 ) + +console.log("parsed", parsed) + +if (parsed.help) { + console.log("") + console.log("nopt cli tester") + console.log("") + console.log("types") + console.log(Object.keys(types).map(function M (t) { + var type = types[t] + if (Array.isArray(type)) { + return [t, type.map(function (type) { return type.name })] + } + return [t, type && type.name] + }).reduce(function (s, i) { + s[i[0]] = i[1] + return s + }, {})) + console.log("") + console.log("shorthands") + console.log(shorthands) +} diff --git a/mybulma/node_modules/nopt/lib/nopt.js b/mybulma/node_modules/nopt/lib/nopt.js new file mode 100644 index 0000000..ecfa5da --- /dev/null +++ b/mybulma/node_modules/nopt/lib/nopt.js @@ -0,0 +1,441 @@ +// info about each config option. + +var debug = process.env.DEBUG_NOPT || process.env.NOPT_DEBUG + ? function () { console.error.apply(console, arguments) } + : function () {} + +var url = require("url") + , path = require("path") + , Stream = require("stream").Stream + , abbrev = require("abbrev") + , os = require("os") + +module.exports = exports = nopt +exports.clean = clean + +exports.typeDefs = + { String : { type: String, validate: validateString } + , Boolean : { type: Boolean, validate: validateBoolean } + , url : { type: url, validate: validateUrl } + , Number : { type: Number, validate: validateNumber } + , path : { type: path, validate: validatePath } + , Stream : { type: Stream, validate: validateStream } + , Date : { type: Date, validate: validateDate } + } + +function nopt (types, shorthands, args, slice) { + args = args || process.argv + types = types || {} + shorthands = shorthands || {} + if (typeof slice !== "number") slice = 2 + + debug(types, shorthands, args, slice) + + args = args.slice(slice) + var data = {} + , key + , argv = { + remain: [], + cooked: args, + original: args.slice(0) + } + + parse(args, data, argv.remain, types, shorthands) + // now data is full + clean(data, types, exports.typeDefs) + data.argv = argv + Object.defineProperty(data.argv, 'toString', { value: function () { + return this.original.map(JSON.stringify).join(" ") + }, enumerable: false }) + return data +} + +function clean (data, types, typeDefs) { + typeDefs = typeDefs || exports.typeDefs + var remove = {} + , typeDefault = [false, true, null, String, Array] + + Object.keys(data).forEach(function (k) { + if (k === "argv") return + var val = data[k] + , isArray = Array.isArray(val) + , type = types[k] + if (!isArray) val = [val] + if (!type) type = typeDefault + if (type === Array) type = typeDefault.concat(Array) + if (!Array.isArray(type)) type = [type] + + debug("val=%j", val) + debug("types=", type) + val = val.map(function (val) { + // if it's an unknown value, then parse false/true/null/numbers/dates + if (typeof val === "string") { + debug("string %j", val) + val = val.trim() + if ((val === "null" && ~type.indexOf(null)) + || (val === "true" && + (~type.indexOf(true) || ~type.indexOf(Boolean))) + || (val === "false" && + (~type.indexOf(false) || ~type.indexOf(Boolean)))) { + val = JSON.parse(val) + debug("jsonable %j", val) + } else if (~type.indexOf(Number) && !isNaN(val)) { + debug("convert to number", val) + val = +val + } else if (~type.indexOf(Date) && !isNaN(Date.parse(val))) { + debug("convert to date", val) + val = new Date(val) + } + } + + if (!types.hasOwnProperty(k)) { + return val + } + + // allow `--no-blah` to set 'blah' to null if null is allowed + if (val === false && ~type.indexOf(null) && + !(~type.indexOf(false) || ~type.indexOf(Boolean))) { + val = null + } + + var d = {} + d[k] = val + debug("prevalidated val", d, val, types[k]) + if (!validate(d, k, val, types[k], typeDefs)) { + if (exports.invalidHandler) { + exports.invalidHandler(k, val, types[k], data) + } else if (exports.invalidHandler !== false) { + debug("invalid: "+k+"="+val, types[k]) + } + return remove + } + debug("validated val", d, val, types[k]) + return d[k] + }).filter(function (val) { return val !== remove }) + + // if we allow Array specifically, then an empty array is how we + // express 'no value here', not null. Allow it. + if (!val.length && type.indexOf(Array) === -1) { + debug('VAL HAS NO LENGTH, DELETE IT', val, k, type.indexOf(Array)) + delete data[k] + } + else if (isArray) { + debug(isArray, data[k], val) + data[k] = val + } else data[k] = val[0] + + debug("k=%s val=%j", k, val, data[k]) + }) +} + +function validateString (data, k, val) { + data[k] = String(val) +} + +function validatePath (data, k, val) { + if (val === true) return false + if (val === null) return true + + val = String(val) + + var isWin = process.platform === 'win32' + , homePattern = isWin ? /^~(\/|\\)/ : /^~\// + , home = os.homedir() + + if (home && val.match(homePattern)) { + data[k] = path.resolve(home, val.substr(2)) + } else { + data[k] = path.resolve(val) + } + return true +} + +function validateNumber (data, k, val) { + debug("validate Number %j %j %j", k, val, isNaN(val)) + if (isNaN(val)) return false + data[k] = +val +} + +function validateDate (data, k, val) { + var s = Date.parse(val) + debug("validate Date %j %j %j", k, val, s) + if (isNaN(s)) return false + data[k] = new Date(val) +} + +function validateBoolean (data, k, val) { + if (val instanceof Boolean) val = val.valueOf() + else if (typeof val === "string") { + if (!isNaN(val)) val = !!(+val) + else if (val === "null" || val === "false") val = false + else val = true + } else val = !!val + data[k] = val +} + +function validateUrl (data, k, val) { + val = url.parse(String(val)) + if (!val.host) return false + data[k] = val.href +} + +function validateStream (data, k, val) { + if (!(val instanceof Stream)) return false + data[k] = val +} + +function validate (data, k, val, type, typeDefs) { + // arrays are lists of types. + if (Array.isArray(type)) { + for (var i = 0, l = type.length; i < l; i ++) { + if (type[i] === Array) continue + if (validate(data, k, val, type[i], typeDefs)) return true + } + delete data[k] + return false + } + + // an array of anything? + if (type === Array) return true + + // NaN is poisonous. Means that something is not allowed. + if (type !== type) { + debug("Poison NaN", k, val, type) + delete data[k] + return false + } + + // explicit list of values + if (val === type) { + debug("Explicitly allowed %j", val) + // if (isArray) (data[k] = data[k] || []).push(val) + // else data[k] = val + data[k] = val + return true + } + + // now go through the list of typeDefs, validate against each one. + var ok = false + , types = Object.keys(typeDefs) + for (var i = 0, l = types.length; i < l; i ++) { + debug("test type %j %j %j", k, val, types[i]) + var t = typeDefs[types[i]] + if (t && + ((type && type.name && t.type && t.type.name) ? (type.name === t.type.name) : (type === t.type))) { + var d = {} + ok = false !== t.validate(d, k, val) + val = d[k] + if (ok) { + // if (isArray) (data[k] = data[k] || []).push(val) + // else data[k] = val + data[k] = val + break + } + } + } + debug("OK? %j (%j %j %j)", ok, k, val, types[i]) + + if (!ok) delete data[k] + return ok +} + +function parse (args, data, remain, types, shorthands) { + debug("parse", args, data, remain) + + var key = null + , abbrevs = abbrev(Object.keys(types)) + , shortAbbr = abbrev(Object.keys(shorthands)) + + for (var i = 0; i < args.length; i ++) { + var arg = args[i] + debug("arg", arg) + + if (arg.match(/^-{2,}$/)) { + // done with keys. + // the rest are args. + remain.push.apply(remain, args.slice(i + 1)) + args[i] = "--" + break + } + var hadEq = false + if (arg.charAt(0) === "-" && arg.length > 1) { + var at = arg.indexOf('=') + if (at > -1) { + hadEq = true + var v = arg.substr(at + 1) + arg = arg.substr(0, at) + args.splice(i, 1, arg, v) + } + + // see if it's a shorthand + // if so, splice and back up to re-parse it. + var shRes = resolveShort(arg, shorthands, shortAbbr, abbrevs) + debug("arg=%j shRes=%j", arg, shRes) + if (shRes) { + debug(arg, shRes) + args.splice.apply(args, [i, 1].concat(shRes)) + if (arg !== shRes[0]) { + i -- + continue + } + } + arg = arg.replace(/^-+/, "") + var no = null + while (arg.toLowerCase().indexOf("no-") === 0) { + no = !no + arg = arg.substr(3) + } + + if (abbrevs[arg]) arg = abbrevs[arg] + + var argType = types[arg] + var isTypeArray = Array.isArray(argType) + if (isTypeArray && argType.length === 1) { + isTypeArray = false + argType = argType[0] + } + + var isArray = argType === Array || + isTypeArray && argType.indexOf(Array) !== -1 + + // allow unknown things to be arrays if specified multiple times. + if (!types.hasOwnProperty(arg) && data.hasOwnProperty(arg)) { + if (!Array.isArray(data[arg])) + data[arg] = [data[arg]] + isArray = true + } + + var val + , la = args[i + 1] + + var isBool = typeof no === 'boolean' || + argType === Boolean || + isTypeArray && argType.indexOf(Boolean) !== -1 || + (typeof argType === 'undefined' && !hadEq) || + (la === "false" && + (argType === null || + isTypeArray && ~argType.indexOf(null))) + + if (isBool) { + // just set and move along + val = !no + // however, also support --bool true or --bool false + if (la === "true" || la === "false") { + val = JSON.parse(la) + la = null + if (no) val = !val + i ++ + } + + // also support "foo":[Boolean, "bar"] and "--foo bar" + if (isTypeArray && la) { + if (~argType.indexOf(la)) { + // an explicit type + val = la + i ++ + } else if ( la === "null" && ~argType.indexOf(null) ) { + // null allowed + val = null + i ++ + } else if ( !la.match(/^-{2,}[^-]/) && + !isNaN(la) && + ~argType.indexOf(Number) ) { + // number + val = +la + i ++ + } else if ( !la.match(/^-[^-]/) && ~argType.indexOf(String) ) { + // string + val = la + i ++ + } + } + + if (isArray) (data[arg] = data[arg] || []).push(val) + else data[arg] = val + + continue + } + + if (argType === String) { + if (la === undefined) { + la = "" + } else if (la.match(/^-{1,2}[^-]+/)) { + la = "" + i -- + } + } + + if (la && la.match(/^-{2,}$/)) { + la = undefined + i -- + } + + val = la === undefined ? true : la + if (isArray) (data[arg] = data[arg] || []).push(val) + else data[arg] = val + + i ++ + continue + } + remain.push(arg) + } +} + +function resolveShort (arg, shorthands, shortAbbr, abbrevs) { + // handle single-char shorthands glommed together, like + // npm ls -glp, but only if there is one dash, and only if + // all of the chars are single-char shorthands, and it's + // not a match to some other abbrev. + arg = arg.replace(/^-+/, '') + + // if it's an exact known option, then don't go any further + if (abbrevs[arg] === arg) + return null + + // if it's an exact known shortopt, same deal + if (shorthands[arg]) { + // make it an array, if it's a list of words + if (shorthands[arg] && !Array.isArray(shorthands[arg])) + shorthands[arg] = shorthands[arg].split(/\s+/) + + return shorthands[arg] + } + + // first check to see if this arg is a set of single-char shorthands + var singles = shorthands.___singles + if (!singles) { + singles = Object.keys(shorthands).filter(function (s) { + return s.length === 1 + }).reduce(function (l,r) { + l[r] = true + return l + }, {}) + shorthands.___singles = singles + debug('shorthand singles', singles) + } + + var chrs = arg.split("").filter(function (c) { + return singles[c] + }) + + if (chrs.join("") === arg) return chrs.map(function (c) { + return shorthands[c] + }).reduce(function (l, r) { + return l.concat(r) + }, []) + + + // if it's an arg abbrev, and not a literal shorthand, then prefer the arg + if (abbrevs[arg] && !shorthands[arg]) + return null + + // if it's an abbr for a shorthand, then use that + if (shortAbbr[arg]) + arg = shortAbbr[arg] + + // make it an array, if it's a list of words + if (shorthands[arg] && !Array.isArray(shorthands[arg])) + shorthands[arg] = shorthands[arg].split(/\s+/) + + return shorthands[arg] +} diff --git a/mybulma/node_modules/nopt/package.json b/mybulma/node_modules/nopt/package.json new file mode 100644 index 0000000..12ed02d --- /dev/null +++ b/mybulma/node_modules/nopt/package.json @@ -0,0 +1,34 @@ +{ + "name": "nopt", + "version": "5.0.0", + "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.", + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "main": "lib/nopt.js", + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags", + "test": "tap test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/nopt.git" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "devDependencies": { + "tap": "^14.10.6" + }, + "files": [ + "bin", + "lib" + ], + "engines": { + "node": ">=6" + } +} diff --git a/mybulma/node_modules/normalize-package-data/lib/extract_description.js b/mybulma/node_modules/normalize-package-data/lib/extract_description.js new file mode 100644 index 0000000..bf98968 --- /dev/null +++ b/mybulma/node_modules/normalize-package-data/lib/extract_description.js @@ -0,0 +1,22 @@ +module.exports = extractDescription + +// Extracts description from contents of a readme file in markdown format +function extractDescription (d) { + if (!d) { + return + } + if (d === 'ERROR: No README data found!') { + return + } + // the first block of text before the first heading + // that isn't the first line heading + d = d.trim().split('\n') + for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s++) { + ; + } + var l = d.length + for (var e = s + 1; e < l && d[e].trim(); e++) { + ; + } + return d.slice(s, e).join(' ').trim() +} diff --git a/mybulma/node_modules/normalize-package-data/lib/fixer.js b/mybulma/node_modules/normalize-package-data/lib/fixer.js new file mode 100644 index 0000000..97c26b2 --- /dev/null +++ b/mybulma/node_modules/normalize-package-data/lib/fixer.js @@ -0,0 +1,474 @@ +var isValidSemver = require('semver/functions/valid') +var cleanSemver = require('semver/functions/clean') +var validateLicense = require('validate-npm-package-license') +var hostedGitInfo = require('hosted-git-info') +var isBuiltinModule = require('is-core-module') +var depTypes = ['dependencies', 'devDependencies', 'optionalDependencies'] +var extractDescription = require('./extract_description') +var url = require('url') +var typos = require('./typos.json') + +module.exports = { + // default warning function + warn: function () {}, + + fixRepositoryField: function (data) { + if (data.repositories) { + this.warn('repositories') + data.repository = data.repositories[0] + } + if (!data.repository) { + return this.warn('missingRepository') + } + if (typeof data.repository === 'string') { + data.repository = { + type: 'git', + url: data.repository, + } + } + var r = data.repository.url || '' + if (r) { + var hosted = hostedGitInfo.fromUrl(r) + if (hosted) { + r = data.repository.url + = hosted.getDefaultRepresentation() === 'shortcut' ? hosted.https() : hosted.toString() + } + } + + if (r.match(/github.com\/[^/]+\/[^/]+\.git\.git$/)) { + this.warn('brokenGitUrl', r) + } + }, + + fixTypos: function (data) { + Object.keys(typos.topLevel).forEach(function (d) { + if (Object.prototype.hasOwnProperty.call(data, d)) { + this.warn('typo', d, typos.topLevel[d]) + } + }, this) + }, + + fixScriptsField: function (data) { + if (!data.scripts) { + return + } + if (typeof data.scripts !== 'object') { + this.warn('nonObjectScripts') + delete data.scripts + return + } + Object.keys(data.scripts).forEach(function (k) { + if (typeof data.scripts[k] !== 'string') { + this.warn('nonStringScript') + delete data.scripts[k] + } else if (typos.script[k] && !data.scripts[typos.script[k]]) { + this.warn('typo', k, typos.script[k], 'scripts') + } + }, this) + }, + + fixFilesField: function (data) { + var files = data.files + if (files && !Array.isArray(files)) { + this.warn('nonArrayFiles') + delete data.files + } else if (data.files) { + data.files = data.files.filter(function (file) { + if (!file || typeof file !== 'string') { + this.warn('invalidFilename', file) + return false + } else { + return true + } + }, this) + } + }, + + fixBinField: function (data) { + if (!data.bin) { + return + } + if (typeof data.bin === 'string') { + var b = {} + var match + if (match = data.name.match(/^@[^/]+[/](.*)$/)) { + b[match[1]] = data.bin + } else { + b[data.name] = data.bin + } + data.bin = b + } + }, + + fixManField: function (data) { + if (!data.man) { + return + } + if (typeof data.man === 'string') { + data.man = [data.man] + } + }, + fixBundleDependenciesField: function (data) { + var bdd = 'bundledDependencies' + var bd = 'bundleDependencies' + if (data[bdd] && !data[bd]) { + data[bd] = data[bdd] + delete data[bdd] + } + if (data[bd] && !Array.isArray(data[bd])) { + this.warn('nonArrayBundleDependencies') + delete data[bd] + } else if (data[bd]) { + data[bd] = data[bd].filter(function (bd) { + if (!bd || typeof bd !== 'string') { + this.warn('nonStringBundleDependency', bd) + return false + } else { + if (!data.dependencies) { + data.dependencies = {} + } + if (Object.prototype.hasOwnProperty.call(data.dependencies, bd)) { + this.warn('nonDependencyBundleDependency', bd) + data.dependencies[bd] = '*' + } + return true + } + }, this) + } + }, + + fixDependencies: function (data, strict) { + objectifyDeps(data, this.warn) + addOptionalDepsToDeps(data, this.warn) + this.fixBundleDependenciesField(data) + + ;['dependencies', 'devDependencies'].forEach(function (deps) { + if (!(deps in data)) { + return + } + if (!data[deps] || typeof data[deps] !== 'object') { + this.warn('nonObjectDependencies', deps) + delete data[deps] + return + } + Object.keys(data[deps]).forEach(function (d) { + var r = data[deps][d] + if (typeof r !== 'string') { + this.warn('nonStringDependency', d, JSON.stringify(r)) + delete data[deps][d] + } + var hosted = hostedGitInfo.fromUrl(data[deps][d]) + if (hosted) { + data[deps][d] = hosted.toString() + } + }, this) + }, this) + }, + + fixModulesField: function (data) { + if (data.modules) { + this.warn('deprecatedModules') + delete data.modules + } + }, + + fixKeywordsField: function (data) { + if (typeof data.keywords === 'string') { + data.keywords = data.keywords.split(/,\s+/) + } + if (data.keywords && !Array.isArray(data.keywords)) { + delete data.keywords + this.warn('nonArrayKeywords') + } else if (data.keywords) { + data.keywords = data.keywords.filter(function (kw) { + if (typeof kw !== 'string' || !kw) { + this.warn('nonStringKeyword') + return false + } else { + return true + } + }, this) + } + }, + + fixVersionField: function (data, strict) { + // allow "loose" semver 1.0 versions in non-strict mode + // enforce strict semver 2.0 compliance in strict mode + var loose = !strict + if (!data.version) { + data.version = '' + return true + } + if (!isValidSemver(data.version, loose)) { + throw new Error('Invalid version: "' + data.version + '"') + } + data.version = cleanSemver(data.version, loose) + return true + }, + + fixPeople: function (data) { + modifyPeople(data, unParsePerson) + modifyPeople(data, parsePerson) + }, + + fixNameField: function (data, options) { + if (typeof options === 'boolean') { + options = {strict: options} + } else if (typeof options === 'undefined') { + options = {} + } + var strict = options.strict + if (!data.name && !strict) { + data.name = '' + return + } + if (typeof data.name !== 'string') { + throw new Error('name field must be a string.') + } + if (!strict) { + data.name = data.name.trim() + } + ensureValidName(data.name, strict, options.allowLegacyCase) + if (isBuiltinModule(data.name)) { + this.warn('conflictingName', data.name) + } + }, + + fixDescriptionField: function (data) { + if (data.description && typeof data.description !== 'string') { + this.warn('nonStringDescription') + delete data.description + } + if (data.readme && !data.description) { + data.description = extractDescription(data.readme) + } + if (data.description === undefined) { + delete data.description + } + if (!data.description) { + this.warn('missingDescription') + } + }, + + fixReadmeField: function (data) { + if (!data.readme) { + this.warn('missingReadme') + data.readme = 'ERROR: No README data found!' + } + }, + + fixBugsField: function (data) { + if (!data.bugs && data.repository && data.repository.url) { + var hosted = hostedGitInfo.fromUrl(data.repository.url) + if (hosted && hosted.bugs()) { + data.bugs = {url: hosted.bugs()} + } + } else if (data.bugs) { + var emailRe = /^.+@.*\..+$/ + if (typeof data.bugs === 'string') { + if (emailRe.test(data.bugs)) { + data.bugs = {email: data.bugs} + /* eslint-disable-next-line node/no-deprecated-api */ + } else if (url.parse(data.bugs).protocol) { + data.bugs = {url: data.bugs} + } else { + this.warn('nonEmailUrlBugsString') + } + } else { + bugsTypos(data.bugs, this.warn) + var oldBugs = data.bugs + data.bugs = {} + if (oldBugs.url) { + /* eslint-disable-next-line node/no-deprecated-api */ + if (typeof (oldBugs.url) === 'string' && url.parse(oldBugs.url).protocol) { + data.bugs.url = oldBugs.url + } else { + this.warn('nonUrlBugsUrlField') + } + } + if (oldBugs.email) { + if (typeof (oldBugs.email) === 'string' && emailRe.test(oldBugs.email)) { + data.bugs.email = oldBugs.email + } else { + this.warn('nonEmailBugsEmailField') + } + } + } + if (!data.bugs.email && !data.bugs.url) { + delete data.bugs + this.warn('emptyNormalizedBugs') + } + } + }, + + fixHomepageField: function (data) { + if (!data.homepage && data.repository && data.repository.url) { + var hosted = hostedGitInfo.fromUrl(data.repository.url) + if (hosted && hosted.docs()) { + data.homepage = hosted.docs() + } + } + if (!data.homepage) { + return + } + + if (typeof data.homepage !== 'string') { + this.warn('nonUrlHomepage') + return delete data.homepage + } + /* eslint-disable-next-line node/no-deprecated-api */ + if (!url.parse(data.homepage).protocol) { + data.homepage = 'http://' + data.homepage + } + }, + + fixLicenseField: function (data) { + const license = data.license || data.licence + if (!license) { + return this.warn('missingLicense') + } + if ( + typeof (license) !== 'string' || + license.length < 1 || + license.trim() === '' + ) { + return this.warn('invalidLicense') + } + if (!validateLicense(license).validForNewPackages) { + return this.warn('invalidLicense') + } + }, +} + +function isValidScopedPackageName (spec) { + if (spec.charAt(0) !== '@') { + return false + } + + var rest = spec.slice(1).split('/') + if (rest.length !== 2) { + return false + } + + return rest[0] && rest[1] && + rest[0] === encodeURIComponent(rest[0]) && + rest[1] === encodeURIComponent(rest[1]) +} + +function isCorrectlyEncodedName (spec) { + return !spec.match(/[/@\s+%:]/) && + spec === encodeURIComponent(spec) +} + +function ensureValidName (name, strict, allowLegacyCase) { + if (name.charAt(0) === '.' || + !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) || + (strict && (!allowLegacyCase) && name !== name.toLowerCase()) || + name.toLowerCase() === 'node_modules' || + name.toLowerCase() === 'favicon.ico') { + throw new Error('Invalid name: ' + JSON.stringify(name)) + } +} + +function modifyPeople (data, fn) { + if (data.author) { + data.author = fn(data.author) + }['maintainers', 'contributors'].forEach(function (set) { + if (!Array.isArray(data[set])) { + return + } + data[set] = data[set].map(fn) + }) + return data +} + +function unParsePerson (person) { + if (typeof person === 'string') { + return person + } + var name = person.name || '' + var u = person.url || person.web + var url = u ? (' (' + u + ')') : '' + var e = person.email || person.mail + var email = e ? (' <' + e + '>') : '' + return name + email + url +} + +function parsePerson (person) { + if (typeof person !== 'string') { + return person + } + var name = person.match(/^([^(<]+)/) + var url = person.match(/\(([^)]+)\)/) + var email = person.match(/<([^>]+)>/) + var obj = {} + if (name && name[0].trim()) { + obj.name = name[0].trim() + } + if (email) { + obj.email = email[1] + } + if (url) { + obj.url = url[1] + } + return obj +} + +function addOptionalDepsToDeps (data, warn) { + var o = data.optionalDependencies + if (!o) { + return + } + var d = data.dependencies || {} + Object.keys(o).forEach(function (k) { + d[k] = o[k] + }) + data.dependencies = d +} + +function depObjectify (deps, type, warn) { + if (!deps) { + return {} + } + if (typeof deps === 'string') { + deps = deps.trim().split(/[\n\r\s\t ,]+/) + } + if (!Array.isArray(deps)) { + return deps + } + warn('deprecatedArrayDependencies', type) + var o = {} + deps.filter(function (d) { + return typeof d === 'string' + }).forEach(function (d) { + d = d.trim().split(/(:?[@\s><=])/) + var dn = d.shift() + var dv = d.join('') + dv = dv.trim() + dv = dv.replace(/^@/, '') + o[dn] = dv + }) + return o +} + +function objectifyDeps (data, warn) { + depTypes.forEach(function (type) { + if (!data[type]) { + return + } + data[type] = depObjectify(data[type], type, warn) + }) +} + +function bugsTypos (bugs, warn) { + if (!bugs) { + return + } + Object.keys(bugs).forEach(function (k) { + if (typos.bugs[k]) { + warn('typo', k, typos.bugs[k], 'bugs') + bugs[typos.bugs[k]] = bugs[k] + delete bugs[k] + } + }) +} diff --git a/mybulma/node_modules/normalize-package-data/lib/make_warning.js b/mybulma/node_modules/normalize-package-data/lib/make_warning.js new file mode 100644 index 0000000..3be9c86 --- /dev/null +++ b/mybulma/node_modules/normalize-package-data/lib/make_warning.js @@ -0,0 +1,22 @@ +var util = require('util') +var messages = require('./warning_messages.json') + +module.exports = function () { + var args = Array.prototype.slice.call(arguments, 0) + var warningName = args.shift() + if (warningName === 'typo') { + return makeTypoWarning.apply(null, args) + } else { + var msgTemplate = messages[warningName] ? messages[warningName] : warningName + ": '%s'" + args.unshift(msgTemplate) + return util.format.apply(null, args) + } +} + +function makeTypoWarning (providedName, probableName, field) { + if (field) { + providedName = field + "['" + providedName + "']" + probableName = field + "['" + probableName + "']" + } + return util.format(messages.typo, providedName, probableName) +} diff --git a/mybulma/node_modules/normalize-package-data/lib/normalize.js b/mybulma/node_modules/normalize-package-data/lib/normalize.js new file mode 100644 index 0000000..bf71d2c --- /dev/null +++ b/mybulma/node_modules/normalize-package-data/lib/normalize.js @@ -0,0 +1,48 @@ +module.exports = normalize + +var fixer = require('./fixer') +normalize.fixer = fixer + +var makeWarning = require('./make_warning') + +var fieldsToFix = ['name', 'version', 'description', 'repository', 'modules', 'scripts', + 'files', 'bin', 'man', 'bugs', 'keywords', 'readme', 'homepage', 'license'] +var otherThingsToFix = ['dependencies', 'people', 'typos'] + +var thingsToFix = fieldsToFix.map(function (fieldName) { + return ucFirst(fieldName) + 'Field' +}) +// two ways to do this in CoffeeScript on only one line, sub-70 chars: +// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + "Field" +// thingsToFix = (ucFirst(name) + "Field" for name in fieldsToFix) +thingsToFix = thingsToFix.concat(otherThingsToFix) + +function normalize (data, warn, strict) { + if (warn === true) { + warn = null + strict = true + } + if (!strict) { + strict = false + } + if (!warn || data.private) { + warn = function (msg) { /* noop */ } + } + + if (data.scripts && + data.scripts.install === 'node-gyp rebuild' && + !data.scripts.preinstall) { + data.gypfile = true + } + fixer.warn = function () { + warn(makeWarning.apply(null, arguments)) + } + thingsToFix.forEach(function (thingName) { + fixer['fix' + ucFirst(thingName)](data, strict) + }) + data._id = data.name + '@' + data.version +} + +function ucFirst (string) { + return string.charAt(0).toUpperCase() + string.slice(1) +} diff --git a/mybulma/node_modules/normalize-package-data/lib/safe_format.js b/mybulma/node_modules/normalize-package-data/lib/safe_format.js new file mode 100644 index 0000000..5fc888e --- /dev/null +++ b/mybulma/node_modules/normalize-package-data/lib/safe_format.js @@ -0,0 +1,11 @@ +var util = require('util') + +module.exports = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.forEach(function (arg) { + if (!arg) { + throw new TypeError('Bad arguments.') + } + }) + return util.format.apply(null, arguments) +} diff --git a/mybulma/node_modules/normalize-package-data/lib/typos.json b/mybulma/node_modules/normalize-package-data/lib/typos.json new file mode 100644 index 0000000..7f9dd28 --- /dev/null +++ b/mybulma/node_modules/normalize-package-data/lib/typos.json @@ -0,0 +1,25 @@ +{ + "topLevel": { + "dependancies": "dependencies" + ,"dependecies": "dependencies" + ,"depdenencies": "dependencies" + ,"devEependencies": "devDependencies" + ,"depends": "dependencies" + ,"dev-dependencies": "devDependencies" + ,"devDependences": "devDependencies" + ,"devDepenencies": "devDependencies" + ,"devdependencies": "devDependencies" + ,"repostitory": "repository" + ,"repo": "repository" + ,"prefereGlobal": "preferGlobal" + ,"hompage": "homepage" + ,"hampage": "homepage" + ,"autohr": "author" + ,"autor": "author" + ,"contributers": "contributors" + ,"publicationConfig": "publishConfig" + ,"script": "scripts" + }, + "bugs": { "web": "url", "name": "url" }, + "script": { "server": "start", "tests": "test" } +} diff --git a/mybulma/node_modules/normalize-package-data/lib/warning_messages.json b/mybulma/node_modules/normalize-package-data/lib/warning_messages.json new file mode 100644 index 0000000..4890f50 --- /dev/null +++ b/mybulma/node_modules/normalize-package-data/lib/warning_messages.json @@ -0,0 +1,30 @@ +{ + "repositories": "'repositories' (plural) Not supported. Please pick one as the 'repository' field" + ,"missingRepository": "No repository field." + ,"brokenGitUrl": "Probably broken git url: %s" + ,"nonObjectScripts": "scripts must be an object" + ,"nonStringScript": "script values must be string commands" + ,"nonArrayFiles": "Invalid 'files' member" + ,"invalidFilename": "Invalid filename in 'files' list: %s" + ,"nonArrayBundleDependencies": "Invalid 'bundleDependencies' list. Must be array of package names" + ,"nonStringBundleDependency": "Invalid bundleDependencies member: %s" + ,"nonDependencyBundleDependency": "Non-dependency in bundleDependencies: %s" + ,"nonObjectDependencies": "%s field must be an object" + ,"nonStringDependency": "Invalid dependency: %s %s" + ,"deprecatedArrayDependencies": "specifying %s as array is deprecated" + ,"deprecatedModules": "modules field is deprecated" + ,"nonArrayKeywords": "keywords should be an array of strings" + ,"nonStringKeyword": "keywords should be an array of strings" + ,"conflictingName": "%s is also the name of a node core module." + ,"nonStringDescription": "'description' field should be a string" + ,"missingDescription": "No description" + ,"missingReadme": "No README data" + ,"missingLicense": "No license field." + ,"nonEmailUrlBugsString": "Bug string field must be url, email, or {email,url}" + ,"nonUrlBugsUrlField": "bugs.url field must be a string url. Deleted." + ,"nonEmailBugsEmailField": "bugs.email field must be a string email. Deleted." + ,"emptyNormalizedBugs": "Normalized value of bugs field is an empty object. Deleted." + ,"nonUrlHomepage": "homepage field must be a string url. Deleted." + ,"invalidLicense": "license should be a valid SPDX license expression" + ,"typo": "%s should probably be %s." +} diff --git a/mybulma/node_modules/npmlog/lib/log.js b/mybulma/node_modules/npmlog/lib/log.js new file mode 100644 index 0000000..be650c6 --- /dev/null +++ b/mybulma/node_modules/npmlog/lib/log.js @@ -0,0 +1,404 @@ +'use strict' +var Progress = require('are-we-there-yet') +var Gauge = require('gauge') +var EE = require('events').EventEmitter +var log = exports = module.exports = new EE() +var util = require('util') + +var setBlocking = require('set-blocking') +var consoleControl = require('console-control-strings') + +setBlocking(true) +var stream = process.stderr +Object.defineProperty(log, 'stream', { + set: function (newStream) { + stream = newStream + if (this.gauge) { + this.gauge.setWriteTo(stream, stream) + } + }, + get: function () { + return stream + }, +}) + +// by default, decide based on tty-ness. +var colorEnabled +log.useColor = function () { + return colorEnabled != null ? colorEnabled : stream.isTTY +} + +log.enableColor = function () { + colorEnabled = true + this.gauge.setTheme({ hasColor: colorEnabled, hasUnicode: unicodeEnabled }) +} +log.disableColor = function () { + colorEnabled = false + this.gauge.setTheme({ hasColor: colorEnabled, hasUnicode: unicodeEnabled }) +} + +// default level +log.level = 'info' + +log.gauge = new Gauge(stream, { + enabled: false, // no progress bars unless asked + theme: { hasColor: log.useColor() }, + template: [ + { type: 'progressbar', length: 20 }, + { type: 'activityIndicator', kerning: 1, length: 1 }, + { type: 'section', default: '' }, + ':', + { type: 'logline', kerning: 1, default: '' }, + ], +}) + +log.tracker = new Progress.TrackerGroup() + +// we track this separately as we may need to temporarily disable the +// display of the status bar for our own loggy purposes. +log.progressEnabled = log.gauge.isEnabled() + +var unicodeEnabled + +log.enableUnicode = function () { + unicodeEnabled = true + this.gauge.setTheme({ hasColor: this.useColor(), hasUnicode: unicodeEnabled }) +} + +log.disableUnicode = function () { + unicodeEnabled = false + this.gauge.setTheme({ hasColor: this.useColor(), hasUnicode: unicodeEnabled }) +} + +log.setGaugeThemeset = function (themes) { + this.gauge.setThemeset(themes) +} + +log.setGaugeTemplate = function (template) { + this.gauge.setTemplate(template) +} + +log.enableProgress = function () { + if (this.progressEnabled) { + return + } + + this.progressEnabled = true + this.tracker.on('change', this.showProgress) + if (this._paused) { + return + } + + this.gauge.enable() +} + +log.disableProgress = function () { + if (!this.progressEnabled) { + return + } + this.progressEnabled = false + this.tracker.removeListener('change', this.showProgress) + this.gauge.disable() +} + +var trackerConstructors = ['newGroup', 'newItem', 'newStream'] + +var mixinLog = function (tracker) { + // mixin the public methods from log into the tracker + // (except: conflicts and one's we handle specially) + Object.keys(log).forEach(function (P) { + if (P[0] === '_') { + return + } + + if (trackerConstructors.filter(function (C) { + return C === P + }).length) { + return + } + + if (tracker[P]) { + return + } + + if (typeof log[P] !== 'function') { + return + } + + var func = log[P] + tracker[P] = function () { + return func.apply(log, arguments) + } + }) + // if the new tracker is a group, make sure any subtrackers get + // mixed in too + if (tracker instanceof Progress.TrackerGroup) { + trackerConstructors.forEach(function (C) { + var func = tracker[C] + tracker[C] = function () { + return mixinLog(func.apply(tracker, arguments)) + } + }) + } + return tracker +} + +// Add tracker constructors to the top level log object +trackerConstructors.forEach(function (C) { + log[C] = function () { + return mixinLog(this.tracker[C].apply(this.tracker, arguments)) + } +}) + +log.clearProgress = function (cb) { + if (!this.progressEnabled) { + return cb && process.nextTick(cb) + } + + this.gauge.hide(cb) +} + +log.showProgress = function (name, completed) { + if (!this.progressEnabled) { + return + } + + var values = {} + if (name) { + values.section = name + } + + var last = log.record[log.record.length - 1] + if (last) { + values.subsection = last.prefix + var disp = log.disp[last.level] || last.level + var logline = this._format(disp, log.style[last.level]) + if (last.prefix) { + logline += ' ' + this._format(last.prefix, this.prefixStyle) + } + + logline += ' ' + last.message.split(/\r?\n/)[0] + values.logline = logline + } + values.completed = completed || this.tracker.completed() + this.gauge.show(values) +}.bind(log) // bind for use in tracker's on-change listener + +// temporarily stop emitting, but don't drop +log.pause = function () { + this._paused = true + if (this.progressEnabled) { + this.gauge.disable() + } +} + +log.resume = function () { + if (!this._paused) { + return + } + + this._paused = false + + var b = this._buffer + this._buffer = [] + b.forEach(function (m) { + this.emitLog(m) + }, this) + if (this.progressEnabled) { + this.gauge.enable() + } +} + +log._buffer = [] + +var id = 0 +log.record = [] +log.maxRecordSize = 10000 +log.log = function (lvl, prefix, message) { + var l = this.levels[lvl] + if (l === undefined) { + return this.emit('error', new Error(util.format( + 'Undefined log level: %j', lvl))) + } + + var a = new Array(arguments.length - 2) + var stack = null + for (var i = 2; i < arguments.length; i++) { + var arg = a[i - 2] = arguments[i] + + // resolve stack traces to a plain string. + if (typeof arg === 'object' && arg instanceof Error && arg.stack) { + Object.defineProperty(arg, 'stack', { + value: stack = arg.stack + '', + enumerable: true, + writable: true, + }) + } + } + if (stack) { + a.unshift(stack + '\n') + } + message = util.format.apply(util, a) + + var m = { + id: id++, + level: lvl, + prefix: String(prefix || ''), + message: message, + messageRaw: a, + } + + this.emit('log', m) + this.emit('log.' + lvl, m) + if (m.prefix) { + this.emit(m.prefix, m) + } + + this.record.push(m) + var mrs = this.maxRecordSize + var n = this.record.length - mrs + if (n > mrs / 10) { + var newSize = Math.floor(mrs * 0.9) + this.record = this.record.slice(-1 * newSize) + } + + this.emitLog(m) +}.bind(log) + +log.emitLog = function (m) { + if (this._paused) { + this._buffer.push(m) + return + } + if (this.progressEnabled) { + this.gauge.pulse(m.prefix) + } + + var l = this.levels[m.level] + if (l === undefined) { + return + } + + if (l < this.levels[this.level]) { + return + } + + if (l > 0 && !isFinite(l)) { + return + } + + // If 'disp' is null or undefined, use the lvl as a default + // Allows: '', 0 as valid disp + var disp = log.disp[m.level] != null ? log.disp[m.level] : m.level + this.clearProgress() + m.message.split(/\r?\n/).forEach(function (line) { + var heading = this.heading + if (heading) { + this.write(heading, this.headingStyle) + this.write(' ') + } + this.write(disp, log.style[m.level]) + var p = m.prefix || '' + if (p) { + this.write(' ') + } + + this.write(p, this.prefixStyle) + this.write(' ' + line + '\n') + }, this) + this.showProgress() +} + +log._format = function (msg, style) { + if (!stream) { + return + } + + var output = '' + if (this.useColor()) { + style = style || {} + var settings = [] + if (style.fg) { + settings.push(style.fg) + } + + if (style.bg) { + settings.push('bg' + style.bg[0].toUpperCase() + style.bg.slice(1)) + } + + if (style.bold) { + settings.push('bold') + } + + if (style.underline) { + settings.push('underline') + } + + if (style.inverse) { + settings.push('inverse') + } + + if (settings.length) { + output += consoleControl.color(settings) + } + + if (style.beep) { + output += consoleControl.beep() + } + } + output += msg + if (this.useColor()) { + output += consoleControl.color('reset') + } + + return output +} + +log.write = function (msg, style) { + if (!stream) { + return + } + + stream.write(this._format(msg, style)) +} + +log.addLevel = function (lvl, n, style, disp) { + // If 'disp' is null or undefined, use the lvl as a default + if (disp == null) { + disp = lvl + } + + this.levels[lvl] = n + this.style[lvl] = style + if (!this[lvl]) { + this[lvl] = function () { + var a = new Array(arguments.length + 1) + a[0] = lvl + for (var i = 0; i < arguments.length; i++) { + a[i + 1] = arguments[i] + } + + return this.log.apply(this, a) + }.bind(this) + } + this.disp[lvl] = disp +} + +log.prefixStyle = { fg: 'magenta' } +log.headingStyle = { fg: 'white', bg: 'black' } + +log.style = {} +log.levels = {} +log.disp = {} +log.addLevel('silly', -Infinity, { inverse: true }, 'sill') +log.addLevel('verbose', 1000, { fg: 'cyan', bg: 'black' }, 'verb') +log.addLevel('info', 2000, { fg: 'green' }) +log.addLevel('timing', 2500, { fg: 'green', bg: 'black' }) +log.addLevel('http', 3000, { fg: 'green', bg: 'black' }) +log.addLevel('notice', 3500, { fg: 'cyan', bg: 'black' }) +log.addLevel('warn', 4000, { fg: 'black', bg: 'yellow' }, 'WARN') +log.addLevel('error', 5000, { fg: 'red', bg: 'black' }, 'ERR!') +log.addLevel('silent', Infinity) + +// allow 'error' prefix +log.on('error', function () {}) diff --git a/mybulma/node_modules/p-locate/index.d.ts b/mybulma/node_modules/p-locate/index.d.ts new file mode 100644 index 0000000..14115e1 --- /dev/null +++ b/mybulma/node_modules/p-locate/index.d.ts @@ -0,0 +1,64 @@ +declare namespace pLocate { + interface Options { + /** + Number of concurrently pending promises returned by `tester`. Minimum: `1`. + + @default Infinity + */ + readonly concurrency?: number; + + /** + Preserve `input` order when searching. + + Disable this to improve performance if you don't care about the order. + + @default true + */ + readonly preserveOrder?: boolean; + } +} + +declare const pLocate: { + /** + Get the first fulfilled promise that satisfies the provided testing function. + + @param input - An iterable of promises/values to test. + @param tester - This function will receive resolved values from `input` and is expected to return a `Promise` or `boolean`. + @returns A `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`. + + @example + ``` + import pathExists = require('path-exists'); + import pLocate = require('p-locate'); + + const files = [ + 'unicorn.png', + 'rainbow.png', // Only this one actually exists on disk + 'pony.png' + ]; + + (async () => { + const foundPath = await pLocate(files, file => pathExists(file)); + + console.log(foundPath); + //=> 'rainbow' + })(); + ``` + */ + ( + input: Iterable | ValueType>, + tester: (element: ValueType) => PromiseLike | boolean, + options?: pLocate.Options + ): Promise; + + // TODO: Remove this for the next major release, refactor the whole definition to: + // declare function pLocate( + // input: Iterable | ValueType>, + // tester: (element: ValueType) => PromiseLike | boolean, + // options?: pLocate.Options + // ): Promise; + // export = pLocate; + default: typeof pLocate; +}; + +export = pLocate; diff --git a/mybulma/node_modules/p-locate/index.js b/mybulma/node_modules/p-locate/index.js new file mode 100644 index 0000000..e13ce15 --- /dev/null +++ b/mybulma/node_modules/p-locate/index.js @@ -0,0 +1,52 @@ +'use strict'; +const pLimit = require('p-limit'); + +class EndError extends Error { + constructor(value) { + super(); + this.value = value; + } +} + +// The input can also be a promise, so we await it +const testElement = async (element, tester) => tester(await element); + +// The input can also be a promise, so we `Promise.all()` them both +const finder = async element => { + const values = await Promise.all(element); + if (values[1] === true) { + throw new EndError(values[0]); + } + + return false; +}; + +const pLocate = async (iterable, tester, options) => { + options = { + concurrency: Infinity, + preserveOrder: true, + ...options + }; + + const limit = pLimit(options.concurrency); + + // Start all the promises concurrently with optional limit + const items = [...iterable].map(element => [element, limit(testElement, element, tester)]); + + // Check the promises either serially or concurrently + const checkLimit = pLimit(options.preserveOrder ? 1 : Infinity); + + try { + await Promise.all(items.map(element => checkLimit(finder, element))); + } catch (error) { + if (error instanceof EndError) { + return error.value; + } + + throw error; + } +}; + +module.exports = pLocate; +// TODO: Remove this for the next major release +module.exports.default = pLocate; diff --git a/mybulma/node_modules/p-locate/license b/mybulma/node_modules/p-locate/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/p-locate/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/p-locate/package.json b/mybulma/node_modules/p-locate/package.json new file mode 100644 index 0000000..e3de275 --- /dev/null +++ b/mybulma/node_modules/p-locate/package.json @@ -0,0 +1,53 @@ +{ + "name": "p-locate", + "version": "4.1.0", + "description": "Get the first fulfilled promise that satisfies the provided testing function", + "license": "MIT", + "repository": "sindresorhus/p-locate", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "promise", + "locate", + "find", + "finder", + "search", + "searcher", + "test", + "array", + "collection", + "iterable", + "iterator", + "race", + "fulfilled", + "fastest", + "async", + "await", + "promises", + "bluebird" + ], + "dependencies": { + "p-limit": "^2.2.0" + }, + "devDependencies": { + "ava": "^1.4.1", + "delay": "^4.1.0", + "in-range": "^1.0.0", + "time-span": "^3.0.0", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/mybulma/node_modules/p-locate/readme.md b/mybulma/node_modules/p-locate/readme.md new file mode 100644 index 0000000..f8e2c2e --- /dev/null +++ b/mybulma/node_modules/p-locate/readme.md @@ -0,0 +1,90 @@ +# p-locate [![Build Status](https://travis-ci.org/sindresorhus/p-locate.svg?branch=master)](https://travis-ci.org/sindresorhus/p-locate) + +> Get the first fulfilled promise that satisfies the provided testing function + +Think of it like an async version of [`Array#find`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find). + + +## Install + +``` +$ npm install p-locate +``` + + +## Usage + +Here we find the first file that exists on disk, in array order. + +```js +const pathExists = require('path-exists'); +const pLocate = require('p-locate'); + +const files = [ + 'unicorn.png', + 'rainbow.png', // Only this one actually exists on disk + 'pony.png' +]; + +(async () => { + const foundPath = await pLocate(files, file => pathExists(file)); + + console.log(foundPath); + //=> 'rainbow' +})(); +``` + +*The above is just an example. Use [`locate-path`](https://github.com/sindresorhus/locate-path) if you need this.* + + +## API + +### pLocate(input, tester, [options]) + +Returns a `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`. + +#### input + +Type: `Iterable` + +An iterable of promises/values to test. + +#### tester(element) + +Type: `Function` + +This function will receive resolved values from `input` and is expected to return a `Promise` or `boolean`. + +#### options + +Type: `Object` + +##### concurrency + +Type: `number`
    +Default: `Infinity`
    +Minimum: `1` + +Number of concurrently pending promises returned by `tester`. + +##### preserveOrder + +Type: `boolean`
    +Default: `true` + +Preserve `input` order when searching. + +Disable this to improve performance if you don't care about the order. + + +## Related + +- [p-map](https://github.com/sindresorhus/p-map) - Map over promises concurrently +- [p-filter](https://github.com/sindresorhus/p-filter) - Filter promises concurrently +- [p-any](https://github.com/sindresorhus/p-any) - Wait for any promise to be fulfilled +- [More…](https://github.com/sindresorhus/promise-fun) + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/mybulma/node_modules/p-try/index.d.ts b/mybulma/node_modules/p-try/index.d.ts new file mode 100644 index 0000000..2a7319e --- /dev/null +++ b/mybulma/node_modules/p-try/index.d.ts @@ -0,0 +1,39 @@ +declare const pTry: { + /** + Start a promise chain. + + @param fn - The function to run to start the promise chain. + @param arguments - Arguments to pass to `fn`. + @returns The value of calling `fn(...arguments)`. If the function throws an error, the returned `Promise` will be rejected with that error. + + @example + ``` + import pTry = require('p-try'); + + (async () => { + try { + const value = await pTry(() => { + return synchronousFunctionThatMightThrow(); + }); + console.log(value); + } catch (error) { + console.error(error); + } + })(); + ``` + */ + ( + fn: (...arguments: ArgumentsType) => PromiseLike | ValueType, + ...arguments: ArgumentsType + ): Promise; + + // TODO: remove this in the next major version, refactor the whole definition to: + // declare function pTry( + // fn: (...arguments: ArgumentsType) => PromiseLike | ValueType, + // ...arguments: ArgumentsType + // ): Promise; + // export = pTry; + default: typeof pTry; +}; + +export = pTry; diff --git a/mybulma/node_modules/p-try/index.js b/mybulma/node_modules/p-try/index.js new file mode 100644 index 0000000..db858da --- /dev/null +++ b/mybulma/node_modules/p-try/index.js @@ -0,0 +1,9 @@ +'use strict'; + +const pTry = (fn, ...arguments_) => new Promise(resolve => { + resolve(fn(...arguments_)); +}); + +module.exports = pTry; +// TODO: remove this in the next major version +module.exports.default = pTry; diff --git a/mybulma/node_modules/p-try/license b/mybulma/node_modules/p-try/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/p-try/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/p-try/package.json b/mybulma/node_modules/p-try/package.json new file mode 100644 index 0000000..81c4d32 --- /dev/null +++ b/mybulma/node_modules/p-try/package.json @@ -0,0 +1,42 @@ +{ + "name": "p-try", + "version": "2.2.0", + "description": "`Start a promise chain", + "license": "MIT", + "repository": "sindresorhus/p-try", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=6" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "promise", + "try", + "resolve", + "function", + "catch", + "async", + "await", + "promises", + "settled", + "ponyfill", + "polyfill", + "shim", + "bluebird" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.1", + "xo": "^0.24.0" + } +} diff --git a/mybulma/node_modules/p-try/readme.md b/mybulma/node_modules/p-try/readme.md new file mode 100644 index 0000000..4d7bd64 --- /dev/null +++ b/mybulma/node_modules/p-try/readme.md @@ -0,0 +1,58 @@ +# p-try [![Build Status](https://travis-ci.org/sindresorhus/p-try.svg?branch=master)](https://travis-ci.org/sindresorhus/p-try) + +> Start a promise chain + +[How is it useful?](http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/) + + +## Install + +``` +$ npm install p-try +``` + + +## Usage + +```js +const pTry = require('p-try'); + +(async () => { + try { + const value = await pTry(() => { + return synchronousFunctionThatMightThrow(); + }); + console.log(value); + } catch (error) { + console.error(error); + } +})(); +``` + + +## API + +### pTry(fn, ...arguments) + +Returns a `Promise` resolved with the value of calling `fn(...arguments)`. If the function throws an error, the returned `Promise` will be rejected with that error. + +Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a *lot* of functions. + +#### fn + +The function to run to start the promise chain. + +#### arguments + +Arguments to pass to `fn`. + + +## Related + +- [p-finally](https://github.com/sindresorhus/p-finally) - `Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome +- [More…](https://github.com/sindresorhus/promise-fun) + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/mybulma/node_modules/path-parse/LICENSE b/mybulma/node_modules/path-parse/LICENSE new file mode 100644 index 0000000..810f3db --- /dev/null +++ b/mybulma/node_modules/path-parse/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Javier Blanco + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/mybulma/node_modules/path-parse/README.md b/mybulma/node_modules/path-parse/README.md new file mode 100644 index 0000000..05097f8 --- /dev/null +++ b/mybulma/node_modules/path-parse/README.md @@ -0,0 +1,42 @@ +# path-parse [![Build Status](https://travis-ci.org/jbgutierrez/path-parse.svg?branch=master)](https://travis-ci.org/jbgutierrez/path-parse) + +> Node.js [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) [ponyfill](https://ponyfill.com). + +## Install + +``` +$ npm install --save path-parse +``` + +## Usage + +```js +var pathParse = require('path-parse'); + +pathParse('/home/user/dir/file.txt'); +//=> { +// root : "/", +// dir : "/home/user/dir", +// base : "file.txt", +// ext : ".txt", +// name : "file" +// } +``` + +## API + +See [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) docs. + +### pathParse(path) + +### pathParse.posix(path) + +The Posix specific version. + +### pathParse.win32(path) + +The Windows specific version. + +## License + +MIT © [Javier Blanco](http://jbgutierrez.info) diff --git a/mybulma/node_modules/path-parse/index.js b/mybulma/node_modules/path-parse/index.js new file mode 100644 index 0000000..f062d0a --- /dev/null +++ b/mybulma/node_modules/path-parse/index.js @@ -0,0 +1,75 @@ +'use strict'; + +var isWindows = process.platform === 'win32'; + +// Regex to split a windows path into into [dir, root, basename, name, ext] +var splitWindowsRe = + /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; + +var win32 = {}; + +function win32SplitPath(filename) { + return splitWindowsRe.exec(filename).slice(1); +} + +win32.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; +}; + + + +// Split a filename into [dir, root, basename, name, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; +var posix = {}; + + +function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); +} + + +posix.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + + return { + root: allParts[1], + dir: allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3], + }; +}; + + +if (isWindows) + module.exports = win32.parse; +else /* posix */ + module.exports = posix.parse; + +module.exports.posix = posix.parse; +module.exports.win32 = win32.parse; diff --git a/mybulma/node_modules/path-parse/package.json b/mybulma/node_modules/path-parse/package.json new file mode 100644 index 0000000..36c23f8 --- /dev/null +++ b/mybulma/node_modules/path-parse/package.json @@ -0,0 +1,33 @@ +{ + "name": "path-parse", + "version": "1.0.7", + "description": "Node.js path.parse() ponyfill", + "main": "index.js", + "scripts": { + "test": "node test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/jbgutierrez/path-parse.git" + }, + "keywords": [ + "path", + "paths", + "file", + "dir", + "parse", + "built-in", + "util", + "utils", + "core", + "ponyfill", + "polyfill", + "shim" + ], + "author": "Javier Blanco ", + "license": "MIT", + "bugs": { + "url": "https://github.com/jbgutierrez/path-parse/issues" + }, + "homepage": "https://github.com/jbgutierrez/path-parse#readme" +} diff --git a/mybulma/node_modules/process-nextick-args/index.js b/mybulma/node_modules/process-nextick-args/index.js new file mode 100644 index 0000000..3eecf11 --- /dev/null +++ b/mybulma/node_modules/process-nextick-args/index.js @@ -0,0 +1,45 @@ +'use strict'; + +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + diff --git a/mybulma/node_modules/process-nextick-args/license.md b/mybulma/node_modules/process-nextick-args/license.md new file mode 100644 index 0000000..c67e353 --- /dev/null +++ b/mybulma/node_modules/process-nextick-args/license.md @@ -0,0 +1,19 @@ +# Copyright (c) 2015 Calvin Metcalf + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.** diff --git a/mybulma/node_modules/process-nextick-args/package.json b/mybulma/node_modules/process-nextick-args/package.json new file mode 100644 index 0000000..6070b72 --- /dev/null +++ b/mybulma/node_modules/process-nextick-args/package.json @@ -0,0 +1,25 @@ +{ + "name": "process-nextick-args", + "version": "2.0.1", + "description": "process.nextTick but always with args", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "node test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/calvinmetcalf/process-nextick-args.git" + }, + "author": "", + "license": "MIT", + "bugs": { + "url": "https://github.com/calvinmetcalf/process-nextick-args/issues" + }, + "homepage": "https://github.com/calvinmetcalf/process-nextick-args", + "devDependencies": { + "tap": "~0.2.6" + } +} diff --git a/mybulma/node_modules/process-nextick-args/readme.md b/mybulma/node_modules/process-nextick-args/readme.md new file mode 100644 index 0000000..ecb432c --- /dev/null +++ b/mybulma/node_modules/process-nextick-args/readme.md @@ -0,0 +1,18 @@ +process-nextick-args +===== + +[![Build Status](https://travis-ci.org/calvinmetcalf/process-nextick-args.svg?branch=master)](https://travis-ci.org/calvinmetcalf/process-nextick-args) + +```bash +npm install --save process-nextick-args +``` + +Always be able to pass arguments to process.nextTick, no matter the platform + +```js +var pna = require('process-nextick-args'); + +pna.nextTick(function (a, b, c) { + console.log(a, b, c); +}, 'step', 3, 'profit'); +``` diff --git a/mybulma/node_modules/promise-retry/test/test.js b/mybulma/node_modules/promise-retry/test/test.js new file mode 100644 index 0000000..466b099 --- /dev/null +++ b/mybulma/node_modules/promise-retry/test/test.js @@ -0,0 +1,263 @@ +'use strict'; + +var expect = require('expect.js'); +var promiseRetry = require('../'); +var promiseDelay = require('sleep-promise'); + +describe('promise-retry', function () { + it('should call fn again if retry was called', function () { + var count = 0; + + return promiseRetry(function (retry) { + count += 1; + + return promiseDelay(10) + .then(function () { + if (count <= 2) { + retry(new Error('foo')); + } + + return 'final'; + }); + }, { factor: 1 }) + .then(function (value) { + expect(value).to.be('final'); + expect(count).to.be(3); + }, function () { + throw new Error('should not fail'); + }); + }); + + it('should call fn with the attempt number', function () { + var count = 0; + + return promiseRetry(function (retry, number) { + count += 1; + expect(count).to.equal(number); + + return promiseDelay(10) + .then(function () { + if (count <= 2) { + retry(new Error('foo')); + } + + return 'final'; + }); + }, { factor: 1 }) + .then(function (value) { + expect(value).to.be('final'); + expect(count).to.be(3); + }, function () { + throw new Error('should not fail'); + }); + }); + + it('should not retry on fulfillment if retry was not called', function () { + var count = 0; + + return promiseRetry(function () { + count += 1; + + return promiseDelay(10) + .then(function () { + return 'final'; + }); + }) + .then(function (value) { + expect(value).to.be('final'); + expect(count).to.be(1); + }, function () { + throw new Error('should not fail'); + }); + }); + + it('should not retry on rejection if retry was not called', function () { + var count = 0; + + return promiseRetry(function () { + count += 1; + + return promiseDelay(10) + .then(function () { + throw new Error('foo'); + }); + }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err.message).to.be('foo'); + expect(count).to.be(1); + }); + }); + + it('should not retry on rejection if nr of retries is 0', function () { + var count = 0; + + return promiseRetry(function (retry) { + count += 1; + + return promiseDelay(10) + .then(function () { + throw new Error('foo'); + }) + .catch(retry); + }, { retries : 0 }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err.message).to.be('foo'); + expect(count).to.be(1); + }); + }); + + it('should reject the promise if the retries were exceeded', function () { + var count = 0; + + return promiseRetry(function (retry) { + count += 1; + + return promiseDelay(10) + .then(function () { + throw new Error('foo'); + }) + .catch(retry); + }, { retries: 2, factor: 1 }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err.message).to.be('foo'); + expect(count).to.be(3); + }); + }); + + it('should pass options to the underlying retry module', function () { + var count = 0; + + return promiseRetry(function (retry) { + return promiseDelay(10) + .then(function () { + if (count < 2) { + count += 1; + retry(new Error('foo')); + } + + return 'final'; + }); + }, { retries: 1, factor: 1 }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err.message).to.be('foo'); + }); + }); + + it('should convert direct fulfillments into promises', function () { + return promiseRetry(function () { + return 'final'; + }, { factor: 1 }) + .then(function (value) { + expect(value).to.be('final'); + }, function () { + throw new Error('should not fail'); + }); + }); + + it('should convert direct rejections into promises', function () { + promiseRetry(function () { + throw new Error('foo'); + }, { retries: 1, factor: 1 }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err.message).to.be('foo'); + }); + }); + + it('should not crash on undefined rejections', function () { + return promiseRetry(function () { + throw undefined; + }, { retries: 1, factor: 1 }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err).to.be(undefined); + }) + .then(function () { + return promiseRetry(function (retry) { + retry(); + }, { retries: 1, factor: 1 }); + }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err).to.be(undefined); + }); + }); + + it('should retry if retry() was called with undefined', function () { + var count = 0; + + return promiseRetry(function (retry) { + count += 1; + + return promiseDelay(10) + .then(function () { + if (count <= 2) { + retry(); + } + + return 'final'; + }); + }, { factor: 1 }) + .then(function (value) { + expect(value).to.be('final'); + expect(count).to.be(3); + }, function () { + throw new Error('should not fail'); + }); + }); + + it('should work with several retries in the same chain', function () { + var count = 0; + + return promiseRetry(function (retry) { + count += 1; + + return promiseDelay(10) + .then(function () { + retry(new Error('foo')); + }) + .catch(function (err) { + retry(err); + }); + }, { retries: 1, factor: 1 }) + .then(function () { + throw new Error('should not succeed'); + }, function (err) { + expect(err.message).to.be('foo'); + expect(count).to.be(2); + }); + }); + + it('should allow options to be passed first', function () { + var count = 0; + + return promiseRetry({ factor: 1 }, function (retry) { + count += 1; + + return promiseDelay(10) + .then(function () { + if (count <= 2) { + retry(new Error('foo')); + } + + return 'final'; + }); + }).then(function (value) { + expect(value).to.be('final'); + expect(count).to.be(3); + }, function () { + throw new Error('should not fail'); + }); + }); +}); diff --git a/mybulma/node_modules/quick-lru/index.d.ts b/mybulma/node_modules/quick-lru/index.d.ts new file mode 100644 index 0000000..c382e51 --- /dev/null +++ b/mybulma/node_modules/quick-lru/index.d.ts @@ -0,0 +1,90 @@ +declare namespace QuickLRU { + interface Options { + /** + The maximum number of items before evicting the least recently used items. + */ + readonly maxSize: number; + } +} + +declare class QuickLRU + implements Iterable<[KeyType, ValueType]> { + /** + The stored item count. + */ + readonly size: number; + + /** + Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29). + + The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop. + + @example + ``` + import QuickLRU = require('quick-lru'); + + const lru = new QuickLRU({maxSize: 1000}); + + lru.set('🦄', '🌈'); + + lru.has('🦄'); + //=> true + + lru.get('🦄'); + //=> '🌈' + ``` + */ + constructor(options: QuickLRU.Options); + + [Symbol.iterator](): IterableIterator<[KeyType, ValueType]>; + + /** + Set an item. + + @returns The list instance. + */ + set(key: KeyType, value: ValueType): this; + + /** + Get an item. + + @returns The stored item or `undefined`. + */ + get(key: KeyType): ValueType | undefined; + + /** + Check if an item exists. + */ + has(key: KeyType): boolean; + + /** + Get an item without marking it as recently used. + + @returns The stored item or `undefined`. + */ + peek(key: KeyType): ValueType | undefined; + + /** + Delete an item. + + @returns `true` if the item is removed or `false` if the item doesn't exist. + */ + delete(key: KeyType): boolean; + + /** + Delete all items. + */ + clear(): void; + + /** + Iterable for all the keys. + */ + keys(): IterableIterator; + + /** + Iterable for all the values. + */ + values(): IterableIterator; +} + +export = QuickLRU; diff --git a/mybulma/node_modules/quick-lru/index.js b/mybulma/node_modules/quick-lru/index.js new file mode 100644 index 0000000..b7b1760 --- /dev/null +++ b/mybulma/node_modules/quick-lru/index.js @@ -0,0 +1,115 @@ +'use strict'; + +class QuickLRU { + constructor(options = {}) { + if (!(options.maxSize && options.maxSize > 0)) { + throw new TypeError('`maxSize` must be a number greater than 0'); + } + + this.maxSize = options.maxSize; + this.cache = new Map(); + this.oldCache = new Map(); + this._size = 0; + } + + _set(key, value) { + this.cache.set(key, value); + this._size++; + + if (this._size >= this.maxSize) { + this._size = 0; + this.oldCache = this.cache; + this.cache = new Map(); + } + } + + get(key) { + if (this.cache.has(key)) { + return this.cache.get(key); + } + + if (this.oldCache.has(key)) { + const value = this.oldCache.get(key); + this.oldCache.delete(key); + this._set(key, value); + return value; + } + } + + set(key, value) { + if (this.cache.has(key)) { + this.cache.set(key, value); + } else { + this._set(key, value); + } + + return this; + } + + has(key) { + return this.cache.has(key) || this.oldCache.has(key); + } + + peek(key) { + if (this.cache.has(key)) { + return this.cache.get(key); + } + + if (this.oldCache.has(key)) { + return this.oldCache.get(key); + } + } + + delete(key) { + const deleted = this.cache.delete(key); + if (deleted) { + this._size--; + } + + return this.oldCache.delete(key) || deleted; + } + + clear() { + this.cache.clear(); + this.oldCache.clear(); + this._size = 0; + } + + * keys() { + for (const [key] of this) { + yield key; + } + } + + * values() { + for (const [, value] of this) { + yield value; + } + } + + * [Symbol.iterator]() { + for (const item of this.cache) { + yield item; + } + + for (const item of this.oldCache) { + const [key] = item; + if (!this.cache.has(key)) { + yield item; + } + } + } + + get size() { + let oldCacheSize = 0; + for (const key of this.oldCache.keys()) { + if (!this.cache.has(key)) { + oldCacheSize++; + } + } + + return this._size + oldCacheSize; + } +} + +module.exports = QuickLRU; diff --git a/mybulma/node_modules/quick-lru/license b/mybulma/node_modules/quick-lru/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/quick-lru/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/quick-lru/package.json b/mybulma/node_modules/quick-lru/package.json new file mode 100644 index 0000000..46c175b --- /dev/null +++ b/mybulma/node_modules/quick-lru/package.json @@ -0,0 +1,42 @@ +{ + "name": "quick-lru", + "version": "4.0.1", + "description": "Simple \"Least Recently Used\" (LRU) cache", + "license": "MIT", + "repository": "sindresorhus/quick-lru", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && nyc ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "lru", + "quick", + "cache", + "caching", + "least", + "recently", + "used", + "fast", + "map", + "hash", + "buffer" + ], + "devDependencies": { + "ava": "^1.4.1", + "coveralls": "^3.0.3", + "nyc": "^14.1.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/mybulma/node_modules/quick-lru/readme.md b/mybulma/node_modules/quick-lru/readme.md new file mode 100644 index 0000000..2b87001 --- /dev/null +++ b/mybulma/node_modules/quick-lru/readme.md @@ -0,0 +1,93 @@ +# quick-lru [![Build Status](https://travis-ci.org/sindresorhus/quick-lru.svg?branch=master)](https://travis-ci.org/sindresorhus/quick-lru) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/quick-lru/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/quick-lru?branch=master) + +> Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29) + +Useful when you need to cache something and limit memory usage. + +Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`. + + +## Install + +``` +$ npm install quick-lru +``` + + +## Usage + +```js +const QuickLRU = require('quick-lru'); + +const lru = new QuickLRU({maxSize: 1000}); + +lru.set('🦄', '🌈'); + +lru.has('🦄'); +//=> true + +lru.get('🦄'); +//=> '🌈' +``` + + +## API + +### new QuickLRU(options?) + +Returns a new instance. + +### options + +Type: `object` + +#### maxSize + +*Required*
    +Type: `number` + +The maximum number of items before evicting the least recently used items. + +### Instance + +The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop. + +Both `key` and `value` can be of any type. + +#### .set(key, value) + +Set an item. Returns the instance. + +#### .get(key) + +Get an item. + +#### .has(key) + +Check if an item exists. + +#### .peek(key) + +Get an item without marking it as recently used. + +#### .delete(key) + +Delete an item. + +Returns `true` if the item is removed or `false` if the item doesn't exist. + +#### .clear() + +Delete all items. + +#### .keys() + +Iterable for all the keys. + +#### .values() + +Iterable for all the values. + +#### .size + +The stored item count. diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/index.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/index.d.ts new file mode 100644 index 0000000..520df22 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/index.d.ts @@ -0,0 +1,20 @@ +// Basic +export * from './source/basic'; + +// Utilities +export {Except} from './source/except'; +export {Mutable} from './source/mutable'; +export {Merge} from './source/merge'; +export {MergeExclusive} from './source/merge-exclusive'; +export {RequireAtLeastOne} from './source/require-at-least-one'; +export {RequireExactlyOne} from './source/require-exactly-one'; +export {PartialDeep} from './source/partial-deep'; +export {ReadonlyDeep} from './source/readonly-deep'; +export {LiteralUnion} from './source/literal-union'; +export {Promisable} from './source/promisable'; +export {Opaque} from './source/opaque'; +export {SetOptional} from './source/set-optional'; +export {SetRequired} from './source/set-required'; + +// Miscellaneous +export {PackageJson} from './source/package-json'; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/license b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/package.json b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/package.json new file mode 100644 index 0000000..ea66211 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/package.json @@ -0,0 +1,51 @@ +{ + "name": "type-fest", + "version": "0.8.1", + "description": "A collection of essential TypeScript types", + "license": "(MIT OR CC0-1.0)", + "repository": "sindresorhus/type-fest", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && tsd" + }, + "files": [ + "index.d.ts", + "source" + ], + "keywords": [ + "typescript", + "ts", + "types", + "utility", + "util", + "utilities", + "omit", + "merge", + "json" + ], + "devDependencies": { + "@sindresorhus/tsconfig": "^0.4.0", + "@typescript-eslint/eslint-plugin": "^2.2.0", + "@typescript-eslint/parser": "^2.2.0", + "eslint-config-xo-typescript": "^0.18.0", + "tsd": "^0.7.3", + "xo": "^0.24.0" + }, + "xo": { + "extends": "xo-typescript", + "extensions": [ + "ts" + ], + "rules": { + "import/no-unresolved": "off", + "@typescript-eslint/indent": "off" + } + } +} diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/readme.md b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/readme.md new file mode 100644 index 0000000..1824bda --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/readme.md @@ -0,0 +1,635 @@ +

    +
    +
    + +[![Build Status](https://travis-ci.com/sindresorhus/type-fest.svg?branch=master)](https://travis-ci.com/sindresorhus/type-fest) +[![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) + + +Many of the types here should have been built-in. You can help by suggesting some of them to the [TypeScript project](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). + +Either add this package as a dependency or copy-paste the needed types. No credit required. 👌 + +PR welcome for additional commonly needed types and docs improvements. Read the [contributing guidelines](.github/contributing.md) first. + + +## Install + +``` +$ npm install type-fest +``` + +*Requires TypeScript >=3.2* + + +## Usage + +```ts +import {Except} from 'type-fest'; + +type Foo = { + unicorn: string; + rainbow: boolean; +}; + +type FooWithoutRainbow = Except; +//=> {unicorn: string} +``` + + +## API + +Click the type names for complete docs. + +### Basic + +- [`Primitive`](source/basic.d.ts) - Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive). +- [`Class`](source/basic.d.ts) - Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes). +- [`TypedArray`](source/basic.d.ts) - Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`. +- [`JsonObject`](source/basic.d.ts) - Matches a JSON object. +- [`JsonArray`](source/basic.d.ts) - Matches a JSON array. +- [`JsonValue`](source/basic.d.ts) - Matches any valid JSON value. +- [`ObservableLike`](source/basic.d.ts) - Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable). + +### Utilities + +- [`Except`](source/except.d.ts) - Create a type from an object type without certain keys. This is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). +- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` keys into a mutable object. The inverse of `Readonly`. +- [`Merge`](source/merge.d.ts) - Merge two types into a new type. Keys of the second type overrides keys of the first type. +- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive keys. +- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given keys. +- [`RequireExactlyOne`](source/require-one.d.ts) - Create a type that requires exactly a single key of the given keys and disallows more. +- [`PartialDeep`](source/partial-deep.d.ts) - Create a deeply optional version of another type. Use [`Partial`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) if you only need one level deep. +- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of an `object`/`Map`/`Set`/`Array` type. Use [`Readonly`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) if you only need one level deep. +- [`LiteralUnion`](source/literal-union.d.ts) - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). +- [`Promisable`](source/promisable.d.ts) - Create a type that represents either the value or the value wrapped in `PromiseLike`. +- [`Opaque`](source/opaque.d.ts) - Create an [opaque type](https://codemix.com/opaque-types-in-javascript/). +- [`SetOptional`](source/set-optional.d.ts) - Create a type that makes the given keys optional. +- [`SetRequired`](source/set-required.d.ts) - Create a type that makes the given keys required. + +### Miscellaneous + +- [`PackageJson`](source/package-json.d.ts) - Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). + + +## Declined types + +*If we decline a type addition, we will make sure to document the better solution here.* + +- [`Diff` and `Spread`](https://github.com/sindresorhus/type-fest/pull/7) - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider. +- [`Dictionary`](https://github.com/sindresorhus/type-fest/issues/33) - You only save a few characters (`Dictionary` vs `Record`) from [`Record`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434), which is more flexible and well-known. Also, you shouldn't use an object as a dictionary. We have `Map` in JavaScript now. + + +## Tips + +### Built-in types + +There are many advanced types most users don't know about. + +- [`Partial`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) - Make all properties in `T` optional. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/KYOwrgtgBAMg9gcxsAbsANlA3gKClAeQDMiAaPKAEWACMwFz8BRAJxbhcagDEBDAF17ocAXxw4AliH7AWRXgGNgUAHJwAJsADCcEEQkJsFXgAcTK3hGAAuKAGd+LKQgDcFEx363wEGrLf46IjIaOi28EioGG5iOArovHZ2qhrAAIJmAEJgEuiaLEb4Jk4oAsoKuvoIYCwCErq2apo6egZQALyF+FCm5pY2UABETelmg1xFnrYAzAAM8xNQQZGh4cFR6AB0xEQUIm4UFa0IABRHVbYACrws-BJCADwjLVUAfACUXfhEHFBnug4oABrYAATygcCIhBoACtgAp+JsQaC7P9ju9Prhut0joCwCZ1GUAGpCMDKTrnAwAbWRPWSyMhKWalQMAF0Dtj8BIoSd8YSZCT0GSOu1OmAQJp9CBgOpPkc7uBgBzOfwABYSOybSnVWp3XQ0sF04FgxnPFkIVkdKB84mkpUUfCxbEsYD8GogKBqjUBKBiWIAen9UGut3u6CeqReBlePXQQQA7skwMl+HAoMU4CgJJoISB0ODeOmbvwIVC1cAcIGmdpzVApDI5IpgJscNL49WMiZsrl8id3lrzScsD0zBYrLZBgAVOCUOCdwa+95uIA) + + ```ts + interface NodeConfig { + appName: string; + port: number; + } + + class NodeAppBuilder { + private configuration: NodeConfig = { + appName: 'NodeApp', + port: 3000 + }; + + config(config: Partial) { + type NodeConfigKey = keyof NodeConfig; + + for (const key of Object.keys(config) as NodeConfigKey[]) { + const updateValue = config[key]; + + if (updateValue === undefined) { + continue; + } + + this.configuration[key] = updateValue; + } + + return this; + } + } + + // `Partial`` allows us to provide only a part of the + // NodeConfig interface. + new NodeAppBuilder().config({appName: 'ToDoApp'}); + ``` +
    + +- [`Required`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1408-L1413) - Make all properties in `T` required. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgGED21VQGJZwC2wA3gFCjXAzFJgA2A-AFzADOUckA5gNxUaIYjA4ckvGG07c+g6gF8KQkAgCuEFFDA5O6gEbEwUbLm2ESwABQIixACJIoSdgCUYAR3Vg4MACYAPGYuFvYAfACU5Ko0APRxwADKMBD+wFAAFuh2Vv7OSBlYGdmc8ABu8LHKsRyGxqY4oQT21pTCIHQMjOwA5DAAHgACxAAOjDAAdChYxL0ANLHUouKSMH0AEmAAhJhY6ozpAJ77GTCMjMCiV0ToSAb7UJPPC9WRgrEJwAAqR6MwSRQPFGUFocDgRHYxnEfGAowh-zgUCOwF6KwkUl6tXqJhCeEsxDaS1AXSYfUGI3GUxmc0WSneQA) + + ```ts + interface ContactForm { + email?: string; + message?: string; + } + + function submitContactForm(formData: Required) { + // Send the form data to the server. + } + + submitContactForm({ + email: 'ex@mple.com', + message: 'Hi! Could you tell me more about…', + }); + + // TypeScript error: missing property 'message' + submitContactForm({ + email: 'ex@mple.com', + }); + ``` +
    + +- [`Readonly`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) - Make all properties in `T` readonly. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/AQ4UwOwVwW2AZA9gc3mAbmANsA3gKFCOAHkAzMgGkOJABEwAjKZa2kAUQCcvEu32AMQCGAF2FYBIAL4BufDRABLCKLBcywgMZgEKZOoDCiCGSXI8i4hGEwwALmABnUVxXJ57YFgzZHSVF8sT1BpBSItLGEnJz1kAy5LLy0TM2RHACUwYQATEywATwAeAITjU3MAPnkrCJMXLigtUT4AClxgGztKbyDgaX99I1TzAEokr1BRAAslJwA6FIqLAF48TtswHp9MHDla9hJGACswZvmyLjAwAC8wVpm5xZHkUZDaMKIwqyWXYCW0oN4sNlsA1h0ug5gAByACyBQAggAHJHQ7ZBIFoXbzBjMCz7OoQP5YIaJNYQMAAdziCVaALGNSIAHomcAACoFJFgADKWjcSNEwG4vC4ji0wggEEQguiTnMEGALWAV1yAFp8gVgEjeFyuKICvMrCTgVxnst5jtsGC4ljsPNhXxGaAWcAAOq6YRXYDCRg+RWIcA5JSC+kWdCepQ+v3RYCU3RInzRMCGwlpC19NYBW1Ye08R1AA) + + ```ts + enum LogLevel { + Off, + Debug, + Error, + Fatal + }; + + interface LoggerConfig { + name: string; + level: LogLevel; + } + + class Logger { + config: Readonly; + + constructor({name, level}: LoggerConfig) { + this.config = {name, level}; + Object.freeze(this.config); + } + } + + const config: LoggerConfig = { + name: 'MyApp', + level: LogLevel.Debug + }; + + const logger = new Logger(config); + + // TypeScript Error: cannot assign to read-only property. + logger.config.level = LogLevel.Error; + + // We are able to edit config variable as we please. + config.level = LogLevel.Error; + ``` +
    + +- [`Pick`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1422-L1427) - From `T`, pick a set of properties whose keys are in the union `K`. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgEE5TCgNugN4BQoZwOUBAXMAM5RyQDmA3KeSFABYCuAtgCMISMHloMmENh04oA9tBjQJjFuzIBfYrOAB6PcADCcGElh1gEGAHcKATwAO6ebyjB5CTNlwFwSxFR0BX5HeToYABNgBDh5fm8cfBg6AHIKG3ldA2BHOOcfFNpUygJ0pAhokr4hETFUgDpswywkggAFUwA3MFtgAF5gQgowKhhVKTYKGuFRcXo1aVZgbTIoJ3RW3xhOmB6+wfbcAGsAHi3kgBpgEtGy4AAfG54BWfqAPnZm4AAlZUj4MAkMA8GAGB4vEgfMlLLw6CwPBA8PYRmMgZVgAC6CgmI4cIommQELwICh8RBgKZKvALh1ur0bHQABR5PYMui0Wk7em2ADaAF0AJS0AASABUALIAGQAogR+Mp3CROCAFBBwVC2ikBpj5CgBIqGjizLA5TAFdAmalImAuqlBRoVQh5HBgEy1eDWfs7J5cjzGYKhroVfpDEhHM4MV6GRR5NN0JrtnRg6BVirTFBeHAKYmYY6QNpdB73LmCJZBlSAXAubtvczeSmQMNSuMbmKNgBlHFgPEUNwusBIPAAQlS1xetTmxT0SDoESgdD0C4aACtHMwxytLrohawgA) + + ```ts + interface Article { + title: string; + thumbnail: string; + content: string; + } + + // Creates new type out of the `Article` interface composed + // from the Articles' two properties: `title` and `thumbnail`. + // `ArticlePreview = {title: string; thumbnail: string}` + type ArticlePreview = Pick; + + // Render a list of articles using only title and description. + function renderArticlePreviews(previews: ArticlePreview[]): HTMLElement { + const articles = document.createElement('div'); + + for (const preview of previews) { + // Append preview to the articles. + } + + return articles; + } + + const articles = renderArticlePreviews([ + { + title: 'TypeScript tutorial!', + thumbnail: '/assets/ts.jpg' + } + ]); + ``` +
    + +- [`Record`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434) - Construct a type with a set of properties `K` of type `T`. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/AQ4ejYAUHsGcCWAXBMB2dgwGbAKYC2ADgDYwCeeemCaWArgE7ADGMxAhmuQHQBQoYEnJE8wALKEARnkaxEKdMAC8wAOS0kstGuAAfdQBM8ANzxlRjXQbVaWACwC0JPB0NqA3HwGgIwAJJoWozYHCxixnAsjAhStADmwESMMJYo1Fi4HMCIaPEu+MRklHj8gpqyoeHAAKJFFFTAAN4+giDYCIxwSAByHAR4AFw5SDF5Xm2gJBzdfQPD3WPxE5PAlBxdAPLYNQAelgh4aOHDaPQEMowrIAC+3oJ+AMKMrlrAXFhSAFZ4LEhC9g4-0BmA4JBISXgiCkBQABpILrJ5MhUGhYcATGD6Bk4Hh-jNgABrPDkOBlXyQAAq9ngYmJpOAAHcEOCRjAXqwYODfoo6DhakUSph+Uh7GI4P0xER4Cj0OSQGwMP8tP1hgAlX7swwAHgRl2RvIANALSA08ABtAC6AD4VM1Wm0Kow0MMrYaHYJjGYLLJXZb3at1HYnC43Go-QHQDcvA6-JsmEJXARgCDgMYWAhjIYhDAU+YiMAAFIwex0ZmilMITCGF79TLAGRsAgJYAAZRwSEZGzEABFTOZUrJ5Yn+jwnWgeER6HB7AAKJrADpdXqS4ZqYultTG6azVfqHswPBbtauLY7fayQ7HIbAAAMwBuAEoYw9IBq2Ixs9h2eFMOQYPQObALQKJgggABeYhghCIpikkKRpOQRIknAsZUiIeCttECBEP8NSMCkjDDAARMGziuIYxHwYOjDCMBmDNnAuTxA6irdCOBB1Lh5Dqpqn66tISIykawBnOCtqqC0gbjqc9DgpGkxegOliyfJDrRkAA) + + ```ts + // Positions of employees in our company. + type MemberPosition = 'intern' | 'developer' | 'tech-lead'; + + // Interface describing properties of a single employee. + interface Employee { + firstName: string; + lastName: string; + yearsOfExperience: number; + } + + // Create an object that has all possible `MemberPosition` values set as keys. + // Those keys will store a collection of Employees of the same position. + const team: Record = { + intern: [], + developer: [], + 'tech-lead': [], + }; + + // Our team has decided to help John with his dream of becoming Software Developer. + team.intern.push({ + firstName: 'John', + lastName: 'Doe', + yearsOfExperience: 0 + }); + + // `Record` forces you to initialize all of the property keys. + // TypeScript Error: "tech-lead" property is missing + const teamEmpty: Record = { + intern: null, + developer: null, + }; + ``` +
    + +- [`Exclude`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1436-L1439) - Exclude from `T` those types that are assignable to `U`. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgMrQG7QMIHsQzADmyA3gFDLIAOuUYAXMiAK4A2byAPsgM5hRQJHqwC2AI2gBucgF9y5MAE9qKAEoQAjiwj8AEnBAATNtGQBeZAAooWphu26wAGmS3e93bRC8IASgsAPmRDJRlyAHoI5ABRAA8ENhYjFFYOZGVVZBgoXFFkAAM0zh5+QRBhZhYJaAKAOkjogEkQZAQ4X2QAdwALCFbaemRgXmQtFjhOMFwq9K6ULuB0lk6U+HYwZAxJnQaYFhAEMGB8ZCIIMAAFOjAANR2IK0HGWISklIAedCgsKDwCYgAbQA5M9gQBdVzFQJ+JhiSRQMiUYYwayZCC4VHPCzmSzAspCYEBWxgFhQAZwKC+FpgJ43VwARgADH4ZFQSWSBjcZPJyPtDsdTvxKWBvr8rD1DCZoJ5HPopaYoK4EPhCEQmGKcKriLCtrhgEYkVQVT5Nr4fmZLLZtMBbFZgT0wGBqES6ghbHBIJqoBKFdBWQpjfh+DQbhY2tqiHVsbjLMVkAB+ZAAZiZaeQTHOVxu9ySjxNaujNwDVHNvzqbBGkBAdPoAfkQA) + + ```ts + interface ServerConfig { + port: null | string | number; + } + + type RequestHandler = (request: Request, response: Response) => void; + + // Exclude `null` type from `null | string | number`. + // In case the port is equal to `null`, we will use default value. + function getPortValue(port: Exclude): number { + if (typeof port === 'string') { + return parseInt(port, 10); + } + + return port; + } + + function startServer(handler: RequestHandler, config: ServerConfig): void { + const server = require('http').createServer(handler); + + const port = config.port === null ? 3000 : getPortValue(config.port); + server.listen(port); + } + ``` +
    + +- [`Extract`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1441-L1444) - Extract from `T` those types that are assignable to `U`. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/CYUwxgNghgTiAEAzArgOzAFwJYHtXzSwEdkQBJYACgEoAueVZAWwCMQYBuAKDDwGcM8MgBF4AXngBlAJ6scESgHIRi6ty5ZUGdoihgEABXZ888AN5d48ANoiAuvUat23K6ihMQ9ATE0BzV3goPy8GZjZOLgBfLi4Aejj4AEEICBwAdz54MAALKFQQ+BxEeAAHY1NgKAwoIKy0grr4DByEUpgccpgMaXgAaxBerCzi+B9-ZulygDouFHRsU1z8kKMYE1RhaqgAHkt4AHkWACt4EAAPbVRgLLWNgBp9gGlBs8uQa6yAUUuYPQwdgNpKM7nh7mMML4CgA+R5WABqUAgpDeVxuhxO1he0jsXGh8EoOBO9COx3BQPo2PBADckaR6IjkSA6PBqTgsMBzPsicdrEC7OJWXSQNwYvFEgAVTS9JLXODpeDpKBZFg4GCoWa8VACIJykAKiQWKy2YQOAioYikCg0OEMDyhRSy4DyxS24KhAAMjyi6gS8AAwjh5OD0iBFHAkJoEOksC1mnkMJq8gUQKDNttKPlnfrwYp3J5XfBHXqoKpfYkAOI4ansTxaeDADmoRSCCBYAbxhC6TDx6rwYHIRX5bScjA4bLJwoDmDwDkfbA9JMrVMVdM1TN69LgkTgwgkchUahqIA) + + ```ts + declare function uniqueId(): number; + + const ID = Symbol('ID'); + + interface Person { + [ID]: number; + name: string; + age: number; + } + + // Allows changing the person data as long as the property key is of string type. + function changePersonData< + Obj extends Person, + Key extends Extract, + Value extends Obj[Key] + > (obj: Obj, key: Key, value: Value): void { + obj[key] = value; + } + + // Tiny Andrew was born. + const andrew = { + [ID]: uniqueId(), + name: 'Andrew', + age: 0, + }; + + // Cool, we're fine with that. + changePersonData(andrew, 'name', 'Pony'); + + // Goverment didn't like the fact that you wanted to change your identity. + changePersonData(andrew, ID, uniqueId()); + ``` +
    + +- [`NonNullable`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1446-L1449) - Exclude `null` and `undefined` from `T`. +
    + + Example + + Works with strictNullChecks set to true. (Read more here) + + [Playground](https://typescript-play.js.org/?target=6#code/C4TwDgpgBACg9gJ2AOQK4FsBGEFQLxQDOwCAlgHYDmUAPlORtrnQwDasDcAUFwPQBU-WAEMkUOADMowqAGNWwwoSgATCBIqlgpOOSjAAFsOBRSy1IQgr9cKJlSlW1mZYQA3HFH68u8xcoBlHA8EACEHJ08Aby4oKDBUTFZSWXjEFEYcAEIALihkXTR2YSSIAB54JDQsHAA+blj4xOTUsHSACkMzPKD3HHDHNQQAGjSkPMqMmoQASh7g-oihqBi4uNIpdraxPAI2VhmVxrX9AzMAOm2ppnwoAA4ABifuE4BfKAhWSyOTuK7CS7pao3AhXF5rV48E4ICDAVAIPT-cGQyG+XTEIgLMJLTx7CAAdygvRCA0iCHaMwarhJOIQjUBSHaACJHk8mYdeLwxtdcVAAOSsh58+lXdr7Dlcq7A3n3J4PEUdADMcspUE53OluAIUGVTx46oAKuAIAFZGQwCYAKIIBCILjUxaDHAMnla+iodjcIA) + + ```ts + type PortNumber = string | number | null; + + /** Part of a class definition that is used to build a server */ + class ServerBuilder { + portNumber!: NonNullable; + + port(this: ServerBuilder, port: PortNumber): ServerBuilder { + if (port == null) { + this.portNumber = 8000; + } else { + this.portNumber = port; + } + + return this; + } + } + + const serverBuilder = new ServerBuilder(); + + serverBuilder + .port('8000') // portNumber = '8000' + .port(null) // portNumber = 8000 + .port(3000); // portNumber = 3000 + + // TypeScript error + serverBuilder.portNumber = null; + ``` +
    + +- [`Parameters`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1451-L1454) - Obtain the parameters of a function type in a tuple. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/GYVwdgxgLglg9mABAZwBYmMANgUwBQxgAOIUAXIgIZgCeA2gLoCUFAbnDACaIDeAUIkQB6IYgCypSlBxUATrMo1ECsJzgBbLEoipqAc0J7EMKMgDkiHLnU4wp46pwAPHMgB0fAL58+oSLARECEosLAA5ABUYG2QAHgAxJGdpVWREPDdMylk9ZApqemZEAF4APipacrw-CApEgBogkKwAYThwckQwEHUAIxxZJl4BYVEImiIZKF0oZRwiWVdbeygJmThgOYgcGFYcbhqApCJsyhtpWXcR1cnEePBoeDAABVPzgbTixFeFd8uEsClADcIxGiygIFkSEOT3SmTc2VydQeRx+ZxwF2QQ34gkEwDgsnSuFmMBKiAADEDjIhYk1Qm0OlSYABqZnYka4xA1DJZHJYkGc7yCbyeRA+CAIZCzNAYbA4CIAdxg2zJwVCkWirjwMswuEaACYmCCgA) + + ```ts + function shuffle(input: any[]): void { + // Mutate array randomly changing its' elements indexes. + } + + function callNTimes any> (func: Fn, callCount: number) { + // Type that represents the type of the received function parameters. + type FunctionParameters = Parameters; + + return function (...args: FunctionParameters) { + for (let i = 0; i < callCount; i++) { + func(...args); + } + } + } + + const shuffleTwice = callNTimes(shuffle, 2); + ``` +
    + +- [`ConstructorParameters`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1456-L1459) - Obtain the parameters of a constructor function type in a tuple. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECCBOAXAlqApgWQPYBM0mgG8AoaaFRENALmgkXmQDsBzAblOmCycTV4D8teo1YdO3JiICuwRFngAKClWENmLAJRFOZRAAtkEAHQq00ALzlklNBzIBfYk+KhIMAJJTEYJsDQAwmDA+mgAPAAq0GgAHnxMODCKTGgA7tCKxllg8CwQtL4AngDaALraFgB80EWa1SRkAA6MAG5gfNAB4FABPDJyCrQR9tDNyG0dwMGhtBhgjWEiGgA00F70vv4RhY3hEZXVVinpc42KmuJkkv3y8Bly8EPaDWTkhiZd7r3e8LK3llwGCMXGQWGhEOsfH5zJlsrl8p0+gw-goAAo5MAAW3BaHgEEilU0tEhmzQ212BJ0ry4SOg+kg+gBBiMximIGA0nAfAQLGk2N4EAAEgzYcYcnkLsRdDTvNEYkYUKwSdCme9WdM0MYwYhFPSIPpJdTkAAzDKxBUaZX+aAAQgsVmkCTQxuYaBw2ng4Ok8CYcotSu8pMur09iG9vuObxZnx6SN+AyUWTF8MN0CcZE4Ywm5jZHK5aB5fP4iCFIqT4oRRTKRLo6lYVNeAHpG50wOzOe1zHr9NLQ+HoABybsD4HOKXXRA1JCoKhBELmI5pNaB6Fz0KKBAodDYPAgSUTmqYsAALx4m5nC6nW9nGq14KtaEUA9gR9PvuNCjQ9BgACNvcwNBtAcLiAA) + + ```ts + class ArticleModel { + title: string; + content?: string; + + constructor(title: string) { + this.title = title; + } + } + + class InstanceCache any)> { + private ClassConstructor: T; + private cache: Map> = new Map(); + + constructor (ctr: T) { + this.ClassConstructor = ctr; + } + + getInstance (...args: ConstructorParameters): InstanceType { + const hash = this.calculateArgumentsHash(...args); + + const existingInstance = this.cache.get(hash); + if (existingInstance !== undefined) { + return existingInstance; + } + + return new this.ClassConstructor(...args); + } + + private calculateArgumentsHash(...args: any[]): string { + // Calculate hash. + return 'hash'; + } + } + + const articleCache = new InstanceCache(ArticleModel); + const amazonArticle = articleCache.getInstance('Amazon forests burining!'); + ``` +
    + +- [`ReturnType`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1461-L1464) – Obtain the return type of a function type. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA) + + ```ts + /** Provides every element of the iterable `iter` into the `callback` function and stores the results in an array. */ + function mapIter< + Elem, + Func extends (elem: Elem) => any, + Ret extends ReturnType + >(iter: Iterable, callback: Func): Ret[] { + const mapped: Ret[] = []; + + for (const elem of iter) { + mapped.push(callback(elem)); + } + + return mapped; + } + + const setObject: Set = new Set(); + const mapObject: Map = new Map(); + + mapIter(setObject, (value: string) => value.indexOf('Foo')); // number[] + + mapIter(mapObject, ([key, value]: [number, string]) => { + return key % 2 === 0 ? value : 'Odd'; + }); // string[] + ``` +
    + +- [`InstanceType`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1466-L1469) – Obtain the instance type of a constructor function type. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA) + + ```ts + class IdleService { + doNothing (): void {} + } + + class News { + title: string; + content: string; + + constructor(title: string, content: string) { + this.title = title; + this.content = content; + } + } + + const instanceCounter: Map = new Map(); + + interface Constructor { + new(...args: any[]): any; + } + + // Keep track how many instances of `Constr` constructor have been created. + function getInstance< + Constr extends Constructor, + Args extends ConstructorParameters + >(constructor: Constr, ...args: Args): InstanceType { + let count = instanceCounter.get(constructor) || 0; + + const instance = new constructor(...args); + + instanceCounter.set(constructor, count + 1); + + console.log(`Created ${count + 1} instances of ${Constr.name} class`); + + return instance; + } + + + const idleService = getInstance(IdleService); + // Will log: `Created 1 instances of IdleService class` + const newsEntry = getInstance(News, 'New ECMAScript proposals!', 'Last month...'); + // Will log: `Created 1 instances of News class` + ``` +
    + +- [`Omit`](https://github.com/microsoft/TypeScript/blob/71af02f7459dc812e85ac31365bfe23daf14b4e4/src/lib/es5.d.ts#L1446) – Constructs a type by picking all properties from T and then removing K. +
    + + Example + + + [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgIImAWzgG2QbwChlks4BzCAVShwC5kBnMKUcgbmKYAcIFgIjBs1YgOXMpSFMWbANoBdTiW5woFddwAW0kfKWEAvoUIB6U8gDCUCHEiNkICAHdkYAJ69kz4GC3JcPG4oAHteKDABBxCYNAxsPFBIWEQUCAAPJG4wZABySUFcgJAAEzMLXNV1ck0dIuCw6EjBADpy5AB1FAQ4EGQAV0YUP2AHDy8wEOQbUugmBLwtEIA3OcmQnEjuZBgQqE7gAGtgZAhwKHdkHFGwNvGUdDIcAGUliIBJEF3kAF5kAHlML4ADyPBIAGjyBUYRQAPnkqho4NoYQA+TiEGD9EAISIhPozErQMG4AASK2gn2+AApek9pCSXm8wFSQooAJQMUkAFQAsgAZACiOAgmDOOSIJAQ+OYyGl4DgoDmf2QJRCCH6YvALQQNjsEGFovF1NyJWAy1y7OUyHMyE+yRAuFImG4Iq1YDswHxbRINjA-SgfXlHqVUE4xiAA) + + ```ts + interface Animal { + imageUrl: string; + species: string; + images: string[]; + paragraphs: string[]; + } + + // Creates new type with all properties of the `Animal` interface + // except 'images' and 'paragraphs' properties. We can use this + // type to render small hover tooltip for a wiki entry list. + type AnimalShortInfo = Omit; + + function renderAnimalHoverInfo (animals: AnimalShortInfo[]): HTMLElement { + const container = document.createElement('div'); + // Internal implementation. + return container; + } + ``` +
    + +You can find some examples in the [TypeScript docs](https://www.typescriptlang.org/docs/handbook/advanced-types.html#predefined-conditional-types). + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Jarek Radosz](https://github.com/CvX) +- [Dimitri Benin](https://github.com/BendingBender) + + +## License + +(MIT OR CC0-1.0) + + +--- + +
    + + Get professional support for this package with a Tidelift subscription + +
    + + Tidelift helps make open source sustainable for maintainers while giving companies
    assurances about security, maintenance, and licensing for their dependencies. +
    +
    diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/basic.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/basic.d.ts new file mode 100644 index 0000000..5969ce5 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/basic.d.ts @@ -0,0 +1,67 @@ +/// + +// TODO: This can just be `export type Primitive = not object` when the `not` keyword is out. +/** +Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive). +*/ +export type Primitive = + | null + | undefined + | string + | number + | boolean + | symbol + | bigint; + +// TODO: Remove the `= unknown` sometime in the future when most users are on TS 3.5 as it's now the default +/** +Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes). +*/ +export type Class = new(...arguments_: Arguments) => T; + +/** +Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`. +*/ +export type TypedArray = + | Int8Array + | Uint8Array + | Uint8ClampedArray + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | Float32Array + | Float64Array + | BigInt64Array + | BigUint64Array; + +/** +Matches a JSON object. + +This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`. +*/ +export type JsonObject = {[key: string]: JsonValue}; + +/** +Matches a JSON array. +*/ +export interface JsonArray extends Array {} + +/** +Matches any valid JSON value. +*/ +export type JsonValue = string | number | boolean | null | JsonObject | JsonArray; + +declare global { + interface SymbolConstructor { + readonly observable: symbol; + } +} + +/** +Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable). +*/ +export interface ObservableLike { + subscribe(observer: (value: unknown) => void): void; + [Symbol.observable](): ObservableLike; +} diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/except.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/except.d.ts new file mode 100644 index 0000000..7dedbaa --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/except.d.ts @@ -0,0 +1,22 @@ +/** +Create a type from an object type without certain keys. + +This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically. + +Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/30825) if you want to have the stricter version as a built-in in TypeScript. + +@example +``` +import {Except} from 'type-fest'; + +type Foo = { + a: number; + b: string; + c: boolean; +}; + +type FooWithoutA = Except; +//=> {b: string}; +``` +*/ +export type Except = Pick>; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/literal-union.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/literal-union.d.ts new file mode 100644 index 0000000..52e8de6 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/literal-union.d.ts @@ -0,0 +1,33 @@ +import {Primitive} from './basic'; + +/** +Allows creating a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. + +Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals. + +This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore. + +@example +``` +import {LiteralUnion} from 'type-fest'; + +// Before + +type Pet = 'dog' | 'cat' | string; + +const pet: Pet = ''; +// Start typing in your TypeScript-enabled IDE. +// You **will not** get auto-completion for `dog` and `cat` literals. + +// After + +type Pet2 = LiteralUnion<'dog' | 'cat', string>; + +const pet: Pet2 = ''; +// You **will** get auto-completion for `dog` and `cat` literals. +``` + */ +export type LiteralUnion< + LiteralType extends BaseType, + BaseType extends Primitive +> = LiteralType | (BaseType & {_?: never}); diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge-exclusive.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge-exclusive.d.ts new file mode 100644 index 0000000..059bd2c --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge-exclusive.d.ts @@ -0,0 +1,39 @@ +// Helper type. Not useful on its own. +type Without = {[KeyType in Exclude]?: never}; + +/** +Create a type that has mutually exclusive keys. + +This type was inspired by [this comment](https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604). + +This type works with a helper type, called `Without`. `Without` produces a type that has only keys from `FirstType` which are not present on `SecondType` and sets the value type for these keys to `never`. This helper type is then used in `MergeExclusive` to remove keys from either `FirstType` or `SecondType`. + +@example +``` +import {MergeExclusive} from 'type-fest'; + +interface ExclusiveVariation1 { + exclusive1: boolean; +} + +interface ExclusiveVariation2 { + exclusive2: string; +} + +type ExclusiveOptions = MergeExclusive; + +let exclusiveOptions: ExclusiveOptions; + +exclusiveOptions = {exclusive1: true}; +//=> Works +exclusiveOptions = {exclusive2: 'hi'}; +//=> Works +exclusiveOptions = {exclusive1: true, exclusive2: 'hi'}; +//=> Error +``` +*/ +export type MergeExclusive = + (FirstType | SecondType) extends object ? + (Without & SecondType) | (Without & FirstType) : + FirstType | SecondType; + diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge.d.ts new file mode 100644 index 0000000..4b3920b --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/merge.d.ts @@ -0,0 +1,22 @@ +import {Except} from './except'; + +/** +Merge two types into a new type. Keys of the second type overrides keys of the first type. + +@example +``` +import {Merge} from 'type-fest'; + +type Foo = { + a: number; + b: string; +}; + +type Bar = { + b: number; +}; + +const ab: Merge = {a: 1, b: 2}; +``` +*/ +export type Merge = Except> & SecondType; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/mutable.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/mutable.d.ts new file mode 100644 index 0000000..03d0dda --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/mutable.d.ts @@ -0,0 +1,22 @@ +/** +Convert an object with `readonly` keys into a mutable object. Inverse of `Readonly`. + +This can be used to [store and mutate options within a class](https://github.com/sindresorhus/pageres/blob/4a5d05fca19a5fbd2f53842cbf3eb7b1b63bddd2/source/index.ts#L72), [edit `readonly` objects within tests](https://stackoverflow.com/questions/50703834), and [construct a `readonly` object within a function](https://github.com/Microsoft/TypeScript/issues/24509). + +@example +``` +import {Mutable} from 'type-fest'; + +type Foo = { + readonly a: number; + readonly b: string; +}; + +const mutableFoo: Mutable = {a: 1, b: '2'}; +mutableFoo.a = 3; +``` +*/ +export type Mutable = { + // For each `Key` in the keys of `ObjectType`, make a mapped type by removing the `readonly` modifier from the key. + -readonly [KeyType in keyof ObjectType]: ObjectType[KeyType]; +}; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/opaque.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/opaque.d.ts new file mode 100644 index 0000000..5311c1b --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/opaque.d.ts @@ -0,0 +1,40 @@ +/** +Create an opaque type, which hides its internal details from the public, and can only be created by being used explicitly. + +The generic type parameter can be anything. It doesn't have to be an object. + +[Read more about opaque types.](https://codemix.com/opaque-types-in-javascript/) + +There have been several discussions about adding this feature to TypeScript via the `opaque type` operator, similar to how Flow does it. Unfortunately, nothing has (yet) moved forward: + - [Microsoft/TypeScript#15408](https://github.com/Microsoft/TypeScript/issues/15408) + - [Microsoft/TypeScript#15807](https://github.com/Microsoft/TypeScript/issues/15807) + +@example +``` +import {Opaque} from 'type-fest'; + +type AccountNumber = Opaque; +type AccountBalance = Opaque; + +function createAccountNumber(): AccountNumber { + return 2 as AccountNumber; +} + +function getMoneyForAccount(accountNumber: AccountNumber): AccountBalance { + return 4 as AccountBalance; +} + +// This will compile successfully. +getMoneyForAccount(createAccountNumber()); + +// But this won't, because it has to be explicitly passed as an `AccountNumber` type. +getMoneyForAccount(2); + +// You can use opaque values like they aren't opaque too. +const accountNumber = createAccountNumber(); + +// This will compile successfully. +accountNumber + 2; +``` +*/ +export type Opaque = Type & {readonly __opaque__: unique symbol}; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/package-json.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/package-json.d.ts new file mode 100644 index 0000000..3179e58 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/package-json.d.ts @@ -0,0 +1,501 @@ +import {LiteralUnion} from '..'; + +declare namespace PackageJson { + /** + A person who has been involved in creating or maintaining the package. + */ + export type Person = + | string + | { + name: string; + url?: string; + email?: string; + }; + + export type BugsLocation = + | string + | { + /** + The URL to the package's issue tracker. + */ + url?: string; + + /** + The email address to which issues should be reported. + */ + email?: string; + }; + + export interface DirectoryLocations { + /** + Location for executable scripts. Sugar to generate entries in the `bin` property by walking the folder. + */ + bin?: string; + + /** + Location for Markdown files. + */ + doc?: string; + + /** + Location for example scripts. + */ + example?: string; + + /** + Location for the bulk of the library. + */ + lib?: string; + + /** + Location for man pages. Sugar to generate a `man` array by walking the folder. + */ + man?: string; + + /** + Location for test files. + */ + test?: string; + + [directoryType: string]: unknown; + } + + export type Scripts = { + /** + Run **before** the package is published (Also run on local `npm install` without any arguments). + */ + prepublish?: string; + + /** + Run both **before** the package is packed and published, and on local `npm install` without any arguments. This is run **after** `prepublish`, but **before** `prepublishOnly`. + */ + prepare?: string; + + /** + Run **before** the package is prepared and packed, **only** on `npm publish`. + */ + prepublishOnly?: string; + + /** + Run **before** a tarball is packed (on `npm pack`, `npm publish`, and when installing git dependencies). + */ + prepack?: string; + + /** + Run **after** the tarball has been generated and moved to its final destination. + */ + postpack?: string; + + /** + Run **after** the package is published. + */ + publish?: string; + + /** + Run **after** the package is published. + */ + postpublish?: string; + + /** + Run **before** the package is installed. + */ + preinstall?: string; + + /** + Run **after** the package is installed. + */ + install?: string; + + /** + Run **after** the package is installed and after `install`. + */ + postinstall?: string; + + /** + Run **before** the package is uninstalled and before `uninstall`. + */ + preuninstall?: string; + + /** + Run **before** the package is uninstalled. + */ + uninstall?: string; + + /** + Run **after** the package is uninstalled. + */ + postuninstall?: string; + + /** + Run **before** bump the package version and before `version`. + */ + preversion?: string; + + /** + Run **before** bump the package version. + */ + version?: string; + + /** + Run **after** bump the package version. + */ + postversion?: string; + + /** + Run with the `npm test` command, before `test`. + */ + pretest?: string; + + /** + Run with the `npm test` command. + */ + test?: string; + + /** + Run with the `npm test` command, after `test`. + */ + posttest?: string; + + /** + Run with the `npm stop` command, before `stop`. + */ + prestop?: string; + + /** + Run with the `npm stop` command. + */ + stop?: string; + + /** + Run with the `npm stop` command, after `stop`. + */ + poststop?: string; + + /** + Run with the `npm start` command, before `start`. + */ + prestart?: string; + + /** + Run with the `npm start` command. + */ + start?: string; + + /** + Run with the `npm start` command, after `start`. + */ + poststart?: string; + + /** + Run with the `npm restart` command, before `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided. + */ + prerestart?: string; + + /** + Run with the `npm restart` command. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided. + */ + restart?: string; + + /** + Run with the `npm restart` command, after `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided. + */ + postrestart?: string; + } & { + [scriptName: string]: string; + }; + + /** + Dependencies of the package. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or Git URL. + */ + export interface Dependency { + [packageName: string]: string; + } + + export interface NonStandardEntryPoints { + /** + An ECMAScript module ID that is the primary entry point to the program. + */ + module?: string; + + /** + A module ID with untranspiled code that is the primary entry point to the program. + */ + esnext?: + | string + | { + main?: string; + browser?: string; + [moduleName: string]: string | undefined; + }; + + /** + A hint to JavaScript bundlers or component tools when packaging modules for client side use. + */ + browser?: + | string + | { + [moduleName: string]: string | false; + }; + } + + export interface TypeScriptConfiguration { + /** + Location of the bundled TypeScript declaration file. + */ + types?: string; + + /** + Location of the bundled TypeScript declaration file. Alias of `types`. + */ + typings?: string; + } + + export interface YarnConfiguration { + /** + If your package only allows one version of a given dependency, and you’d like to enforce the same behavior as `yarn install --flat` on the command line, set this to `true`. + + Note that if your `package.json` contains `"flat": true` and other packages depend on yours (e.g. you are building a library rather than an application), those other packages will also need `"flat": true` in their `package.json` or be installed with `yarn install --flat` on the command-line. + */ + flat?: boolean; + + /** + Selective version resolutions. Allows the definition of custom package versions inside dependencies without manual edits in the `yarn.lock` file. + */ + resolutions?: Dependency; + } + + export interface JSPMConfiguration { + /** + JSPM configuration. + */ + jspm?: PackageJson; + } +} + +/** +Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). Also includes types for fields used by other popular projects, like TypeScript and Yarn. +*/ +export type PackageJson = { + /** + The name of the package. + */ + name?: string; + + /** + Package version, parseable by [`node-semver`](https://github.com/npm/node-semver). + */ + version?: string; + + /** + Package description, listed in `npm search`. + */ + description?: string; + + /** + Keywords associated with package, listed in `npm search`. + */ + keywords?: string[]; + + /** + The URL to the package's homepage. + */ + homepage?: LiteralUnion<'.', string>; + + /** + The URL to the package's issue tracker and/or the email address to which issues should be reported. + */ + bugs?: PackageJson.BugsLocation; + + /** + The license for the package. + */ + license?: string; + + /** + The licenses for the package. + */ + licenses?: Array<{ + type?: string; + url?: string; + }>; + + author?: PackageJson.Person; + + /** + A list of people who contributed to the package. + */ + contributors?: PackageJson.Person[]; + + /** + A list of people who maintain the package. + */ + maintainers?: PackageJson.Person[]; + + /** + The files included in the package. + */ + files?: string[]; + + /** + The module ID that is the primary entry point to the program. + */ + main?: string; + + /** + The executable files that should be installed into the `PATH`. + */ + bin?: + | string + | { + [binary: string]: string; + }; + + /** + Filenames to put in place for the `man` program to find. + */ + man?: string | string[]; + + /** + Indicates the structure of the package. + */ + directories?: PackageJson.DirectoryLocations; + + /** + Location for the code repository. + */ + repository?: + | string + | { + type: string; + url: string; + }; + + /** + Script commands that are run at various times in the lifecycle of the package. The key is the lifecycle event, and the value is the command to run at that point. + */ + scripts?: PackageJson.Scripts; + + /** + Is used to set configuration parameters used in package scripts that persist across upgrades. + */ + config?: { + [configKey: string]: unknown; + }; + + /** + The dependencies of the package. + */ + dependencies?: PackageJson.Dependency; + + /** + Additional tooling dependencies that are not required for the package to work. Usually test, build, or documentation tooling. + */ + devDependencies?: PackageJson.Dependency; + + /** + Dependencies that are skipped if they fail to install. + */ + optionalDependencies?: PackageJson.Dependency; + + /** + Dependencies that will usually be required by the package user directly or via another dependency. + */ + peerDependencies?: PackageJson.Dependency; + + /** + Package names that are bundled when the package is published. + */ + bundledDependencies?: string[]; + + /** + Alias of `bundledDependencies`. + */ + bundleDependencies?: string[]; + + /** + Engines that this package runs on. + */ + engines?: { + [EngineName in 'npm' | 'node' | string]: string; + }; + + /** + @deprecated + */ + engineStrict?: boolean; + + /** + Operating systems the module runs on. + */ + os?: Array>; + + /** + CPU architectures the module runs on. + */ + cpu?: Array>; + + /** + If set to `true`, a warning will be shown if package is installed locally. Useful if the package is primarily a command-line application that should be installed globally. + + @deprecated + */ + preferGlobal?: boolean; + + /** + If set to `true`, then npm will refuse to publish it. + */ + private?: boolean; + + /** + * A set of config values that will be used at publish-time. It's especially handy to set the tag, registry or access, to ensure that a given package is not tagged with 'latest', published to the global public registry or that a scoped module is private by default. + */ + publishConfig?: { + [config: string]: unknown; + }; +} & +PackageJson.NonStandardEntryPoints & +PackageJson.TypeScriptConfiguration & +PackageJson.YarnConfiguration & +PackageJson.JSPMConfiguration & { + [key: string]: unknown; +}; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/partial-deep.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/partial-deep.d.ts new file mode 100644 index 0000000..b962b84 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/partial-deep.d.ts @@ -0,0 +1,72 @@ +import {Primitive} from './basic'; + +/** +Create a type from another type with all keys and nested keys set to optional. + +Use-cases: +- Merging a default settings/config object with another object, the second object would be a deep partial of the default object. +- Mocking and testing complex entities, where populating an entire object with its keys would be redundant in terms of the mock or test. + +@example +``` +import {PartialDeep} from 'type-fest'; + +const settings: Settings = { + textEditor: { + fontSize: 14; + fontColor: '#000000'; + fontWeight: 400; + } + autocomplete: false; + autosave: true; +}; + +const applySavedSettings = (savedSettings: PartialDeep) => { + return {...settings, ...savedSettings}; +} + +settings = applySavedSettings({textEditor: {fontWeight: 500}}); +``` +*/ +export type PartialDeep = T extends Primitive + ? Partial + : T extends Map + ? PartialMapDeep + : T extends Set + ? PartialSetDeep + : T extends ReadonlyMap + ? PartialReadonlyMapDeep + : T extends ReadonlySet + ? PartialReadonlySetDeep + : T extends ((...arguments: any[]) => unknown) + ? T | undefined + : T extends object + ? PartialObjectDeep + : unknown; + +/** +Same as `PartialDeep`, but accepts only `Map`s and as inputs. Internal helper for `PartialDeep`. +*/ +interface PartialMapDeep extends Map, PartialDeep> {} + +/** +Same as `PartialDeep`, but accepts only `Set`s as inputs. Internal helper for `PartialDeep`. +*/ +interface PartialSetDeep extends Set> {} + +/** +Same as `PartialDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `PartialDeep`. +*/ +interface PartialReadonlyMapDeep extends ReadonlyMap, PartialDeep> {} + +/** +Same as `PartialDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `PartialDeep`. +*/ +interface PartialReadonlySetDeep extends ReadonlySet> {} + +/** +Same as `PartialDeep`, but accepts only `object`s as inputs. Internal helper for `PartialDeep`. +*/ +type PartialObjectDeep = { + [KeyType in keyof ObjectType]?: PartialDeep +}; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/promisable.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/promisable.d.ts new file mode 100644 index 0000000..71242a5 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/promisable.d.ts @@ -0,0 +1,23 @@ +/** +Create a type that represents either the value or the value wrapped in `PromiseLike`. + +Use-cases: +- A function accepts a callback that may either return a value synchronously or may return a promised value. +- This type could be the return type of `Promise#then()`, `Promise#catch()`, and `Promise#finally()` callbacks. + +Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/31394) if you want to have this type as a built-in in TypeScript. + +@example +``` +import {Promisable} from 'type-fest'; + +async function logger(getLogEntry: () => Promisable): Promise { + const entry = await getLogEntry(); + console.log(entry); +} + +logger(() => 'foo'); +logger(() => Promise.resolve('bar')); +``` +*/ +export type Promisable = T | PromiseLike; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/readonly-deep.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/readonly-deep.d.ts new file mode 100644 index 0000000..b8c04de --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/readonly-deep.d.ts @@ -0,0 +1,59 @@ +import {Primitive} from './basic'; + +/** +Convert `object`s, `Map`s, `Set`s, and `Array`s and all of their keys/elements into immutable structures recursively. + +This is useful when a deeply nested structure needs to be exposed as completely immutable, for example, an imported JSON module or when receiving an API response that is passed around. + +Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/13923) if you want to have this type as a built-in in TypeScript. + +@example +``` +// data.json +{ + "foo": ["bar"] +} + +// main.ts +import {ReadonlyDeep} from 'type-fest'; +import dataJson = require('./data.json'); + +const data: ReadonlyDeep = dataJson; + +export default data; + +// test.ts +import data from './main'; + +data.foo.push('bar'); +//=> error TS2339: Property 'push' does not exist on type 'readonly string[]' +``` +*/ +export type ReadonlyDeep = T extends Primitive | ((...arguments: any[]) => unknown) + ? T + : T extends ReadonlyMap + ? ReadonlyMapDeep + : T extends ReadonlySet + ? ReadonlySetDeep + : T extends object + ? ReadonlyObjectDeep + : unknown; + +/** +Same as `ReadonlyDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `ReadonlyDeep`. +*/ +interface ReadonlyMapDeep + extends ReadonlyMap, ReadonlyDeep> {} + +/** +Same as `ReadonlyDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `ReadonlyDeep`. +*/ +interface ReadonlySetDeep + extends ReadonlySet> {} + +/** +Same as `ReadonlyDeep`, but accepts only `object`s as inputs. Internal helper for `ReadonlyDeep`. +*/ +type ReadonlyObjectDeep = { + readonly [KeyType in keyof ObjectType]: ReadonlyDeep +}; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-at-least-one.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-at-least-one.d.ts new file mode 100644 index 0000000..337379f --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-at-least-one.d.ts @@ -0,0 +1,32 @@ +import {Except} from './except'; + +/** +Create a type that requires at least one of the given keys. The remaining keys are kept as is. + +@example +``` +import {RequireAtLeastOne} from 'type-fest'; + +type Responder = { + text?: () => string; + json?: () => string; + + secure?: boolean; +}; + +const responder: RequireAtLeastOne = { + json: () => '{"message": "ok"}', + secure: true +}; +``` +*/ +export type RequireAtLeastOne = + { + // For each Key in KeysType make a mapped type + [Key in KeysType]: ( + // …by picking that Key's type and making it required + Required> + ) + }[KeysType] + // …then, make intersection types by adding the remaining keys to each mapped type. + & Except; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-exactly-one.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-exactly-one.d.ts new file mode 100644 index 0000000..d8c71b7 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/require-exactly-one.d.ts @@ -0,0 +1,36 @@ +// TODO: Remove this when we target TypeScript >=3.5. +// eslint-disable-next-line @typescript-eslint/generic-type-naming +type _Omit = Pick>; + +/** +Create a type that requires exactly one of the given keys and disallows more. The remaining keys are kept as is. + +Use-cases: +- Creating interfaces for components that only need one of the keys to display properly. +- Declaring generic keys in a single place for a single use-case that gets narrowed down via `RequireExactlyOne`. + +The caveat with `RequireExactlyOne` is that TypeScript doesn't always know at compile time every key that will exist at runtime. Therefore `RequireExactlyOne` can't do anything to prevent extra keys it doesn't know about. + +@example +``` +import {RequireExactlyOne} from 'type-fest'; + +type Responder = { + text: () => string; + json: () => string; + secure: boolean; +}; + +const responder: RequireExactlyOne = { + // Adding a `text` key here would cause a compile error. + + json: () => '{"message": "ok"}', + secure: true +}; +``` +*/ +export type RequireExactlyOne = + {[Key in KeysType]: ( + Required> & + Partial, never>> + )}[KeysType] & _Omit; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-optional.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-optional.d.ts new file mode 100644 index 0000000..a9a256a --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-optional.d.ts @@ -0,0 +1,32 @@ +/** +Create a type that makes the given keys optional. The remaining keys are kept as is. The sister of the `SetRequired` type. + +Use-case: You want to define a single model where the only thing that changes is whether or not some of the keys are optional. + +@example +``` +import {SetOptional} from 'type-fest'; + +type Foo = { + a: number; + b?: string; + c: boolean; +} + +type SomeOptional = SetOptional; +// type SomeOptional = { +// a: number; +// b?: string; // Was already optional and still is. +// c?: boolean; // Is now optional. +// } +``` +*/ +export type SetOptional = + // Pick just the keys that are not optional from the base type. + Pick> & + // Pick the keys that should be optional from the base type and make them optional. + Partial> extends + // If `InferredType` extends the previous, then for each key, use the inferred type key. + infer InferredType + ? {[KeyType in keyof InferredType]: InferredType[KeyType]} + : never; diff --git a/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-required.d.ts b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-required.d.ts new file mode 100644 index 0000000..2572bc1 --- /dev/null +++ b/mybulma/node_modules/read-pkg-up/node_modules/type-fest/source/set-required.d.ts @@ -0,0 +1,32 @@ +/** +Create a type that makes the given keys required. The remaining keys are kept as is. The sister of the `SetOptional` type. + +Use-case: You want to define a single model where the only thing that changes is whether or not some of the keys are required. + +@example +``` +import {SetRequired} from 'type-fest'; + +type Foo = { + a?: number; + b: string; + c?: boolean; +} + +type SomeRequired = SetRequired; +// type SomeRequired = { +// a?: number; +// b: string; // Was already required and still is. +// c: boolean; // Is now required. +// } +``` +*/ +export type SetRequired = + // Pick just the keys that are not required from the base type. + Pick> & + // Pick the keys that should be required from the base type and make them required. + Required> extends + // If `InferredType` extends the previous, then for each key, use the inferred type key. + infer InferredType + ? {[KeyType in keyof InferredType]: InferredType[KeyType]} + : never; diff --git a/mybulma/node_modules/read-pkg/index.d.ts b/mybulma/node_modules/read-pkg/index.d.ts new file mode 100644 index 0000000..a937926 --- /dev/null +++ b/mybulma/node_modules/read-pkg/index.d.ts @@ -0,0 +1,67 @@ +import * as typeFest from 'type-fest'; +import normalize = require('normalize-package-data'); + +declare namespace readPkg { + interface Options { + /** + [Normalize](https://github.com/npm/normalize-package-data#what-normalization-currently-entails) the package data. + + @default true + */ + readonly normalize?: boolean; + + /** + Current working directory. + + @default process.cwd() + */ + readonly cwd?: string; + } + + interface NormalizeOptions extends Options { + readonly normalize?: true; + } + + type NormalizedPackageJson = PackageJson & normalize.Package; + type PackageJson = typeFest.PackageJson; +} + +declare const readPkg: { + /** + @returns The parsed JSON. + + @example + ``` + import readPkg = require('read-pkg'); + + (async () => { + console.log(await readPkg()); + //=> {name: 'read-pkg', …} + + console.log(await readPkg({cwd: 'some-other-directory'}); + //=> {name: 'unicorn', …} + })(); + ``` + */ + (options?: readPkg.NormalizeOptions): Promise; + (options: readPkg.Options): Promise; + + /** + @returns The parsed JSON. + + @example + ``` + import readPkg = require('read-pkg'); + + console.log(readPkg.sync()); + //=> {name: 'read-pkg', …} + + console.log(readPkg.sync({cwd: 'some-other-directory'}); + //=> {name: 'unicorn', …} + ``` + */ + sync(options?: readPkg.NormalizeOptions): readPkg.NormalizedPackageJson; + sync(options: readPkg.Options): readPkg.PackageJson; +}; + +export = readPkg; diff --git a/mybulma/node_modules/read-pkg/index.js b/mybulma/node_modules/read-pkg/index.js new file mode 100644 index 0000000..c1243a8 --- /dev/null +++ b/mybulma/node_modules/read-pkg/index.js @@ -0,0 +1,41 @@ +'use strict'; +const {promisify} = require('util'); +const fs = require('fs'); +const path = require('path'); +const parseJson = require('parse-json'); + +const readFileAsync = promisify(fs.readFile); + +module.exports = async options => { + options = { + cwd: process.cwd(), + normalize: true, + ...options + }; + + const filePath = path.resolve(options.cwd, 'package.json'); + const json = parseJson(await readFileAsync(filePath, 'utf8')); + + if (options.normalize) { + require('normalize-package-data')(json); + } + + return json; +}; + +module.exports.sync = options => { + options = { + cwd: process.cwd(), + normalize: true, + ...options + }; + + const filePath = path.resolve(options.cwd, 'package.json'); + const json = parseJson(fs.readFileSync(filePath, 'utf8')); + + if (options.normalize) { + require('normalize-package-data')(json); + } + + return json; +}; diff --git a/mybulma/node_modules/read-pkg/license b/mybulma/node_modules/read-pkg/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/read-pkg/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/read-pkg/node_modules/.bin/semver b/mybulma/node_modules/read-pkg/node_modules/.bin/semver new file mode 100644 index 0000000..801e77f --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/.bin/semver @@ -0,0 +1,160 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +var argv = process.argv.slice(2) + +var versions = [] + +var range = [] + +var inc = null + +var version = require('../package.json').version + +var loose = false + +var includePrerelease = false + +var coerce = false + +var identifier + +var semver = require('../semver') + +var reverse = false + +var options = {} + +main() + +function main () { + if (!argv.length) return help() + while (argv.length) { + var a = argv.shift() + var indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + a = a.slice(0, indexOfEqualSign) + argv.unshift(a.slice(indexOfEqualSign + 1)) + } + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + switch (argv[0]) { + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': + inc = argv.shift() + break + default: + inc = 'patch' + break + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-c': case '--coerce': + coerce = true + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + var options = { loose: loose, includePrerelease: includePrerelease } + + versions = versions.map(function (v) { + return coerce ? (semver.coerce(v) || { version: v }).version : v + }).filter(function (v) { + return semver.valid(v) + }) + if (!versions.length) return fail() + if (inc && (versions.length !== 1 || range.length)) { return failInc() } + + for (var i = 0, l = range.length; i < l; i++) { + versions = versions.filter(function (v) { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) return fail() + } + return success(versions) +} + +function failInc () { + console.error('--inc can only be used on a single version with no range') + fail() +} + +function fail () { process.exit(1) } + +function success () { + var compare = reverse ? 'rcompare' : 'compare' + versions.sort(function (a, b) { + return semver[compare](a, b, options) + }).map(function (v) { + return semver.clean(v, options) + }).map(function (v) { + return inc ? semver.inc(v, inc, options, identifier) : v + }).forEach(function (v, i, _) { console.log(v) }) +} + +function help () { + console.log(['SemVer ' + version, + '', + 'A JavaScript implementation of the https://semver.org/ specification', + 'Copyright Isaac Z. Schlueter', + '', + 'Usage: semver [options] [ [...]]', + 'Prints valid versions sorted by SemVer precedence', + '', + 'Options:', + '-r --range ', + ' Print versions that match the specified range.', + '', + '-i --increment []', + ' Increment a version by the specified level. Level can', + ' be one of: major, minor, patch, premajor, preminor,', + " prepatch, or prerelease. Default level is 'patch'.", + ' Only one version may be specified.', + '', + '--preid ', + ' Identifier to be used to prefix premajor, preminor,', + ' prepatch or prerelease version increments.', + '', + '-l --loose', + ' Interpret versions and ranges loosely', + '', + '-p --include-prerelease', + ' Always include prerelease versions in range matching', + '', + '-c --coerce', + ' Coerce a string into SemVer if possible', + ' (does not imply --loose)', + '', + 'Program exits successfully if any valid version satisfies', + 'all supplied ranges, and prints all satisfying versions.', + '', + 'If no satisfying versions are found, then exits failure.', + '', + 'Versions are printed in ascending order, so supplying', + 'multiple versions to the utility will just sort them.' + ].join('\n')) +} diff --git a/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/CHANGELOG.md b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/CHANGELOG.md new file mode 100644 index 0000000..6987fb4 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/CHANGELOG.md @@ -0,0 +1,151 @@ +# Change Log + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + + +## [2.8.9](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) (2021-04-07) + + +### Bug Fixes + +* backport regex fix from [#76](https://github.com/npm/hosted-git-info/issues/76) ([29adfe5](https://github.com/npm/hosted-git-info/commit/29adfe5)), closes [#84](https://github.com/npm/hosted-git-info/issues/84) + + + + +## [2.8.8](https://github.com/npm/hosted-git-info/compare/v2.8.7...v2.8.8) (2020-02-29) + + +### Bug Fixes + +* [#61](https://github.com/npm/hosted-git-info/issues/61) & [#65](https://github.com/npm/hosted-git-info/issues/65) addressing issues w/ url.URL implmentation which regressed node 6 support ([5038b18](https://github.com/npm/hosted-git-info/commit/5038b18)), closes [#66](https://github.com/npm/hosted-git-info/issues/66) + + + + +## [2.8.7](https://github.com/npm/hosted-git-info/compare/v2.8.6...v2.8.7) (2020-02-26) + + +### Bug Fixes + +* Do not attempt to use url.URL when unavailable ([2d0bb66](https://github.com/npm/hosted-git-info/commit/2d0bb66)), closes [#61](https://github.com/npm/hosted-git-info/issues/61) [#62](https://github.com/npm/hosted-git-info/issues/62) +* Do not pass scp-style URLs to the WhatWG url.URL ([f2cdfcf](https://github.com/npm/hosted-git-info/commit/f2cdfcf)), closes [#60](https://github.com/npm/hosted-git-info/issues/60) + + + + +## [2.8.6](https://github.com/npm/hosted-git-info/compare/v2.8.5...v2.8.6) (2020-02-25) + + + + +## [2.8.5](https://github.com/npm/hosted-git-info/compare/v2.8.4...v2.8.5) (2019-10-07) + + +### Bug Fixes + +* updated pathmatch for gitlab ([e8325b5](https://github.com/npm/hosted-git-info/commit/e8325b5)), closes [#51](https://github.com/npm/hosted-git-info/issues/51) +* updated pathmatch for gitlab ([ffe056f](https://github.com/npm/hosted-git-info/commit/ffe056f)) + + + + +## [2.8.4](https://github.com/npm/hosted-git-info/compare/v2.8.3...v2.8.4) (2019-08-12) + + + + +## [2.8.3](https://github.com/npm/hosted-git-info/compare/v2.8.2...v2.8.3) (2019-08-12) + + + + +## [2.8.2](https://github.com/npm/hosted-git-info/compare/v2.8.1...v2.8.2) (2019-08-05) + + +### Bug Fixes + +* http protocol use sshurl by default ([3b1d629](https://github.com/npm/hosted-git-info/commit/3b1d629)), closes [#48](https://github.com/npm/hosted-git-info/issues/48) + + + + +## [2.8.1](https://github.com/npm/hosted-git-info/compare/v2.8.0...v2.8.1) (2019-08-05) + + +### Bug Fixes + +* ignore noCommittish on tarball url generation ([5d4a8d7](https://github.com/npm/hosted-git-info/commit/5d4a8d7)) +* use gist tarball url that works for anonymous gists ([1692435](https://github.com/npm/hosted-git-info/commit/1692435)) + + + + +# [2.8.0](https://github.com/npm/hosted-git-info/compare/v2.7.1...v2.8.0) (2019-08-05) + + +### Bug Fixes + +* Allow slashes in gitlab project section ([bbcf7b2](https://github.com/npm/hosted-git-info/commit/bbcf7b2)), closes [#46](https://github.com/npm/hosted-git-info/issues/46) [#43](https://github.com/npm/hosted-git-info/issues/43) +* **git-host:** disallow URI-encoded slash (%2F) in `path` ([3776fa5](https://github.com/npm/hosted-git-info/commit/3776fa5)), closes [#44](https://github.com/npm/hosted-git-info/issues/44) +* **gitlab:** Do not URL encode slashes in project name for GitLab https URL ([cbf04f9](https://github.com/npm/hosted-git-info/commit/cbf04f9)), closes [#47](https://github.com/npm/hosted-git-info/issues/47) +* do not allow invalid gist urls ([d5cf830](https://github.com/npm/hosted-git-info/commit/d5cf830)) +* **cache:** Switch to lru-cache to save ourselves from unlimited memory consumption ([e518222](https://github.com/npm/hosted-git-info/commit/e518222)), closes [#38](https://github.com/npm/hosted-git-info/issues/38) + + +### Features + +* give these objects a name ([60abaea](https://github.com/npm/hosted-git-info/commit/60abaea)) + + + + +## [2.7.1](https://github.com/npm/hosted-git-info/compare/v2.7.0...v2.7.1) (2018-07-07) + + +### Bug Fixes + +* **index:** Guard against non-string types ([5bc580d](https://github.com/npm/hosted-git-info/commit/5bc580d)) +* **parse:** Crash on strings that parse to having no host ([c931482](https://github.com/npm/hosted-git-info/commit/c931482)), closes [#35](https://github.com/npm/hosted-git-info/issues/35) + + + + +# [2.7.0](https://github.com/npm/hosted-git-info/compare/v2.6.1...v2.7.0) (2018-07-06) + + +### Bug Fixes + +* **github tarball:** update github tarballtemplate ([6efd582](https://github.com/npm/hosted-git-info/commit/6efd582)), closes [#34](https://github.com/npm/hosted-git-info/issues/34) +* **gitlab docs:** switched to lowercase anchors for readmes ([701bcd1](https://github.com/npm/hosted-git-info/commit/701bcd1)) + + +### Features + +* **all:** Support www. prefixes on hostnames ([3349575](https://github.com/npm/hosted-git-info/commit/3349575)), closes [#32](https://github.com/npm/hosted-git-info/issues/32) + + + + +## [2.6.1](https://github.com/npm/hosted-git-info/compare/v2.6.0...v2.6.1) (2018-06-25) + +### Bug Fixes + +* **Revert:** "compat: remove Object.assign fallback ([#25](https://github.com/npm/hosted-git-info/issues/25))" ([cce5a62](https://github.com/npm/hosted-git-info/commit/cce5a62)) +* **Revert:** "git-host: fix forgotten extend()" ([a815ec9](https://github.com/npm/hosted-git-info/commit/a815ec9)) + + + + +# [2.6.0](https://github.com/npm/hosted-git-info/compare/v2.5.0...v2.6.0) (2018-03-07) + + +### Bug Fixes + +* **compat:** remove Object.assign fallback ([#25](https://github.com/npm/hosted-git-info/issues/25)) ([627ab55](https://github.com/npm/hosted-git-info/commit/627ab55)) +* **git-host:** fix forgotten extend() ([eba1f7b](https://github.com/npm/hosted-git-info/commit/eba1f7b)) + + +### Features + +* **browse:** fragment support for browse() ([#28](https://github.com/npm/hosted-git-info/issues/28)) ([cd5e5bb](https://github.com/npm/hosted-git-info/commit/cd5e5bb)) diff --git a/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/LICENSE b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/LICENSE new file mode 100644 index 0000000..4505576 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Rebecca Turner + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/README.md b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/README.md new file mode 100644 index 0000000..7b723f6 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/README.md @@ -0,0 +1,133 @@ +# hosted-git-info + +This will let you identify and transform various git hosts URLs between +protocols. It also can tell you what the URL is for the raw path for +particular file for direct access without git. + +## Example + +```javascript +var hostedGitInfo = require("hosted-git-info") +var info = hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git", opts) +/* info looks like: +{ + type: "github", + domain: "github.com", + user: "npm", + project: "hosted-git-info" +} +*/ +``` + +If the URL can't be matched with a git host, `null` will be returned. We +can match git, ssh and https urls. Additionally, we can match ssh connect +strings (`git@github.com:npm/hosted-git-info`) and shortcuts (eg, +`github:npm/hosted-git-info`). Github specifically, is detected in the case +of a third, unprefixed, form: `npm/hosted-git-info`. + +If it does match, the returned object has properties of: + +* info.type -- The short name of the service +* info.domain -- The domain for git protocol use +* info.user -- The name of the user/org on the git host +* info.project -- The name of the project on the git host + +## Version Contract + +The major version will be bumped any time… + +* The constructor stops accepting URLs that it previously accepted. +* A method is removed. +* A method can no longer accept the number and type of arguments it previously accepted. +* A method can return a different type than it currently returns. + +Implications: + +* I do not consider the specific format of the urls returned from, say + `.https()` to be a part of the contract. The contract is that it will + return a string that can be used to fetch the repo via HTTPS. But what + that string looks like, specifically, can change. +* Dropping support for a hosted git provider would constitute a breaking + change. + +## Usage + +### var info = hostedGitInfo.fromUrl(gitSpecifier[, options]) + +* *gitSpecifer* is a URL of a git repository or a SCP-style specifier of one. +* *options* is an optional object. It can have the following properties: + * *noCommittish* — If true then committishes won't be included in generated URLs. + * *noGitPlus* — If true then `git+` won't be prefixed on URLs. + +## Methods + +All of the methods take the same options as the `fromUrl` factory. Options +provided to a method override those provided to the constructor. + +* info.file(path, opts) + +Given the path of a file relative to the repository, returns a URL for +directly fetching it from the githost. If no committish was set then +`master` will be used as the default. + +For example `hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git#v1.0.0").file("package.json")` +would return `https://raw.githubusercontent.com/npm/hosted-git-info/v1.0.0/package.json` + +* info.shortcut(opts) + +eg, `github:npm/hosted-git-info` + +* info.browse(path, fragment, opts) + +eg, `https://github.com/npm/hosted-git-info/tree/v1.2.0`, +`https://github.com/npm/hosted-git-info/tree/v1.2.0/package.json`, +`https://github.com/npm/hosted-git-info/tree/v1.2.0/REAMDE.md#supported-hosts` + +* info.bugs(opts) + +eg, `https://github.com/npm/hosted-git-info/issues` + +* info.docs(opts) + +eg, `https://github.com/npm/hosted-git-info/tree/v1.2.0#readme` + +* info.https(opts) + +eg, `git+https://github.com/npm/hosted-git-info.git` + +* info.sshurl(opts) + +eg, `git+ssh://git@github.com/npm/hosted-git-info.git` + +* info.ssh(opts) + +eg, `git@github.com:npm/hosted-git-info.git` + +* info.path(opts) + +eg, `npm/hosted-git-info` + +* info.tarball(opts) + +eg, `https://github.com/npm/hosted-git-info/archive/v1.2.0.tar.gz` + +* info.getDefaultRepresentation() + +Returns the default output type. The default output type is based on the +string you passed in to be parsed + +* info.toString(opts) + +Uses the getDefaultRepresentation to call one of the other methods to get a URL for +this resource. As such `hostedGitInfo.fromUrl(url).toString()` will give +you a normalized version of the URL that still uses the same protocol. + +Shortcuts will still be returned as shortcuts, but the special case github +form of `org/project` will be normalized to `github:org/project`. + +SSH connect strings will be normalized into `git+ssh` URLs. + +## Supported hosts + +Currently this supports Github, Bitbucket and Gitlab. Pull requests for +additional hosts welcome. diff --git a/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host-info.js b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host-info.js new file mode 100644 index 0000000..8147e33 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host-info.js @@ -0,0 +1,79 @@ +'use strict' + +var gitHosts = module.exports = { + github: { + // First two are insecure and generally shouldn't be used any more, but + // they are still supported. + 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'github.com', + 'treepath': 'tree', + 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}', + 'bugstemplate': 'https://{domain}/{user}/{project}/issues', + 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}', + 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}' + }, + bitbucket: { + 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'bitbucket.org', + 'treepath': 'src', + 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz' + }, + gitlab: { + 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'gitlab.com', + 'treepath': 'tree', + 'bugstemplate': 'https://{domain}/{user}/{project}/issues', + 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}', + 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}', + 'pathmatch': /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/ + }, + gist: { + 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'gist.github.com', + 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/, + 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}', + 'bugstemplate': 'https://{domain}/{project}', + 'gittemplate': 'git://{domain}/{project}.git{#committish}', + 'sshtemplate': 'git@{domain}:/{project}.git{#committish}', + 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}', + 'browsetemplate': 'https://{domain}/{project}{/committish}', + 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}', + 'docstemplate': 'https://{domain}/{project}{/committish}', + 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}', + 'shortcuttemplate': '{type}:{project}{#committish}', + 'pathtemplate': '{project}{#committish}', + 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}', + 'hashformat': function (fragment) { + return 'file-' + formatHashFragment(fragment) + } + } +} + +var gitHostDefaults = { + 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}', + 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}', + 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}', + 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}', + 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme', + 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}', + 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}', + 'shortcuttemplate': '{type}:{user}/{project}{#committish}', + 'pathtemplate': '{user}/{project}{#committish}', + 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/, + 'hashformat': formatHashFragment +} + +Object.keys(gitHosts).forEach(function (name) { + Object.keys(gitHostDefaults).forEach(function (key) { + if (gitHosts[name][key]) return + gitHosts[name][key] = gitHostDefaults[key] + }) + gitHosts[name].protocols_re = RegExp('^(' + + gitHosts[name].protocols.map(function (protocol) { + return protocol.replace(/([\\+*{}()[\]$^|])/g, '\\$1') + }).join('|') + '):$') +}) + +function formatHashFragment (fragment) { + return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-') +} diff --git a/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host.js b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host.js new file mode 100644 index 0000000..9616fba --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/git-host.js @@ -0,0 +1,156 @@ +'use strict' +var gitHosts = require('./git-host-info.js') +/* eslint-disable node/no-deprecated-api */ + +// copy-pasta util._extend from node's source, to avoid pulling +// the whole util module into peoples' webpack bundles. +/* istanbul ignore next */ +var extend = Object.assign || function _extend (target, source) { + // Don't do anything if source isn't an object + if (source === null || typeof source !== 'object') return target + + var keys = Object.keys(source) + var i = keys.length + while (i--) { + target[keys[i]] = source[keys[i]] + } + return target +} + +module.exports = GitHost +function GitHost (type, user, auth, project, committish, defaultRepresentation, opts) { + var gitHostInfo = this + gitHostInfo.type = type + Object.keys(gitHosts[type]).forEach(function (key) { + gitHostInfo[key] = gitHosts[type][key] + }) + gitHostInfo.user = user + gitHostInfo.auth = auth + gitHostInfo.project = project + gitHostInfo.committish = committish + gitHostInfo.default = defaultRepresentation + gitHostInfo.opts = opts || {} +} + +GitHost.prototype.hash = function () { + return this.committish ? '#' + this.committish : '' +} + +GitHost.prototype._fill = function (template, opts) { + if (!template) return + var vars = extend({}, opts) + vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : '' + opts = extend(extend({}, this.opts), opts) + var self = this + Object.keys(this).forEach(function (key) { + if (self[key] != null && vars[key] == null) vars[key] = self[key] + }) + var rawAuth = vars.auth + var rawcommittish = vars.committish + var rawFragment = vars.fragment + var rawPath = vars.path + var rawProject = vars.project + Object.keys(vars).forEach(function (key) { + var value = vars[key] + if ((key === 'path' || key === 'project') && typeof value === 'string') { + vars[key] = value.split('/').map(function (pathComponent) { + return encodeURIComponent(pathComponent) + }).join('/') + } else { + vars[key] = encodeURIComponent(value) + } + }) + vars['auth@'] = rawAuth ? rawAuth + '@' : '' + vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : '' + vars.fragment = vars.fragment ? vars.fragment : '' + vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : '' + vars['/path'] = vars.path ? '/' + vars.path : '' + vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/') + if (opts.noCommittish) { + vars['#committish'] = '' + vars['/tree/committish'] = '' + vars['/committish'] = '' + vars.committish = '' + } else { + vars['#committish'] = rawcommittish ? '#' + rawcommittish : '' + vars['/tree/committish'] = vars.committish + ? '/' + vars.treepath + '/' + vars.committish + : '' + vars['/committish'] = vars.committish ? '/' + vars.committish : '' + vars.committish = vars.committish || 'master' + } + var res = template + Object.keys(vars).forEach(function (key) { + res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key]) + }) + if (opts.noGitPlus) { + return res.replace(/^git[+]/, '') + } else { + return res + } +} + +GitHost.prototype.ssh = function (opts) { + return this._fill(this.sshtemplate, opts) +} + +GitHost.prototype.sshurl = function (opts) { + return this._fill(this.sshurltemplate, opts) +} + +GitHost.prototype.browse = function (P, F, opts) { + if (typeof P === 'string') { + if (typeof F !== 'string') { + opts = F + F = null + } + return this._fill(this.browsefiletemplate, extend({ + fragment: F, + path: P + }, opts)) + } else { + return this._fill(this.browsetemplate, P) + } +} + +GitHost.prototype.docs = function (opts) { + return this._fill(this.docstemplate, opts) +} + +GitHost.prototype.bugs = function (opts) { + return this._fill(this.bugstemplate, opts) +} + +GitHost.prototype.https = function (opts) { + return this._fill(this.httpstemplate, opts) +} + +GitHost.prototype.git = function (opts) { + return this._fill(this.gittemplate, opts) +} + +GitHost.prototype.shortcut = function (opts) { + return this._fill(this.shortcuttemplate, opts) +} + +GitHost.prototype.path = function (opts) { + return this._fill(this.pathtemplate, opts) +} + +GitHost.prototype.tarball = function (opts_) { + var opts = extend({}, opts_, { noCommittish: false }) + return this._fill(this.tarballtemplate, opts) +} + +GitHost.prototype.file = function (P, opts) { + return this._fill(this.filetemplate, extend({ path: P }, opts)) +} + +GitHost.prototype.getDefaultRepresentation = function () { + return this.default +} + +GitHost.prototype.toString = function (opts) { + if (this.default && typeof this[this.default] === 'function') return this[this.default](opts) + return this.sshurl(opts) +} diff --git a/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/index.js b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/index.js new file mode 100644 index 0000000..0885772 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/index.js @@ -0,0 +1,148 @@ +'use strict' +var url = require('url') +var gitHosts = require('./git-host-info.js') +var GitHost = module.exports = require('./git-host.js') + +var protocolToRepresentationMap = { + 'git+ssh:': 'sshurl', + 'git+https:': 'https', + 'ssh:': 'sshurl', + 'git:': 'git' +} + +function protocolToRepresentation (protocol) { + return protocolToRepresentationMap[protocol] || protocol.slice(0, -1) +} + +var authProtocols = { + 'git:': true, + 'https:': true, + 'git+https:': true, + 'http:': true, + 'git+http:': true +} + +var cache = {} + +module.exports.fromUrl = function (giturl, opts) { + if (typeof giturl !== 'string') return + var key = giturl + JSON.stringify(opts || {}) + + if (!(key in cache)) { + cache[key] = fromUrl(giturl, opts) + } + + return cache[key] +} + +function fromUrl (giturl, opts) { + if (giturl == null || giturl === '') return + var url = fixupUnqualifiedGist( + isGitHubShorthand(giturl) ? 'github:' + giturl : giturl + ) + var parsed = parseGitUrl(url) + var shortcutMatch = url.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/) + var matches = Object.keys(gitHosts).map(function (gitHostName) { + try { + var gitHostInfo = gitHosts[gitHostName] + var auth = null + if (parsed.auth && authProtocols[parsed.protocol]) { + auth = parsed.auth + } + var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null + var user = null + var project = null + var defaultRepresentation = null + if (shortcutMatch && shortcutMatch[1] === gitHostName) { + user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2]) + project = decodeURIComponent(shortcutMatch[3].replace(/\.git$/, '')) + defaultRepresentation = 'shortcut' + } else { + if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return + if (!gitHostInfo.protocols_re.test(parsed.protocol)) return + if (!parsed.path) return + var pathmatch = gitHostInfo.pathmatch + var matched = parsed.path.match(pathmatch) + if (!matched) return + /* istanbul ignore else */ + if (matched[1] !== null && matched[1] !== undefined) { + user = decodeURIComponent(matched[1].replace(/^:/, '')) + } + project = decodeURIComponent(matched[2]) + defaultRepresentation = protocolToRepresentation(parsed.protocol) + } + return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts) + } catch (ex) { + /* istanbul ignore else */ + if (ex instanceof URIError) { + } else throw ex + } + }).filter(function (gitHostInfo) { return gitHostInfo }) + if (matches.length !== 1) return + return matches[0] +} + +function isGitHubShorthand (arg) { + // Note: This does not fully test the git ref format. + // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html + // + // The only way to do this properly would be to shell out to + // git-check-ref-format, and as this is a fast sync function, + // we don't want to do that. Just let git fail if it turns + // out that the commit-ish is invalid. + // GH usernames cannot start with . or - + return /^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(arg) +} + +function fixupUnqualifiedGist (giturl) { + // necessary for round-tripping gists + var parsed = url.parse(giturl) + if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) { + return parsed.protocol + '/' + parsed.host + } else { + return giturl + } +} + +function parseGitUrl (giturl) { + var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/) + if (!matched) { + var legacy = url.parse(giturl) + // If we don't have url.URL, then sorry, this is just not fixable. + // This affects Node <= 6.12. + if (legacy.auth && typeof url.URL === 'function') { + // git urls can be in the form of scp-style/ssh-connect strings, like + // git+ssh://user@host.com:some/path, which the legacy url parser + // supports, but WhatWG url.URL class does not. However, the legacy + // parser de-urlencodes the username and password, so something like + // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes + // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong. + // Pull off just the auth and host, so we dont' get the confusing + // scp-style URL, then pass that to the WhatWG parser to get the + // auth properly escaped. + var authmatch = giturl.match(/[^@]+@[^:/]+/) + /* istanbul ignore else - this should be impossible */ + if (authmatch) { + var whatwg = new url.URL(authmatch[0]) + legacy.auth = whatwg.username || '' + if (whatwg.password) legacy.auth += ':' + whatwg.password + } + } + return legacy + } + return { + protocol: 'git+ssh:', + slashes: true, + auth: matched[1], + host: matched[2], + port: null, + hostname: matched[2], + hash: matched[4], + search: null, + query: null, + pathname: '/' + matched[3], + path: '/' + matched[3], + href: 'git+ssh://' + matched[1] + '@' + matched[2] + + '/' + matched[3] + (matched[4] || '') + } +} diff --git a/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/package.json b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/package.json new file mode 100644 index 0000000..8cc554c --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/hosted-git-info/package.json @@ -0,0 +1,40 @@ +{ + "name": "hosted-git-info", + "version": "2.8.9", + "description": "Provides metadata and conversions from repository urls for Github, Bitbucket and Gitlab", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/npm/hosted-git-info.git" + }, + "keywords": [ + "git", + "github", + "bitbucket", + "gitlab" + ], + "author": "Rebecca Turner (http://re-becca.org)", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/hosted-git-info/issues" + }, + "homepage": "https://github.com/npm/hosted-git-info", + "scripts": { + "prerelease": "npm t", + "postrelease": "npm publish --tag=ancient-legacy-fixes && git push --follow-tags", + "posttest": "standard", + "release": "standard-version -s", + "test:coverage": "tap --coverage-report=html -J --coverage=90 --no-esm test/*.js", + "test": "tap -J --coverage=90 --no-esm test/*.js" + }, + "devDependencies": { + "standard": "^11.0.1", + "standard-version": "^4.4.0", + "tap": "^12.7.0" + }, + "files": [ + "index.js", + "git-host.js", + "git-host-info.js" + ] +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/AUTHORS b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/AUTHORS new file mode 100644 index 0000000..66282ba --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/AUTHORS @@ -0,0 +1,4 @@ +# Names sorted by how much code was originally theirs. +Isaac Z. Schlueter +Meryn Stol +Robert Kowalski diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/LICENSE b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/LICENSE new file mode 100644 index 0000000..6ed662c --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/LICENSE @@ -0,0 +1,30 @@ +This package contains code originally written by Isaac Z. Schlueter. +Used with permission. + +Copyright (c) Meryn Stol ("Author") +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. 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. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/README.md b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/README.md new file mode 100644 index 0000000..d2bd7bc --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/README.md @@ -0,0 +1,106 @@ +# normalize-package-data [![Build Status](https://travis-ci.org/npm/normalize-package-data.png?branch=master)](https://travis-ci.org/npm/normalize-package-data) + +normalize-package-data exports a function that normalizes package metadata. This data is typically found in a package.json file, but in principle could come from any source - for example the npm registry. + +normalize-package-data is used by [read-package-json](https://npmjs.org/package/read-package-json) to normalize the data it reads from a package.json file. In turn, read-package-json is used by [npm](https://npmjs.org/package/npm) and various npm-related tools. + +## Installation + +``` +npm install normalize-package-data +``` + +## Usage + +Basic usage is really simple. You call the function that normalize-package-data exports. Let's call it `normalizeData`. + +```javascript +normalizeData = require('normalize-package-data') +packageData = require("./package.json") +normalizeData(packageData) +// packageData is now normalized +``` + +#### Strict mode + +You may activate strict validation by passing true as the second argument. + +```javascript +normalizeData = require('normalize-package-data') +packageData = require("./package.json") +normalizeData(packageData, true) +// packageData is now normalized +``` + +If strict mode is activated, only Semver 2.0 version strings are accepted. Otherwise, Semver 1.0 strings are accepted as well. Packages must have a name, and the name field must not have contain leading or trailing whitespace. + +#### Warnings + +Optionally, you may pass a "warning" function. It gets called whenever the `normalizeData` function encounters something that doesn't look right. It indicates less than perfect input data. + +```javascript +normalizeData = require('normalize-package-data') +packageData = require("./package.json") +warnFn = function(msg) { console.error(msg) } +normalizeData(packageData, warnFn) +// packageData is now normalized. Any number of warnings may have been logged. +``` + +You may combine strict validation with warnings by passing `true` as the second argument, and `warnFn` as third. + +When `private` field is set to `true`, warnings will be suppressed. + +### Potential exceptions + +If the supplied data has an invalid name or version vield, `normalizeData` will throw an error. Depending on where you call `normalizeData`, you may want to catch these errors so can pass them to a callback. + +## What normalization (currently) entails + +* The value of `name` field gets trimmed (unless in strict mode). +* The value of the `version` field gets cleaned by `semver.clean`. See [documentation for the semver module](https://github.com/isaacs/node-semver). +* If `name` and/or `version` fields are missing, they are set to empty strings. +* If `files` field is not an array, it will be removed. +* If `bin` field is a string, then `bin` field will become an object with `name` set to the value of the `name` field, and `bin` set to the original string value. +* If `man` field is a string, it will become an array with the original string as its sole member. +* If `keywords` field is string, it is considered to be a list of keywords separated by one or more white-space characters. It gets converted to an array by splitting on `\s+`. +* All people fields (`author`, `maintainers`, `contributors`) get converted into objects with name, email and url properties. +* If `bundledDependencies` field (a typo) exists and `bundleDependencies` field does not, `bundledDependencies` will get renamed to `bundleDependencies`. +* If the value of any of the dependencies fields (`dependencies`, `devDependencies`, `optionalDependencies`) is a string, it gets converted into an object with familiar `name=>value` pairs. +* The values in `optionalDependencies` get added to `dependencies`. The `optionalDependencies` array is left untouched. +* As of v2: Dependencies that point at known hosted git providers (currently: github, bitbucket, gitlab) will have their URLs canonicalized, but protocols will be preserved. +* As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL. +* If `description` field does not exist, but `readme` field does, then (more or less) the first paragraph of text that's found in the readme is taken as value for `description`. +* If `repository` field is a string, it will become an object with `url` set to the original string value, and `type` set to `"git"`. +* If `repository.url` is not a valid url, but in the style of "[owner-name]/[repo-name]", `repository.url` will be set to git+https://github.com/[owner-name]/[repo-name].git +* If `bugs` field is a string, the value of `bugs` field is changed into an object with `url` set to the original string value. +* If `bugs` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `bugs` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/issues . If the repository field points to a GitHub Gist repo url, the associated http url is chosen. +* If `bugs` field is an object, the resulting value only has email and url properties. If email and url properties are not strings, they are ignored. If no valid values for either email or url is found, bugs field will be removed. +* If `homepage` field is not a string, it will be removed. +* If the url in the `homepage` field does not specify a protocol, then http is assumed. For example, `myproject.org` will be changed to `http://myproject.org`. +* If `homepage` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `homepage` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]#readme . If the repository field points to a GitHub Gist repo url, the associated http url is chosen. + +### Rules for name field + +If `name` field is given, the value of the name field must be a string. The string may not: + +* start with a period. +* contain the following characters: `/@\s+%` +* contain any characters that would need to be encoded for use in urls. +* resemble the word `node_modules` or `favicon.ico` (case doesn't matter). + +### Rules for version field + +If `version` field is given, the value of the version field must be a valid *semver* string, as determined by the `semver.valid` method. See [documentation for the semver module](https://github.com/isaacs/node-semver). + +### Rules for license field + +The `license` field should be a valid *SPDX license expression* or one of the special values allowed by [validate-npm-package-license](https://npmjs.com/package/validate-npm-package-license). See [documentation for the license field in package.json](https://docs.npmjs.com/files/package.json#license). + +## Credits + +This package contains code based on read-package-json written by Isaac Z. Schlueter. Used with permisson. + +## License + +normalize-package-data is released under the [BSD 2-Clause License](http://opensource.org/licenses/MIT). +Copyright (c) 2013 Meryn Stol diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/extract_description.js b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/extract_description.js new file mode 100644 index 0000000..83f10aa --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/extract_description.js @@ -0,0 +1,14 @@ +module.exports = extractDescription + +// Extracts description from contents of a readme file in markdown format +function extractDescription (d) { + if (!d) return; + if (d === "ERROR: No README data found!") return; + // the first block of text before the first heading + // that isn't the first line heading + d = d.trim().split('\n') + for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++); + var l = d.length + for (var e = s + 1; e < l && d[e].trim(); e ++); + return d.slice(s, e).join(' ').trim() +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/fixer.js b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/fixer.js new file mode 100644 index 0000000..27682e9 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/fixer.js @@ -0,0 +1,418 @@ +var semver = require("semver") +var validateLicense = require('validate-npm-package-license'); +var hostedGitInfo = require("hosted-git-info") +var isBuiltinModule = require("resolve").isCore +var depTypes = ["dependencies","devDependencies","optionalDependencies"] +var extractDescription = require("./extract_description") +var url = require("url") +var typos = require("./typos.json") + +var fixer = module.exports = { + // default warning function + warn: function() {}, + + fixRepositoryField: function(data) { + if (data.repositories) { + this.warn("repositories"); + data.repository = data.repositories[0] + } + if (!data.repository) return this.warn("missingRepository") + if (typeof data.repository === "string") { + data.repository = { + type: "git", + url: data.repository + } + } + var r = data.repository.url || "" + if (r) { + var hosted = hostedGitInfo.fromUrl(r) + if (hosted) { + r = data.repository.url + = hosted.getDefaultRepresentation() == "shortcut" ? hosted.https() : hosted.toString() + } + } + + if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) { + this.warn("brokenGitUrl", r) + } + } + +, fixTypos: function(data) { + Object.keys(typos.topLevel).forEach(function (d) { + if (data.hasOwnProperty(d)) { + this.warn("typo", d, typos.topLevel[d]) + } + }, this) + } + +, fixScriptsField: function(data) { + if (!data.scripts) return + if (typeof data.scripts !== "object") { + this.warn("nonObjectScripts") + delete data.scripts + return + } + Object.keys(data.scripts).forEach(function (k) { + if (typeof data.scripts[k] !== "string") { + this.warn("nonStringScript") + delete data.scripts[k] + } else if (typos.script[k] && !data.scripts[typos.script[k]]) { + this.warn("typo", k, typos.script[k], "scripts") + } + }, this) + } + +, fixFilesField: function(data) { + var files = data.files + if (files && !Array.isArray(files)) { + this.warn("nonArrayFiles") + delete data.files + } else if (data.files) { + data.files = data.files.filter(function(file) { + if (!file || typeof file !== "string") { + this.warn("invalidFilename", file) + return false + } else { + return true + } + }, this) + } + } + +, fixBinField: function(data) { + if (!data.bin) return; + if (typeof data.bin === "string") { + var b = {} + var match + if (match = data.name.match(/^@[^/]+[/](.*)$/)) { + b[match[1]] = data.bin + } else { + b[data.name] = data.bin + } + data.bin = b + } + } + +, fixManField: function(data) { + if (!data.man) return; + if (typeof data.man === "string") { + data.man = [ data.man ] + } + } +, fixBundleDependenciesField: function(data) { + var bdd = "bundledDependencies" + var bd = "bundleDependencies" + if (data[bdd] && !data[bd]) { + data[bd] = data[bdd] + delete data[bdd] + } + if (data[bd] && !Array.isArray(data[bd])) { + this.warn("nonArrayBundleDependencies") + delete data[bd] + } else if (data[bd]) { + data[bd] = data[bd].filter(function(bd) { + if (!bd || typeof bd !== 'string') { + this.warn("nonStringBundleDependency", bd) + return false + } else { + if (!data.dependencies) { + data.dependencies = {} + } + if (!data.dependencies.hasOwnProperty(bd)) { + this.warn("nonDependencyBundleDependency", bd) + data.dependencies[bd] = "*" + } + return true + } + }, this) + } + } + +, fixDependencies: function(data, strict) { + var loose = !strict + objectifyDeps(data, this.warn) + addOptionalDepsToDeps(data, this.warn) + this.fixBundleDependenciesField(data) + + ;['dependencies','devDependencies'].forEach(function(deps) { + if (!(deps in data)) return + if (!data[deps] || typeof data[deps] !== "object") { + this.warn("nonObjectDependencies", deps) + delete data[deps] + return + } + Object.keys(data[deps]).forEach(function (d) { + var r = data[deps][d] + if (typeof r !== 'string') { + this.warn("nonStringDependency", d, JSON.stringify(r)) + delete data[deps][d] + } + var hosted = hostedGitInfo.fromUrl(data[deps][d]) + if (hosted) data[deps][d] = hosted.toString() + }, this) + }, this) + } + +, fixModulesField: function (data) { + if (data.modules) { + this.warn("deprecatedModules") + delete data.modules + } + } + +, fixKeywordsField: function (data) { + if (typeof data.keywords === "string") { + data.keywords = data.keywords.split(/,\s+/) + } + if (data.keywords && !Array.isArray(data.keywords)) { + delete data.keywords + this.warn("nonArrayKeywords") + } else if (data.keywords) { + data.keywords = data.keywords.filter(function(kw) { + if (typeof kw !== "string" || !kw) { + this.warn("nonStringKeyword"); + return false + } else { + return true + } + }, this) + } + } + +, fixVersionField: function(data, strict) { + // allow "loose" semver 1.0 versions in non-strict mode + // enforce strict semver 2.0 compliance in strict mode + var loose = !strict + if (!data.version) { + data.version = "" + return true + } + if (!semver.valid(data.version, loose)) { + throw new Error('Invalid version: "'+ data.version + '"') + } + data.version = semver.clean(data.version, loose) + return true + } + +, fixPeople: function(data) { + modifyPeople(data, unParsePerson) + modifyPeople(data, parsePerson) + } + +, fixNameField: function(data, options) { + if (typeof options === "boolean") options = {strict: options} + else if (typeof options === "undefined") options = {} + var strict = options.strict + if (!data.name && !strict) { + data.name = "" + return + } + if (typeof data.name !== "string") { + throw new Error("name field must be a string.") + } + if (!strict) + data.name = data.name.trim() + ensureValidName(data.name, strict, options.allowLegacyCase) + if (isBuiltinModule(data.name)) + this.warn("conflictingName", data.name) + } + + +, fixDescriptionField: function (data) { + if (data.description && typeof data.description !== 'string') { + this.warn("nonStringDescription") + delete data.description + } + if (data.readme && !data.description) + data.description = extractDescription(data.readme) + if(data.description === undefined) delete data.description; + if (!data.description) this.warn("missingDescription") + } + +, fixReadmeField: function (data) { + if (!data.readme) { + this.warn("missingReadme") + data.readme = "ERROR: No README data found!" + } + } + +, fixBugsField: function(data) { + if (!data.bugs && data.repository && data.repository.url) { + var hosted = hostedGitInfo.fromUrl(data.repository.url) + if(hosted && hosted.bugs()) { + data.bugs = {url: hosted.bugs()} + } + } + else if(data.bugs) { + var emailRe = /^.+@.*\..+$/ + if(typeof data.bugs == "string") { + if(emailRe.test(data.bugs)) + data.bugs = {email:data.bugs} + else if(url.parse(data.bugs).protocol) + data.bugs = {url: data.bugs} + else + this.warn("nonEmailUrlBugsString") + } + else { + bugsTypos(data.bugs, this.warn) + var oldBugs = data.bugs + data.bugs = {} + if(oldBugs.url) { + if(typeof(oldBugs.url) == "string" && url.parse(oldBugs.url).protocol) + data.bugs.url = oldBugs.url + else + this.warn("nonUrlBugsUrlField") + } + if(oldBugs.email) { + if(typeof(oldBugs.email) == "string" && emailRe.test(oldBugs.email)) + data.bugs.email = oldBugs.email + else + this.warn("nonEmailBugsEmailField") + } + } + if(!data.bugs.email && !data.bugs.url) { + delete data.bugs + this.warn("emptyNormalizedBugs") + } + } + } + +, fixHomepageField: function(data) { + if (!data.homepage && data.repository && data.repository.url) { + var hosted = hostedGitInfo.fromUrl(data.repository.url) + if (hosted && hosted.docs()) data.homepage = hosted.docs() + } + if (!data.homepage) return + + if(typeof data.homepage !== "string") { + this.warn("nonUrlHomepage") + return delete data.homepage + } + if(!url.parse(data.homepage).protocol) { + data.homepage = "http://" + data.homepage + } + } + +, fixLicenseField: function(data) { + if (!data.license) { + return this.warn("missingLicense") + } else{ + if ( + typeof(data.license) !== 'string' || + data.license.length < 1 || + data.license.trim() === '' + ) { + this.warn("invalidLicense") + } else { + if (!validateLicense(data.license).validForNewPackages) + this.warn("invalidLicense") + } + } + } +} + +function isValidScopedPackageName(spec) { + if (spec.charAt(0) !== '@') return false + + var rest = spec.slice(1).split('/') + if (rest.length !== 2) return false + + return rest[0] && rest[1] && + rest[0] === encodeURIComponent(rest[0]) && + rest[1] === encodeURIComponent(rest[1]) +} + +function isCorrectlyEncodedName(spec) { + return !spec.match(/[\/@\s\+%:]/) && + spec === encodeURIComponent(spec) +} + +function ensureValidName (name, strict, allowLegacyCase) { + if (name.charAt(0) === "." || + !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) || + (strict && (!allowLegacyCase) && name !== name.toLowerCase()) || + name.toLowerCase() === "node_modules" || + name.toLowerCase() === "favicon.ico") { + throw new Error("Invalid name: " + JSON.stringify(name)) + } +} + +function modifyPeople (data, fn) { + if (data.author) data.author = fn(data.author) + ;["maintainers", "contributors"].forEach(function (set) { + if (!Array.isArray(data[set])) return; + data[set] = data[set].map(fn) + }) + return data +} + +function unParsePerson (person) { + if (typeof person === "string") return person + var name = person.name || "" + var u = person.url || person.web + var url = u ? (" ("+u+")") : "" + var e = person.email || person.mail + var email = e ? (" <"+e+">") : "" + return name+email+url +} + +function parsePerson (person) { + if (typeof person !== "string") return person + var name = person.match(/^([^\(<]+)/) + var url = person.match(/\(([^\)]+)\)/) + var email = person.match(/<([^>]+)>/) + var obj = {} + if (name && name[0].trim()) obj.name = name[0].trim() + if (email) obj.email = email[1]; + if (url) obj.url = url[1]; + return obj +} + +function addOptionalDepsToDeps (data, warn) { + var o = data.optionalDependencies + if (!o) return; + var d = data.dependencies || {} + Object.keys(o).forEach(function (k) { + d[k] = o[k] + }) + data.dependencies = d +} + +function depObjectify (deps, type, warn) { + if (!deps) return {} + if (typeof deps === "string") { + deps = deps.trim().split(/[\n\r\s\t ,]+/) + } + if (!Array.isArray(deps)) return deps + warn("deprecatedArrayDependencies", type) + var o = {} + deps.filter(function (d) { + return typeof d === "string" + }).forEach(function(d) { + d = d.trim().split(/(:?[@\s><=])/) + var dn = d.shift() + var dv = d.join("") + dv = dv.trim() + dv = dv.replace(/^@/, "") + o[dn] = dv + }) + return o +} + +function objectifyDeps (data, warn) { + depTypes.forEach(function (type) { + if (!data[type]) return; + data[type] = depObjectify(data[type], type, warn) + }) +} + +function bugsTypos(bugs, warn) { + if (!bugs) return + Object.keys(bugs).forEach(function (k) { + if (typos.bugs[k]) { + warn("typo", k, typos.bugs[k], "bugs") + bugs[typos.bugs[k]] = bugs[k] + delete bugs[k] + } + }) +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/make_warning.js b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/make_warning.js new file mode 100644 index 0000000..4ac74ad --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/make_warning.js @@ -0,0 +1,23 @@ +var util = require("util") +var messages = require("./warning_messages.json") + +module.exports = function() { + var args = Array.prototype.slice.call(arguments, 0) + var warningName = args.shift() + if (warningName == "typo") { + return makeTypoWarning.apply(null,args) + } + else { + var msgTemplate = messages[warningName] ? messages[warningName] : warningName + ": '%s'" + args.unshift(msgTemplate) + return util.format.apply(null, args) + } +} + +function makeTypoWarning (providedName, probableName, field) { + if (field) { + providedName = field + "['" + providedName + "']" + probableName = field + "['" + probableName + "']" + } + return util.format(messages.typo, providedName, probableName) +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/normalize.js b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/normalize.js new file mode 100644 index 0000000..bd1bfef --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/normalize.js @@ -0,0 +1,39 @@ +module.exports = normalize + +var fixer = require("./fixer") +normalize.fixer = fixer + +var makeWarning = require("./make_warning") + +var fieldsToFix = ['name','version','description','repository','modules','scripts' + ,'files','bin','man','bugs','keywords','readme','homepage','license'] +var otherThingsToFix = ['dependencies','people', 'typos'] + +var thingsToFix = fieldsToFix.map(function(fieldName) { + return ucFirst(fieldName) + "Field" +}) +// two ways to do this in CoffeeScript on only one line, sub-70 chars: +// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + "Field" +// thingsToFix = (ucFirst(name) + "Field" for name in fieldsToFix) +thingsToFix = thingsToFix.concat(otherThingsToFix) + +function normalize (data, warn, strict) { + if(warn === true) warn = null, strict = true + if(!strict) strict = false + if(!warn || data.private) warn = function(msg) { /* noop */ } + + if (data.scripts && + data.scripts.install === "node-gyp rebuild" && + !data.scripts.preinstall) { + data.gypfile = true + } + fixer.warn = function() { warn(makeWarning.apply(null, arguments)) } + thingsToFix.forEach(function(thingName) { + fixer["fix" + ucFirst(thingName)](data, strict) + }) + data._id = data.name + "@" + data.version +} + +function ucFirst (string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/safe_format.js b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/safe_format.js new file mode 100644 index 0000000..b07f100 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/safe_format.js @@ -0,0 +1,9 @@ +var util = require('util') + +module.exports = function() { + var args = Array.prototype.slice.call(arguments, 0) + args.forEach(function(arg) { + if (!arg) throw new TypeError('Bad arguments.') + }) + return util.format.apply(null, arguments) +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/typos.json b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/typos.json new file mode 100644 index 0000000..7f9dd28 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/typos.json @@ -0,0 +1,25 @@ +{ + "topLevel": { + "dependancies": "dependencies" + ,"dependecies": "dependencies" + ,"depdenencies": "dependencies" + ,"devEependencies": "devDependencies" + ,"depends": "dependencies" + ,"dev-dependencies": "devDependencies" + ,"devDependences": "devDependencies" + ,"devDepenencies": "devDependencies" + ,"devdependencies": "devDependencies" + ,"repostitory": "repository" + ,"repo": "repository" + ,"prefereGlobal": "preferGlobal" + ,"hompage": "homepage" + ,"hampage": "homepage" + ,"autohr": "author" + ,"autor": "author" + ,"contributers": "contributors" + ,"publicationConfig": "publishConfig" + ,"script": "scripts" + }, + "bugs": { "web": "url", "name": "url" }, + "script": { "server": "start", "tests": "test" } +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/warning_messages.json b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/warning_messages.json new file mode 100644 index 0000000..4890f50 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/lib/warning_messages.json @@ -0,0 +1,30 @@ +{ + "repositories": "'repositories' (plural) Not supported. Please pick one as the 'repository' field" + ,"missingRepository": "No repository field." + ,"brokenGitUrl": "Probably broken git url: %s" + ,"nonObjectScripts": "scripts must be an object" + ,"nonStringScript": "script values must be string commands" + ,"nonArrayFiles": "Invalid 'files' member" + ,"invalidFilename": "Invalid filename in 'files' list: %s" + ,"nonArrayBundleDependencies": "Invalid 'bundleDependencies' list. Must be array of package names" + ,"nonStringBundleDependency": "Invalid bundleDependencies member: %s" + ,"nonDependencyBundleDependency": "Non-dependency in bundleDependencies: %s" + ,"nonObjectDependencies": "%s field must be an object" + ,"nonStringDependency": "Invalid dependency: %s %s" + ,"deprecatedArrayDependencies": "specifying %s as array is deprecated" + ,"deprecatedModules": "modules field is deprecated" + ,"nonArrayKeywords": "keywords should be an array of strings" + ,"nonStringKeyword": "keywords should be an array of strings" + ,"conflictingName": "%s is also the name of a node core module." + ,"nonStringDescription": "'description' field should be a string" + ,"missingDescription": "No description" + ,"missingReadme": "No README data" + ,"missingLicense": "No license field." + ,"nonEmailUrlBugsString": "Bug string field must be url, email, or {email,url}" + ,"nonUrlBugsUrlField": "bugs.url field must be a string url. Deleted." + ,"nonEmailBugsEmailField": "bugs.email field must be a string email. Deleted." + ,"emptyNormalizedBugs": "Normalized value of bugs field is an empty object. Deleted." + ,"nonUrlHomepage": "homepage field must be a string url. Deleted." + ,"invalidLicense": "license should be a valid SPDX license expression" + ,"typo": "%s should probably be %s." +} diff --git a/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/package.json b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/package.json new file mode 100644 index 0000000..dea34bb --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/normalize-package-data/package.json @@ -0,0 +1,31 @@ +{ + "name": "normalize-package-data", + "version": "2.5.0", + "author": "Meryn Stol ", + "description": "Normalizes data that can be found in package.json files.", + "license": "BSD-2-Clause", + "repository": { + "type": "git", + "url": "git://github.com/npm/normalize-package-data.git" + }, + "main": "lib/normalize.js", + "scripts": { + "test": "tap test/*.js" + }, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "devDependencies": { + "async": "^2.6.1", + "tap": "^12.4.0", + "underscore": "^1.8.3" + }, + "files": [ + "lib/*.js", + "lib/*.json", + "AUTHORS" + ] +} diff --git a/mybulma/node_modules/read-pkg/node_modules/semver/CHANGELOG.md b/mybulma/node_modules/read-pkg/node_modules/semver/CHANGELOG.md new file mode 100644 index 0000000..66304fd --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/semver/CHANGELOG.md @@ -0,0 +1,39 @@ +# changes log + +## 5.7 + +* Add `minVersion` method + +## 5.6 + +* Move boolean `loose` param to an options object, with + backwards-compatibility protection. +* Add ability to opt out of special prerelease version handling with + the `includePrerelease` option flag. + +## 5.5 + +* Add version coercion capabilities + +## 5.4 + +* Add intersection checking + +## 5.3 + +* Add `minSatisfying` method + +## 5.2 + +* Add `prerelease(v)` that returns prerelease components + +## 5.1 + +* Add Backus-Naur for ranges +* Remove excessively cute inspection methods + +## 5.0 + +* Remove AMD/Browserified build artifacts +* Fix ltr and gtr when using the `*` range +* Fix for range `*` with a prerelease identifier diff --git a/mybulma/node_modules/read-pkg/node_modules/semver/LICENSE b/mybulma/node_modules/read-pkg/node_modules/semver/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/semver/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/read-pkg/node_modules/semver/README.md b/mybulma/node_modules/read-pkg/node_modules/semver/README.md new file mode 100644 index 0000000..f8dfa5a --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/semver/README.md @@ -0,0 +1,412 @@ +semver(1) -- The semantic versioner for npm +=========================================== + +## Install + +```bash +npm install --save semver +```` + +## Usage + +As a node module: + +```js +const semver = require('semver') + +semver.valid('1.2.3') // '1.2.3' +semver.valid('a.b.c') // null +semver.clean(' =v1.2.3 ') // '1.2.3' +semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true +semver.gt('1.2.3', '9.8.7') // false +semver.lt('1.2.3', '9.8.7') // true +semver.minVersion('>=1.0.0') // '1.0.0' +semver.valid(semver.coerce('v2')) // '2.0.0' +semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' +``` + +As a command-line utility: + +``` +$ semver -h + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, or prerelease. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them. +``` + +## Versions + +A "version" is described by the `v2.0.0` specification found at +. + +A leading `"="` or `"v"` character is stripped off and ignored. + +## Ranges + +A `version range` is a set of `comparators` which specify versions +that satisfy the range. + +A `comparator` is composed of an `operator` and a `version`. The set +of primitive `operators` is: + +* `<` Less than +* `<=` Less than or equal to +* `>` Greater than +* `>=` Greater than or equal to +* `=` Equal. If no operator is specified, then equality is assumed, + so this operator is optional, but MAY be included. + +For example, the comparator `>=1.2.7` would match the versions +`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` +or `1.1.0`. + +Comparators can be joined by whitespace to form a `comparator set`, +which is satisfied by the **intersection** of all of the comparators +it includes. + +A range is composed of one or more comparator sets, joined by `||`. A +version matches a range if and only if every comparator in at least +one of the `||`-separated comparator sets is satisfied by the version. + +For example, the range `>=1.2.7 <1.3.0` would match the versions +`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, +or `1.1.0`. + +The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, +`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. + +### Prerelease Tags + +If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then +it will only be allowed to satisfy comparator sets if at least one +comparator with the same `[major, minor, patch]` tuple also has a +prerelease tag. + +For example, the range `>1.2.3-alpha.3` would be allowed to match the +version `1.2.3-alpha.7`, but it would *not* be satisfied by +`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater +than" `1.2.3-alpha.3` according to the SemVer sort rules. The version +range only accepts prerelease tags on the `1.2.3` version. The +version `3.4.5` *would* satisfy the range, because it does not have a +prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. + +The purpose for this behavior is twofold. First, prerelease versions +frequently are updated very quickly, and contain many breaking changes +that are (by the author's design) not yet fit for public consumption. +Therefore, by default, they are excluded from range matching +semantics. + +Second, a user who has opted into using a prerelease version has +clearly indicated the intent to use *that specific* set of +alpha/beta/rc versions. By including a prerelease tag in the range, +the user is indicating that they are aware of the risk. However, it +is still not appropriate to assume that they have opted into taking a +similar risk on the *next* set of prerelease versions. + +Note that this behavior can be suppressed (treating all prerelease +versions as if they were normal versions, for the purpose of range +matching) by setting the `includePrerelease` flag on the options +object to any +[functions](https://github.com/npm/node-semver#functions) that do +range matching. + +#### Prerelease Identifiers + +The method `.inc` takes an additional `identifier` string argument that +will append the value of the string as a prerelease identifier: + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta') +// '1.2.4-beta.0' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta +1.2.4-beta.0 +``` + +Which then can be used to increment further: + +```bash +$ semver 1.2.4-beta.0 -i prerelease +1.2.4-beta.1 +``` + +### Advanced Range Syntax + +Advanced range syntax desugars to primitive comparators in +deterministic ways. + +Advanced ranges may be combined in the same way as primitive +comparators using white space or `||`. + +#### Hyphen Ranges `X.Y.Z - A.B.C` + +Specifies an inclusive set. + +* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` + +If a partial version is provided as the first version in the inclusive +range, then the missing pieces are replaced with zeroes. + +* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` + +If a partial version is provided as the second version in the +inclusive range, then all versions that start with the supplied parts +of the tuple are accepted, but nothing that would be greater than the +provided tuple parts. + +* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0` +* `1.2.3 - 2` := `>=1.2.3 <3.0.0` + +#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` + +Any of `X`, `x`, or `*` may be used to "stand in" for one of the +numeric values in the `[major, minor, patch]` tuple. + +* `*` := `>=0.0.0` (Any version satisfies) +* `1.x` := `>=1.0.0 <2.0.0` (Matching major version) +* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions) + +A partial version range is treated as an X-Range, so the special +character is in fact optional. + +* `""` (empty string) := `*` := `>=0.0.0` +* `1` := `1.x.x` := `>=1.0.0 <2.0.0` +* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0` + +#### Tilde Ranges `~1.2.3` `~1.2` `~1` + +Allows patch-level changes if a minor version is specified on the +comparator. Allows minor-level changes if not. + +* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0` +* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`) +* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`) +* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0` +* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`) +* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`) +* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. + +#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` + +Allows changes that do not modify the left-most non-zero digit in the +`[major, minor, patch]` tuple. In other words, this allows patch and +minor updates for versions `1.0.0` and above, patch updates for +versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. + +Many authors treat a `0.x` version as if the `x` were the major +"breaking-change" indicator. + +Caret ranges are ideal when an author may make breaking changes +between `0.2.4` and `0.3.0` releases, which is a common practice. +However, it presumes that there will *not* be breaking changes between +`0.2.4` and `0.2.5`. It allows for changes that are presumed to be +additive (but non-breaking), according to commonly observed practices. + +* `^1.2.3` := `>=1.2.3 <2.0.0` +* `^0.2.3` := `>=0.2.3 <0.3.0` +* `^0.0.3` := `>=0.0.3 <0.0.4` +* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. +* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the + `0.0.3` version *only* will be allowed, if they are greater than or + equal to `beta`. So, `0.0.3-pr.2` would be allowed. + +When parsing caret ranges, a missing `patch` value desugars to the +number `0`, but will allow flexibility within that value, even if the +major and minor versions are both `0`. + +* `^1.2.x` := `>=1.2.0 <2.0.0` +* `^0.0.x` := `>=0.0.0 <0.1.0` +* `^0.0` := `>=0.0.0 <0.1.0` + +A missing `minor` and `patch` values will desugar to zero, but also +allow flexibility within those values, even if the major version is +zero. + +* `^1.x` := `>=1.0.0 <2.0.0` +* `^0.x` := `>=0.0.0 <1.0.0` + +### Range Grammar + +Putting all this together, here is a Backus-Naur grammar for ranges, +for the benefit of parser authors: + +```bnf +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ +``` + +## Functions + +All methods and classes take a final `options` object argument. All +options in this object are `false` by default. The options supported +are: + +- `loose` Be more forgiving about not-quite-valid semver strings. + (Any resulting output will always be 100% strict compliant, of + course.) For backwards compatibility reasons, if the `options` + argument is a boolean value instead of an object, it is interpreted + to be the `loose` param. +- `includePrerelease` Set to suppress the [default + behavior](https://github.com/npm/node-semver#prerelease-tags) of + excluding prerelease tagged versions from ranges unless they are + explicitly opted into. + +Strict-mode Comparators and Ranges will be strict about the SemVer +strings that they parse. + +* `valid(v)`: Return the parsed version, or null if it's not valid. +* `inc(v, release)`: Return the version incremented by the release + type (`major`, `premajor`, `minor`, `preminor`, `patch`, + `prepatch`, or `prerelease`), or null if it's not valid + * `premajor` in one call will bump the version up to the next major + version and down to a prerelease of that major version. + `preminor`, and `prepatch` work the same way. + * If called from a non-prerelease version, the `prerelease` will work the + same as `prepatch`. It increments the patch version, then makes a + prerelease. If the input version is already a prerelease it simply + increments it. +* `prerelease(v)`: Returns an array of prerelease components, or null + if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]` +* `major(v)`: Return the major version number. +* `minor(v)`: Return the minor version number. +* `patch(v)`: Return the patch version number. +* `intersects(r1, r2, loose)`: Return true if the two supplied ranges + or comparators intersect. +* `parse(v)`: Attempt to parse a string as a semantic version, returning either + a `SemVer` object or `null`. + +### Comparison + +* `gt(v1, v2)`: `v1 > v2` +* `gte(v1, v2)`: `v1 >= v2` +* `lt(v1, v2)`: `v1 < v2` +* `lte(v1, v2)`: `v1 <= v2` +* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, + even if they're not the exact same string. You already know how to + compare strings. +* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. +* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call + the corresponding function above. `"==="` and `"!=="` do simple + string comparison, but are included for completeness. Throws if an + invalid comparison string is provided. +* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions + in descending order when passed to `Array.sort()`. +* `diff(v1, v2)`: Returns difference between two versions by the release type + (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), + or null if the versions are the same. + +### Comparators + +* `intersects(comparator)`: Return true if the comparators intersect + +### Ranges + +* `validRange(range)`: Return the valid range or null if it's not valid +* `satisfies(version, range)`: Return true if the version satisfies the + range. +* `maxSatisfying(versions, range)`: Return the highest version in the list + that satisfies the range, or `null` if none of them do. +* `minSatisfying(versions, range)`: Return the lowest version in the list + that satisfies the range, or `null` if none of them do. +* `minVersion(range)`: Return the lowest version that can possibly match + the given range. +* `gtr(version, range)`: Return `true` if version is greater than all the + versions possible in the range. +* `ltr(version, range)`: Return `true` if version is less than all the + versions possible in the range. +* `outside(version, range, hilo)`: Return true if the version is outside + the bounds of the range in either the high or low direction. The + `hilo` argument must be either the string `'>'` or `'<'`. (This is + the function called by `gtr` and `ltr`.) +* `intersects(range)`: Return true if any of the ranges comparators intersect + +Note that, since ranges may be non-contiguous, a version might not be +greater than a range, less than a range, *or* satisfy a range! For +example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` +until `2.0.0`, so the version `1.2.10` would not be greater than the +range (because `2.0.1` satisfies, which is higher), nor less than the +range (since `1.2.8` satisfies, which is lower), and it also does not +satisfy the range. + +If you want to know if a version satisfies or does not satisfy a +range, use the `satisfies(version, range)` function. + +### Coercion + +* `coerce(version)`: Coerces a string to semver if possible + +This aims to provide a very forgiving translation of a non-semver string to +semver. It looks for the first digit in a string, and consumes all +remaining characters which satisfy at least a partial semver (e.g., `1`, +`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer +versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All +surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes +`3.4.0`). Only text which lacks digits will fail coercion (`version one` +is not valid). The maximum length for any semver component considered for +coercion is 16 characters; longer components will be ignored +(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any +semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value +components are invalid (`9999999999999999.4.7.4` is likely invalid). diff --git a/mybulma/node_modules/read-pkg/node_modules/semver/bin/semver b/mybulma/node_modules/read-pkg/node_modules/semver/bin/semver new file mode 100644 index 0000000..801e77f --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/semver/bin/semver @@ -0,0 +1,160 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +var argv = process.argv.slice(2) + +var versions = [] + +var range = [] + +var inc = null + +var version = require('../package.json').version + +var loose = false + +var includePrerelease = false + +var coerce = false + +var identifier + +var semver = require('../semver') + +var reverse = false + +var options = {} + +main() + +function main () { + if (!argv.length) return help() + while (argv.length) { + var a = argv.shift() + var indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + a = a.slice(0, indexOfEqualSign) + argv.unshift(a.slice(indexOfEqualSign + 1)) + } + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + switch (argv[0]) { + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': + inc = argv.shift() + break + default: + inc = 'patch' + break + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-c': case '--coerce': + coerce = true + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + var options = { loose: loose, includePrerelease: includePrerelease } + + versions = versions.map(function (v) { + return coerce ? (semver.coerce(v) || { version: v }).version : v + }).filter(function (v) { + return semver.valid(v) + }) + if (!versions.length) return fail() + if (inc && (versions.length !== 1 || range.length)) { return failInc() } + + for (var i = 0, l = range.length; i < l; i++) { + versions = versions.filter(function (v) { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) return fail() + } + return success(versions) +} + +function failInc () { + console.error('--inc can only be used on a single version with no range') + fail() +} + +function fail () { process.exit(1) } + +function success () { + var compare = reverse ? 'rcompare' : 'compare' + versions.sort(function (a, b) { + return semver[compare](a, b, options) + }).map(function (v) { + return semver.clean(v, options) + }).map(function (v) { + return inc ? semver.inc(v, inc, options, identifier) : v + }).forEach(function (v, i, _) { console.log(v) }) +} + +function help () { + console.log(['SemVer ' + version, + '', + 'A JavaScript implementation of the https://semver.org/ specification', + 'Copyright Isaac Z. Schlueter', + '', + 'Usage: semver [options] [ [...]]', + 'Prints valid versions sorted by SemVer precedence', + '', + 'Options:', + '-r --range ', + ' Print versions that match the specified range.', + '', + '-i --increment []', + ' Increment a version by the specified level. Level can', + ' be one of: major, minor, patch, premajor, preminor,', + " prepatch, or prerelease. Default level is 'patch'.", + ' Only one version may be specified.', + '', + '--preid ', + ' Identifier to be used to prefix premajor, preminor,', + ' prepatch or prerelease version increments.', + '', + '-l --loose', + ' Interpret versions and ranges loosely', + '', + '-p --include-prerelease', + ' Always include prerelease versions in range matching', + '', + '-c --coerce', + ' Coerce a string into SemVer if possible', + ' (does not imply --loose)', + '', + 'Program exits successfully if any valid version satisfies', + 'all supplied ranges, and prints all satisfying versions.', + '', + 'If no satisfying versions are found, then exits failure.', + '', + 'Versions are printed in ascending order, so supplying', + 'multiple versions to the utility will just sort them.' + ].join('\n')) +} diff --git a/mybulma/node_modules/read-pkg/node_modules/semver/package.json b/mybulma/node_modules/read-pkg/node_modules/semver/package.json new file mode 100644 index 0000000..69d2db1 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/semver/package.json @@ -0,0 +1,28 @@ +{ + "name": "semver", + "version": "5.7.1", + "description": "The semantic version parser used by npm.", + "main": "semver.js", + "scripts": { + "test": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --all; git push origin --tags" + }, + "devDependencies": { + "tap": "^13.0.0-rc.18" + }, + "license": "ISC", + "repository": "https://github.com/npm/node-semver", + "bin": { + "semver": "./bin/semver" + }, + "files": [ + "bin", + "range.bnf", + "semver.js" + ], + "tap": { + "check-coverage": true + } +} diff --git a/mybulma/node_modules/read-pkg/node_modules/semver/range.bnf b/mybulma/node_modules/read-pkg/node_modules/semver/range.bnf new file mode 100644 index 0000000..d4c6ae0 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/semver/range.bnf @@ -0,0 +1,16 @@ +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | [1-9] ( [0-9] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ diff --git a/mybulma/node_modules/read-pkg/node_modules/semver/semver.js b/mybulma/node_modules/read-pkg/node_modules/semver/semver.js new file mode 100644 index 0000000..d315d5d --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/semver/semver.js @@ -0,0 +1,1483 @@ +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' + +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 + +// The actual regexps go on exports.re +var re = exports.re = [] +var src = exports.src = [] +var R = 0 + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +var NUMERICIDENTIFIER = R++ +src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' +var NUMERICIDENTIFIERLOOSE = R++ +src[NUMERICIDENTIFIERLOOSE] = '[0-9]+' + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +var NONNUMERICIDENTIFIER = R++ +src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +var MAINVERSION = R++ +src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')' + +var MAINVERSIONLOOSE = R++ +src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +var PRERELEASEIDENTIFIER = R++ +src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +var PRERELEASEIDENTIFIERLOOSE = R++ +src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +var PRERELEASE = R++ +src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + + '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))' + +var PRERELEASELOOSE = R++ +src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +var BUILDIDENTIFIER = R++ +src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +var BUILD = R++ +src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +var FULL = R++ +var FULLPLAIN = 'v?' + src[MAINVERSION] + + src[PRERELEASE] + '?' + + src[BUILD] + '?' + +src[FULL] = '^' + FULLPLAIN + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + + src[PRERELEASELOOSE] + '?' + + src[BUILD] + '?' + +var LOOSE = R++ +src[LOOSE] = '^' + LOOSEPLAIN + '$' + +var GTLT = R++ +src[GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +var XRANGEIDENTIFIERLOOSE = R++ +src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +var XRANGEIDENTIFIER = R++ +src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*' + +var XRANGEPLAIN = R++ +src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:' + src[PRERELEASE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGEPLAINLOOSE = R++ +src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[PRERELEASELOOSE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGE = R++ +src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$' +var XRANGELOOSE = R++ +src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +var COERCE = R++ +src[COERCE] = '(?:^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +var LONETILDE = R++ +src[LONETILDE] = '(?:~>?)' + +var TILDETRIM = R++ +src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+' +re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g') +var tildeTrimReplace = '$1~' + +var TILDE = R++ +src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$' +var TILDELOOSE = R++ +src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +var LONECARET = R++ +src[LONECARET] = '(?:\\^)' + +var CARETTRIM = R++ +src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' +re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') +var caretTrimReplace = '$1^' + +var CARET = R++ +src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$' +var CARETLOOSE = R++ +src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +var COMPARATORLOOSE = R++ +src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$' +var COMPARATOR = R++ +src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +var COMPARATORTRIM = R++ +src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + + '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +var HYPHENRANGE = R++ +src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAIN] + ')' + + '\\s*$' + +var HYPHENRANGELOOSE = R++ +src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +var STAR = R++ +src[STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? re[LOOSE] : re[FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} + +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + + var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]) + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() +} + +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} + +SemVer.prototype.toString = function () { + return this.version +} + +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return this.compareMain(other) || this.comparePre(other) +} + +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) +} + +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format() + this.raw = this.version + return this +} + +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } +} + +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} + +exports.compareIdentifiers = compareIdentifiers + +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} + +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} + +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} + +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} + +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} + +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} + +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} + +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compare(a, b, loose) + }) +} + +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.rcompare(a, b, loose) + }) +} + +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} + +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} + +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} + +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} + +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} + +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} + +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } + + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) +} + +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var m = comp.match(r) + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} + +Comparator.prototype.toString = function () { + return this.value +} + +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY) { + return true + } + + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } + + return cmp(version, this.operator, this.semver, this.options) +} + +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + var rangeTmp + + if (this.operator === '') { + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} + +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First, split based on boolean or || + this.raw = range + this.set = range.split(/\s*\|\|\s*/).map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + range) + } + + this.format() +} + +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} + +Range.prototype.toString = function () { + return this.range +} + +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + range = range.trim() + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, re[COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) + + return set +} + +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return thisComparators.every(function (thisComparator) { + return range.set.some(function (rangeComparators) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + }) + }) +} + +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? re[TILDELOOSE] : re[TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? re[CARETLOOSE] : re[CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } + + debug('caret return', ret) + return ret + }) +} + +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} + +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? re[XRANGELOOSE] : re[XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + ret = gtlt + M + '.' + m + '.' + p + } else if (xm) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (xp) { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[STAR], '') +} + +// This function is passed to string.replace(re[HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + + return (from + ' ' + to).trim() +} + +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} + +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} + +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} + +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} + +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} + +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + var high = null + var low = null + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version) { + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + var match = version.match(re[COERCE]) + + if (match == null) { + return null + } + + return parse(match[1] + + '.' + (match[2] || '0') + + '.' + (match[3] || '0')) +} diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/index.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/index.d.ts new file mode 100644 index 0000000..4ef4b18 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/index.d.ts @@ -0,0 +1,15 @@ +// Basic +export * from './source/basic'; + +// Utilities +export {Except} from './source/except'; +export {Mutable} from './source/mutable'; +export {Merge} from './source/merge'; +export {MergeExclusive} from './source/merge-exclusive'; +export {RequireAtLeastOne} from './source/require-at-least-one'; +export {ReadonlyDeep} from './source/readonly-deep'; +export {LiteralUnion} from './source/literal-union'; +export {Promisable} from './source/promisable'; + +// Miscellaneous +export {PackageJson} from './source/package-json'; diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/license b/mybulma/node_modules/read-pkg/node_modules/type-fest/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/package.json b/mybulma/node_modules/read-pkg/node_modules/type-fest/package.json new file mode 100644 index 0000000..2345809 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/package.json @@ -0,0 +1,51 @@ +{ + "name": "type-fest", + "version": "0.6.0", + "description": "A collection of essential TypeScript types", + "license": "(MIT OR CC0-1.0)", + "repository": "sindresorhus/type-fest", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && tsd" + }, + "files": [ + "index.d.ts", + "source" + ], + "keywords": [ + "typescript", + "ts", + "types", + "utility", + "util", + "utilities", + "omit", + "merge", + "json" + ], + "devDependencies": { + "@sindresorhus/tsconfig": "^0.4.0", + "@typescript-eslint/eslint-plugin": "^1.9.0", + "@typescript-eslint/parser": "^1.10.2", + "eslint-config-xo-typescript": "^0.14.0", + "tsd": "^0.7.3", + "xo": "^0.24.0" + }, + "xo": { + "extends": "xo-typescript", + "extensions": [ + "ts" + ], + "rules": { + "import/no-unresolved": "off", + "@typescript-eslint/indent": "off" + } + } +} diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/readme.md b/mybulma/node_modules/read-pkg/node_modules/type-fest/readme.md new file mode 100644 index 0000000..ff3840c --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/readme.md @@ -0,0 +1,119 @@ +
    +
    +
    + type-fest +
    +
    + A collection of essential TypeScript types +
    +
    +
    +
    +
    + +[![Build Status](https://travis-ci.com/sindresorhus/type-fest.svg?branch=master)](https://travis-ci.com/sindresorhus/type-fest) +[![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) + + +Many of the types here should have been built-in. You can help by suggesting some of them to the [TypeScript project](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). + +Either add this package as a dependency or copy-paste the needed types. No credit required. 👌 + +PR welcome for additional commonly needed types and docs improvements. Read the [contributing guidelines](.github/contributing.md) first. + + +## Install + +``` +$ npm install type-fest +``` + +*Requires TypeScript >=3.2* + + +## Usage + +```ts +import {Except} from 'type-fest'; + +type Foo = { + unicorn: string; + rainbow: boolean; +}; + +type FooWithoutRainbow = Except; +//=> {unicorn: string} +``` + + +## API + +Click the type names for complete docs. + +### Basic + +- [`Primitive`](source/basic.d.ts) - Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive). +- [`Class`](source/basic.d.ts) - Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes). +- [`TypedArray`](source/basic.d.ts) - Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`. +- [`JsonObject`](source/basic.d.ts) - Matches a JSON object. +- [`JsonArray`](source/basic.d.ts) - Matches a JSON array. +- [`JsonValue`](source/basic.d.ts) - Matches any valid JSON value. +- [`ObservableLike`](source/basic.d.ts) - Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable). + +### Utilities + +- [`Except`](source/except.d.ts) - Create a type from an object type without certain keys. This is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). +- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` properties into a mutable object. Inverse of `Readonly`. +- [`Merge`](source/merge.d.ts) - Merge two types into a new type. Keys of the second type overrides keys of the first type. +- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive properties. +- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given properties. +- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of a `object`/`Map`/`Set`/`Array` type. +- [`LiteralUnion`](source/literal-union.d.ts) - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). +- [`Promisable`](source/promisable.d.ts) - Create a type that represents either the value or the value wrapped in `PromiseLike`. + +### Miscellaneous + +- [`PackageJson`](source/package-json.d.ts) - Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). + + +## Declined types + +*If we decline a type addition, we will make sure to document the better solution here.* + +- [`Diff` and `Spread`](https://github.com/sindresorhus/type-fest/pull/7) - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider. + + +## Tips + +### Built-in types + +There are many advanced types most users don't know about. + +- [`Partial`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) - Make all properties in `T` optional. +- [`Required`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1408-L1413) - Make all properties in `T` required. +- [`Readonly`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) - Make all properties in `T` readonly. +- [`Pick`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1422-L1427) - From `T`, pick a set of properties whose keys are in the union `K`. +- [`Record`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434) - Construct a type with a set of properties `K` of type `T`. +- [`Exclude`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1436-L1439) - Exclude from `T` those types that are assignable to `U`. +- [`Extract`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1441-L1444) - Extract from `T` those types that are assignable to `U`. +- [`NonNullable`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1446-L1449) - Exclude `null` and `undefined` from `T`. +- [`Parameters`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1451-L1454) - Obtain the parameters of a function type in a tuple. +- [`ConstructorParameters`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1456-L1459) - Obtain the parameters of a constructor function type in a tuple. +- [`ReturnType`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1461-L1464) – Obtain the return type of a function type. +- [`InstanceType`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1466-L1469) – Obtain the instance type of a constructor function type. + +You can find some examples in the [TypeScript docs](https://www.typescriptlang.org/docs/handbook/advanced-types.html#predefined-conditional-types). + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Jarek Radosz](https://github.com/CvX) +- [Dimitri Benin](https://github.com/BendingBender) + + +## License + +(MIT OR CC0-1.0) diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts new file mode 100644 index 0000000..f308c5f --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts @@ -0,0 +1,67 @@ +/// + +// TODO: This can just be `export type Primitive = not object` when the `not` keyword is out. +/** +Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive). +*/ +export type Primitive = + | null + | undefined + | string + | number + | boolean + | symbol + | bigint; + +// TODO: Remove the `= unknown` sometime in the future when most users are on TS 3.5 as it's now the default +/** +Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes). +*/ +export type Class = new(...arguments_: any[]) => T; + +/** +Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`. +*/ +export type TypedArray = + | Int8Array + | Uint8Array + | Uint8ClampedArray + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | Float32Array + | Float64Array + | BigInt64Array + | BigUint64Array; + +/** +Matches a JSON object. + +This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`. +*/ +export type JsonObject = {[key: string]: JsonValue}; + +/** +Matches a JSON array. +*/ +export interface JsonArray extends Array {} + +/** +Matches any valid JSON value. +*/ +export type JsonValue = string | number | boolean | null | JsonObject | JsonArray; + +declare global { + interface SymbolConstructor { + readonly observable: symbol; + } +} + +/** +Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable). +*/ +export interface ObservableLike { + subscribe(observer: (value: unknown) => void): void; + [Symbol.observable](): ObservableLike; +} diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts new file mode 100644 index 0000000..7dedbaa --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/except.d.ts @@ -0,0 +1,22 @@ +/** +Create a type from an object type without certain keys. + +This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically. + +Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/30825) if you want to have the stricter version as a built-in in TypeScript. + +@example +``` +import {Except} from 'type-fest'; + +type Foo = { + a: number; + b: string; + c: boolean; +}; + +type FooWithoutA = Except; +//=> {b: string}; +``` +*/ +export type Except = Pick>; diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts new file mode 100644 index 0000000..52e8de6 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts @@ -0,0 +1,33 @@ +import {Primitive} from './basic'; + +/** +Allows creating a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. + +Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals. + +This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore. + +@example +``` +import {LiteralUnion} from 'type-fest'; + +// Before + +type Pet = 'dog' | 'cat' | string; + +const pet: Pet = ''; +// Start typing in your TypeScript-enabled IDE. +// You **will not** get auto-completion for `dog` and `cat` literals. + +// After + +type Pet2 = LiteralUnion<'dog' | 'cat', string>; + +const pet: Pet2 = ''; +// You **will** get auto-completion for `dog` and `cat` literals. +``` + */ +export type LiteralUnion< + LiteralType extends BaseType, + BaseType extends Primitive +> = LiteralType | (BaseType & {_?: never}); diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts new file mode 100644 index 0000000..6290f42 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts @@ -0,0 +1,39 @@ +// Helper type. Not useful on its own. +type Without = {[KeyType in Exclude]?: never}; + +/** +Create a type that has mutually exclusive properties. + +This type was inspired by [this comment](https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604). + +This type works with a helper type, called `Without`. `Without` produces a type that has only keys from `FirstType` which are not present on `SecondType` and sets the value type for these keys to `never`. This helper type is then used in `MergeExclusive` to remove keys from either `FirstType` or `SecondType`. + +@example +``` +import {MergeExclusive} from 'type-fest'; + +interface ExclusiveVariation1 { + exclusive1: boolean; +} + +interface ExclusiveVariation2 { + exclusive2: string; +} + +type ExclusiveOptions = MergeExclusive; + +let exclusiveOptions: ExclusiveOptions; + +exclusiveOptions = {exclusive1: true}; +//=> Works +exclusiveOptions = {exclusive2: 'hi'}; +//=> Works +exclusiveOptions = {exclusive1: true, exclusive2: 'hi'}; +//=> Error +``` +*/ +export type MergeExclusive = + (FirstType | SecondType) extends object ? + (Without & SecondType) | (Without & FirstType) : + FirstType | SecondType; + diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts new file mode 100644 index 0000000..4b3920b --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts @@ -0,0 +1,22 @@ +import {Except} from './except'; + +/** +Merge two types into a new type. Keys of the second type overrides keys of the first type. + +@example +``` +import {Merge} from 'type-fest'; + +type Foo = { + a: number; + b: string; +}; + +type Bar = { + b: number; +}; + +const ab: Merge = {a: 1, b: 2}; +``` +*/ +export type Merge = Except> & SecondType; diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts new file mode 100644 index 0000000..5c98039 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts @@ -0,0 +1,22 @@ +/** +Convert an object with `readonly` properties into a mutable object. Inverse of `Readonly`. + +This can be used to [store and mutate options within a class](https://github.com/sindresorhus/pageres/blob/4a5d05fca19a5fbd2f53842cbf3eb7b1b63bddd2/source/index.ts#L72), [edit `readonly` objects within tests](https://stackoverflow.com/questions/50703834), and [construct a `readonly` object within a function](https://github.com/Microsoft/TypeScript/issues/24509). + +@example +``` +import {Mutable} from 'type-fest'; + +type Foo = { + readonly a: number; + readonly b: string; +}; + +const mutableFoo: Mutable = {a: 1, b: '2'}; +mutableFoo.a = 3; +``` +*/ +export type Mutable = { + // For each `Key` in the keys of `ObjectType`, make a mapped type by removing the `readonly` modifier from the property. + -readonly [KeyType in keyof ObjectType]: ObjectType[KeyType]; +}; diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts new file mode 100644 index 0000000..3179e58 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts @@ -0,0 +1,501 @@ +import {LiteralUnion} from '..'; + +declare namespace PackageJson { + /** + A person who has been involved in creating or maintaining the package. + */ + export type Person = + | string + | { + name: string; + url?: string; + email?: string; + }; + + export type BugsLocation = + | string + | { + /** + The URL to the package's issue tracker. + */ + url?: string; + + /** + The email address to which issues should be reported. + */ + email?: string; + }; + + export interface DirectoryLocations { + /** + Location for executable scripts. Sugar to generate entries in the `bin` property by walking the folder. + */ + bin?: string; + + /** + Location for Markdown files. + */ + doc?: string; + + /** + Location for example scripts. + */ + example?: string; + + /** + Location for the bulk of the library. + */ + lib?: string; + + /** + Location for man pages. Sugar to generate a `man` array by walking the folder. + */ + man?: string; + + /** + Location for test files. + */ + test?: string; + + [directoryType: string]: unknown; + } + + export type Scripts = { + /** + Run **before** the package is published (Also run on local `npm install` without any arguments). + */ + prepublish?: string; + + /** + Run both **before** the package is packed and published, and on local `npm install` without any arguments. This is run **after** `prepublish`, but **before** `prepublishOnly`. + */ + prepare?: string; + + /** + Run **before** the package is prepared and packed, **only** on `npm publish`. + */ + prepublishOnly?: string; + + /** + Run **before** a tarball is packed (on `npm pack`, `npm publish`, and when installing git dependencies). + */ + prepack?: string; + + /** + Run **after** the tarball has been generated and moved to its final destination. + */ + postpack?: string; + + /** + Run **after** the package is published. + */ + publish?: string; + + /** + Run **after** the package is published. + */ + postpublish?: string; + + /** + Run **before** the package is installed. + */ + preinstall?: string; + + /** + Run **after** the package is installed. + */ + install?: string; + + /** + Run **after** the package is installed and after `install`. + */ + postinstall?: string; + + /** + Run **before** the package is uninstalled and before `uninstall`. + */ + preuninstall?: string; + + /** + Run **before** the package is uninstalled. + */ + uninstall?: string; + + /** + Run **after** the package is uninstalled. + */ + postuninstall?: string; + + /** + Run **before** bump the package version and before `version`. + */ + preversion?: string; + + /** + Run **before** bump the package version. + */ + version?: string; + + /** + Run **after** bump the package version. + */ + postversion?: string; + + /** + Run with the `npm test` command, before `test`. + */ + pretest?: string; + + /** + Run with the `npm test` command. + */ + test?: string; + + /** + Run with the `npm test` command, after `test`. + */ + posttest?: string; + + /** + Run with the `npm stop` command, before `stop`. + */ + prestop?: string; + + /** + Run with the `npm stop` command. + */ + stop?: string; + + /** + Run with the `npm stop` command, after `stop`. + */ + poststop?: string; + + /** + Run with the `npm start` command, before `start`. + */ + prestart?: string; + + /** + Run with the `npm start` command. + */ + start?: string; + + /** + Run with the `npm start` command, after `start`. + */ + poststart?: string; + + /** + Run with the `npm restart` command, before `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided. + */ + prerestart?: string; + + /** + Run with the `npm restart` command. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided. + */ + restart?: string; + + /** + Run with the `npm restart` command, after `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided. + */ + postrestart?: string; + } & { + [scriptName: string]: string; + }; + + /** + Dependencies of the package. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or Git URL. + */ + export interface Dependency { + [packageName: string]: string; + } + + export interface NonStandardEntryPoints { + /** + An ECMAScript module ID that is the primary entry point to the program. + */ + module?: string; + + /** + A module ID with untranspiled code that is the primary entry point to the program. + */ + esnext?: + | string + | { + main?: string; + browser?: string; + [moduleName: string]: string | undefined; + }; + + /** + A hint to JavaScript bundlers or component tools when packaging modules for client side use. + */ + browser?: + | string + | { + [moduleName: string]: string | false; + }; + } + + export interface TypeScriptConfiguration { + /** + Location of the bundled TypeScript declaration file. + */ + types?: string; + + /** + Location of the bundled TypeScript declaration file. Alias of `types`. + */ + typings?: string; + } + + export interface YarnConfiguration { + /** + If your package only allows one version of a given dependency, and you’d like to enforce the same behavior as `yarn install --flat` on the command line, set this to `true`. + + Note that if your `package.json` contains `"flat": true` and other packages depend on yours (e.g. you are building a library rather than an application), those other packages will also need `"flat": true` in their `package.json` or be installed with `yarn install --flat` on the command-line. + */ + flat?: boolean; + + /** + Selective version resolutions. Allows the definition of custom package versions inside dependencies without manual edits in the `yarn.lock` file. + */ + resolutions?: Dependency; + } + + export interface JSPMConfiguration { + /** + JSPM configuration. + */ + jspm?: PackageJson; + } +} + +/** +Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). Also includes types for fields used by other popular projects, like TypeScript and Yarn. +*/ +export type PackageJson = { + /** + The name of the package. + */ + name?: string; + + /** + Package version, parseable by [`node-semver`](https://github.com/npm/node-semver). + */ + version?: string; + + /** + Package description, listed in `npm search`. + */ + description?: string; + + /** + Keywords associated with package, listed in `npm search`. + */ + keywords?: string[]; + + /** + The URL to the package's homepage. + */ + homepage?: LiteralUnion<'.', string>; + + /** + The URL to the package's issue tracker and/or the email address to which issues should be reported. + */ + bugs?: PackageJson.BugsLocation; + + /** + The license for the package. + */ + license?: string; + + /** + The licenses for the package. + */ + licenses?: Array<{ + type?: string; + url?: string; + }>; + + author?: PackageJson.Person; + + /** + A list of people who contributed to the package. + */ + contributors?: PackageJson.Person[]; + + /** + A list of people who maintain the package. + */ + maintainers?: PackageJson.Person[]; + + /** + The files included in the package. + */ + files?: string[]; + + /** + The module ID that is the primary entry point to the program. + */ + main?: string; + + /** + The executable files that should be installed into the `PATH`. + */ + bin?: + | string + | { + [binary: string]: string; + }; + + /** + Filenames to put in place for the `man` program to find. + */ + man?: string | string[]; + + /** + Indicates the structure of the package. + */ + directories?: PackageJson.DirectoryLocations; + + /** + Location for the code repository. + */ + repository?: + | string + | { + type: string; + url: string; + }; + + /** + Script commands that are run at various times in the lifecycle of the package. The key is the lifecycle event, and the value is the command to run at that point. + */ + scripts?: PackageJson.Scripts; + + /** + Is used to set configuration parameters used in package scripts that persist across upgrades. + */ + config?: { + [configKey: string]: unknown; + }; + + /** + The dependencies of the package. + */ + dependencies?: PackageJson.Dependency; + + /** + Additional tooling dependencies that are not required for the package to work. Usually test, build, or documentation tooling. + */ + devDependencies?: PackageJson.Dependency; + + /** + Dependencies that are skipped if they fail to install. + */ + optionalDependencies?: PackageJson.Dependency; + + /** + Dependencies that will usually be required by the package user directly or via another dependency. + */ + peerDependencies?: PackageJson.Dependency; + + /** + Package names that are bundled when the package is published. + */ + bundledDependencies?: string[]; + + /** + Alias of `bundledDependencies`. + */ + bundleDependencies?: string[]; + + /** + Engines that this package runs on. + */ + engines?: { + [EngineName in 'npm' | 'node' | string]: string; + }; + + /** + @deprecated + */ + engineStrict?: boolean; + + /** + Operating systems the module runs on. + */ + os?: Array>; + + /** + CPU architectures the module runs on. + */ + cpu?: Array>; + + /** + If set to `true`, a warning will be shown if package is installed locally. Useful if the package is primarily a command-line application that should be installed globally. + + @deprecated + */ + preferGlobal?: boolean; + + /** + If set to `true`, then npm will refuse to publish it. + */ + private?: boolean; + + /** + * A set of config values that will be used at publish-time. It's especially handy to set the tag, registry or access, to ensure that a given package is not tagged with 'latest', published to the global public registry or that a scoped module is private by default. + */ + publishConfig?: { + [config: string]: unknown; + }; +} & +PackageJson.NonStandardEntryPoints & +PackageJson.TypeScriptConfiguration & +PackageJson.YarnConfiguration & +PackageJson.JSPMConfiguration & { + [key: string]: unknown; +}; diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts new file mode 100644 index 0000000..71242a5 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts @@ -0,0 +1,23 @@ +/** +Create a type that represents either the value or the value wrapped in `PromiseLike`. + +Use-cases: +- A function accepts a callback that may either return a value synchronously or may return a promised value. +- This type could be the return type of `Promise#then()`, `Promise#catch()`, and `Promise#finally()` callbacks. + +Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/31394) if you want to have this type as a built-in in TypeScript. + +@example +``` +import {Promisable} from 'type-fest'; + +async function logger(getLogEntry: () => Promisable): Promise { + const entry = await getLogEntry(); + console.log(entry); +} + +logger(() => 'foo'); +logger(() => Promise.resolve('bar')); +``` +*/ +export type Promisable = T | PromiseLike; diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts new file mode 100644 index 0000000..8de4677 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts @@ -0,0 +1,59 @@ +import {Primitive} from './basic'; + +/** +Convert `object`s, `Map`s, `Set`s, and `Array`s and all of their properties/elements into immutable structures recursively. + +This is useful when a deeply nested structure needs to be exposed as completely immutable, for example, an imported JSON module or when receiving an API response that is passed around. + +Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/13923) if you want to have this type as a built-in in TypeScript. + +@example +``` +// data.json +{ + "foo": ["bar"] +} + +// main.ts +import {ReadonlyDeep} from 'type-fest'; +import dataJson = require('./data.json'); + +const data: ReadonlyDeep = dataJson; + +export default data; + +// test.ts +import data from './main'; + +data.foo.push('bar'); +//=> error TS2339: Property 'push' does not exist on type 'readonly string[]' +``` +*/ +export type ReadonlyDeep = T extends Primitive | ((...arguments: any[]) => unknown) + ? T + : T extends ReadonlyMap + ? ReadonlyMapDeep + : T extends ReadonlySet + ? ReadonlySetDeep + : T extends object + ? ReadonlyObjectDeep + : unknown; + +/** +Same as `ReadonlyDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `ReadonlyDeep`. +*/ +interface ReadonlyMapDeep + extends ReadonlyMap, ReadonlyDeep> {} + +/** +Same as `ReadonlyDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `ReadonlyDeep`. +*/ +interface ReadonlySetDeep + extends ReadonlySet> {} + +/** +Same as `ReadonlyDeep`, but accepts only `object`s as inputs. Internal helper for `ReadonlyDeep`. +*/ +type ReadonlyObjectDeep = { + readonly [PropertyType in keyof ObjectType]: ReadonlyDeep +}; diff --git a/mybulma/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts new file mode 100644 index 0000000..2200d49 --- /dev/null +++ b/mybulma/node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts @@ -0,0 +1,32 @@ +import {Except} from './except'; + +/** +Create a type that requires at least one of the given properties. The remaining properties are kept as is. + +@example +``` +import {RequireAtLeastOne} from 'type-fest'; + +type Responder = { + text?: () => string; + json?: () => string; + + secure?: boolean; +}; + +const responder: RequireAtLeastOne = { + json: () => '{"message": "ok"}', + secure: true +}; +``` +*/ +export type RequireAtLeastOne = + { + // For each Key in KeysType make a mapped type + [Key in KeysType]: ( + // …by picking that Key's type and making it required + Required> + ) + }[KeysType] + // …then, make intersection types by adding the remaining properties to each mapped type. + & Except; diff --git a/mybulma/node_modules/read-pkg/package.json b/mybulma/node_modules/read-pkg/package.json new file mode 100644 index 0000000..05dc532 --- /dev/null +++ b/mybulma/node_modules/read-pkg/package.json @@ -0,0 +1,49 @@ +{ + "name": "read-pkg", + "version": "5.2.0", + "description": "Read a package.json file", + "license": "MIT", + "repository": "sindresorhus/read-pkg", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "json", + "read", + "parse", + "file", + "fs", + "graceful", + "load", + "package", + "normalize" + ], + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "devDependencies": { + "ava": "^2.2.0", + "tsd": "^0.7.2", + "xo": "^0.24.0" + }, + "xo": { + "ignores": [ + "test/test.js" + ] + } +} diff --git a/mybulma/node_modules/read-pkg/readme.md b/mybulma/node_modules/read-pkg/readme.md new file mode 100644 index 0000000..74afd10 --- /dev/null +++ b/mybulma/node_modules/read-pkg/readme.md @@ -0,0 +1,81 @@ +# read-pkg [![Build Status](https://travis-ci.org/sindresorhus/read-pkg.svg?branch=master)](https://travis-ci.org/sindresorhus/read-pkg) + +> Read a package.json file + + +## Why + +- [Gracefully handles filesystem issues](https://github.com/isaacs/node-graceful-fs) +- [Throws more helpful JSON errors](https://github.com/sindresorhus/parse-json) +- [Normalizes the data](https://github.com/npm/normalize-package-data#what-normalization-currently-entails) + + +## Install + +``` +$ npm install read-pkg +``` + + +## Usage + +```js +const readPkg = require('read-pkg'); + +(async () => { + console.log(await readPkg()); + //=> {name: 'read-pkg', …} + + console.log(await readPkg({cwd: 'some-other-directory'})); + //=> {name: 'unicorn', …} +})(); +``` + + +## API + +### readPkg(options?) + +Returns a `Promise` with the parsed JSON. + +### readPkg.sync(options?) + +Returns the parsed JSON. + +#### options + +Type: `object` + +##### cwd + +Type: `string`
    +Default: `process.cwd()` + +Current working directory. + +##### normalize + +Type: `boolean`
    +Default: `true` + +[Normalize](https://github.com/npm/normalize-package-data#what-normalization-currently-entails) the package data. + + +## Related + +- [read-pkg-up](https://github.com/sindresorhus/read-pkg-up) - Read the closest package.json file +- [write-pkg](https://github.com/sindresorhus/write-pkg) - Write a `package.json` file +- [load-json-file](https://github.com/sindresorhus/load-json-file) - Read and parse a JSON file + + +--- + +
    + + Get professional support for this package with a Tidelift subscription + +
    + + Tidelift helps make open source sustainable for maintainers while giving companies
    assurances about security, maintenance, and licensing for their dependencies. +
    +
    diff --git a/mybulma/node_modules/readable-stream/CONTRIBUTING.md b/mybulma/node_modules/readable-stream/CONTRIBUTING.md new file mode 100644 index 0000000..f478d58 --- /dev/null +++ b/mybulma/node_modules/readable-stream/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +* (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +* (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +* (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +* (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. + +## Moderation Policy + +The [Node.js Moderation Policy] applies to this WG. + +## Code of Conduct + +The [Node.js Code of Conduct][] applies to this WG. + +[Node.js Code of Conduct]: +https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md +[Node.js Moderation Policy]: +https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/mybulma/node_modules/readable-stream/GOVERNANCE.md b/mybulma/node_modules/readable-stream/GOVERNANCE.md new file mode 100644 index 0000000..16ffb93 --- /dev/null +++ b/mybulma/node_modules/readable-stream/GOVERNANCE.md @@ -0,0 +1,136 @@ +### Streams Working Group + +The Node.js Streams is jointly governed by a Working Group +(WG) +that is responsible for high-level guidance of the project. + +The WG has final authority over this project including: + +* Technical direction +* Project governance and process (including this policy) +* Contribution policy +* GitHub repository hosting +* Conduct guidelines +* Maintaining the list of additional Collaborators + +For the current list of WG members, see the project +[README.md](./README.md#current-project-team-members). + +### Collaborators + +The readable-stream GitHub repository is +maintained by the WG and additional Collaborators who are added by the +WG on an ongoing basis. + +Individuals making significant and valuable contributions are made +Collaborators and given commit-access to the project. These +individuals are identified by the WG and their addition as +Collaborators is discussed during the WG meeting. + +_Note:_ If you make a significant contribution and are not considered +for commit-access log an issue or contact a WG member directly and it +will be brought up in the next WG meeting. + +Modifications of the contents of the readable-stream repository are +made on +a collaborative basis. Anybody with a GitHub account may propose a +modification via pull request and it will be considered by the project +Collaborators. All pull requests must be reviewed and accepted by a +Collaborator with sufficient expertise who is able to take full +responsibility for the change. In the case of pull requests proposed +by an existing Collaborator, an additional Collaborator is required +for sign-off. Consensus should be sought if additional Collaborators +participate and there is disagreement around a particular +modification. See _Consensus Seeking Process_ below for further detail +on the consensus model used for governance. + +Collaborators may opt to elevate significant or controversial +modifications, or modifications that have not found consensus to the +WG for discussion by assigning the ***WG-agenda*** tag to a pull +request or issue. The WG should serve as the final arbiter where +required. + +For the current list of Collaborators, see the project +[README.md](./README.md#members). + +### WG Membership + +WG seats are not time-limited. There is no fixed size of the WG. +However, the expected target is between 6 and 12, to ensure adequate +coverage of important areas of expertise, balanced with the ability to +make decisions efficiently. + +There is no specific set of requirements or qualifications for WG +membership beyond these rules. + +The WG may add additional members to the WG by unanimous consensus. + +A WG member may be removed from the WG by voluntary resignation, or by +unanimous consensus of all other WG members. + +Changes to WG membership should be posted in the agenda, and may be +suggested as any other agenda item (see "WG Meetings" below). + +If an addition or removal is proposed during a meeting, and the full +WG is not in attendance to participate, then the addition or removal +is added to the agenda for the subsequent meeting. This is to ensure +that all members are given the opportunity to participate in all +membership decisions. If a WG member is unable to attend a meeting +where a planned membership decision is being made, then their consent +is assumed. + +No more than 1/3 of the WG members may be affiliated with the same +employer. If removal or resignation of a WG member, or a change of +employment by a WG member, creates a situation where more than 1/3 of +the WG membership shares an employer, then the situation must be +immediately remedied by the resignation or removal of one or more WG +members affiliated with the over-represented employer(s). + +### WG Meetings + +The WG meets occasionally on a Google Hangout On Air. A designated moderator +approved by the WG runs the meeting. Each meeting should be +published to YouTube. + +Items are added to the WG agenda that are considered contentious or +are modifications of governance, contribution policy, WG membership, +or release process. + +The intention of the agenda is not to approve or review all patches; +that should happen continuously on GitHub and be handled by the larger +group of Collaborators. + +Any community member or contributor can ask that something be added to +the next meeting's agenda by logging a GitHub Issue. Any Collaborator, +WG member or the moderator can add the item to the agenda by adding +the ***WG-agenda*** tag to the issue. + +Prior to each WG meeting the moderator will share the Agenda with +members of the WG. WG members can add any items they like to the +agenda at the beginning of each meeting. The moderator and the WG +cannot veto or remove items. + +The WG may invite persons or representatives from certain projects to +participate in a non-voting capacity. + +The moderator is responsible for summarizing the discussion of each +agenda item and sends it as a pull request after the meeting. + +### Consensus Seeking Process + +The WG follows a +[Consensus +Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) +decision-making model. + +When an agenda item has appeared to reach a consensus the moderator +will ask "Does anyone object?" as a final call for dissent from the +consensus. + +If an agenda item cannot reach a consensus a WG member can call for +either a closing vote or a vote to table the issue to the next +meeting. The call for a vote must be seconded by a majority of the WG +or else the discussion will continue. Simple majority wins. + +Note that changes to WG membership require a majority consensus. See +"WG Membership" above. diff --git a/mybulma/node_modules/readable-stream/LICENSE b/mybulma/node_modules/readable-stream/LICENSE new file mode 100644 index 0000000..2873b3b --- /dev/null +++ b/mybulma/node_modules/readable-stream/LICENSE @@ -0,0 +1,47 @@ +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" diff --git a/mybulma/node_modules/readable-stream/README.md b/mybulma/node_modules/readable-stream/README.md new file mode 100644 index 0000000..6f035ab --- /dev/null +++ b/mybulma/node_modules/readable-stream/README.md @@ -0,0 +1,106 @@ +# readable-stream + +***Node.js core streams for userland*** [![Build Status](https://travis-ci.com/nodejs/readable-stream.svg?branch=master)](https://travis-ci.com/nodejs/readable-stream) + + +[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) +[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) + + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/readabe-stream.svg)](https://saucelabs.com/u/readabe-stream) + +```bash +npm install --save readable-stream +``` + +This package is a mirror of the streams implementations in Node.js. + +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v10.19.0/docs/api/stream.html). + +If you want to guarantee a stable streams base, regardless of what version of +Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). + +As of version 2.0.0 **readable-stream** uses semantic versioning. + +## Version 3.x.x + +v3.x.x of `readable-stream` is a cut from Node 10. This version supports Node 6, 8, and 10, as well as evergreen browsers, IE 11 and latest Safari. The breaking changes introduced by v3 are composed by the combined breaking changes in [Node v9](https://nodejs.org/en/blog/release/v9.0.0/) and [Node v10](https://nodejs.org/en/blog/release/v10.0.0/), as follows: + +1. Error codes: https://github.com/nodejs/node/pull/13310, + https://github.com/nodejs/node/pull/13291, + https://github.com/nodejs/node/pull/16589, + https://github.com/nodejs/node/pull/15042, + https://github.com/nodejs/node/pull/15665, + https://github.com/nodejs/readable-stream/pull/344 +2. 'readable' have precedence over flowing + https://github.com/nodejs/node/pull/18994 +3. make virtual methods errors consistent + https://github.com/nodejs/node/pull/18813 +4. updated streams error handling + https://github.com/nodejs/node/pull/18438 +5. writable.end should return this. + https://github.com/nodejs/node/pull/18780 +6. readable continues to read when push('') + https://github.com/nodejs/node/pull/18211 +7. add custom inspect to BufferList + https://github.com/nodejs/node/pull/17907 +8. always defer 'readable' with nextTick + https://github.com/nodejs/node/pull/17979 + +## Version 2.x.x +v2.x.x of `readable-stream` is a cut of the stream module from Node 8 (there have been no semver-major changes from Node 4 to 8). This version supports all Node.js versions from 0.8, as well as evergreen browsers and IE 10 & 11. + +### Big Thanks + +Cross-browser Testing Platform and Open Source <3 Provided by [Sauce Labs][sauce] + +# Usage + +You can swap your `require('stream')` with `require('readable-stream')` +without any changes, if you are just using one of the main classes and +functions. + +```js +const { + Readable, + Writable, + Transform, + Duplex, + pipeline, + finished +} = require('readable-stream') +```` + +Note that `require('stream')` will return `Stream`, while +`require('readable-stream')` will return `Readable`. We discourage using +whatever is exported directly, but rather use one of the properties as +shown in the example above. + +# Streams Working Group + +`readable-stream` is maintained by the Streams Working Group, which +oversees the development and maintenance of the Streams API within +Node.js. The responsibilities of the Streams Working Group include: + +* Addressing stream issues on the Node.js issue tracker. +* Authoring and editing stream documentation within the Node.js project. +* Reviewing changes to stream subclasses within the Node.js project. +* Redirecting changes to streams from the Node.js project to this + project. +* Assisting in the implementation of stream providers within Node.js. +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance + notice of changes. + + +## Team Members + +* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com> + - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242 +* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> +* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) <matteo.collina@gmail.com> + - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E +* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) <shestak.irina@gmail.com> +* **Yoshua Wyuts** ([@yoshuawuyts](https://github.com/yoshuawuyts)) <yoshuawuyts@gmail.com> + +[sauce]: https://saucelabs.com diff --git a/mybulma/node_modules/readable-stream/errors-browser.js b/mybulma/node_modules/readable-stream/errors-browser.js new file mode 100644 index 0000000..fb8e73e --- /dev/null +++ b/mybulma/node_modules/readable-stream/errors-browser.js @@ -0,0 +1,127 @@ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; diff --git a/mybulma/node_modules/readable-stream/errors.js b/mybulma/node_modules/readable-stream/errors.js new file mode 100644 index 0000000..8471526 --- /dev/null +++ b/mybulma/node_modules/readable-stream/errors.js @@ -0,0 +1,116 @@ +'use strict'; + +const codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error + } + + function getMessage (arg1, arg2, arg3) { + if (typeof message === 'string') { + return message + } else { + return message(arg1, arg2, arg3) + } + } + + class NodeError extends Base { + constructor (arg1, arg2, arg3) { + super(getMessage(arg1, arg2, arg3)); + } + } + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + + codes[code] = NodeError; +} + +// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + const len = expected.length; + expected = expected.map((i) => String(i)); + if (len > 2) { + return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` + + expected[len - 1]; + } else if (len === 2) { + return `one of ${thing} ${expected[0]} or ${expected[1]}`; + } else { + return `of ${thing} ${expected[0]}`; + } + } else { + return `of ${thing} ${String(expected)}`; + } +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + return str.substring(this_len - search.length, this_len) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"' +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + let determiner; + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + let msg; + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`; + } else { + const type = includes(name, '.') ? 'property' : 'argument'; + msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, 'type')}`; + } + + msg += `. Received type ${typeof actual}`; + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented' +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); + +module.exports.codes = codes; diff --git a/mybulma/node_modules/readable-stream/experimentalWarning.js b/mybulma/node_modules/readable-stream/experimentalWarning.js new file mode 100644 index 0000000..78e8414 --- /dev/null +++ b/mybulma/node_modules/readable-stream/experimentalWarning.js @@ -0,0 +1,17 @@ +'use strict' + +var experimentalWarnings = new Set(); + +function emitExperimentalWarning(feature) { + if (experimentalWarnings.has(feature)) return; + var msg = feature + ' is an experimental feature. This feature could ' + + 'change at any time'; + experimentalWarnings.add(feature); + process.emitWarning(msg, 'ExperimentalWarning'); +} + +function noop() {} + +module.exports.emitExperimentalWarning = process.emitWarning + ? emitExperimentalWarning + : noop; diff --git a/mybulma/node_modules/readable-stream/lib/_stream_duplex.js b/mybulma/node_modules/readable-stream/lib/_stream_duplex.js new file mode 100644 index 0000000..6752519 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/_stream_duplex.js @@ -0,0 +1,139 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. +'use strict'; +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +module.exports = Duplex; + +var Readable = require('./_stream_readable'); + +var Writable = require('./_stream_writable'); + +require('inherits')(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/_stream_passthrough.js b/mybulma/node_modules/readable-stream/lib/_stream_passthrough.js new file mode 100644 index 0000000..32e7414 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/_stream_passthrough.js @@ -0,0 +1,39 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +require('inherits')(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/_stream_readable.js b/mybulma/node_modules/readable-stream/lib/_stream_readable.js new file mode 100644 index 0000000..192d451 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/_stream_readable.js @@ -0,0 +1,1124 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +'use strict'; + +module.exports = Readable; +/**/ + +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +var EE = require('events').EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = require('util'); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = require('./internal/streams/buffer_list'); + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +require('inherits')(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = require('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/_stream_transform.js b/mybulma/node_modules/readable-stream/lib/_stream_transform.js new file mode 100644 index 0000000..41a738c --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/_stream_transform.js @@ -0,0 +1,201 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. +'use strict'; + +module.exports = Transform; + +var _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = require('./_stream_duplex'); + +require('inherits')(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/_stream_writable.js b/mybulma/node_modules/readable-stream/lib/_stream_writable.js new file mode 100644 index 0000000..a2634d7 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/_stream_writable.js @@ -0,0 +1,697 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. +'use strict'; + +module.exports = Writable; +/* */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex; +/**/ + +Writable.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +require('inherits')(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/mybulma/node_modules/readable-stream/lib/internal/streams/async_iterator.js new file mode 100644 index 0000000..9fb615a --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/async_iterator.js @@ -0,0 +1,207 @@ +'use strict'; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = require('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/mybulma/node_modules/readable-stream/lib/internal/streams/buffer_list.js new file mode 100644 index 0000000..cdea425 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/buffer_list.js @@ -0,0 +1,210 @@ +'use strict'; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = require('buffer'), + Buffer = _require.Buffer; + +var _require2 = require('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/destroy.js b/mybulma/node_modules/readable-stream/lib/internal/streams/destroy.js new file mode 100644 index 0000000..3268a16 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -0,0 +1,105 @@ +'use strict'; // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/mybulma/node_modules/readable-stream/lib/internal/streams/end-of-stream.js new file mode 100644 index 0000000..831f286 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/end-of-stream.js @@ -0,0 +1,104 @@ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/from-browser.js b/mybulma/node_modules/readable-stream/lib/internal/streams/from-browser.js new file mode 100644 index 0000000..a4ce56f --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/from-browser.js @@ -0,0 +1,3 @@ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/from.js b/mybulma/node_modules/readable-stream/lib/internal/streams/from.js new file mode 100644 index 0000000..6c41284 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/from.js @@ -0,0 +1,64 @@ +'use strict'; + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE; + +function from(Readable, iterable, opts) { + var iterator; + + if (iterable && typeof iterable.next === 'function') { + iterator = iterable; + } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); + + var readable = new Readable(_objectSpread({ + objectMode: true + }, opts)); // Reading boolean to protect against _read + // being called before last iteration completion. + + var reading = false; + + readable._read = function () { + if (!reading) { + reading = true; + next(); + } + }; + + function next() { + return _next2.apply(this, arguments); + } + + function _next2() { + _next2 = _asyncToGenerator(function* () { + try { + var _ref = yield iterator.next(), + value = _ref.value, + done = _ref.done; + + if (done) { + readable.push(null); + } else if (readable.push((yield value))) { + next(); + } else { + reading = false; + } + } catch (err) { + readable.destroy(err); + } + }); + return _next2.apply(this, arguments); + } + + return readable; +} + +module.exports = from; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/pipeline.js b/mybulma/node_modules/readable-stream/lib/internal/streams/pipeline.js new file mode 100644 index 0000000..6589909 --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/pipeline.js @@ -0,0 +1,97 @@ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = require('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/state.js b/mybulma/node_modules/readable-stream/lib/internal/streams/state.js new file mode 100644 index 0000000..19887eb --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/state.js @@ -0,0 +1,27 @@ +'use strict'; + +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; \ No newline at end of file diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/mybulma/node_modules/readable-stream/lib/internal/streams/stream-browser.js new file mode 100644 index 0000000..9332a3f --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/stream-browser.js @@ -0,0 +1 @@ +module.exports = require('events').EventEmitter; diff --git a/mybulma/node_modules/readable-stream/lib/internal/streams/stream.js b/mybulma/node_modules/readable-stream/lib/internal/streams/stream.js new file mode 100644 index 0000000..ce2ad5b --- /dev/null +++ b/mybulma/node_modules/readable-stream/lib/internal/streams/stream.js @@ -0,0 +1 @@ +module.exports = require('stream'); diff --git a/mybulma/node_modules/readable-stream/package.json b/mybulma/node_modules/readable-stream/package.json new file mode 100644 index 0000000..0b0c4bd --- /dev/null +++ b/mybulma/node_modules/readable-stream/package.json @@ -0,0 +1,68 @@ +{ + "name": "readable-stream", + "version": "3.6.0", + "description": "Streams3, a user-land copy of the stream library from Node.js", + "main": "readable.js", + "engines": { + "node": ">= 6" + }, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "devDependencies": { + "@babel/cli": "^7.2.0", + "@babel/core": "^7.2.0", + "@babel/polyfill": "^7.0.0", + "@babel/preset-env": "^7.2.0", + "airtap": "0.0.9", + "assert": "^1.4.0", + "bl": "^2.0.0", + "deep-strict-equal": "^0.2.0", + "events.once": "^2.0.2", + "glob": "^7.1.2", + "gunzip-maybe": "^1.4.1", + "hyperquest": "^2.1.3", + "lolex": "^2.6.0", + "nyc": "^11.0.0", + "pump": "^3.0.0", + "rimraf": "^2.6.2", + "tap": "^12.0.0", + "tape": "^4.9.0", + "tar-fs": "^1.16.2", + "util-promisify": "^2.1.0" + }, + "scripts": { + "test": "tap -J --no-esm test/parallel/*.js test/ours/*.js", + "ci": "TAP=1 tap --no-esm test/parallel/*.js test/ours/*.js | tee test.tap", + "test-browsers": "airtap --sauce-connect --loopback airtap.local -- test/browser.js", + "test-browser-local": "airtap --open --local -- test/browser.js", + "cover": "nyc npm test", + "report": "nyc report --reporter=lcov", + "update-browser-errors": "babel -o errors-browser.js errors.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/nodejs/readable-stream" + }, + "keywords": [ + "readable", + "stream", + "pipe" + ], + "browser": { + "util": false, + "worker_threads": false, + "./errors": "./errors-browser.js", + "./readable.js": "./readable-browser.js", + "./lib/internal/streams/from.js": "./lib/internal/streams/from-browser.js", + "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js" + }, + "nyc": { + "include": [ + "lib/**.js" + ] + }, + "license": "MIT" +} diff --git a/mybulma/node_modules/readable-stream/readable-browser.js b/mybulma/node_modules/readable-stream/readable-browser.js new file mode 100644 index 0000000..adbf60d --- /dev/null +++ b/mybulma/node_modules/readable-stream/readable-browser.js @@ -0,0 +1,9 @@ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); +exports.finished = require('./lib/internal/streams/end-of-stream.js'); +exports.pipeline = require('./lib/internal/streams/pipeline.js'); diff --git a/mybulma/node_modules/readable-stream/readable.js b/mybulma/node_modules/readable-stream/readable.js new file mode 100644 index 0000000..9e0ca12 --- /dev/null +++ b/mybulma/node_modules/readable-stream/readable.js @@ -0,0 +1,16 @@ +var Stream = require('stream'); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream.Readable; + Object.assign(module.exports, Stream); + module.exports.Stream = Stream; +} else { + exports = module.exports = require('./lib/_stream_readable.js'); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = require('./lib/_stream_writable.js'); + exports.Duplex = require('./lib/_stream_duplex.js'); + exports.Transform = require('./lib/_stream_transform.js'); + exports.PassThrough = require('./lib/_stream_passthrough.js'); + exports.finished = require('./lib/internal/streams/end-of-stream.js'); + exports.pipeline = require('./lib/internal/streams/pipeline.js'); +} diff --git a/mybulma/node_modules/require-directory/.jshintrc b/mybulma/node_modules/require-directory/.jshintrc new file mode 100644 index 0000000..e14e4dc --- /dev/null +++ b/mybulma/node_modules/require-directory/.jshintrc @@ -0,0 +1,67 @@ +{ + "maxerr" : 50, + "bitwise" : true, + "camelcase" : true, + "curly" : true, + "eqeqeq" : true, + "forin" : true, + "immed" : true, + "indent" : 2, + "latedef" : true, + "newcap" : true, + "noarg" : true, + "noempty" : true, + "nonew" : true, + "plusplus" : true, + "quotmark" : true, + "undef" : true, + "unused" : true, + "strict" : true, + "trailing" : true, + "maxparams" : false, + "maxdepth" : false, + "maxstatements" : false, + "maxcomplexity" : false, + "maxlen" : false, + "asi" : false, + "boss" : false, + "debug" : false, + "eqnull" : true, + "es5" : false, + "esnext" : false, + "moz" : false, + "evil" : false, + "expr" : true, + "funcscope" : true, + "globalstrict" : true, + "iterator" : true, + "lastsemic" : false, + "laxbreak" : false, + "laxcomma" : false, + "loopfunc" : false, + "multistr" : false, + "proto" : false, + "scripturl" : false, + "smarttabs" : false, + "shadow" : false, + "sub" : false, + "supernew" : false, + "validthis" : false, + "browser" : true, + "couch" : false, + "devel" : true, + "dojo" : false, + "jquery" : false, + "mootools" : false, + "node" : true, + "nonstandard" : false, + "prototypejs" : false, + "rhino" : false, + "worker" : false, + "wsh" : false, + "yui" : false, + "nomen" : true, + "onevar" : true, + "passfail" : false, + "white" : true +} diff --git a/mybulma/node_modules/require-directory/.npmignore b/mybulma/node_modules/require-directory/.npmignore new file mode 100644 index 0000000..47cf365 --- /dev/null +++ b/mybulma/node_modules/require-directory/.npmignore @@ -0,0 +1 @@ +test/** diff --git a/mybulma/node_modules/require-directory/.travis.yml b/mybulma/node_modules/require-directory/.travis.yml new file mode 100644 index 0000000..20fd86b --- /dev/null +++ b/mybulma/node_modules/require-directory/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.10 diff --git a/mybulma/node_modules/require-directory/LICENSE b/mybulma/node_modules/require-directory/LICENSE new file mode 100644 index 0000000..a70f253 --- /dev/null +++ b/mybulma/node_modules/require-directory/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2011 Troy Goode + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/require-directory/README.markdown b/mybulma/node_modules/require-directory/README.markdown new file mode 100644 index 0000000..926a063 --- /dev/null +++ b/mybulma/node_modules/require-directory/README.markdown @@ -0,0 +1,184 @@ +# require-directory + +Recursively iterates over specified directory, `require()`'ing each file, and returning a nested hash structure containing those modules. + +**[Follow me (@troygoode) on Twitter!](https://twitter.com/intent/user?screen_name=troygoode)** + +[![NPM](https://nodei.co/npm/require-directory.png?downloads=true&stars=true)](https://nodei.co/npm/require-directory/) + +[![build status](https://secure.travis-ci.org/troygoode/node-require-directory.png)](http://travis-ci.org/troygoode/node-require-directory) + +## How To Use + +### Installation (via [npm](https://npmjs.org/package/require-directory)) + +```bash +$ npm install require-directory +``` + +### Usage + +A common pattern in node.js is to include an index file which creates a hash of the files in its current directory. Given a directory structure like so: + +* app.js +* routes/ + * index.js + * home.js + * auth/ + * login.js + * logout.js + * register.js + +`routes/index.js` uses `require-directory` to build the hash (rather than doing so manually) like so: + +```javascript +var requireDirectory = require('require-directory'); +module.exports = requireDirectory(module); +``` + +`app.js` references `routes/index.js` like any other module, but it now has a hash/tree of the exports from the `./routes/` directory: + +```javascript +var routes = require('./routes'); + +// snip + +app.get('/', routes.home); +app.get('/register', routes.auth.register); +app.get('/login', routes.auth.login); +app.get('/logout', routes.auth.logout); +``` + +The `routes` variable above is the equivalent of this: + +```javascript +var routes = { + home: require('routes/home.js'), + auth: { + login: require('routes/auth/login.js'), + logout: require('routes/auth/logout.js'), + register: require('routes/auth/register.js') + } +}; +``` + +*Note that `routes.index` will be `undefined` as you would hope.* + +### Specifying Another Directory + +You can specify which directory you want to build a tree of (if it isn't the current directory for whatever reason) by passing it as the second parameter. Not specifying the path (`requireDirectory(module)`) is the equivelant of `requireDirectory(module, __dirname)`: + +```javascript +var requireDirectory = require('require-directory'); +module.exports = requireDirectory(module, './some/subdirectory'); +``` + +For example, in the [example in the Usage section](#usage) we could have avoided creating `routes/index.js` and instead changed the first lines of `app.js` to: + +```javascript +var requireDirectory = require('require-directory'); +var routes = requireDirectory(module, './routes'); +``` + +## Options + +You can pass an options hash to `require-directory` as the 2nd parameter (or 3rd if you're passing the path to another directory as the 2nd parameter already). Here are the available options: + +### Whitelisting + +Whitelisting (either via RegExp or function) allows you to specify that only certain files be loaded. + +```javascript +var requireDirectory = require('require-directory'), + whitelist = /onlyinclude.js$/, + hash = requireDirectory(module, {include: whitelist}); +``` + +```javascript +var requireDirectory = require('require-directory'), + check = function(path){ + if(/onlyinclude.js$/.test(path)){ + return true; // don't include + }else{ + return false; // go ahead and include + } + }, + hash = requireDirectory(module, {include: check}); +``` + +### Blacklisting + +Blacklisting (either via RegExp or function) allows you to specify that all but certain files should be loaded. + +```javascript +var requireDirectory = require('require-directory'), + blacklist = /dontinclude\.js$/, + hash = requireDirectory(module, {exclude: blacklist}); +``` + +```javascript +var requireDirectory = require('require-directory'), + check = function(path){ + if(/dontinclude\.js$/.test(path)){ + return false; // don't include + }else{ + return true; // go ahead and include + } + }, + hash = requireDirectory(module, {exclude: check}); +``` + +### Visiting Objects As They're Loaded + +`require-directory` takes a function as the `visit` option that will be called for each module that is added to module.exports. + +```javascript +var requireDirectory = require('require-directory'), + visitor = function(obj) { + console.log(obj); // will be called for every module that is loaded + }, + hash = requireDirectory(module, {visit: visitor}); +``` + +The visitor can also transform the objects by returning a value: + +```javascript +var requireDirectory = require('require-directory'), + visitor = function(obj) { + return obj(new Date()); + }, + hash = requireDirectory(module, {visit: visitor}); +``` + +### Renaming Keys + +```javascript +var requireDirectory = require('require-directory'), + renamer = function(name) { + return name.toUpperCase(); + }, + hash = requireDirectory(module, {rename: renamer}); +``` + +### No Recursion + +```javascript +var requireDirectory = require('require-directory'), + hash = requireDirectory(module, {recurse: false}); +``` + +## Run Unit Tests + +```bash +$ npm run lint +$ npm test +``` + +## License + +[MIT License](http://www.opensource.org/licenses/mit-license.php) + +## Author + +[Troy Goode](https://github.com/TroyGoode) ([troygoode@gmail.com](mailto:troygoode@gmail.com)) + diff --git a/mybulma/node_modules/require-directory/index.js b/mybulma/node_modules/require-directory/index.js new file mode 100644 index 0000000..cd37da7 --- /dev/null +++ b/mybulma/node_modules/require-directory/index.js @@ -0,0 +1,86 @@ +'use strict'; + +var fs = require('fs'), + join = require('path').join, + resolve = require('path').resolve, + dirname = require('path').dirname, + defaultOptions = { + extensions: ['js', 'json', 'coffee'], + recurse: true, + rename: function (name) { + return name; + }, + visit: function (obj) { + return obj; + } + }; + +function checkFileInclusion(path, filename, options) { + return ( + // verify file has valid extension + (new RegExp('\\.(' + options.extensions.join('|') + ')$', 'i').test(filename)) && + + // if options.include is a RegExp, evaluate it and make sure the path passes + !(options.include && options.include instanceof RegExp && !options.include.test(path)) && + + // if options.include is a function, evaluate it and make sure the path passes + !(options.include && typeof options.include === 'function' && !options.include(path, filename)) && + + // if options.exclude is a RegExp, evaluate it and make sure the path doesn't pass + !(options.exclude && options.exclude instanceof RegExp && options.exclude.test(path)) && + + // if options.exclude is a function, evaluate it and make sure the path doesn't pass + !(options.exclude && typeof options.exclude === 'function' && options.exclude(path, filename)) + ); +} + +function requireDirectory(m, path, options) { + var retval = {}; + + // path is optional + if (path && !options && typeof path !== 'string') { + options = path; + path = null; + } + + // default options + options = options || {}; + for (var prop in defaultOptions) { + if (typeof options[prop] === 'undefined') { + options[prop] = defaultOptions[prop]; + } + } + + // if no path was passed in, assume the equivelant of __dirname from caller + // otherwise, resolve path relative to the equivalent of __dirname + path = !path ? dirname(m.filename) : resolve(dirname(m.filename), path); + + // get the path of each file in specified directory, append to current tree node, recurse + fs.readdirSync(path).forEach(function (filename) { + var joined = join(path, filename), + files, + key, + obj; + + if (fs.statSync(joined).isDirectory() && options.recurse) { + // this node is a directory; recurse + files = requireDirectory(m, joined, options); + // exclude empty directories + if (Object.keys(files).length) { + retval[options.rename(filename, joined, filename)] = files; + } + } else { + if (joined !== m.filename && checkFileInclusion(joined, filename, options)) { + // hash node key shouldn't include file extension + key = filename.substring(0, filename.lastIndexOf('.')); + obj = m.require(joined); + retval[options.rename(key, joined, filename)] = options.visit(obj, joined, filename) || obj; + } + } + }); + + return retval; +} + +module.exports = requireDirectory; +module.exports.defaults = defaultOptions; diff --git a/mybulma/node_modules/require-directory/package.json b/mybulma/node_modules/require-directory/package.json new file mode 100644 index 0000000..25ece4b --- /dev/null +++ b/mybulma/node_modules/require-directory/package.json @@ -0,0 +1,40 @@ +{ + "author": "Troy Goode (http://github.com/troygoode/)", + "name": "require-directory", + "version": "2.1.1", + "description": "Recursively iterates over specified directory, require()'ing each file, and returning a nested hash structure containing those modules.", + "keywords": [ + "require", + "directory", + "library", + "recursive" + ], + "homepage": "https://github.com/troygoode/node-require-directory/", + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/troygoode/node-require-directory.git" + }, + "contributors": [ + { + "name": "Troy Goode", + "email": "troygoode@gmail.com", + "web": "http://github.com/troygoode/" + } + ], + "license": "MIT", + "bugs": { + "url": "http://github.com/troygoode/node-require-directory/issues/" + }, + "engines": { + "node": ">=0.10.0" + }, + "devDependencies": { + "jshint": "^2.6.0", + "mocha": "^2.1.0" + }, + "scripts": { + "test": "mocha", + "lint": "jshint index.js test/test.js" + } +} diff --git a/mybulma/node_modules/resolve/.editorconfig b/mybulma/node_modules/resolve/.editorconfig new file mode 100644 index 0000000..d63f0bb --- /dev/null +++ b/mybulma/node_modules/resolve/.editorconfig @@ -0,0 +1,37 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 200 + +[*.js] +block_comment_start = /* +block_comment = * +block_comment_end = */ + +[*.yml] +indent_size = 1 + +[package.json] +indent_style = tab + +[lib/core.json] +indent_style = tab + +[CHANGELOG.md] +indent_style = space +indent_size = 2 + +[{*.json,Makefile}] +max_line_length = off + +[test/{dotdot,resolver,module_dir,multirepo,node_path,pathfilter,precedence}/**/*] +indent_style = off +indent_size = off +max_line_length = off +insert_final_newline = off diff --git a/mybulma/node_modules/resolve/.eslintrc b/mybulma/node_modules/resolve/.eslintrc new file mode 100644 index 0000000..ce1be6e --- /dev/null +++ b/mybulma/node_modules/resolve/.eslintrc @@ -0,0 +1,65 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "indent": [2, 4], + "strict": 0, + "complexity": 0, + "consistent-return": 0, + "curly": 0, + "dot-notation": [2, { "allowKeywords": true }], + "func-name-matching": 0, + "func-style": 0, + "global-require": 1, + "id-length": [2, { "min": 1, "max": 30 }], + "max-lines": [2, 350], + "max-lines-per-function": 0, + "max-nested-callbacks": 0, + "max-params": 0, + "max-statements-per-line": [2, { "max": 2 }], + "max-statements": 0, + "no-magic-numbers": 0, + "no-shadow": 0, + "no-use-before-define": 0, + "sort-keys": 0, + }, + "overrides": [ + { + "files": "bin/**", + "rules": { + "no-process-exit": "off", + }, + }, + { + "files": "example/**", + "rules": { + "no-console": 0, + }, + }, + { + "files": "test/resolver/nested_symlinks/mylib/*.js", + "rules": { + "no-throw-literal": 0, + }, + }, + { + "files": "test/**", + "parserOptions": { + "ecmaVersion": 5, + "allowReserved": false, + }, + "rules": { + "dot-notation": [2, { "allowPattern": "throws" }], + "max-lines": 0, + "max-lines-per-function": 0, + "no-unused-vars": [2, { "vars": "all", "args": "none" }], + }, + }, + ], + + "ignorePatterns": [ + "./test/resolver/malformed_package_json/package.json", + ], +} diff --git a/mybulma/node_modules/resolve/.github/FUNDING.yml b/mybulma/node_modules/resolve/.github/FUNDING.yml new file mode 100644 index 0000000..d9c0595 --- /dev/null +++ b/mybulma/node_modules/resolve/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/resolve +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/mybulma/node_modules/resolve/LICENSE b/mybulma/node_modules/resolve/LICENSE new file mode 100644 index 0000000..ff4fce2 --- /dev/null +++ b/mybulma/node_modules/resolve/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012 James Halliday + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/mybulma/node_modules/resolve/SECURITY.md b/mybulma/node_modules/resolve/SECURITY.md new file mode 100644 index 0000000..82e4285 --- /dev/null +++ b/mybulma/node_modules/resolve/SECURITY.md @@ -0,0 +1,3 @@ +# Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. diff --git a/mybulma/node_modules/resolve/async.js b/mybulma/node_modules/resolve/async.js new file mode 100644 index 0000000..f38c581 --- /dev/null +++ b/mybulma/node_modules/resolve/async.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./lib/async'); diff --git a/mybulma/node_modules/resolve/bin/resolve b/mybulma/node_modules/resolve/bin/resolve new file mode 100644 index 0000000..5ee329a --- /dev/null +++ b/mybulma/node_modules/resolve/bin/resolve @@ -0,0 +1,50 @@ +#!/usr/bin/env node + +'use strict'; + +var path = require('path'); +var fs = require('fs'); + +if ( + String(process.env.npm_lifecycle_script).slice(0, 8) !== 'resolve ' + && ( + !process.argv + || process.argv.length < 2 + || (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino) + || (process.env._ && path.resolve(process.env._) !== __filename) + ) +) { + console.error('Error: `resolve` must be run directly as an executable'); + process.exit(1); +} + +var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag'); + +var preserveSymlinks = false; +for (var i = 2; i < process.argv.length; i += 1) { + if (process.argv[i].slice(0, 2) === '--') { + if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') { + preserveSymlinks = true; + } else if (process.argv[i].length > 2) { + console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, '')); + process.exit(2); + } + process.argv.splice(i, 1); + i -= 1; + if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax + } +} + +if (process.argv.length < 3) { + console.error('Error: `resolve` expects a specifier'); + process.exit(2); +} + +var resolve = require('../'); + +var result = resolve.sync(process.argv[2], { + basedir: process.cwd(), + preserveSymlinks: preserveSymlinks +}); + +console.log(result); diff --git a/mybulma/node_modules/resolve/example/async.js b/mybulma/node_modules/resolve/example/async.js new file mode 100644 index 0000000..20e65dc --- /dev/null +++ b/mybulma/node_modules/resolve/example/async.js @@ -0,0 +1,5 @@ +var resolve = require('../'); +resolve('tap', { basedir: __dirname }, function (err, res) { + if (err) console.error(err); + else console.log(res); +}); diff --git a/mybulma/node_modules/resolve/example/sync.js b/mybulma/node_modules/resolve/example/sync.js new file mode 100644 index 0000000..54b2cc1 --- /dev/null +++ b/mybulma/node_modules/resolve/example/sync.js @@ -0,0 +1,3 @@ +var resolve = require('../'); +var res = resolve.sync('tap', { basedir: __dirname }); +console.log(res); diff --git a/mybulma/node_modules/resolve/index.js b/mybulma/node_modules/resolve/index.js new file mode 100644 index 0000000..125d814 --- /dev/null +++ b/mybulma/node_modules/resolve/index.js @@ -0,0 +1,6 @@ +var async = require('./lib/async'); +async.core = require('./lib/core'); +async.isCore = require('./lib/is-core'); +async.sync = require('./lib/sync'); + +module.exports = async; diff --git a/mybulma/node_modules/resolve/lib/async.js b/mybulma/node_modules/resolve/lib/async.js new file mode 100644 index 0000000..60d2555 --- /dev/null +++ b/mybulma/node_modules/resolve/lib/async.js @@ -0,0 +1,329 @@ +var fs = require('fs'); +var getHomedir = require('./homedir'); +var path = require('path'); +var caller = require('./caller'); +var nodeModulesPaths = require('./node-modules-paths'); +var normalizeOptions = require('./normalize-options'); +var isCore = require('is-core-module'); + +var realpathFS = process.platform !== 'win32' && fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; + +var homedir = getHomedir(); +var defaultPaths = function () { + return [ + path.join(homedir, '.node_modules'), + path.join(homedir, '.node_libraries') + ]; +}; + +var defaultIsFile = function isFile(file, cb) { + fs.stat(file, function (err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; + +var defaultIsDir = function isDirectory(dir, cb) { + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; + +var defaultRealpath = function realpath(x, cb) { + realpathFS(x, function (realpathErr, realPath) { + if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr); + else cb(null, realpathErr ? x : realPath); + }); +}; + +var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) { + if (opts && opts.preserveSymlinks === false) { + realpath(x, cb); + } else { + cb(null, x); + } +}; + +var defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) { + readFile(pkgfile, function (readFileErr, body) { + if (readFileErr) cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } + } + }); +}; + +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; +}; + +module.exports = function resolve(x, options, callback) { + var cb = callback; + var opts = options; + if (typeof options === 'function') { + cb = opts; + opts = {}; + } + if (typeof x !== 'string') { + var err = new TypeError('Path must be a string.'); + return process.nextTick(function () { + cb(err); + }); + } + + opts = normalizeOptions(x, opts); + + var isFile = opts.isFile || defaultIsFile; + var isDirectory = opts.isDirectory || defaultIsDir; + var readFile = opts.readFile || fs.readFile; + var realpath = opts.realpath || defaultRealpath; + var readPackage = opts.readPackage || defaultReadPackage; + if (opts.readFile && opts.readPackage) { + var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.'); + return process.nextTick(function () { + cb(conflictErr); + }); + } + var packageIterator = opts.packageIterator; + + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; + + opts.paths = opts.paths || defaultPaths(); + + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = path.resolve(basedir); + + maybeRealpath( + realpath, + absoluteStart, + opts, + function (err, realStart) { + if (err) cb(err); + else init(realStart); + } + ); + + var res; + function init(basedir) { + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + res = path.resolve(basedir, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + if ((/\/$/).test(x) && res === basedir) { + loadAsDirectory(res, opts.package, onfile); + } else loadAsFile(res, opts.package, onfile); + } else if (includeCoreModules && isCore(x)) { + return cb(null, x); + } else loadNodeModules(x, basedir, function (err, n, pkg) { + if (err) cb(err); + else if (n) { + return maybeRealpath(realpath, n, opts, function (err, realN) { + if (err) { + cb(err); + } else { + cb(null, realN, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); + } + + function onfile(err, m, pkg) { + if (err) cb(err); + else if (m) cb(null, m, pkg); + else loadAsDirectory(res, function (err, d, pkg) { + if (err) cb(err); + else if (d) { + maybeRealpath(realpath, d, opts, function (err, realD) { + if (err) { + cb(err); + } else { + cb(null, realD, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); + } + + function loadAsFile(x, thePackage, callback) { + var loadAsFilePackage = thePackage; + var cb = callback; + if (typeof loadAsFilePackage === 'function') { + cb = loadAsFilePackage; + loadAsFilePackage = undefined; + } + + var exts = [''].concat(extensions); + load(exts, x, loadAsFilePackage); + + function load(exts, x, loadPackage) { + if (exts.length === 0) return cb(null, undefined, loadPackage); + var file = x + exts[0]; + + var pkg = loadPackage; + if (pkg) onpkg(null, pkg); + else loadpkg(path.dirname(file), onpkg); + + function onpkg(err, pkg_, dir) { + pkg = pkg_; + if (err) return cb(err); + if (dir && pkg && opts.pathFilter) { + var rfile = path.relative(dir, file); + var rel = rfile.slice(0, rfile.length - exts[0].length); + var r = opts.pathFilter(pkg, x, rel); + if (r) return load( + [''].concat(extensions.slice()), + path.resolve(dir, r), + pkg + ); + } + isFile(file, onex); + } + function onex(err, ex) { + if (err) return cb(err); + if (ex) return cb(null, file, pkg); + load(exts.slice(1), x, pkg); + } + } + } + + function loadpkg(dir, cb) { + if (dir === '' || dir === '/') return cb(null); + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return cb(null); + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null); + + maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return loadpkg(path.dirname(dir), cb); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + // on err, ex is false + if (!ex) return loadpkg(path.dirname(dir), cb); + + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) cb(err); + + var pkg = pkgParam; + + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + cb(null, pkg, dir); + }); + }); + }); + } + + function loadAsDirectory(x, loadAsDirectoryPackage, callback) { + var cb = callback; + var fpkg = loadAsDirectoryPackage; + if (typeof fpkg === 'function') { + cb = fpkg; + fpkg = opts.package; + } + + maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return cb(unwrapErr); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + if (err) return cb(err); + if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb); + + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) return cb(err); + + var pkg = pkgParam; + + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + return cb(mainError); + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb); + + var dir = path.resolve(x, pkg.main); + loadAsDirectory(dir, pkg, function (err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + loadAsFile(path.join(x, 'index'), pkg, cb); + }); + }); + return; + } + + loadAsFile(path.join(x, '/index'), pkg, cb); + }); + }); + }); + } + + function processDirs(cb, dirs) { + if (dirs.length === 0) return cb(null, undefined); + var dir = dirs[0]; + + isDirectory(path.dirname(dir), isdir); + + function isdir(err, isdir) { + if (err) return cb(err); + if (!isdir) return processDirs(cb, dirs.slice(1)); + loadAsFile(dir, opts.package, onfile); + } + + function onfile(err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + loadAsDirectory(dir, opts.package, ondir); + } + + function ondir(err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + processDirs(cb, dirs.slice(1)); + } + } + function loadNodeModules(x, start, cb) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + processDirs( + cb, + packageIterator ? packageIterator(x, start, thunk, opts) : thunk() + ); + } +}; diff --git a/mybulma/node_modules/resolve/lib/caller.js b/mybulma/node_modules/resolve/lib/caller.js new file mode 100644 index 0000000..b14a280 --- /dev/null +++ b/mybulma/node_modules/resolve/lib/caller.js @@ -0,0 +1,8 @@ +module.exports = function () { + // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi + var origPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function (_, stack) { return stack; }; + var stack = (new Error()).stack; + Error.prepareStackTrace = origPrepareStackTrace; + return stack[2].getFileName(); +}; diff --git a/mybulma/node_modules/resolve/lib/core.js b/mybulma/node_modules/resolve/lib/core.js new file mode 100644 index 0000000..ecc5b2e --- /dev/null +++ b/mybulma/node_modules/resolve/lib/core.js @@ -0,0 +1,52 @@ +var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; + +function specifierIncluded(specifier) { + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + + for (var i = 0; i < 3; ++i) { + var cur = parseInt(current[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } else if (op === '>=') { + return cur >= ver; + } + return false; + } + return op === '>='; +} + +function matchesRange(range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { return false; } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(specifiers[i])) { return false; } + } + return true; +} + +function versionIncluded(specifierValue) { + if (typeof specifierValue === 'boolean') { return specifierValue; } + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(specifierValue[i])) { return true; } + } + return false; + } + return matchesRange(specifierValue); +} + +var data = require('./core.json'); + +var core = {}; +for (var mod in data) { // eslint-disable-line no-restricted-syntax + if (Object.prototype.hasOwnProperty.call(data, mod)) { + core[mod] = versionIncluded(data[mod]); + } +} +module.exports = core; diff --git a/mybulma/node_modules/resolve/lib/core.json b/mybulma/node_modules/resolve/lib/core.json new file mode 100644 index 0000000..058584b --- /dev/null +++ b/mybulma/node_modules/resolve/lib/core.json @@ -0,0 +1,153 @@ +{ + "assert": true, + "node:assert": [">= 14.18 && < 15", ">= 16"], + "assert/strict": ">= 15", + "node:assert/strict": ">= 16", + "async_hooks": ">= 8", + "node:async_hooks": [">= 14.18 && < 15", ">= 16"], + "buffer_ieee754": ">= 0.5 && < 0.9.7", + "buffer": true, + "node:buffer": [">= 14.18 && < 15", ">= 16"], + "child_process": true, + "node:child_process": [">= 14.18 && < 15", ">= 16"], + "cluster": ">= 0.5", + "node:cluster": [">= 14.18 && < 15", ">= 16"], + "console": true, + "node:console": [">= 14.18 && < 15", ">= 16"], + "constants": true, + "node:constants": [">= 14.18 && < 15", ">= 16"], + "crypto": true, + "node:crypto": [">= 14.18 && < 15", ">= 16"], + "_debug_agent": ">= 1 && < 8", + "_debugger": "< 8", + "dgram": true, + "node:dgram": [">= 14.18 && < 15", ">= 16"], + "diagnostics_channel": [">= 14.17 && < 15", ">= 15.1"], + "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"], + "dns": true, + "node:dns": [">= 14.18 && < 15", ">= 16"], + "dns/promises": ">= 15", + "node:dns/promises": ">= 16", + "domain": ">= 0.7.12", + "node:domain": [">= 14.18 && < 15", ">= 16"], + "events": true, + "node:events": [">= 14.18 && < 15", ">= 16"], + "freelist": "< 6", + "fs": true, + "node:fs": [">= 14.18 && < 15", ">= 16"], + "fs/promises": [">= 10 && < 10.1", ">= 14"], + "node:fs/promises": [">= 14.18 && < 15", ">= 16"], + "_http_agent": ">= 0.11.1", + "node:_http_agent": [">= 14.18 && < 15", ">= 16"], + "_http_client": ">= 0.11.1", + "node:_http_client": [">= 14.18 && < 15", ">= 16"], + "_http_common": ">= 0.11.1", + "node:_http_common": [">= 14.18 && < 15", ">= 16"], + "_http_incoming": ">= 0.11.1", + "node:_http_incoming": [">= 14.18 && < 15", ">= 16"], + "_http_outgoing": ">= 0.11.1", + "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"], + "_http_server": ">= 0.11.1", + "node:_http_server": [">= 14.18 && < 15", ">= 16"], + "http": true, + "node:http": [">= 14.18 && < 15", ">= 16"], + "http2": ">= 8.8", + "node:http2": [">= 14.18 && < 15", ">= 16"], + "https": true, + "node:https": [">= 14.18 && < 15", ">= 16"], + "inspector": ">= 8", + "node:inspector": [">= 14.18 && < 15", ">= 16"], + "_linklist": "< 8", + "module": true, + "node:module": [">= 14.18 && < 15", ">= 16"], + "net": true, + "node:net": [">= 14.18 && < 15", ">= 16"], + "node-inspect/lib/_inspect": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12", + "os": true, + "node:os": [">= 14.18 && < 15", ">= 16"], + "path": true, + "node:path": [">= 14.18 && < 15", ">= 16"], + "path/posix": ">= 15.3", + "node:path/posix": ">= 16", + "path/win32": ">= 15.3", + "node:path/win32": ">= 16", + "perf_hooks": ">= 8.5", + "node:perf_hooks": [">= 14.18 && < 15", ">= 16"], + "process": ">= 1", + "node:process": [">= 14.18 && < 15", ">= 16"], + "punycode": ">= 0.5", + "node:punycode": [">= 14.18 && < 15", ">= 16"], + "querystring": true, + "node:querystring": [">= 14.18 && < 15", ">= 16"], + "readline": true, + "node:readline": [">= 14.18 && < 15", ">= 16"], + "readline/promises": ">= 17", + "node:readline/promises": ">= 17", + "repl": true, + "node:repl": [">= 14.18 && < 15", ">= 16"], + "smalloc": ">= 0.11.5 && < 3", + "_stream_duplex": ">= 0.9.4", + "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"], + "_stream_transform": ">= 0.9.4", + "node:_stream_transform": [">= 14.18 && < 15", ">= 16"], + "_stream_wrap": ">= 1.4.1", + "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"], + "_stream_passthrough": ">= 0.9.4", + "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"], + "_stream_readable": ">= 0.9.4", + "node:_stream_readable": [">= 14.18 && < 15", ">= 16"], + "_stream_writable": ">= 0.9.4", + "node:_stream_writable": [">= 14.18 && < 15", ">= 16"], + "stream": true, + "node:stream": [">= 14.18 && < 15", ">= 16"], + "stream/consumers": ">= 16.7", + "node:stream/consumers": ">= 16.7", + "stream/promises": ">= 15", + "node:stream/promises": ">= 16", + "stream/web": ">= 16.5", + "node:stream/web": ">= 16.5", + "string_decoder": true, + "node:string_decoder": [">= 14.18 && < 15", ">= 16"], + "sys": [">= 0.4 && < 0.7", ">= 0.8"], + "node:sys": [">= 14.18 && < 15", ">= 16"], + "node:test": ">= 18", + "timers": true, + "node:timers": [">= 14.18 && < 15", ">= 16"], + "timers/promises": ">= 15", + "node:timers/promises": ">= 16", + "_tls_common": ">= 0.11.13", + "node:_tls_common": [">= 14.18 && < 15", ">= 16"], + "_tls_legacy": ">= 0.11.3 && < 10", + "_tls_wrap": ">= 0.11.3", + "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"], + "tls": true, + "node:tls": [">= 14.18 && < 15", ">= 16"], + "trace_events": ">= 10", + "node:trace_events": [">= 14.18 && < 15", ">= 16"], + "tty": true, + "node:tty": [">= 14.18 && < 15", ">= 16"], + "url": true, + "node:url": [">= 14.18 && < 15", ">= 16"], + "util": true, + "node:util": [">= 14.18 && < 15", ">= 16"], + "util/types": ">= 15.3", + "node:util/types": ">= 16", + "v8/tools/arguments": ">= 10 && < 12", + "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8": ">= 1", + "node:v8": [">= 14.18 && < 15", ">= 16"], + "vm": true, + "node:vm": [">= 14.18 && < 15", ">= 16"], + "wasi": ">= 13.4 && < 13.5", + "worker_threads": ">= 11.7", + "node:worker_threads": [">= 14.18 && < 15", ">= 16"], + "zlib": ">= 0.5", + "node:zlib": [">= 14.18 && < 15", ">= 16"] +} diff --git a/mybulma/node_modules/resolve/lib/homedir.js b/mybulma/node_modules/resolve/lib/homedir.js new file mode 100644 index 0000000..5ffdf73 --- /dev/null +++ b/mybulma/node_modules/resolve/lib/homedir.js @@ -0,0 +1,24 @@ +'use strict'; + +var os = require('os'); + +// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js + +module.exports = os.homedir || function homedir() { + var home = process.env.HOME; + var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME; + + if (process.platform === 'win32') { + return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null; + } + + if (process.platform === 'darwin') { + return home || (user ? '/Users/' + user : null); + } + + if (process.platform === 'linux') { + return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens + } + + return home || null; +}; diff --git a/mybulma/node_modules/resolve/lib/is-core.js b/mybulma/node_modules/resolve/lib/is-core.js new file mode 100644 index 0000000..537f5c7 --- /dev/null +++ b/mybulma/node_modules/resolve/lib/is-core.js @@ -0,0 +1,5 @@ +var isCoreModule = require('is-core-module'); + +module.exports = function isCore(x) { + return isCoreModule(x); +}; diff --git a/mybulma/node_modules/resolve/lib/node-modules-paths.js b/mybulma/node_modules/resolve/lib/node-modules-paths.js new file mode 100644 index 0000000..1cff010 --- /dev/null +++ b/mybulma/node_modules/resolve/lib/node-modules-paths.js @@ -0,0 +1,42 @@ +var path = require('path'); +var parse = path.parse || require('path-parse'); // eslint-disable-line global-require + +var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { + var prefix = '/'; + if ((/^([A-Za-z]:)/).test(absoluteStart)) { + prefix = ''; + } else if ((/^\\\\/).test(absoluteStart)) { + prefix = '\\\\'; + } + + var paths = [absoluteStart]; + var parsed = parse(absoluteStart); + while (parsed.dir !== paths[paths.length - 1]) { + paths.push(parsed.dir); + parsed = parse(parsed.dir); + } + + return paths.reduce(function (dirs, aPath) { + return dirs.concat(modules.map(function (moduleDir) { + return path.resolve(prefix, aPath, moduleDir); + })); + }, []); +}; + +module.exports = function nodeModulesPaths(start, opts, request) { + var modules = opts && opts.moduleDirectory + ? [].concat(opts.moduleDirectory) + : ['node_modules']; + + if (opts && typeof opts.paths === 'function') { + return opts.paths( + request, + start, + function () { return getNodeModulesDirs(start, modules); }, + opts + ); + } + + var dirs = getNodeModulesDirs(start, modules); + return opts && opts.paths ? dirs.concat(opts.paths) : dirs; +}; diff --git a/mybulma/node_modules/resolve/lib/normalize-options.js b/mybulma/node_modules/resolve/lib/normalize-options.js new file mode 100644 index 0000000..4b56904 --- /dev/null +++ b/mybulma/node_modules/resolve/lib/normalize-options.js @@ -0,0 +1,10 @@ +module.exports = function (x, opts) { + /** + * This file is purposefully a passthrough. It's expected that third-party + * environments will override it at runtime in order to inject special logic + * into `resolve` (by manipulating the options). One such example is the PnP + * code path in Yarn. + */ + + return opts || {}; +}; diff --git a/mybulma/node_modules/resolve/lib/sync.js b/mybulma/node_modules/resolve/lib/sync.js new file mode 100644 index 0000000..0b6cd58 --- /dev/null +++ b/mybulma/node_modules/resolve/lib/sync.js @@ -0,0 +1,208 @@ +var isCore = require('is-core-module'); +var fs = require('fs'); +var path = require('path'); +var getHomedir = require('./homedir'); +var caller = require('./caller'); +var nodeModulesPaths = require('./node-modules-paths'); +var normalizeOptions = require('./normalize-options'); + +var realpathFS = process.platform !== 'win32' && fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; + +var homedir = getHomedir(); +var defaultPaths = function () { + return [ + path.join(homedir, '.node_modules'), + path.join(homedir, '.node_libraries') + ]; +}; + +var defaultIsFile = function isFile(file) { + try { + var stat = fs.statSync(file, { throwIfNoEntry: false }); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return !!stat && (stat.isFile() || stat.isFIFO()); +}; + +var defaultIsDir = function isDirectory(dir) { + try { + var stat = fs.statSync(dir, { throwIfNoEntry: false }); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return !!stat && stat.isDirectory(); +}; + +var defaultRealpathSync = function realpathSync(x) { + try { + return realpathFS(x); + } catch (realpathErr) { + if (realpathErr.code !== 'ENOENT') { + throw realpathErr; + } + } + return x; +}; + +var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) { + if (opts && opts.preserveSymlinks === false) { + return realpathSync(x); + } + return x; +}; + +var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) { + var body = readFileSync(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) {} +}; + +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; +}; + +module.exports = function resolveSync(x, options) { + if (typeof x !== 'string') { + throw new TypeError('Path must be a string.'); + } + var opts = normalizeOptions(x, options); + + var isFile = opts.isFile || defaultIsFile; + var readFileSync = opts.readFileSync || fs.readFileSync; + var isDirectory = opts.isDirectory || defaultIsDir; + var realpathSync = opts.realpathSync || defaultRealpathSync; + var readPackageSync = opts.readPackageSync || defaultReadPackageSync; + if (opts.readFileSync && opts.readPackageSync) { + throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.'); + } + var packageIterator = opts.packageIterator; + + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; + + opts.paths = opts.paths || defaultPaths(); + + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); + + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + var res = path.resolve(absoluteStart, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + var m = loadAsFileSync(res) || loadAsDirectorySync(res); + if (m) return maybeRealpathSync(realpathSync, m, opts); + } else if (includeCoreModules && isCore(x)) { + return x; + } else { + var n = loadNodeModulesSync(x, absoluteStart); + if (n) return maybeRealpathSync(realpathSync, n, opts); + } + + var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + err.code = 'MODULE_NOT_FOUND'; + throw err; + + function loadAsFileSync(x) { + var pkg = loadpkg(path.dirname(x)); + + if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { + var rfile = path.relative(pkg.dir, x); + var r = opts.pathFilter(pkg.pkg, x, rfile); + if (r) { + x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign + } + } + + if (isFile(x)) { + return x; + } + + for (var i = 0; i < extensions.length; i++) { + var file = x + extensions[i]; + if (isFile(file)) { + return file; + } + } + } + + function loadpkg(dir) { + if (dir === '' || dir === '/') return; + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return; + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return; + + var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json'); + + if (!isFile(pkgfile)) { + return loadpkg(path.dirname(dir)); + } + + var pkg = readPackageSync(readFileSync, pkgfile); + + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment + } + + return { pkg: pkg, dir: dir }; + } + + function loadAsDirectorySync(x) { + var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json'); + if (isFile(pkgfile)) { + try { + var pkg = readPackageSync(readFileSync, pkgfile); + } catch (e) {} + + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment + } + + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + throw mainError; + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + try { + var m = loadAsFileSync(path.resolve(x, pkg.main)); + if (m) return m; + var n = loadAsDirectorySync(path.resolve(x, pkg.main)); + if (n) return n; + } catch (e) {} + } + } + + return loadAsFileSync(path.join(x, '/index')); + } + + function loadNodeModulesSync(x, start) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk(); + + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + if (isDirectory(path.dirname(dir))) { + var m = loadAsFileSync(dir); + if (m) return m; + var n = loadAsDirectorySync(dir); + if (n) return n; + } + } + } +}; diff --git a/mybulma/node_modules/resolve/package.json b/mybulma/node_modules/resolve/package.json new file mode 100644 index 0000000..7177e0f --- /dev/null +++ b/mybulma/node_modules/resolve/package.json @@ -0,0 +1,71 @@ +{ + "name": "resolve", + "description": "resolve like require.resolve() on behalf of files asynchronously and synchronously", + "version": "1.22.1", + "repository": { + "type": "git", + "url": "git://github.com/browserify/resolve.git" + }, + "bin": { + "resolve": "./bin/resolve" + }, + "main": "index.js", + "keywords": [ + "resolve", + "require", + "node", + "module" + ], + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest && cp node_modules/is-core-module/core.json ./lib/ ||:", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs --no-eslintrc -c .eslintrc . 'bin/**'", + "pretests-only": "cd ./test/resolver/nested_symlinks && node mylib/sync && node mylib/async", + "tests-only": "tape test/*.js", + "pretest": "npm run lint", + "test": "npm run --silent tests-only", + "posttest": "npm run test:multirepo && aud --production", + "test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.0.0", + "array.prototype.map": "^1.0.4", + "aud": "^2.0.0", + "copy-dir": "^1.3.0", + "eclint": "^2.8.1", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "mkdirp": "^0.5.5", + "mv": "^2.1.1", + "npmignore": "^0.3.0", + "object-keys": "^1.1.1", + "rimraf": "^2.7.1", + "safe-publish-latest": "^2.0.0", + "semver": "^6.3.0", + "tap": "0.4.13", + "tape": "^5.5.3", + "tmp": "^0.0.31" + }, + "license": "MIT", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "appveyor.yml" + ] + } +} diff --git a/mybulma/node_modules/resolve/readme.markdown b/mybulma/node_modules/resolve/readme.markdown new file mode 100644 index 0000000..ad34d60 --- /dev/null +++ b/mybulma/node_modules/resolve/readme.markdown @@ -0,0 +1,301 @@ +# resolve [![Version Badge][2]][1] + +implements the [node `require.resolve()` algorithm](https://nodejs.org/api/modules.html#modules_all_together) such that you can `require.resolve()` on behalf of a file asynchronously and synchronously + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +# example + +asynchronously resolve: + +```js +var resolve = require('resolve/async'); // or, require('resolve') +resolve('tap', { basedir: __dirname }, function (err, res) { + if (err) console.error(err); + else console.log(res); +}); +``` + +``` +$ node example/async.js +/home/substack/projects/node-resolve/node_modules/tap/lib/main.js +``` + +synchronously resolve: + +```js +var resolve = require('resolve/sync'); // or, `require('resolve').sync +var res = resolve('tap', { basedir: __dirname }); +console.log(res); +``` + +``` +$ node example/sync.js +/home/substack/projects/node-resolve/node_modules/tap/lib/main.js +``` + +# methods + +```js +var resolve = require('resolve'); +var async = require('resolve/async'); +var sync = require('resolve/sync'); +``` + +For both the synchronous and asynchronous methods, errors may have any of the following `err.code` values: + +- `MODULE_NOT_FOUND`: the given path string (`id`) could not be resolved to a module +- `INVALID_BASEDIR`: the specified `opts.basedir` doesn't exist, or is not a directory +- `INVALID_PACKAGE_MAIN`: a `package.json` was encountered with an invalid `main` property (eg. not a string) + +## resolve(id, opts={}, cb) + +Asynchronously resolve the module path string `id` into `cb(err, res [, pkg])`, where `pkg` (if defined) is the data from `package.json`. + +options are: + +* opts.basedir - directory to begin resolving from + +* opts.package - `package.json` data applicable to the module being loaded + +* opts.extensions - array of file extensions to search in order + +* opts.includeCoreModules - set to `false` to exclude node core modules (e.g. `fs`) from the search + +* opts.readFile - how to read files asynchronously + +* opts.isFile - function to asynchronously test whether a file exists + +* opts.isDirectory - function to asynchronously test whether a file exists and is a directory + +* opts.realpath - function to asynchronously resolve a potential symlink to its real path + +* `opts.readPackage(readFile, pkgfile, cb)` - function to asynchronously read and parse a package.json file + * readFile - the passed `opts.readFile` or `fs.readFile` if not specified + * pkgfile - path to package.json + * cb - callback + +* `opts.packageFilter(pkg, pkgfile, dir)` - transform the parsed package.json contents before looking at the "main" field + * pkg - package data + * pkgfile - path to package.json + * dir - directory that contains package.json + +* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package + * pkg - package data + * path - the path being resolved + * relativePath - the path relative from the package.json location + * returns - a relative path that will be joined from the package.json location + +* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this) + + For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function + * request - the import specifier being resolved + * start - lookup path + * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this) + * request - the import specifier being resolved + * start - lookup path + * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"` + +* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving. +This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag. +**Note:** this property is currently `true` by default but it will be changed to +`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*. + +default `opts` values: + +```js +{ + paths: [], + basedir: __dirname, + extensions: ['.js'], + includeCoreModules: true, + readFile: fs.readFile, + isFile: function isFile(file, cb) { + fs.stat(file, function (err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); + }, + isDirectory: function isDirectory(dir, cb) { + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); + }, + realpath: function realpath(file, cb) { + var realpath = typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; + realpath(file, function (realPathErr, realPath) { + if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr); + else cb(null, realPathErr ? file : realPath); + }); + }, + readPackage: function defaultReadPackage(readFile, pkgfile, cb) { + readFile(pkgfile, function (readFileErr, body) { + if (readFileErr) cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } + } + }); + }, + moduleDirectory: 'node_modules', + preserveSymlinks: true +} +``` + +## resolve.sync(id, opts) + +Synchronously resolve the module path string `id`, returning the result and +throwing an error when `id` can't be resolved. + +options are: + +* opts.basedir - directory to begin resolving from + +* opts.extensions - array of file extensions to search in order + +* opts.includeCoreModules - set to `false` to exclude node core modules (e.g. `fs`) from the search + +* opts.readFileSync - how to read files synchronously + +* opts.isFile - function to synchronously test whether a file exists + +* opts.isDirectory - function to synchronously test whether a file exists and is a directory + +* opts.realpathSync - function to synchronously resolve a potential symlink to its real path + +* `opts.readPackageSync(readFileSync, pkgfile)` - function to synchronously read and parse a package.json file + * readFileSync - the passed `opts.readFileSync` or `fs.readFileSync` if not specified + * pkgfile - path to package.json + +* `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field + * pkg - package data + * dir - directory that contains package.json (Note: the second argument will change to "pkgfile" in v2) + +* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package + * pkg - package data + * path - the path being resolved + * relativePath - the path relative from the package.json location + * returns - a relative path that will be joined from the package.json location + +* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this) + + For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function + * request - the import specifier being resolved + * start - lookup path + * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this) + * request - the import specifier being resolved + * start - lookup path + * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"` + +* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving. +This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag. +**Note:** this property is currently `true` by default but it will be changed to +`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*. + +default `opts` values: + +```js +{ + paths: [], + basedir: __dirname, + extensions: ['.js'], + includeCoreModules: true, + readFileSync: fs.readFileSync, + isFile: function isFile(file) { + try { + var stat = fs.statSync(file); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return stat.isFile() || stat.isFIFO(); + }, + isDirectory: function isDirectory(dir) { + try { + var stat = fs.statSync(dir); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return stat.isDirectory(); + }, + realpathSync: function realpathSync(file) { + try { + var realpath = typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; + return realpath(file); + } catch (realPathErr) { + if (realPathErr.code !== 'ENOENT') { + throw realPathErr; + } + } + return file; + }, + readPackageSync: function defaultReadPackageSync(readFileSync, pkgfile) { + var body = readFileSync(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) {} + }, + moduleDirectory: 'node_modules', + preserveSymlinks: true +} +``` + +# install + +With [npm](https://npmjs.org) do: + +```sh +npm install resolve +``` + +# license + +MIT + +[1]: https://npmjs.org/package/resolve +[2]: https://versionbadg.es/browserify/resolve.svg +[5]: https://david-dm.org/browserify/resolve.svg +[6]: https://david-dm.org/browserify/resolve +[7]: https://david-dm.org/browserify/resolve/dev-status.svg +[8]: https://david-dm.org/browserify/resolve#info=devDependencies +[11]: https://nodei.co/npm/resolve.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/resolve.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/resolve.svg +[downloads-url]: https://npm-stat.com/charts.html?package=resolve +[codecov-image]: https://codecov.io/gh/browserify/resolve/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/browserify/resolve/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/browserify/resolve +[actions-url]: https://github.com/browserify/resolve/actions diff --git a/mybulma/node_modules/resolve/sync.js b/mybulma/node_modules/resolve/sync.js new file mode 100644 index 0000000..cd0ee04 --- /dev/null +++ b/mybulma/node_modules/resolve/sync.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./lib/sync'); diff --git a/mybulma/node_modules/resolve/test/core.js b/mybulma/node_modules/resolve/test/core.js new file mode 100644 index 0000000..a477adc --- /dev/null +++ b/mybulma/node_modules/resolve/test/core.js @@ -0,0 +1,88 @@ +var test = require('tape'); +var keys = require('object-keys'); +var semver = require('semver'); + +var resolve = require('../'); + +var brokenNode = semver.satisfies(process.version, '11.11 - 11.13'); + +test('core modules', function (t) { + t.test('isCore()', function (st) { + st.ok(resolve.isCore('fs')); + st.ok(resolve.isCore('net')); + st.ok(resolve.isCore('http')); + + st.ok(!resolve.isCore('seq')); + st.ok(!resolve.isCore('../')); + + st.ok(!resolve.isCore('toString')); + + st.end(); + }); + + t.test('core list', function (st) { + var cores = keys(resolve.core); + st.plan(cores.length); + + for (var i = 0; i < cores.length; ++i) { + var mod = cores[i]; + // note: this must be require, not require.resolve, due to https://github.com/nodejs/node/issues/43274 + var requireFunc = function () { require(mod); }; // eslint-disable-line no-loop-func + t.comment(mod + ': ' + resolve.core[mod]); + if (resolve.core[mod]) { + st.doesNotThrow(requireFunc, mod + ' supported; requiring does not throw'); + } else if (brokenNode) { + st.ok(true, 'this version of node is broken: attempting to require things that fail to resolve breaks "home_paths" tests'); + } else { + st.throws(requireFunc, mod + ' not supported; requiring throws'); + } + } + + st.end(); + }); + + t.test('core via repl module', { skip: !resolve.core.repl }, function (st) { + var libs = require('repl')._builtinLibs; // eslint-disable-line no-underscore-dangle + if (!libs) { + st.skip('module.builtinModules does not exist'); + return st.end(); + } + for (var i = 0; i < libs.length; ++i) { + var mod = libs[i]; + st.ok(resolve.core[mod], mod + ' is a core module'); + st.doesNotThrow( + function () { require(mod); }, // eslint-disable-line no-loop-func + 'requiring ' + mod + ' does not throw' + ); + } + st.end(); + }); + + t.test('core via builtinModules list', { skip: !resolve.core.module }, function (st) { + var libs = require('module').builtinModules; + if (!libs) { + st.skip('module.builtinModules does not exist'); + return st.end(); + } + var blacklist = [ + '_debug_agent', + 'v8/tools/tickprocessor-driver', + 'v8/tools/SourceMap', + 'v8/tools/tickprocessor', + 'v8/tools/profile' + ]; + for (var i = 0; i < libs.length; ++i) { + var mod = libs[i]; + if (blacklist.indexOf(mod) === -1) { + st.ok(resolve.core[mod], mod + ' is a core module'); + st.doesNotThrow( + function () { require(mod); }, // eslint-disable-line no-loop-func + 'requiring ' + mod + ' does not throw' + ); + } + } + st.end(); + }); + + t.end(); +}); diff --git a/mybulma/node_modules/resolve/test/dotdot.js b/mybulma/node_modules/resolve/test/dotdot.js new file mode 100644 index 0000000..3080665 --- /dev/null +++ b/mybulma/node_modules/resolve/test/dotdot.js @@ -0,0 +1,29 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('dotdot', function (t) { + t.plan(4); + var dir = path.join(__dirname, '/dotdot/abc'); + + resolve('..', { basedir: dir }, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(__dirname, 'dotdot/index.js')); + }); + + resolve('.', { basedir: dir }, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, 'index.js')); + }); +}); + +test('dotdot sync', function (t) { + t.plan(2); + var dir = path.join(__dirname, '/dotdot/abc'); + + var a = resolve.sync('..', { basedir: dir }); + t.equal(a, path.join(__dirname, 'dotdot/index.js')); + + var b = resolve.sync('.', { basedir: dir }); + t.equal(b, path.join(dir, 'index.js')); +}); diff --git a/mybulma/node_modules/resolve/test/dotdot/abc/index.js b/mybulma/node_modules/resolve/test/dotdot/abc/index.js new file mode 100644 index 0000000..67f2534 --- /dev/null +++ b/mybulma/node_modules/resolve/test/dotdot/abc/index.js @@ -0,0 +1,2 @@ +var x = require('..'); +console.log(x); diff --git a/mybulma/node_modules/resolve/test/dotdot/index.js b/mybulma/node_modules/resolve/test/dotdot/index.js new file mode 100644 index 0000000..643f9fc --- /dev/null +++ b/mybulma/node_modules/resolve/test/dotdot/index.js @@ -0,0 +1 @@ +module.exports = 'whatever'; diff --git a/mybulma/node_modules/resolve/test/faulty_basedir.js b/mybulma/node_modules/resolve/test/faulty_basedir.js new file mode 100644 index 0000000..5f2141a --- /dev/null +++ b/mybulma/node_modules/resolve/test/faulty_basedir.js @@ -0,0 +1,29 @@ +var test = require('tape'); +var path = require('path'); +var resolve = require('../'); + +test('faulty basedir must produce error in windows', { skip: process.platform !== 'win32' }, function (t) { + t.plan(1); + + var resolverDir = 'C:\\a\\b\\c\\d'; + + resolve('tape/lib/test.js', { basedir: resolverDir }, function (err, res, pkg) { + t.equal(!!err, true); + }); +}); + +test('non-existent basedir should not throw when preserveSymlinks is false', function (t) { + t.plan(2); + + var opts = { + basedir: path.join(path.sep, 'unreal', 'path', 'that', 'does', 'not', 'exist'), + preserveSymlinks: false + }; + + var module = './dotdot/abc'; + + resolve(module, opts, function (err, res) { + t.equal(err.code, 'MODULE_NOT_FOUND'); + t.equal(res, undefined); + }); +}); diff --git a/mybulma/node_modules/resolve/test/filter.js b/mybulma/node_modules/resolve/test/filter.js new file mode 100644 index 0000000..8f8cccd --- /dev/null +++ b/mybulma/node_modules/resolve/test/filter.js @@ -0,0 +1,34 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('filter', function (t) { + t.plan(4); + var dir = path.join(__dirname, 'resolver'); + var packageFilterArgs; + resolve('./baz', { + basedir: dir, + packageFilter: function (pkg, pkgfile) { + pkg.main = 'doom'; // eslint-disable-line no-param-reassign + packageFilterArgs = [pkg, pkgfile]; + return pkg; + } + }, function (err, res, pkg) { + if (err) t.fail(err); + + t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works'); + + var packageData = packageFilterArgs[0]; + t.equal(pkg, packageData, 'first packageFilter argument is "pkg"'); + t.equal(packageData.main, 'doom', 'package "main" was altered'); + + var packageFile = packageFilterArgs[1]; + t.equal( + packageFile, + path.join(dir, 'baz/package.json'), + 'second packageFilter argument is "pkgfile"' + ); + + t.end(); + }); +}); diff --git a/mybulma/node_modules/resolve/test/filter_sync.js b/mybulma/node_modules/resolve/test/filter_sync.js new file mode 100644 index 0000000..8a43b98 --- /dev/null +++ b/mybulma/node_modules/resolve/test/filter_sync.js @@ -0,0 +1,33 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('filter', function (t) { + var dir = path.join(__dirname, 'resolver'); + var packageFilterArgs; + var res = resolve.sync('./baz', { + basedir: dir, + // NOTE: in v2.x, this will be `pkg, pkgfile, dir`, but must remain "broken" here in v1.x for compatibility + packageFilter: function (pkg, /*pkgfile,*/ dir) { // eslint-disable-line spaced-comment + pkg.main = 'doom'; // eslint-disable-line no-param-reassign + packageFilterArgs = 'is 1.x' ? [pkg, dir] : [pkg, pkgfile, dir]; // eslint-disable-line no-constant-condition, no-undef + return pkg; + } + }); + + t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works'); + + var packageData = packageFilterArgs[0]; + t.equal(packageData.main, 'doom', 'package "main" was altered'); + + if (!'is 1.x') { // eslint-disable-line no-constant-condition + var packageFile = packageFilterArgs[1]; + t.equal(packageFile, path.join(dir, 'baz', 'package.json'), 'package.json path is correct'); + } + + var packageDir = packageFilterArgs['is 1.x' ? 1 : 2]; // eslint-disable-line no-constant-condition + // eslint-disable-next-line no-constant-condition + t.equal(packageDir, path.join(dir, 'baz'), ('is 1.x' ? 'second' : 'third') + ' packageFilter argument is "dir"'); + + t.end(); +}); diff --git a/mybulma/node_modules/resolve/test/home_paths.js b/mybulma/node_modules/resolve/test/home_paths.js new file mode 100644 index 0000000..3b8c9b3 --- /dev/null +++ b/mybulma/node_modules/resolve/test/home_paths.js @@ -0,0 +1,127 @@ +'use strict'; + +var fs = require('fs'); +var homedir = require('../lib/homedir'); +var path = require('path'); + +var test = require('tape'); +var mkdirp = require('mkdirp'); +var rimraf = require('rimraf'); +var mv = require('mv'); +var copyDir = require('copy-dir'); +var tmp = require('tmp'); + +var HOME = homedir(); + +var hnm = path.join(HOME, '.node_modules'); +var hnl = path.join(HOME, '.node_libraries'); + +var resolve = require('../async'); + +function makeDir(t, dir, cb) { + mkdirp(dir, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function cleanup() { + rimraf.sync(dir); + }); + cb(); + } + }); +} + +function makeTempDir(t, dir, cb) { + if (fs.existsSync(dir)) { + var tmpResult = tmp.dirSync(); + t.teardown(tmpResult.removeCallback); + var backup = path.join(tmpResult.name, path.basename(dir)); + mv(dir, backup, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function () { + mv(backup, dir, cb); + }); + makeDir(t, dir, cb); + } + }); + } else { + makeDir(t, dir, cb); + } +} + +test('homedir module paths', function (t) { + t.plan(7); + + makeTempDir(t, hnm, function (err) { + t.error(err, 'no error with HNM temp dir'); + if (err) { + return t.end(); + } + + var bazHNMDir = path.join(hnm, 'baz'); + var dotMainDir = path.join(hnm, 'dot_main'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNMDir); + copyDir.sync(path.join(__dirname, 'resolver/dot_main'), dotMainDir); + + var bazPkg = { name: 'baz', main: 'quux.js' }; + var dotMainPkg = { main: 'index' }; + + var bazHNMmain = path.join(bazHNMDir, 'quux.js'); + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + var dotMainMain = path.join(dotMainDir, 'index.js'); + t.equal(require.resolve('dot_main'), dotMainMain, 'sanity check: require.resolve finds `dot_main`'); + + makeTempDir(t, hnl, function (err) { + t.error(err, 'no error with HNL temp dir'); + if (err) { + return t.end(); + } + var bazHNLDir = path.join(hnl, 'baz'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNLDir); + + var dotSlashMainDir = path.join(hnl, 'dot_slash_main'); + var dotSlashMainMain = path.join(dotSlashMainDir, 'index.js'); + var dotSlashMainPkg = { main: 'index' }; + copyDir.sync(path.join(__dirname, 'resolver/dot_slash_main'), dotSlashMainDir); + + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + t.equal(require.resolve('dot_slash_main'), dotSlashMainMain, 'sanity check: require.resolve finds HNL `dot_slash_main`'); + + t.test('with temp dirs', function (st) { + st.plan(3); + + st.test('just in `$HOME/.node_modules`', function (s2t) { + s2t.plan(3); + + resolve('dot_main', function (err, res, pkg) { + s2t.error(err, 'no error resolving `dot_main`'); + s2t.equal(res, dotMainMain, '`dot_main` resolves in `$HOME/.node_modules`'); + s2t.deepEqual(pkg, dotMainPkg); + }); + }); + + st.test('just in `$HOME/.node_libraries`', function (s2t) { + s2t.plan(3); + + resolve('dot_slash_main', function (err, res, pkg) { + s2t.error(err, 'no error resolving `dot_slash_main`'); + s2t.equal(res, dotSlashMainMain, '`dot_slash_main` resolves in `$HOME/.node_libraries`'); + s2t.deepEqual(pkg, dotSlashMainPkg); + }); + }); + + st.test('in `$HOME/.node_libraries` and `$HOME/.node_modules`', function (s2t) { + s2t.plan(3); + + resolve('baz', function (err, res, pkg) { + s2t.error(err, 'no error resolving `baz`'); + s2t.equal(res, bazHNMmain, '`baz` resolves in `$HOME/.node_modules` when in both'); + s2t.deepEqual(pkg, bazPkg); + }); + }); + }); + }); + }); +}); diff --git a/mybulma/node_modules/resolve/test/home_paths_sync.js b/mybulma/node_modules/resolve/test/home_paths_sync.js new file mode 100644 index 0000000..5d2c56f --- /dev/null +++ b/mybulma/node_modules/resolve/test/home_paths_sync.js @@ -0,0 +1,114 @@ +'use strict'; + +var fs = require('fs'); +var homedir = require('../lib/homedir'); +var path = require('path'); + +var test = require('tape'); +var mkdirp = require('mkdirp'); +var rimraf = require('rimraf'); +var mv = require('mv'); +var copyDir = require('copy-dir'); +var tmp = require('tmp'); + +var HOME = homedir(); + +var hnm = path.join(HOME, '.node_modules'); +var hnl = path.join(HOME, '.node_libraries'); + +var resolve = require('../sync'); + +function makeDir(t, dir, cb) { + mkdirp(dir, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function cleanup() { + rimraf.sync(dir); + }); + cb(); + } + }); +} + +function makeTempDir(t, dir, cb) { + if (fs.existsSync(dir)) { + var tmpResult = tmp.dirSync(); + t.teardown(tmpResult.removeCallback); + var backup = path.join(tmpResult.name, path.basename(dir)); + mv(dir, backup, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function () { + mv(backup, dir, cb); + }); + makeDir(t, dir, cb); + } + }); + } else { + makeDir(t, dir, cb); + } +} + +test('homedir module paths', function (t) { + t.plan(7); + + makeTempDir(t, hnm, function (err) { + t.error(err, 'no error with HNM temp dir'); + if (err) { + return t.end(); + } + + var bazHNMDir = path.join(hnm, 'baz'); + var dotMainDir = path.join(hnm, 'dot_main'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNMDir); + copyDir.sync(path.join(__dirname, 'resolver/dot_main'), dotMainDir); + + var bazHNMmain = path.join(bazHNMDir, 'quux.js'); + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + var dotMainMain = path.join(dotMainDir, 'index.js'); + t.equal(require.resolve('dot_main'), dotMainMain, 'sanity check: require.resolve finds `dot_main`'); + + makeTempDir(t, hnl, function (err) { + t.error(err, 'no error with HNL temp dir'); + if (err) { + return t.end(); + } + var bazHNLDir = path.join(hnl, 'baz'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNLDir); + + var dotSlashMainDir = path.join(hnl, 'dot_slash_main'); + var dotSlashMainMain = path.join(dotSlashMainDir, 'index.js'); + copyDir.sync(path.join(__dirname, 'resolver/dot_slash_main'), dotSlashMainDir); + + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + t.equal(require.resolve('dot_slash_main'), dotSlashMainMain, 'sanity check: require.resolve finds HNL `dot_slash_main`'); + + t.test('with temp dirs', function (st) { + st.plan(3); + + st.test('just in `$HOME/.node_modules`', function (s2t) { + s2t.plan(1); + + var res = resolve('dot_main'); + s2t.equal(res, dotMainMain, '`dot_main` resolves in `$HOME/.node_modules`'); + }); + + st.test('just in `$HOME/.node_libraries`', function (s2t) { + s2t.plan(1); + + var res = resolve('dot_slash_main'); + s2t.equal(res, dotSlashMainMain, '`dot_slash_main` resolves in `$HOME/.node_libraries`'); + }); + + st.test('in `$HOME/.node_libraries` and `$HOME/.node_modules`', function (s2t) { + s2t.plan(1); + + var res = resolve('baz'); + s2t.equal(res, bazHNMmain, '`baz` resolves in `$HOME/.node_modules` when in both'); + }); + }); + }); + }); +}); diff --git a/mybulma/node_modules/resolve/test/mock.js b/mybulma/node_modules/resolve/test/mock.js new file mode 100644 index 0000000..6116275 --- /dev/null +++ b/mybulma/node_modules/resolve/test/mock.js @@ -0,0 +1,315 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('mock', function (t) { + t.plan(8); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg, undefined); + }); + + resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg, undefined); + }); + + resolve('baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + resolve('../baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('mock from package', function (t) { + t.plan(8); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, file)); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + 'package': { main: 'bar' }, + readFile: function (file, cb) { + cb(null, files[file]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg && pkg.main, 'bar'); + }); + + resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg && pkg.main, 'bar'); + }); + + resolve('baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + resolve('../baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('mock package', function (t) { + t.plan(2); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('bar', opts('/foo'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/node_modules/bar/baz.js')); + t.equal(pkg && pkg.main, './baz.js'); + }); +}); + +test('mock package from package', function (t) { + t.plan(2); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + 'package': { main: 'bar' }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('bar', opts('/foo'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/node_modules/bar/baz.js')); + t.equal(pkg && pkg.main, './baz.js'); + }); +}); + +test('symlinked', function (t) { + t.plan(4); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + dirs[path.resolve('/foo/bar/symlinked')] = true; + + function opts(basedir) { + return { + preserveSymlinks: false, + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + var resolved = path.resolve(file); + + if (resolved.indexOf('symlinked') >= 0) { + cb(null, resolved); + return; + } + + var ext = path.extname(resolved); + + if (ext) { + var dir = path.dirname(resolved); + var base = path.basename(resolved); + cb(null, path.join(dir, 'symlinked', base)); + } else { + cb(null, path.join(resolved, 'symlinked')); + } + } + }; + } + + resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/symlinked/baz.js')); + t.equal(pkg, undefined); + }); + + resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/symlinked/baz.js')); + t.equal(pkg, undefined); + }); +}); + +test('readPackage', function (t) { + t.plan(3); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/something-else.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'boop'; + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + 'package': { main: 'bar' }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + t.test('with readFile', function (st) { + st.plan(3); + + resolve('bar', opts('/foo'), function (err, res, pkg) { + st.error(err); + st.equal(res, path.resolve('/foo/node_modules/bar/baz.js')); + st.equal(pkg && pkg.main, './baz.js'); + }); + }); + + var readPackage = function (readFile, file, cb) { + var barPackage = path.join('bar', 'package.json'); + if (file.slice(-barPackage.length) === barPackage) { + cb(null, { main: './something-else.js' }); + } else { + cb(null, JSON.parse(files[path.resolve(file)])); + } + }; + + t.test('with readPackage', function (st) { + st.plan(3); + + var options = opts('/foo'); + delete options.readFile; + options.readPackage = readPackage; + resolve('bar', options, function (err, res, pkg) { + st.error(err); + st.equal(res, path.resolve('/foo/node_modules/bar/something-else.js')); + st.equal(pkg && pkg.main, './something-else.js'); + }); + }); + + t.test('with readFile and readPackage', function (st) { + st.plan(1); + + var options = opts('/foo'); + options.readPackage = readPackage; + resolve('bar', options, function (err) { + st.throws(function () { throw err; }, TypeError, 'errors when both readFile and readPackage are provided'); + }); + }); +}); diff --git a/mybulma/node_modules/resolve/test/mock_sync.js b/mybulma/node_modules/resolve/test/mock_sync.js new file mode 100644 index 0000000..c5a7e2a --- /dev/null +++ b/mybulma/node_modules/resolve/test/mock_sync.js @@ -0,0 +1,214 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('mock', function (t) { + t.plan(4); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + return file; + } + }; + } + + t.equal( + resolve.sync('./baz', opts('/foo/bar')), + path.resolve('/foo/bar/baz.js') + ); + + t.equal( + resolve.sync('./baz.js', opts('/foo/bar')), + path.resolve('/foo/bar/baz.js') + ); + + t.throws(function () { + resolve.sync('baz', opts('/foo/bar')); + }); + + t.throws(function () { + resolve.sync('../baz', opts('/foo/bar')); + }); +}); + +test('mock package', function (t) { + t.plan(1); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + return file; + } + }; + } + + t.equal( + resolve.sync('bar', opts('/foo')), + path.resolve('/foo/node_modules/bar/baz.js') + ); +}); + +test('symlinked', function (t) { + t.plan(2); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + dirs[path.resolve('/foo/bar/symlinked')] = true; + + function opts(basedir) { + return { + preserveSymlinks: false, + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + var resolved = path.resolve(file); + + if (resolved.indexOf('symlinked') >= 0) { + return resolved; + } + + var ext = path.extname(resolved); + + if (ext) { + var dir = path.dirname(resolved); + var base = path.basename(resolved); + return path.join(dir, 'symlinked', base); + } + return path.join(resolved, 'symlinked'); + } + }; + } + + t.equal( + resolve.sync('./baz', opts('/foo/bar')), + path.resolve('/foo/bar/symlinked/baz.js') + ); + + t.equal( + resolve.sync('./baz.js', opts('/foo/bar')), + path.resolve('/foo/bar/symlinked/baz.js') + ); +}); + +test('readPackageSync', function (t) { + t.plan(3); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/something-else.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'boop'; + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir, useReadPackage) { + return { + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: useReadPackage ? null : function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + return file; + } + }; + } + t.test('with readFile', function (st) { + st.plan(1); + + st.equal( + resolve.sync('bar', opts('/foo')), + path.resolve('/foo/node_modules/bar/baz.js') + ); + }); + + var readPackageSync = function (readFileSync, file) { + if (file.indexOf(path.join('bar', 'package.json')) >= 0) { + return { main: './something-else.js' }; + } + return JSON.parse(files[path.resolve(file)]); + }; + + t.test('with readPackage', function (st) { + st.plan(1); + + var options = opts('/foo'); + delete options.readFileSync; + options.readPackageSync = readPackageSync; + + st.equal( + resolve.sync('bar', options), + path.resolve('/foo/node_modules/bar/something-else.js') + ); + }); + + t.test('with readFile and readPackage', function (st) { + st.plan(1); + + var options = opts('/foo'); + options.readPackageSync = readPackageSync; + st.throws( + function () { resolve.sync('bar', options); }, + TypeError, + 'errors when both readFile and readPackage are provided' + ); + }); +}); + diff --git a/mybulma/node_modules/resolve/test/module_dir.js b/mybulma/node_modules/resolve/test/module_dir.js new file mode 100644 index 0000000..b50e5bb --- /dev/null +++ b/mybulma/node_modules/resolve/test/module_dir.js @@ -0,0 +1,56 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('moduleDirectory strings', function (t) { + t.plan(4); + var dir = path.join(__dirname, 'module_dir'); + var xopts = { + basedir: dir, + moduleDirectory: 'xmodules' + }; + resolve('aaa', xopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/xmodules/aaa/index.js')); + }); + + var yopts = { + basedir: dir, + moduleDirectory: 'ymodules' + }; + resolve('aaa', yopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/ymodules/aaa/index.js')); + }); +}); + +test('moduleDirectory array', function (t) { + t.plan(6); + var dir = path.join(__dirname, 'module_dir'); + var aopts = { + basedir: dir, + moduleDirectory: ['xmodules', 'ymodules', 'zmodules'] + }; + resolve('aaa', aopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/xmodules/aaa/index.js')); + }); + + var bopts = { + basedir: dir, + moduleDirectory: ['zmodules', 'ymodules', 'xmodules'] + }; + resolve('aaa', bopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/ymodules/aaa/index.js')); + }); + + var copts = { + basedir: dir, + moduleDirectory: ['xmodules', 'ymodules', 'zmodules'] + }; + resolve('bbb', copts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/zmodules/bbb/main.js')); + }); +}); diff --git a/mybulma/node_modules/resolve/test/module_dir/xmodules/aaa/index.js b/mybulma/node_modules/resolve/test/module_dir/xmodules/aaa/index.js new file mode 100644 index 0000000..dd7cf7b --- /dev/null +++ b/mybulma/node_modules/resolve/test/module_dir/xmodules/aaa/index.js @@ -0,0 +1 @@ +module.exports = function (x) { return x * 100; }; diff --git a/mybulma/node_modules/resolve/test/module_dir/ymodules/aaa/index.js b/mybulma/node_modules/resolve/test/module_dir/ymodules/aaa/index.js new file mode 100644 index 0000000..ef2d4d4 --- /dev/null +++ b/mybulma/node_modules/resolve/test/module_dir/ymodules/aaa/index.js @@ -0,0 +1 @@ +module.exports = function (x) { return x + 100; }; diff --git a/mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/main.js b/mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/main.js new file mode 100644 index 0000000..e8ba629 --- /dev/null +++ b/mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/main.js @@ -0,0 +1 @@ +module.exports = function (n) { return n * 111; }; diff --git a/mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/package.json b/mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/package.json new file mode 100644 index 0000000..c13b8cf --- /dev/null +++ b/mybulma/node_modules/resolve/test/module_dir/zmodules/bbb/package.json @@ -0,0 +1,3 @@ +{ + "main": "main.js" +} diff --git a/mybulma/node_modules/resolve/test/node-modules-paths.js b/mybulma/node_modules/resolve/test/node-modules-paths.js new file mode 100644 index 0000000..675441d --- /dev/null +++ b/mybulma/node_modules/resolve/test/node-modules-paths.js @@ -0,0 +1,143 @@ +var test = require('tape'); +var path = require('path'); +var parse = path.parse || require('path-parse'); +var keys = require('object-keys'); + +var nodeModulesPaths = require('../lib/node-modules-paths'); + +var verifyDirs = function verifyDirs(t, start, dirs, moduleDirectories, paths) { + var moduleDirs = [].concat(moduleDirectories || 'node_modules'); + if (paths) { + for (var k = 0; k < paths.length; ++k) { + moduleDirs.push(path.basename(paths[k])); + } + } + + var foundModuleDirs = {}; + var uniqueDirs = {}; + var parsedDirs = {}; + for (var i = 0; i < dirs.length; ++i) { + var parsed = parse(dirs[i]); + if (!foundModuleDirs[parsed.base]) { foundModuleDirs[parsed.base] = 0; } + foundModuleDirs[parsed.base] += 1; + parsedDirs[parsed.dir] = true; + uniqueDirs[dirs[i]] = true; + } + t.equal(keys(parsedDirs).length >= start.split(path.sep).length, true, 'there are >= dirs than "start" has'); + var foundModuleDirNames = keys(foundModuleDirs); + t.deepEqual(foundModuleDirNames, moduleDirs, 'all desired module dirs were found'); + t.equal(keys(uniqueDirs).length, dirs.length, 'all dirs provided were unique'); + + var counts = {}; + for (var j = 0; j < foundModuleDirNames.length; ++j) { + counts[foundModuleDirs[j]] = true; + } + t.equal(keys(counts).length, 1, 'all found module directories had the same count'); +}; + +test('node-modules-paths', function (t) { + t.test('no options', function (t) { + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start); + + verifyDirs(t, start, dirs); + + t.end(); + }); + + t.test('empty options', function (t) { + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start, {}); + + verifyDirs(t, start, dirs); + + t.end(); + }); + + t.test('with paths=array option', function (t) { + var start = path.join(__dirname, 'resolver'); + var paths = ['a', 'b']; + var dirs = nodeModulesPaths(start, { paths: paths }); + + verifyDirs(t, start, dirs, null, paths); + + t.end(); + }); + + t.test('with paths=function option', function (t) { + var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) { + return getNodeModulesDirs().concat(path.join(absoluteStart, 'not node modules', request)); + }; + + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start, { paths: paths }, 'pkg'); + + verifyDirs(t, start, dirs, null, [path.join(start, 'not node modules', 'pkg')]); + + t.end(); + }); + + t.test('with paths=function skipping node modules resolution', function (t) { + var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) { + return []; + }; + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start, { paths: paths }); + t.deepEqual(dirs, [], 'no node_modules was computed'); + t.end(); + }); + + t.test('with moduleDirectory option', function (t) { + var start = path.join(__dirname, 'resolver'); + var moduleDirectory = 'not node modules'; + var dirs = nodeModulesPaths(start, { moduleDirectory: moduleDirectory }); + + verifyDirs(t, start, dirs, moduleDirectory); + + t.end(); + }); + + t.test('with 1 moduleDirectory and paths options', function (t) { + var start = path.join(__dirname, 'resolver'); + var paths = ['a', 'b']; + var moduleDirectory = 'not node modules'; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectory }); + + verifyDirs(t, start, dirs, moduleDirectory, paths); + + t.end(); + }); + + t.test('with 1+ moduleDirectory and paths options', function (t) { + var start = path.join(__dirname, 'resolver'); + var paths = ['a', 'b']; + var moduleDirectories = ['not node modules', 'other modules']; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories }); + + verifyDirs(t, start, dirs, moduleDirectories, paths); + + t.end(); + }); + + t.test('combine paths correctly on Windows', function (t) { + var start = 'C:\\Users\\username\\myProject\\src'; + var paths = []; + var moduleDirectories = ['node_modules', start]; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories }); + + t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir'); + + t.end(); + }); + + t.test('combine paths correctly on non-Windows', { skip: process.platform === 'win32' }, function (t) { + var start = '/Users/username/git/myProject/src'; + var paths = []; + var moduleDirectories = ['node_modules', '/Users/username/git/myProject/src']; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories }); + + t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir'); + + t.end(); + }); +}); diff --git a/mybulma/node_modules/resolve/test/node_path.js b/mybulma/node_modules/resolve/test/node_path.js new file mode 100644 index 0000000..e463d6c --- /dev/null +++ b/mybulma/node_modules/resolve/test/node_path.js @@ -0,0 +1,70 @@ +var fs = require('fs'); +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('$NODE_PATH', function (t) { + t.plan(8); + + var isDir = function (dir, cb) { + if (dir === '/node_path' || dir === 'node_path/x') { + return cb(null, true); + } + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); + }; + + resolve('aaa', { + paths: [ + path.join(__dirname, '/node_path/x'), + path.join(__dirname, '/node_path/y') + ], + basedir: __dirname, + isDirectory: isDir + }, function (err, res) { + t.error(err); + t.equal(res, path.join(__dirname, '/node_path/x/aaa/index.js'), 'aaa resolves'); + }); + + resolve('bbb', { + paths: [ + path.join(__dirname, '/node_path/x'), + path.join(__dirname, '/node_path/y') + ], + basedir: __dirname, + isDirectory: isDir + }, function (err, res) { + t.error(err); + t.equal(res, path.join(__dirname, '/node_path/y/bbb/index.js'), 'bbb resolves'); + }); + + resolve('ccc', { + paths: [ + path.join(__dirname, '/node_path/x'), + path.join(__dirname, '/node_path/y') + ], + basedir: __dirname, + isDirectory: isDir + }, function (err, res) { + t.error(err); + t.equal(res, path.join(__dirname, '/node_path/x/ccc/index.js'), 'ccc resolves'); + }); + + // ensure that relative paths still resolve against the regular `node_modules` correctly + resolve('tap', { + paths: [ + 'node_path' + ], + basedir: path.join(__dirname, 'node_path/x'), + isDirectory: isDir + }, function (err, res) { + var root = require('tap/package.json').main; // eslint-disable-line global-require + t.error(err); + t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap', root), 'tap resolves'); + }); +}); diff --git a/mybulma/node_modules/resolve/test/node_path/x/aaa/index.js b/mybulma/node_modules/resolve/test/node_path/x/aaa/index.js new file mode 100644 index 0000000..ad70d0b --- /dev/null +++ b/mybulma/node_modules/resolve/test/node_path/x/aaa/index.js @@ -0,0 +1 @@ +module.exports = 'A'; diff --git a/mybulma/node_modules/resolve/test/node_path/x/ccc/index.js b/mybulma/node_modules/resolve/test/node_path/x/ccc/index.js new file mode 100644 index 0000000..a64132e --- /dev/null +++ b/mybulma/node_modules/resolve/test/node_path/x/ccc/index.js @@ -0,0 +1 @@ +module.exports = 'C'; diff --git a/mybulma/node_modules/resolve/test/node_path/y/bbb/index.js b/mybulma/node_modules/resolve/test/node_path/y/bbb/index.js new file mode 100644 index 0000000..4d0f32e --- /dev/null +++ b/mybulma/node_modules/resolve/test/node_path/y/bbb/index.js @@ -0,0 +1 @@ +module.exports = 'B'; diff --git a/mybulma/node_modules/resolve/test/node_path/y/ccc/index.js b/mybulma/node_modules/resolve/test/node_path/y/ccc/index.js new file mode 100644 index 0000000..793315e --- /dev/null +++ b/mybulma/node_modules/resolve/test/node_path/y/ccc/index.js @@ -0,0 +1 @@ +module.exports = 'CY'; diff --git a/mybulma/node_modules/resolve/test/nonstring.js b/mybulma/node_modules/resolve/test/nonstring.js new file mode 100644 index 0000000..ef63c40 --- /dev/null +++ b/mybulma/node_modules/resolve/test/nonstring.js @@ -0,0 +1,9 @@ +var test = require('tape'); +var resolve = require('../'); + +test('nonstring', function (t) { + t.plan(1); + resolve(555, function (err, res, pkg) { + t.ok(err); + }); +}); diff --git a/mybulma/node_modules/resolve/test/pathfilter.js b/mybulma/node_modules/resolve/test/pathfilter.js new file mode 100644 index 0000000..16519ae --- /dev/null +++ b/mybulma/node_modules/resolve/test/pathfilter.js @@ -0,0 +1,75 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +var resolverDir = path.join(__dirname, '/pathfilter/deep_ref'); + +var pathFilterFactory = function (t) { + return function (pkg, x, remainder) { + t.equal(pkg.version, '1.2.3'); + t.equal(x, path.join(resolverDir, 'node_modules/deep/ref')); + t.equal(remainder, 'ref'); + return 'alt'; + }; +}; + +test('#62: deep module references and the pathFilter', function (t) { + t.test('deep/ref.js', function (st) { + st.plan(3); + + resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) { + if (err) st.fail(err); + + st.equal(pkg.version, '1.2.3'); + st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js')); + }); + + var res = resolve.sync('deep/ref', { basedir: resolverDir }); + st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js')); + }); + + t.test('deep/deeper/ref', function (st) { + st.plan(4); + + resolve( + 'deep/deeper/ref', + { basedir: resolverDir }, + function (err, res, pkg) { + if (err) t.fail(err); + st.notEqual(pkg, undefined); + st.equal(pkg.version, '1.2.3'); + st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js')); + } + ); + + var res = resolve.sync( + 'deep/deeper/ref', + { basedir: resolverDir } + ); + st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js')); + }); + + t.test('deep/ref alt', function (st) { + st.plan(8); + + var pathFilter = pathFilterFactory(st); + + var res = resolve.sync( + 'deep/ref', + { basedir: resolverDir, pathFilter: pathFilter } + ); + st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js')); + + resolve( + 'deep/ref', + { basedir: resolverDir, pathFilter: pathFilter }, + function (err, res, pkg) { + if (err) st.fail(err); + st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js')); + st.end(); + } + ); + }); + + t.end(); +}); diff --git a/mybulma/node_modules/resolve/test/pathfilter/deep_ref/main.js b/mybulma/node_modules/resolve/test/pathfilter/deep_ref/main.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/precedence.js b/mybulma/node_modules/resolve/test/precedence.js new file mode 100644 index 0000000..2febb59 --- /dev/null +++ b/mybulma/node_modules/resolve/test/precedence.js @@ -0,0 +1,23 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('precedence', function (t) { + t.plan(3); + var dir = path.join(__dirname, 'precedence/aaa'); + + resolve('./', { basedir: dir }, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, 'index.js')); + t.equal(pkg.name, 'resolve'); + }); +}); + +test('./ should not load ${dir}.js', function (t) { // eslint-disable-line no-template-curly-in-string + t.plan(1); + var dir = path.join(__dirname, 'precedence/bbb'); + + resolve('./', { basedir: dir }, function (err, res, pkg) { + t.ok(err); + }); +}); diff --git a/mybulma/node_modules/resolve/test/precedence/aaa.js b/mybulma/node_modules/resolve/test/precedence/aaa.js new file mode 100644 index 0000000..b83a3e7 --- /dev/null +++ b/mybulma/node_modules/resolve/test/precedence/aaa.js @@ -0,0 +1 @@ +module.exports = 'wtf'; diff --git a/mybulma/node_modules/resolve/test/precedence/aaa/index.js b/mybulma/node_modules/resolve/test/precedence/aaa/index.js new file mode 100644 index 0000000..e0f8f6a --- /dev/null +++ b/mybulma/node_modules/resolve/test/precedence/aaa/index.js @@ -0,0 +1 @@ +module.exports = 'okok'; diff --git a/mybulma/node_modules/resolve/test/precedence/aaa/main.js b/mybulma/node_modules/resolve/test/precedence/aaa/main.js new file mode 100644 index 0000000..93542a9 --- /dev/null +++ b/mybulma/node_modules/resolve/test/precedence/aaa/main.js @@ -0,0 +1 @@ +console.log(require('./')); diff --git a/mybulma/node_modules/resolve/test/precedence/bbb.js b/mybulma/node_modules/resolve/test/precedence/bbb.js new file mode 100644 index 0000000..2298f47 --- /dev/null +++ b/mybulma/node_modules/resolve/test/precedence/bbb.js @@ -0,0 +1 @@ +module.exports = '>_<'; diff --git a/mybulma/node_modules/resolve/test/precedence/bbb/main.js b/mybulma/node_modules/resolve/test/precedence/bbb/main.js new file mode 100644 index 0000000..716b81d --- /dev/null +++ b/mybulma/node_modules/resolve/test/precedence/bbb/main.js @@ -0,0 +1 @@ +console.log(require('./')); // should throw diff --git a/mybulma/node_modules/resolve/test/resolver.js b/mybulma/node_modules/resolve/test/resolver.js new file mode 100644 index 0000000..4903165 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver.js @@ -0,0 +1,595 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); +var async = require('../async'); + +test('`./async` entry point', function (t) { + t.equal(resolve, async, '`./async` entry point is the same as `main`'); + t.end(); +}); + +test('async foo', function (t) { + t.plan(12); + var dir = path.join(__dirname, 'resolver'); + + resolve('./foo', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg && pkg.name, 'resolve'); + }); + + resolve('./foo.js', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg && pkg.name, 'resolve'); + }); + + resolve('./foo', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg && pkg.main, 'resolver'); + }); + + resolve('./foo.js', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg.main, 'resolver'); + }); + + resolve('./foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + }); + + resolve('foo', { basedir: dir }, function (err) { + t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + // Test that filename is reported as the "from" value when passed. + resolve('foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err) { + t.equal(err.message, "Cannot find module 'foo' from '" + path.join(dir, 'baz.js') + "'"); + }); +}); + +test('bar', function (t) { + t.plan(6); + var dir = path.join(__dirname, 'resolver'); + + resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js')); + t.equal(pkg, undefined); + }); + + resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js')); + t.equal(pkg, undefined); + }); + + resolve('foo', { basedir: dir + '/bar', 'package': { main: 'bar' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js')); + t.equal(pkg.main, 'bar'); + }); +}); + +test('baz', function (t) { + t.plan(4); + var dir = path.join(__dirname, 'resolver'); + + resolve('./baz', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'baz/quux.js')); + t.equal(pkg.main, 'quux.js'); + }); + + resolve('./baz', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'baz/quux.js')); + t.equal(pkg.main, 'quux.js'); + }); +}); + +test('biz', function (t) { + t.plan(24); + var dir = path.join(__dirname, 'resolver/biz/node_modules'); + + resolve('./grux', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg, undefined); + }); + + resolve('./grux', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg.main, 'biz'); + }); + + resolve('./garply', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('./garply', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('tiv', { basedir: dir + '/grux' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg, undefined); + }); + + resolve('tiv', { basedir: dir + '/grux', 'package': { main: 'grux' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg.main, 'grux'); + }); + + resolve('tiv', { basedir: dir + '/garply' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg, undefined); + }); + + resolve('tiv', { basedir: dir + '/garply', 'package': { main: './lib' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('grux', { basedir: dir + '/tiv' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg, undefined); + }); + + resolve('grux', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg.main, 'tiv'); + }); + + resolve('garply', { basedir: dir + '/tiv' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('garply', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); +}); + +test('quux', function (t) { + t.plan(2); + var dir = path.join(__dirname, 'resolver/quux'); + + resolve('./foo', { basedir: dir, 'package': { main: 'quux' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo/index.js')); + t.equal(pkg.main, 'quux'); + }); +}); + +test('normalize', function (t) { + t.plan(2); + var dir = path.join(__dirname, 'resolver/biz/node_modules/grux'); + + resolve('../grux', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'index.js')); + t.equal(pkg, undefined); + }); +}); + +test('cup', function (t) { + t.plan(5); + var dir = path.join(__dirname, 'resolver'); + + resolve('./cup', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'cup.coffee')); + }); + + resolve('./cup.coffee', { basedir: dir }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'cup.coffee')); + }); + + resolve('./cup', { basedir: dir, extensions: ['.js'] }, function (err, res) { + t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + // Test that filename is reported as the "from" value when passed. + resolve('./cup', { basedir: dir, extensions: ['.js'], filename: path.join(dir, 'cupboard.js') }, function (err, res) { + t.equal(err.message, "Cannot find module './cup' from '" + path.join(dir, 'cupboard.js') + "'"); + }); +}); + +test('mug', function (t) { + t.plan(3); + var dir = path.join(__dirname, 'resolver'); + + resolve('./mug', { basedir: dir }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'mug.js')); + }); + + resolve('./mug', { basedir: dir, extensions: ['.coffee', '.js'] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, '/mug.coffee')); + }); + + resolve('./mug', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) { + t.equal(res, path.join(dir, '/mug.js')); + }); +}); + +test('other path', function (t) { + t.plan(6); + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'bar'); + var otherDir = path.join(resolverDir, 'other_path'); + + resolve('root', { basedir: dir, paths: [otherDir] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(resolverDir, 'other_path/root.js')); + }); + + resolve('lib/other-lib', { basedir: dir, paths: [otherDir] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(resolverDir, 'other_path/lib/other-lib.js')); + }); + + resolve('root', { basedir: dir }, function (err, res) { + t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + resolve('zzz', { basedir: dir, paths: [otherDir] }, function (err, res) { + t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('path iterator', function (t) { + t.plan(2); + + var resolverDir = path.join(__dirname, 'resolver'); + + var exactIterator = function (x, start, getPackageCandidates, opts) { + return [path.join(resolverDir, x)]; + }; + + resolve('baz', { packageIterator: exactIterator }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(resolverDir, 'baz/quux.js')); + t.equal(pkg && pkg.name, 'baz'); + }); +}); + +test('incorrect main', function (t) { + t.plan(1); + + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'incorrect_main'); + + resolve('./incorrect_main', { basedir: resolverDir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'index.js')); + }); +}); + +test('missing index', function (t) { + t.plan(2); + + var resolverDir = path.join(__dirname, 'resolver'); + resolve('./missing_index', { basedir: resolverDir }, function (err, res, pkg) { + t.ok(err instanceof Error); + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + }); +}); + +test('missing main', function (t) { + t.plan(1); + + var resolverDir = path.join(__dirname, 'resolver'); + + resolve('./missing_main', { basedir: resolverDir }, function (err, res, pkg) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + }); +}); + +test('null main', function (t) { + t.plan(1); + + var resolverDir = path.join(__dirname, 'resolver'); + + resolve('./null_main', { basedir: resolverDir }, function (err, res, pkg) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + }); +}); + +test('main: false', function (t) { + t.plan(2); + + var basedir = path.join(__dirname, 'resolver'); + var dir = path.join(basedir, 'false_main'); + resolve('./false_main', { basedir: basedir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal( + res, + path.join(dir, 'index.js'), + '`"main": false`: resolves to `index.js`' + ); + t.deepEqual(pkg, { + name: 'false_main', + main: false + }); + }); +}); + +test('without basedir', function (t) { + t.plan(1); + + var dir = path.join(__dirname, 'resolver/without_basedir'); + var tester = require(path.join(dir, 'main.js')); // eslint-disable-line global-require + + tester(t, function (err, res, pkg) { + if (err) { + t.fail(err); + } else { + t.equal(res, path.join(dir, 'node_modules/mymodule.js')); + } + }); +}); + +test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) { + t.plan(2); + + var dir = path.join(__dirname, 'resolver'); + + resolve('./foo', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo.js')); + }); + + resolve('./foo/', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo/index.js')); + }); +}); + +test('#211 - incorrectly resolves module-paths like "." when from inside a folder with a sibling file of the same name', function (t) { + t.plan(2); + + var dir = path.join(__dirname, 'resolver'); + + resolve('./', { basedir: path.join(dir, 'same_names/foo') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo/index.js')); + }); + + resolve('.', { basedir: path.join(dir, 'same_names/foo') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo/index.js')); + }); +}); + +test('async: #121 - treating an existing file as a dir when no basedir', function (t) { + var testFile = path.basename(__filename); + + t.test('sanity check', function (st) { + st.plan(1); + resolve('./' + testFile, function (err, res, pkg) { + if (err) t.fail(err); + st.equal(res, __filename, 'sanity check'); + }); + }); + + t.test('with a fake directory', function (st) { + st.plan(4); + + resolve('./' + testFile + '/blah', function (err, res, pkg) { + st.ok(err, 'there is an error'); + st.notOk(res, 'no result'); + + st.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve'); + st.equal( + err && err.message, + 'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'', + 'can not find nonexistent module' + ); + st.end(); + }); + }); + + t.end(); +}); + +test('async dot main', function (t) { + var start = new Date(); + t.plan(3); + resolve('./resolver/dot_main', function (err, ret) { + t.notOk(err); + t.equal(ret, path.join(__dirname, 'resolver/dot_main/index.js')); + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + t.end(); + }); +}); + +test('async dot slash main', function (t) { + var start = new Date(); + t.plan(3); + resolve('./resolver/dot_slash_main', function (err, ret) { + t.notOk(err); + t.equal(ret, path.join(__dirname, 'resolver/dot_slash_main/index.js')); + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + t.end(); + }); +}); + +test('not a directory', function (t) { + t.plan(6); + var path = './foo'; + resolve(path, { basedir: __filename }, function (err, res, pkg) { + t.ok(err, 'a non-directory errors'); + t.equal(arguments.length, 1); + t.equal(res, undefined); + t.equal(pkg, undefined); + + t.equal(err && err.message, 'Cannot find module \'' + path + '\' from \'' + __filename + '\''); + t.equal(err && err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('non-string "main" field in package.json', function (t) { + t.plan(5); + + var dir = path.join(__dirname, 'resolver'); + resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + t.equal(res, undefined, 'res is undefined'); + t.equal(pkg, undefined, 'pkg is undefined'); + }); +}); + +test('non-string "main" field in package.json', function (t) { + t.plan(5); + + var dir = path.join(__dirname, 'resolver'); + resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + t.equal(res, undefined, 'res is undefined'); + t.equal(pkg, undefined, 'pkg is undefined'); + }); +}); + +test('browser field in package.json', function (t) { + t.plan(3); + + var dir = path.join(__dirname, 'resolver'); + resolve( + './browser_field', + { + basedir: dir, + packageFilter: function packageFilter(pkg) { + if (pkg.browser) { + pkg.main = pkg.browser; // eslint-disable-line no-param-reassign + delete pkg.browser; // eslint-disable-line no-param-reassign + } + return pkg; + } + }, + function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'browser_field', 'b.js')); + t.equal(pkg && pkg.main, 'b'); + t.equal(pkg && pkg.browser, undefined); + } + ); +}); + +test('absolute paths', function (t) { + t.plan(4); + + var extensionless = __filename.slice(0, -path.extname(__filename).length); + + resolve(__filename, function (err, res) { + t.equal( + res, + __filename, + 'absolute path to this file resolves' + ); + }); + resolve(extensionless, function (err, res) { + t.equal( + res, + __filename, + 'extensionless absolute path to this file resolves' + ); + }); + resolve(__filename, { basedir: process.cwd() }, function (err, res) { + t.equal( + res, + __filename, + 'absolute path to this file with a basedir resolves' + ); + }); + resolve(extensionless, { basedir: process.cwd() }, function (err, res) { + t.equal( + res, + __filename, + 'extensionless absolute path to this file with a basedir resolves' + ); + }); +}); + +test('malformed package.json', function (t) { + /* eslint operator-linebreak: ["error", "before"], function-paren-newline: "off" */ + t.plan( + (3 * 3) // 3 sets of 3 assertions in the final callback + + 2 // 1 readPackage call with malformed package.json + ); + + var basedir = path.join(__dirname, 'resolver/malformed_package_json'); + var expected = path.join(basedir, 'index.js'); + + resolve('./index.js', { basedir: basedir }, function (err, res, pkg) { + t.error(err, 'no error'); + t.equal(res, expected, 'malformed package.json is silently ignored'); + t.equal(pkg, undefined, 'malformed package.json gives an undefined `pkg` argument'); + }); + + resolve( + './index.js', + { + basedir: basedir, + packageFilter: function (pkg, pkgfile, dir) { + t.fail('should not reach here'); + } + }, + function (err, res, pkg) { + t.error(err, 'with packageFilter: no error'); + t.equal(res, expected, 'with packageFilter: malformed package.json is silently ignored'); + t.equal(pkg, undefined, 'with packageFilter: malformed package.json gives an undefined `pkg` argument'); + } + ); + + resolve( + './index.js', + { + basedir: basedir, + readPackage: function (readFile, pkgfile, cb) { + t.equal(pkgfile, path.join(basedir, 'package.json'), 'readPackageSync: `pkgfile` is package.json path'); + readFile(pkgfile, function (err, result) { + try { + cb(null, JSON.parse(result)); + } catch (e) { + t.ok(e instanceof SyntaxError, 'readPackage: malformed package.json parses as a syntax error'); + cb(null); + } + }); + } + }, + function (err, res, pkg) { + t.error(err, 'with readPackage: no error'); + t.equal(res, expected, 'with readPackage: malformed package.json is silently ignored'); + t.equal(pkg, undefined, 'with readPackage: malformed package.json gives an undefined `pkg` argument'); + } + ); +}); diff --git a/mybulma/node_modules/resolve/test/resolver/baz/doom.js b/mybulma/node_modules/resolve/test/resolver/baz/doom.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/baz/package.json b/mybulma/node_modules/resolve/test/resolver/baz/package.json new file mode 100644 index 0000000..2f77720 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/baz/package.json @@ -0,0 +1,4 @@ +{ + "name": "baz", + "main": "quux.js" +} diff --git a/mybulma/node_modules/resolve/test/resolver/baz/quux.js b/mybulma/node_modules/resolve/test/resolver/baz/quux.js new file mode 100644 index 0000000..bd816ea --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/baz/quux.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/mybulma/node_modules/resolve/test/resolver/browser_field/a.js b/mybulma/node_modules/resolve/test/resolver/browser_field/a.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/browser_field/b.js b/mybulma/node_modules/resolve/test/resolver/browser_field/b.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/browser_field/package.json b/mybulma/node_modules/resolve/test/resolver/browser_field/package.json new file mode 100644 index 0000000..bf406f0 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/browser_field/package.json @@ -0,0 +1,5 @@ +{ + "name": "browser_field", + "main": "a", + "browser": "b" +} diff --git a/mybulma/node_modules/resolve/test/resolver/cup.coffee b/mybulma/node_modules/resolve/test/resolver/cup.coffee new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/cup.coffee @@ -0,0 +1 @@ + diff --git a/mybulma/node_modules/resolve/test/resolver/dot_main/index.js b/mybulma/node_modules/resolve/test/resolver/dot_main/index.js new file mode 100644 index 0000000..bd816ea --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/dot_main/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/mybulma/node_modules/resolve/test/resolver/dot_main/package.json b/mybulma/node_modules/resolve/test/resolver/dot_main/package.json new file mode 100644 index 0000000..d7f4fc8 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/dot_main/package.json @@ -0,0 +1,3 @@ +{ + "main": "." +} diff --git a/mybulma/node_modules/resolve/test/resolver/dot_slash_main/index.js b/mybulma/node_modules/resolve/test/resolver/dot_slash_main/index.js new file mode 100644 index 0000000..bd816ea --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/dot_slash_main/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/mybulma/node_modules/resolve/test/resolver/dot_slash_main/package.json b/mybulma/node_modules/resolve/test/resolver/dot_slash_main/package.json new file mode 100644 index 0000000..f51287b --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/dot_slash_main/package.json @@ -0,0 +1,3 @@ +{ + "main": "./" +} diff --git a/mybulma/node_modules/resolve/test/resolver/false_main/index.js b/mybulma/node_modules/resolve/test/resolver/false_main/index.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/false_main/package.json b/mybulma/node_modules/resolve/test/resolver/false_main/package.json new file mode 100644 index 0000000..a7416c0 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/false_main/package.json @@ -0,0 +1,4 @@ +{ + "name": "false_main", + "main": false +} diff --git a/mybulma/node_modules/resolve/test/resolver/foo.js b/mybulma/node_modules/resolve/test/resolver/foo.js new file mode 100644 index 0000000..bd816ea --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/foo.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/mybulma/node_modules/resolve/test/resolver/incorrect_main/index.js b/mybulma/node_modules/resolve/test/resolver/incorrect_main/index.js new file mode 100644 index 0000000..bc1fb0a --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/incorrect_main/index.js @@ -0,0 +1,2 @@ +// this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate +module.exports = 1; diff --git a/mybulma/node_modules/resolve/test/resolver/incorrect_main/package.json b/mybulma/node_modules/resolve/test/resolver/incorrect_main/package.json new file mode 100644 index 0000000..b718804 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/incorrect_main/package.json @@ -0,0 +1,3 @@ +{ + "main": "wrong.js" +} diff --git a/mybulma/node_modules/resolve/test/resolver/invalid_main/package.json b/mybulma/node_modules/resolve/test/resolver/invalid_main/package.json new file mode 100644 index 0000000..0590748 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/invalid_main/package.json @@ -0,0 +1,7 @@ +{ + "name": "invalid_main", + "main": [ + "why is this a thing", + "srsly omg wtf" + ] +} diff --git a/mybulma/node_modules/resolve/test/resolver/malformed_package_json/index.js b/mybulma/node_modules/resolve/test/resolver/malformed_package_json/index.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/malformed_package_json/package.json b/mybulma/node_modules/resolve/test/resolver/malformed_package_json/package.json new file mode 100644 index 0000000..98232c6 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/malformed_package_json/package.json @@ -0,0 +1 @@ +{ diff --git a/mybulma/node_modules/resolve/test/resolver/mug.coffee b/mybulma/node_modules/resolve/test/resolver/mug.coffee new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/mug.js b/mybulma/node_modules/resolve/test/resolver/mug.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/multirepo/lerna.json b/mybulma/node_modules/resolve/test/resolver/multirepo/lerna.json new file mode 100644 index 0000000..d6707ca --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/multirepo/lerna.json @@ -0,0 +1,6 @@ +{ + "packages": [ + "packages/*" + ], + "version": "0.0.0" +} diff --git a/mybulma/node_modules/resolve/test/resolver/multirepo/package.json b/mybulma/node_modules/resolve/test/resolver/multirepo/package.json new file mode 100644 index 0000000..8508f9d --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/multirepo/package.json @@ -0,0 +1,20 @@ +{ + "name": "monorepo-symlink-test", + "private": true, + "version": "0.0.0", + "description": "", + "main": "index.js", + "scripts": { + "postinstall": "lerna bootstrap", + "test": "node packages/package-a" + }, + "author": "", + "license": "MIT", + "dependencies": { + "jquery": "^3.3.1", + "resolve": "../../../" + }, + "devDependencies": { + "lerna": "^3.4.3" + } +} diff --git a/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js b/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js new file mode 100644 index 0000000..8875a32 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var assert = require('assert'); +var path = require('path'); +var resolve = require('resolve'); + +var basedir = __dirname + '/node_modules/@my-scope/package-b'; + +var expected = path.join(__dirname, '../../node_modules/jquery/dist/jquery.js'); + +/* + * preserveSymlinks === false + * will search NPM package from + * - packages/package-b/node_modules + * - packages/node_modules + * - node_modules + */ +assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: false }), expected); +assert.equal(resolve.sync('../../node_modules/jquery', { basedir: basedir, preserveSymlinks: false }), expected); + +/* + * preserveSymlinks === true + * will search NPM package from + * - packages/package-a/node_modules/@my-scope/packages/package-b/node_modules + * - packages/package-a/node_modules/@my-scope/packages/node_modules + * - packages/package-a/node_modules/@my-scope/node_modules + * - packages/package-a/node_modules/node_modules + * - packages/package-a/node_modules + * - packages/node_modules + * - node_modules + */ +assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: true }), expected); +assert.equal(resolve.sync('../../../../../node_modules/jquery', { basedir: basedir, preserveSymlinks: true }), expected); + +console.log(' * all monorepo paths successfully resolved through symlinks'); diff --git a/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json b/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json new file mode 100644 index 0000000..204de51 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json @@ -0,0 +1,14 @@ +{ + "name": "@my-scope/package-a", + "version": "0.0.0", + "private": true, + "description": "", + "license": "MIT", + "main": "index.js", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "dependencies": { + "@my-scope/package-b": "^0.0.0" + } +} diff --git a/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js b/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json b/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json new file mode 100644 index 0000000..f57c3b5 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json @@ -0,0 +1,14 @@ +{ + "name": "@my-scope/package-b", + "private": true, + "version": "0.0.0", + "description": "", + "license": "MIT", + "main": "index.js", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "dependencies": { + "@my-scope/package-a": "^0.0.0" + } +} diff --git a/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js b/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js new file mode 100644 index 0000000..9b4846a --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js @@ -0,0 +1,26 @@ +var a = require.resolve('buffer/').replace(process.cwd(), '$CWD'); +var b; +var c; + +var test = function test() { + console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false')); + console.log(b, ': preserveSymlinks true'); + console.log(c, ': preserveSymlinks false'); + + if (a !== b && a !== c) { + throw 'async: no match'; + } + console.log('async: success! a matched either b or c\n'); +}; + +require('resolve')('buffer/', { preserveSymlinks: true }, function (err, result) { + if (err) { throw err; } + b = result.replace(process.cwd(), '$CWD'); + if (b && c) { test(); } +}); +require('resolve')('buffer/', { preserveSymlinks: false }, function (err, result) { + if (err) { throw err; } + c = result.replace(process.cwd(), '$CWD'); + if (b && c) { test(); } +}); + diff --git a/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json b/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json new file mode 100644 index 0000000..acfe9e9 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json @@ -0,0 +1,15 @@ +{ + "name": "mylib", + "version": "0.0.0", + "description": "", + "private": true, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "buffer": "*" + } +} diff --git a/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js b/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js new file mode 100644 index 0000000..3283efc --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js @@ -0,0 +1,12 @@ +var a = require.resolve('buffer/').replace(process.cwd(), '$CWD'); +var b = require('resolve').sync('buffer/', { preserveSymlinks: true }).replace(process.cwd(), '$CWD'); +var c = require('resolve').sync('buffer/', { preserveSymlinks: false }).replace(process.cwd(), '$CWD'); + +console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false')); +console.log(b, ': preserveSymlinks true'); +console.log(c, ': preserveSymlinks false'); + +if (a !== b && a !== c) { + throw 'sync: no match'; +} +console.log('sync: success! a matched either b or c\n'); diff --git a/mybulma/node_modules/resolve/test/resolver/other_path/lib/other-lib.js b/mybulma/node_modules/resolve/test/resolver/other_path/lib/other-lib.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/other_path/root.js b/mybulma/node_modules/resolve/test/resolver/other_path/root.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/quux/foo/index.js b/mybulma/node_modules/resolve/test/resolver/quux/foo/index.js new file mode 100644 index 0000000..bd816ea --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/quux/foo/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/mybulma/node_modules/resolve/test/resolver/same_names/foo.js b/mybulma/node_modules/resolve/test/resolver/same_names/foo.js new file mode 100644 index 0000000..888cae3 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/same_names/foo.js @@ -0,0 +1 @@ +module.exports = 42; diff --git a/mybulma/node_modules/resolve/test/resolver/same_names/foo/index.js b/mybulma/node_modules/resolve/test/resolver/same_names/foo/index.js new file mode 100644 index 0000000..bd816ea --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/same_names/foo/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/mybulma/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js b/mybulma/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep b/mybulma/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/resolver/symlinked/package/bar.js b/mybulma/node_modules/resolve/test/resolver/symlinked/package/bar.js new file mode 100644 index 0000000..cb1c2c0 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/symlinked/package/bar.js @@ -0,0 +1 @@ +module.exports = 'bar'; diff --git a/mybulma/node_modules/resolve/test/resolver/symlinked/package/package.json b/mybulma/node_modules/resolve/test/resolver/symlinked/package/package.json new file mode 100644 index 0000000..8e1b585 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/symlinked/package/package.json @@ -0,0 +1,3 @@ +{ + "main": "bar.js" +} \ No newline at end of file diff --git a/mybulma/node_modules/resolve/test/resolver/without_basedir/main.js b/mybulma/node_modules/resolve/test/resolver/without_basedir/main.js new file mode 100644 index 0000000..5b31975 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver/without_basedir/main.js @@ -0,0 +1,5 @@ +var resolve = require('../../../'); + +module.exports = function (t, cb) { + resolve('mymodule', null, cb); +}; diff --git a/mybulma/node_modules/resolve/test/resolver_sync.js b/mybulma/node_modules/resolve/test/resolver_sync.js new file mode 100644 index 0000000..53453d6 --- /dev/null +++ b/mybulma/node_modules/resolve/test/resolver_sync.js @@ -0,0 +1,726 @@ +var path = require('path'); +var fs = require('fs'); +var test = require('tape'); + +var resolve = require('../'); +var sync = require('../sync'); + +var requireResolveSupportsPaths = require.resolve.length > 1 + && !(/^v12\.[012]\./).test(process.version); // broken in v12.0-12.2, see https://github.com/nodejs/node/issues/27794 + +test('`./sync` entry point', function (t) { + t.equal(resolve.sync, sync, '`./sync` entry point is the same as `.sync` on `main`'); + t.end(); +}); + +test('foo', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./foo', { basedir: dir }), + path.join(dir, 'foo.js'), + './foo' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo', { basedir: dir }), + require.resolve('./foo', { paths: [dir] }), + './foo: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./foo.js', { basedir: dir }), + path.join(dir, 'foo.js'), + './foo.js' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo.js', { basedir: dir }), + require.resolve('./foo.js', { paths: [dir] }), + './foo.js: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./foo.js', { basedir: dir, filename: path.join(dir, 'bar.js') }), + path.join(dir, 'foo.js') + ); + + t.throws(function () { + resolve.sync('foo', { basedir: dir }); + }); + + // Test that filename is reported as the "from" value when passed. + t.throws( + function () { + resolve.sync('foo', { basedir: dir, filename: path.join(dir, 'bar.js') }); + }, + { + name: 'Error', + message: "Cannot find module 'foo' from '" + path.join(dir, 'bar.js') + "'" + } + ); + + t.end(); +}); + +test('bar', function (t) { + var dir = path.join(__dirname, 'resolver'); + + var basedir = path.join(dir, 'bar'); + + t.equal( + resolve.sync('foo', { basedir: basedir }), + path.join(dir, 'bar/node_modules/foo/index.js'), + 'foo in bar' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('foo', { basedir: basedir }), + require.resolve('foo', { paths: [basedir] }), + 'foo in bar: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('baz', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./baz', { basedir: dir }), + path.join(dir, 'baz/quux.js'), + './baz' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./baz', { basedir: dir }), + require.resolve('./baz', { paths: [dir] }), + './baz: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('biz', function (t) { + var dir = path.join(__dirname, 'resolver/biz/node_modules'); + + t.equal( + resolve.sync('./grux', { basedir: dir }), + path.join(dir, 'grux/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./grux', { basedir: dir }), + require.resolve('./grux', { paths: [dir] }), + './grux: resolve.sync === require.resolve' + ); + } + + var tivDir = path.join(dir, 'grux'); + t.equal( + resolve.sync('tiv', { basedir: tivDir }), + path.join(dir, 'tiv/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('tiv', { basedir: tivDir }), + require.resolve('tiv', { paths: [tivDir] }), + 'tiv: resolve.sync === require.resolve' + ); + } + + var gruxDir = path.join(dir, 'tiv'); + t.equal( + resolve.sync('grux', { basedir: gruxDir }), + path.join(dir, 'grux/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('grux', { basedir: gruxDir }), + require.resolve('grux', { paths: [gruxDir] }), + 'grux: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('normalize', function (t) { + var dir = path.join(__dirname, 'resolver/biz/node_modules/grux'); + + t.equal( + resolve.sync('../grux', { basedir: dir }), + path.join(dir, 'index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('../grux', { basedir: dir }), + require.resolve('../grux', { paths: [dir] }), + '../grux: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('cup', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./cup', { + basedir: dir, + extensions: ['.js', '.coffee'] + }), + path.join(dir, 'cup.coffee'), + './cup -> ./cup.coffee' + ); + + t.equal( + resolve.sync('./cup.coffee', { basedir: dir }), + path.join(dir, 'cup.coffee'), + './cup.coffee' + ); + + t.throws(function () { + resolve.sync('./cup', { + basedir: dir, + extensions: ['.js'] + }); + }); + + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./cup.coffee', { basedir: dir, extensions: ['.js', '.coffee'] }), + require.resolve('./cup.coffee', { paths: [dir] }), + './cup.coffee: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('mug', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./mug', { basedir: dir }), + path.join(dir, 'mug.js'), + './mug -> ./mug.js' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./mug', { basedir: dir }), + require.resolve('./mug', { paths: [dir] }), + './mug: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./mug', { + basedir: dir, + extensions: ['.coffee', '.js'] + }), + path.join(dir, 'mug.coffee'), + './mug -> ./mug.coffee' + ); + + t.equal( + resolve.sync('./mug', { + basedir: dir, + extensions: ['.js', '.coffee'] + }), + path.join(dir, 'mug.js'), + './mug -> ./mug.js' + ); + + t.end(); +}); + +test('other path', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'bar'); + var otherDir = path.join(resolverDir, 'other_path'); + + t.equal( + resolve.sync('root', { + basedir: dir, + paths: [otherDir] + }), + path.join(resolverDir, 'other_path/root.js') + ); + + t.equal( + resolve.sync('lib/other-lib', { + basedir: dir, + paths: [otherDir] + }), + path.join(resolverDir, 'other_path/lib/other-lib.js') + ); + + t.throws(function () { + resolve.sync('root', { basedir: dir }); + }); + + t.throws(function () { + resolve.sync('zzz', { + basedir: dir, + paths: [otherDir] + }); + }); + + t.end(); +}); + +test('path iterator', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + + var exactIterator = function (x, start, getPackageCandidates, opts) { + return [path.join(resolverDir, x)]; + }; + + t.equal( + resolve.sync('baz', { packageIterator: exactIterator }), + path.join(resolverDir, 'baz/quux.js') + ); + + t.end(); +}); + +test('incorrect main', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'incorrect_main'); + + t.equal( + resolve.sync('./incorrect_main', { basedir: resolverDir }), + path.join(dir, 'index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./incorrect_main', { basedir: resolverDir }), + require.resolve('./incorrect_main', { paths: [resolverDir] }), + './incorrect_main: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('missing index', function (t) { + t.plan(requireResolveSupportsPaths ? 2 : 1); + + var resolverDir = path.join(__dirname, 'resolver'); + try { + resolve.sync('./missing_index', { basedir: resolverDir }); + t.fail('did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + if (requireResolveSupportsPaths) { + try { + require.resolve('./missing_index', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + } +}); + +test('missing main', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + + try { + resolve.sync('./missing_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + if (requireResolveSupportsPaths) { + try { + resolve.sync('./missing_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + } + + t.end(); +}); + +test('null main', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + + try { + resolve.sync('./null_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + if (requireResolveSupportsPaths) { + try { + resolve.sync('./null_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + } + + t.end(); +}); + +test('main: false', function (t) { + var basedir = path.join(__dirname, 'resolver'); + var dir = path.join(basedir, 'false_main'); + t.equal( + resolve.sync('./false_main', { basedir: basedir }), + path.join(dir, 'index.js'), + '`"main": false`: resolves to `index.js`' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./false_main', { basedir: basedir }), + require.resolve('./false_main', { paths: [basedir] }), + '`"main": false`: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +var stubStatSync = function stubStatSync(fn) { + var statSync = fs.statSync; + try { + fs.statSync = function () { + throw new EvalError('Unknown Error'); + }; + return fn(); + } finally { + fs.statSync = statSync; + } +}; + +test('#79 - re-throw non ENOENT errors from stat', function (t) { + var dir = path.join(__dirname, 'resolver'); + + stubStatSync(function () { + t.throws(function () { + resolve.sync('foo', { basedir: dir }); + }, /Unknown Error/); + }); + + t.end(); +}); + +test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) { + var dir = path.join(__dirname, 'resolver'); + var basedir = path.join(dir, 'same_names'); + + t.equal( + resolve.sync('./foo', { basedir: basedir }), + path.join(dir, 'same_names/foo.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo', { basedir: basedir }), + require.resolve('./foo', { paths: [basedir] }), + './foo: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./foo/', { basedir: basedir }), + path.join(dir, 'same_names/foo/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo/', { basedir: basedir }), + require.resolve('./foo/', { paths: [basedir] }), + './foo/: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('#211 - incorrectly resolves module-paths like "." when from inside a folder with a sibling file of the same name', function (t) { + var dir = path.join(__dirname, 'resolver'); + var basedir = path.join(dir, 'same_names/foo'); + + t.equal( + resolve.sync('./', { basedir: basedir }), + path.join(dir, 'same_names/foo/index.js'), + './' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./', { basedir: basedir }), + require.resolve('./', { paths: [basedir] }), + './: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('.', { basedir: basedir }), + path.join(dir, 'same_names/foo/index.js'), + '.' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('.', { basedir: basedir }), + require.resolve('.', { paths: [basedir] }), + '.: resolve.sync === require.resolve', + { todo: true } + ); + } + + t.end(); +}); + +test('sync: #121 - treating an existing file as a dir when no basedir', function (t) { + var testFile = path.basename(__filename); + + t.test('sanity check', function (st) { + st.equal( + resolve.sync('./' + testFile), + __filename, + 'sanity check' + ); + st.equal( + resolve.sync('./' + testFile), + require.resolve('./' + testFile), + 'sanity check: resolve.sync === require.resolve' + ); + + st.end(); + }); + + t.test('with a fake directory', function (st) { + function run() { return resolve.sync('./' + testFile + '/blah'); } + + st.throws(run, 'throws an error'); + + try { + run(); + } catch (e) { + st.equal(e.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve'); + st.equal( + e.message, + 'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'', + 'can not find nonexistent module' + ); + } + + st.end(); + }); + + t.end(); +}); + +test('sync dot main', function (t) { + var start = new Date(); + + t.equal( + resolve.sync('./resolver/dot_main'), + path.join(__dirname, 'resolver/dot_main/index.js'), + './resolver/dot_main' + ); + t.equal( + resolve.sync('./resolver/dot_main'), + require.resolve('./resolver/dot_main'), + './resolver/dot_main: resolve.sync === require.resolve' + ); + + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + + t.end(); +}); + +test('sync dot slash main', function (t) { + var start = new Date(); + + t.equal( + resolve.sync('./resolver/dot_slash_main'), + path.join(__dirname, 'resolver/dot_slash_main/index.js') + ); + t.equal( + resolve.sync('./resolver/dot_slash_main'), + require.resolve('./resolver/dot_slash_main'), + './resolver/dot_slash_main: resolve.sync === require.resolve' + ); + + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + + t.end(); +}); + +test('not a directory', function (t) { + var path = './foo'; + try { + resolve.sync(path, { basedir: __filename }); + t.fail(); + } catch (err) { + t.ok(err, 'a non-directory errors'); + t.equal(err && err.message, 'Cannot find module \'' + path + "' from '" + __filename + "'"); + t.equal(err && err.code, 'MODULE_NOT_FOUND'); + } + t.end(); +}); + +test('non-string "main" field in package.json', function (t) { + var dir = path.join(__dirname, 'resolver'); + try { + var result = resolve.sync('./invalid_main', { basedir: dir }); + t.equal(result, undefined, 'result should not exist'); + t.fail('should not get here'); + } catch (err) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + } + t.end(); +}); + +test('non-string "main" field in package.json', function (t) { + var dir = path.join(__dirname, 'resolver'); + try { + var result = resolve.sync('./invalid_main', { basedir: dir }); + t.equal(result, undefined, 'result should not exist'); + t.fail('should not get here'); + } catch (err) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + } + t.end(); +}); + +test('browser field in package.json', function (t) { + var dir = path.join(__dirname, 'resolver'); + var res = resolve.sync('./browser_field', { + basedir: dir, + packageFilter: function packageFilter(pkg) { + if (pkg.browser) { + pkg.main = pkg.browser; // eslint-disable-line no-param-reassign + delete pkg.browser; // eslint-disable-line no-param-reassign + } + return pkg; + } + }); + t.equal(res, path.join(dir, 'browser_field', 'b.js')); + t.end(); +}); + +test('absolute paths', function (t) { + var extensionless = __filename.slice(0, -path.extname(__filename).length); + + t.equal( + resolve.sync(__filename), + __filename, + 'absolute path to this file resolves' + ); + t.equal( + resolve.sync(__filename), + require.resolve(__filename), + 'absolute path to this file: resolve.sync === require.resolve' + ); + + t.equal( + resolve.sync(extensionless), + __filename, + 'extensionless absolute path to this file resolves' + ); + t.equal( + resolve.sync(__filename), + require.resolve(__filename), + 'absolute path to this file: resolve.sync === require.resolve' + ); + + t.equal( + resolve.sync(__filename, { basedir: process.cwd() }), + __filename, + 'absolute path to this file with a basedir resolves' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync(__filename, { basedir: process.cwd() }), + require.resolve(__filename, { paths: [process.cwd()] }), + 'absolute path to this file + basedir: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync(extensionless, { basedir: process.cwd() }), + __filename, + 'extensionless absolute path to this file with a basedir resolves' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync(extensionless, { basedir: process.cwd() }), + require.resolve(extensionless, { paths: [process.cwd()] }), + 'extensionless absolute path to this file + basedir: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('malformed package.json', function (t) { + t.plan(5 + (requireResolveSupportsPaths ? 1 : 0)); + + var basedir = path.join(__dirname, 'resolver/malformed_package_json'); + var expected = path.join(basedir, 'index.js'); + + t.equal( + resolve.sync('./index.js', { basedir: basedir }), + expected, + 'malformed package.json is silently ignored' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./index.js', { basedir: basedir }), + require.resolve('./index.js', { paths: [basedir] }), + 'malformed package.json: resolve.sync === require.resolve' + ); + } + + var res1 = resolve.sync( + './index.js', + { + basedir: basedir, + packageFilter: function (pkg, pkgfile, dir) { + t.fail('should not reach here'); + } + } + ); + + t.equal( + res1, + expected, + 'with packageFilter: malformed package.json is silently ignored' + ); + + var res2 = resolve.sync( + './index.js', + { + basedir: basedir, + readPackageSync: function (readFileSync, pkgfile) { + t.equal(pkgfile, path.join(basedir, 'package.json'), 'readPackageSync: `pkgfile` is package.json path'); + var result = String(readFileSync(pkgfile)); + try { + return JSON.parse(result); + } catch (e) { + t.ok(e instanceof SyntaxError, 'readPackageSync: malformed package.json parses as a syntax error'); + } + } + } + ); + + t.equal( + res2, + expected, + 'with readPackageSync: malformed package.json is silently ignored' + ); +}); diff --git a/mybulma/node_modules/resolve/test/shadowed_core.js b/mybulma/node_modules/resolve/test/shadowed_core.js new file mode 100644 index 0000000..3a5f4fc --- /dev/null +++ b/mybulma/node_modules/resolve/test/shadowed_core.js @@ -0,0 +1,54 @@ +var test = require('tape'); +var resolve = require('../'); +var path = require('path'); + +test('shadowed core modules still return core module', function (t) { + t.plan(2); + + resolve('util', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) { + t.ifError(err); + t.equal(res, 'util'); + }); +}); + +test('shadowed core modules still return core module [sync]', function (t) { + t.plan(1); + + var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core') }); + + t.equal(res, 'util'); +}); + +test('shadowed core modules return shadow when appending `/`', function (t) { + t.plan(2); + + resolve('util/', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) { + t.ifError(err); + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); + }); +}); + +test('shadowed core modules return shadow when appending `/` [sync]', function (t) { + t.plan(1); + + var res = resolve.sync('util/', { basedir: path.join(__dirname, 'shadowed_core') }); + + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); +}); + +test('shadowed core modules return shadow with `includeCoreModules: false`', function (t) { + t.plan(2); + + resolve('util', { basedir: path.join(__dirname, 'shadowed_core'), includeCoreModules: false }, function (err, res) { + t.ifError(err); + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); + }); +}); + +test('shadowed core modules return shadow with `includeCoreModules: false` [sync]', function (t) { + t.plan(1); + + var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core'), includeCoreModules: false }); + + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); +}); diff --git a/mybulma/node_modules/resolve/test/shadowed_core/node_modules/util/index.js b/mybulma/node_modules/resolve/test/shadowed_core/node_modules/util/index.js new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/resolve/test/subdirs.js b/mybulma/node_modules/resolve/test/subdirs.js new file mode 100644 index 0000000..b7b8450 --- /dev/null +++ b/mybulma/node_modules/resolve/test/subdirs.js @@ -0,0 +1,13 @@ +var test = require('tape'); +var resolve = require('../'); +var path = require('path'); + +test('subdirs', function (t) { + t.plan(2); + + var dir = path.join(__dirname, '/subdirs'); + resolve('a/b/c/x.json', { basedir: dir }, function (err, res) { + t.ifError(err); + t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json')); + }); +}); diff --git a/mybulma/node_modules/resolve/test/symlinks.js b/mybulma/node_modules/resolve/test/symlinks.js new file mode 100644 index 0000000..35f881a --- /dev/null +++ b/mybulma/node_modules/resolve/test/symlinks.js @@ -0,0 +1,176 @@ +var path = require('path'); +var fs = require('fs'); +var test = require('tape'); +var map = require('array.prototype.map'); +var resolve = require('../'); + +var symlinkDir = path.join(__dirname, 'resolver', 'symlinked', 'symlink'); +var packageDir = path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'package'); +var modADir = path.join(__dirname, 'symlinks', 'source', 'node_modules', 'mod-a'); +var symlinkModADir = path.join(__dirname, 'symlinks', 'dest', 'node_modules', 'mod-a'); +try { + fs.unlinkSync(symlinkDir); +} catch (err) {} +try { + fs.unlinkSync(packageDir); +} catch (err) {} +try { + fs.unlinkSync(modADir); +} catch (err) {} +try { + fs.unlinkSync(symlinkModADir); +} catch (err) {} + +try { + fs.symlinkSync('./_/symlink_target', symlinkDir, 'dir'); +} catch (err) { + // if fails then it is probably on Windows and lets try to create a junction + fs.symlinkSync(path.join(__dirname, 'resolver', 'symlinked', '_', 'symlink_target') + '\\', symlinkDir, 'junction'); +} +try { + fs.symlinkSync('../../package', packageDir, 'dir'); +} catch (err) { + // if fails then it is probably on Windows and lets try to create a junction + fs.symlinkSync(path.join(__dirname, '..', '..', 'package') + '\\', packageDir, 'junction'); +} +try { + fs.symlinkSync('../../source/node_modules/mod-a', symlinkModADir, 'dir'); +} catch (err) { + // if fails then it is probably on Windows and lets try to create a junction + fs.symlinkSync(path.join(__dirname, '..', '..', 'source', 'node_modules', 'mod-a') + '\\', symlinkModADir, 'junction'); +} + +test('symlink', function (t) { + t.plan(2); + + resolve('foo', { basedir: symlinkDir, preserveSymlinks: false }, function (err, res, pkg) { + t.error(err); + t.equal(res, path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js')); + }); +}); + +test('sync symlink when preserveSymlinks = true', function (t) { + t.plan(4); + + resolve('foo', { basedir: symlinkDir }, function (err, res, pkg) { + t.ok(err, 'there is an error'); + t.notOk(res, 'no result'); + + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve'); + t.equal( + err && err.message, + 'Cannot find module \'foo\' from \'' + symlinkDir + '\'', + 'can not find nonexistent module' + ); + }); +}); + +test('sync symlink', function (t) { + var start = new Date(); + t.doesNotThrow(function () { + t.equal( + resolve.sync('foo', { basedir: symlinkDir, preserveSymlinks: false }), + path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js') + ); + }); + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + t.end(); +}); + +test('sync symlink when preserveSymlinks = true', function (t) { + t.throws(function () { + resolve.sync('foo', { basedir: symlinkDir }); + }, /Cannot find module 'foo'/); + t.end(); +}); + +test('sync symlink from node_modules to other dir when preserveSymlinks = false', function (t) { + var basedir = path.join(__dirname, 'resolver', 'symlinked', '_'); + var fn = resolve.sync('package', { basedir: basedir, preserveSymlinks: false }); + + t.equal(fn, path.resolve(__dirname, 'resolver/symlinked/package/bar.js')); + t.end(); +}); + +test('async symlink from node_modules to other dir when preserveSymlinks = false', function (t) { + t.plan(2); + var basedir = path.join(__dirname, 'resolver', 'symlinked', '_'); + resolve('package', { basedir: basedir, preserveSymlinks: false }, function (err, result) { + t.notOk(err, 'no error'); + t.equal(result, path.resolve(__dirname, 'resolver/symlinked/package/bar.js')); + }); +}); + +test('packageFilter', function (t) { + function relative(x) { + return path.relative(__dirname, x); + } + + function testPackageFilter(preserveSymlinks) { + return function (st) { + st.plan('is 1.x' ? 3 : 5); // eslint-disable-line no-constant-condition + + var destMain = 'symlinks/dest/node_modules/mod-a/index.js'; + var destPkg = 'symlinks/dest/node_modules/mod-a/package.json'; + var sourceMain = 'symlinks/source/node_modules/mod-a/index.js'; + var sourcePkg = 'symlinks/source/node_modules/mod-a/package.json'; + var destDir = path.join(__dirname, 'symlinks', 'dest'); + + /* eslint multiline-comment-style: 0 */ + /* v2.x will restore these tests + var packageFilterPath = []; + var actualPath = resolve.sync('mod-a', { + basedir: destDir, + preserveSymlinks: preserveSymlinks, + packageFilter: function (pkg, pkgfile, dir) { + packageFilterPath.push(pkgfile); + } + }); + st.equal( + relative(actualPath), + path.normalize(preserveSymlinks ? destMain : sourceMain), + 'sync: actual path is correct' + ); + st.deepEqual( + map(packageFilterPath, relative), + map(preserveSymlinks ? [destPkg, destPkg] : [sourcePkg, sourcePkg], path.normalize), + 'sync: packageFilter pkgfile arg is correct' + ); + */ + + var asyncPackageFilterPath = []; + resolve( + 'mod-a', + { + basedir: destDir, + preserveSymlinks: preserveSymlinks, + packageFilter: function (pkg, pkgfile) { + asyncPackageFilterPath.push(pkgfile); + } + }, + function (err, actualPath) { + st.error(err, 'no error'); + st.equal( + relative(actualPath), + path.normalize(preserveSymlinks ? destMain : sourceMain), + 'async: actual path is correct' + ); + st.deepEqual( + map(asyncPackageFilterPath, relative), + map( + preserveSymlinks ? [destPkg, destPkg, destPkg] : [sourcePkg, sourcePkg, sourcePkg], + path.normalize + ), + 'async: packageFilter pkgfile arg is correct' + ); + } + ); + }; + } + + t.test('preserveSymlinks: false', testPackageFilter(false)); + + t.test('preserveSymlinks: true', testPackageFilter(true)); + + t.end(); +}); diff --git a/mybulma/node_modules/retry/.npmignore b/mybulma/node_modules/retry/.npmignore new file mode 100644 index 0000000..432f285 --- /dev/null +++ b/mybulma/node_modules/retry/.npmignore @@ -0,0 +1,3 @@ +/node_modules/* +npm-debug.log +coverage diff --git a/mybulma/node_modules/retry/.travis.yml b/mybulma/node_modules/retry/.travis.yml new file mode 100644 index 0000000..bcde212 --- /dev/null +++ b/mybulma/node_modules/retry/.travis.yml @@ -0,0 +1,15 @@ +language: node_js +node_js: + - "4" +before_install: + - pip install --user codecov +after_success: + - codecov --file coverage/lcov.info --disable search +# travis encrypt [subdomain]:[api token]@[room id] +# notifications: +# email: false +# campfire: +# rooms: +# secure: xyz +# on_failure: always +# on_success: always diff --git a/mybulma/node_modules/retry/License b/mybulma/node_modules/retry/License new file mode 100644 index 0000000..0b58de3 --- /dev/null +++ b/mybulma/node_modules/retry/License @@ -0,0 +1,21 @@ +Copyright (c) 2011: +Tim Koschützki (tim@debuggable.com) +Felix Geisendörfer (felix@debuggable.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. diff --git a/mybulma/node_modules/retry/Makefile b/mybulma/node_modules/retry/Makefile new file mode 100644 index 0000000..1968d8f --- /dev/null +++ b/mybulma/node_modules/retry/Makefile @@ -0,0 +1,18 @@ +SHELL := /bin/bash + +release-major: test + npm version major -m "Release %s" + git push + npm publish + +release-minor: test + npm version minor -m "Release %s" + git push + npm publish + +release-patch: test + npm version patch -m "Release %s" + git push + npm publish + +.PHONY: test release-major release-minor release-patch diff --git a/mybulma/node_modules/retry/README.md b/mybulma/node_modules/retry/README.md new file mode 100644 index 0000000..16e28ec --- /dev/null +++ b/mybulma/node_modules/retry/README.md @@ -0,0 +1,227 @@ + +[![Build Status](https://secure.travis-ci.org/tim-kos/node-retry.png?branch=master)](http://travis-ci.org/tim-kos/node-retry "Check this project's build status on TravisCI") +[![codecov](https://codecov.io/gh/tim-kos/node-retry/branch/master/graph/badge.svg)](https://codecov.io/gh/tim-kos/node-retry) + + +# retry + +Abstraction for exponential and custom retry strategies for failed operations. + +## Installation + + npm install retry + +## Current Status + +This module has been tested and is ready to be used. + +## Tutorial + +The example below will retry a potentially failing `dns.resolve` operation +`10` times using an exponential backoff strategy. With the default settings, this +means the last attempt is made after `17 minutes and 3 seconds`. + +``` javascript +var dns = require('dns'); +var retry = require('retry'); + +function faultTolerantResolve(address, cb) { + var operation = retry.operation(); + + operation.attempt(function(currentAttempt) { + dns.resolve(address, function(err, addresses) { + if (operation.retry(err)) { + return; + } + + cb(err ? operation.mainError() : null, addresses); + }); + }); +} + +faultTolerantResolve('nodejs.org', function(err, addresses) { + console.log(err, addresses); +}); +``` + +Of course you can also configure the factors that go into the exponential +backoff. See the API documentation below for all available settings. +currentAttempt is an int representing the number of attempts so far. + +``` javascript +var operation = retry.operation({ + retries: 5, + factor: 3, + minTimeout: 1 * 1000, + maxTimeout: 60 * 1000, + randomize: true, +}); +``` + +## API + +### retry.operation([options]) + +Creates a new `RetryOperation` object. `options` is the same as `retry.timeouts()`'s `options`, with two additions: + +* `forever`: Whether to retry forever, defaults to `false`. +* `unref`: Whether to [unref](https://nodejs.org/api/timers.html#timers_unref) the setTimeout's, defaults to `false`. +* `maxRetryTime`: The maximum time (in milliseconds) that the retried operation is allowed to run. Default is `Infinity`. + +### retry.timeouts([options]) + +Returns an array of timeouts. All time `options` and return values are in +milliseconds. If `options` is an array, a copy of that array is returned. + +`options` is a JS object that can contain any of the following keys: + +* `retries`: The maximum amount of times to retry the operation. Default is `10`. Seting this to `1` means `do it once, then retry it once`. +* `factor`: The exponential factor to use. Default is `2`. +* `minTimeout`: The number of milliseconds before starting the first retry. Default is `1000`. +* `maxTimeout`: The maximum number of milliseconds between two retries. Default is `Infinity`. +* `randomize`: Randomizes the timeouts by multiplying with a factor between `1` to `2`. Default is `false`. + +The formula used to calculate the individual timeouts is: + +``` +Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout) +``` + +Have a look at [this article][article] for a better explanation of approach. + +If you want to tune your `factor` / `times` settings to attempt the last retry +after a certain amount of time, you can use wolfram alpha. For example in order +to tune for `10` attempts in `5 minutes`, you can use this equation: + +![screenshot](https://github.com/tim-kos/node-retry/raw/master/equation.gif) + +Explaining the various values from left to right: + +* `k = 0 ... 9`: The `retries` value (10) +* `1000`: The `minTimeout` value in ms (1000) +* `x^k`: No need to change this, `x` will be your resulting factor +* `5 * 60 * 1000`: The desired total amount of time for retrying in ms (5 minutes) + +To make this a little easier for you, use wolfram alpha to do the calculations: + + + +[article]: http://dthain.blogspot.com/2009/02/exponential-backoff-in-distributed.html + +### retry.createTimeout(attempt, opts) + +Returns a new `timeout` (integer in milliseconds) based on the given parameters. + +`attempt` is an integer representing for which retry the timeout should be calculated. If your retry operation was executed 4 times you had one attempt and 3 retries. If you then want to calculate a new timeout, you should set `attempt` to 4 (attempts are zero-indexed). + +`opts` can include `factor`, `minTimeout`, `randomize` (boolean) and `maxTimeout`. They are documented above. + +`retry.createTimeout()` is used internally by `retry.timeouts()` and is public for you to be able to create your own timeouts for reinserting an item, see [issue #13](https://github.com/tim-kos/node-retry/issues/13). + +### retry.wrap(obj, [options], [methodNames]) + +Wrap all functions of the `obj` with retry. Optionally you can pass operation options and +an array of method names which need to be wrapped. + +``` +retry.wrap(obj) + +retry.wrap(obj, ['method1', 'method2']) + +retry.wrap(obj, {retries: 3}) + +retry.wrap(obj, {retries: 3}, ['method1', 'method2']) +``` +The `options` object can take any options that the usual call to `retry.operation` can take. + +### new RetryOperation(timeouts, [options]) + +Creates a new `RetryOperation` where `timeouts` is an array where each value is +a timeout given in milliseconds. + +Available options: +* `forever`: Whether to retry forever, defaults to `false`. +* `unref`: Wether to [unref](https://nodejs.org/api/timers.html#timers_unref) the setTimeout's, defaults to `false`. + +If `forever` is true, the following changes happen: +* `RetryOperation.errors()` will only output an array of one item: the last error. +* `RetryOperation` will repeatedly use the `timeouts` array. Once all of its timeouts have been used up, it restarts with the first timeout, then uses the second and so on. + +#### retryOperation.errors() + +Returns an array of all errors that have been passed to `retryOperation.retry()` so far. The +returning array has the errors ordered chronologically based on when they were passed to +`retryOperation.retry()`, which means the first passed error is at index zero and the last is +at the last index. + +#### retryOperation.mainError() + +A reference to the error object that occured most frequently. Errors are +compared using the `error.message` property. + +If multiple error messages occured the same amount of time, the last error +object with that message is returned. + +If no errors occured so far, the value is `null`. + +#### retryOperation.attempt(fn, timeoutOps) + +Defines the function `fn` that is to be retried and executes it for the first +time right away. The `fn` function can receive an optional `currentAttempt` callback that represents the number of attempts to execute `fn` so far. + +Optionally defines `timeoutOps` which is an object having a property `timeout` in miliseconds and a property `cb` callback function. +Whenever your retry operation takes longer than `timeout` to execute, the timeout callback function `cb` is called. + + +#### retryOperation.try(fn) + +This is an alias for `retryOperation.attempt(fn)`. This is deprecated. Please use `retryOperation.attempt(fn)` instead. + +#### retryOperation.start(fn) + +This is an alias for `retryOperation.attempt(fn)`. This is deprecated. Please use `retryOperation.attempt(fn)` instead. + +#### retryOperation.retry(error) + +Returns `false` when no `error` value is given, or the maximum amount of retries +has been reached. + +Otherwise it returns `true`, and retries the operation after the timeout for +the current attempt number. + +#### retryOperation.stop() + +Allows you to stop the operation being retried. Useful for aborting the operation on a fatal error etc. + +#### retryOperation.reset() + +Resets the internal state of the operation object, so that you can call `attempt()` again as if this was a new operation object. + +#### retryOperation.attempts() + +Returns an int representing the number of attempts it took to call `fn` before it was successful. + +## License + +retry is licensed under the MIT license. + + +# Changelog + +0.10.0 Adding `stop` functionality, thanks to @maxnachlinger. + +0.9.0 Adding `unref` functionality, thanks to @satazor. + +0.8.0 Implementing retry.wrap. + +0.7.0 Some bug fixes and made retry.createTimeout() public. Fixed issues [#10](https://github.com/tim-kos/node-retry/issues/10), [#12](https://github.com/tim-kos/node-retry/issues/12), and [#13](https://github.com/tim-kos/node-retry/issues/13). + +0.6.0 Introduced optional timeOps parameter for the attempt() function which is an object having a property timeout in milliseconds and a property cb callback function. Whenever your retry operation takes longer than timeout to execute, the timeout callback function cb is called. + +0.5.0 Some minor refactoring. + +0.4.0 Changed retryOperation.try() to retryOperation.attempt(). Deprecated the aliases start() and try() for it. + +0.3.0 Added retryOperation.start() which is an alias for retryOperation.try(). + +0.2.0 Added attempts() function and parameter to retryOperation.try() representing the number of attempts it took to call fn(). diff --git a/mybulma/node_modules/retry/equation.gif b/mybulma/node_modules/retry/equation.gif new file mode 100644 index 0000000000000000000000000000000000000000..97107237ba19f51997d8d76135bc7d1486d856f0 GIT binary patch literal 1209 zcmV;q1V;NuNk%w1VXpu&0M!5h000001ONyK2nY-a5D*X$6c88~7#JKFARr(hBp@j$ zDJd)|F)%SPG%-0iIXOHzK|n!4L_tbON=i&hQczM-RZ?16T3TINVqs!pWnyY+YHDq2 zb8&NXb#r@pdwYF*gMovCg@cQUi;Inml#!H_m6V*BoSdDUq@kpwrKGH?tgNoAw6e6c zwzR#vy}iD@#lpqK#>LIb&CSlu)za0~*45tH-rnBc=Hlk&=H~9|?(XjH_VV`j_V)k! z|NsC0EC2ui0IvWs000L6z@KnPEENVOfMTEH9c0Z7p9z3<`87kr4n!IH|Ew$buF^Tr6-3^@midQKv4UFk?fCD@~8E z@HgbfvLPrU7IV4gfp|8%C^H$l;qq zLJ;`y;|7BS2YlpEz->xcBQ#7@yHNtNkOmwQ1ek!X@sGzuLXR#jx2fyLw;309jQGe6 zL`?+$umPZ&50}J^BQGxGIN%{G2=u5hqw|pm*t2Ul0ssMk0vb%GI^lz~c)})l{~Qc?h2kCMJmBf=4KTfq+A}mV<6G&6wD3KiFu51s1j8f&fS0 zFaiqI41q&$@ZBIIl0*neBoe|cd1H+<3Zdf>DJ(#i62j@_f)Fj-_2my?IyGjQMd%>G z07WXH-J3lkxMd6n7?DE>JIL@P5d*{^#0>(>vA~&p4RL3ldlu2^8P z!OlGQ%z<|`+iWomtGr?~EJ7!(^wLZ>?ex=7N4-QZ)=BNMGD+xg!3P&;Y_%-ZByj;I zEWG$NFy8zC&JhLd@WT!ToDGaV{P^?c4^0Iv_b4i{ghbnK$GtZyTzMtL-DCey_TZ>w XwprD$S>S;MUNdg_<(OxVL=XTw-hl|W literal 0 HcmV?d00001 diff --git a/mybulma/node_modules/retry/example/dns.js b/mybulma/node_modules/retry/example/dns.js new file mode 100644 index 0000000..446729b --- /dev/null +++ b/mybulma/node_modules/retry/example/dns.js @@ -0,0 +1,31 @@ +var dns = require('dns'); +var retry = require('../lib/retry'); + +function faultTolerantResolve(address, cb) { + var opts = { + retries: 2, + factor: 2, + minTimeout: 1 * 1000, + maxTimeout: 2 * 1000, + randomize: true + }; + var operation = retry.operation(opts); + + operation.attempt(function(currentAttempt) { + dns.resolve(address, function(err, addresses) { + if (operation.retry(err)) { + return; + } + + cb(operation.mainError(), operation.errors(), addresses); + }); + }); +} + +faultTolerantResolve('nodejs.org', function(err, errors, addresses) { + console.warn('err:'); + console.log(err); + + console.warn('addresses:'); + console.log(addresses); +}); \ No newline at end of file diff --git a/mybulma/node_modules/retry/example/stop.js b/mybulma/node_modules/retry/example/stop.js new file mode 100644 index 0000000..e1ceafe --- /dev/null +++ b/mybulma/node_modules/retry/example/stop.js @@ -0,0 +1,40 @@ +var retry = require('../lib/retry'); + +function attemptAsyncOperation(someInput, cb) { + var opts = { + retries: 2, + factor: 2, + minTimeout: 1 * 1000, + maxTimeout: 2 * 1000, + randomize: true + }; + var operation = retry.operation(opts); + + operation.attempt(function(currentAttempt) { + failingAsyncOperation(someInput, function(err, result) { + + if (err && err.message === 'A fatal error') { + operation.stop(); + return cb(err); + } + + if (operation.retry(err)) { + return; + } + + cb(operation.mainError(), operation.errors(), result); + }); + }); +} + +attemptAsyncOperation('test input', function(err, errors, result) { + console.warn('err:'); + console.log(err); + + console.warn('result:'); + console.log(result); +}); + +function failingAsyncOperation(input, cb) { + return setImmediate(cb.bind(null, new Error('A fatal error'))); +} diff --git a/mybulma/node_modules/retry/index.js b/mybulma/node_modules/retry/index.js new file mode 100644 index 0000000..ee62f3a --- /dev/null +++ b/mybulma/node_modules/retry/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/retry'); \ No newline at end of file diff --git a/mybulma/node_modules/retry/lib/retry.js b/mybulma/node_modules/retry/lib/retry.js new file mode 100644 index 0000000..dcb5768 --- /dev/null +++ b/mybulma/node_modules/retry/lib/retry.js @@ -0,0 +1,100 @@ +var RetryOperation = require('./retry_operation'); + +exports.operation = function(options) { + var timeouts = exports.timeouts(options); + return new RetryOperation(timeouts, { + forever: options && options.forever, + unref: options && options.unref, + maxRetryTime: options && options.maxRetryTime + }); +}; + +exports.timeouts = function(options) { + if (options instanceof Array) { + return [].concat(options); + } + + var opts = { + retries: 10, + factor: 2, + minTimeout: 1 * 1000, + maxTimeout: Infinity, + randomize: false + }; + for (var key in options) { + opts[key] = options[key]; + } + + if (opts.minTimeout > opts.maxTimeout) { + throw new Error('minTimeout is greater than maxTimeout'); + } + + var timeouts = []; + for (var i = 0; i < opts.retries; i++) { + timeouts.push(this.createTimeout(i, opts)); + } + + if (options && options.forever && !timeouts.length) { + timeouts.push(this.createTimeout(i, opts)); + } + + // sort the array numerically ascending + timeouts.sort(function(a,b) { + return a - b; + }); + + return timeouts; +}; + +exports.createTimeout = function(attempt, opts) { + var random = (opts.randomize) + ? (Math.random() + 1) + : 1; + + var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt)); + timeout = Math.min(timeout, opts.maxTimeout); + + return timeout; +}; + +exports.wrap = function(obj, options, methods) { + if (options instanceof Array) { + methods = options; + options = null; + } + + if (!methods) { + methods = []; + for (var key in obj) { + if (typeof obj[key] === 'function') { + methods.push(key); + } + } + } + + for (var i = 0; i < methods.length; i++) { + var method = methods[i]; + var original = obj[method]; + + obj[method] = function retryWrapper(original) { + var op = exports.operation(options); + var args = Array.prototype.slice.call(arguments, 1); + var callback = args.pop(); + + args.push(function(err) { + if (op.retry(err)) { + return; + } + if (err) { + arguments[0] = op.mainError(); + } + callback.apply(this, arguments); + }); + + op.attempt(function() { + original.apply(obj, args); + }); + }.bind(obj, original); + obj[method].options = options; + } +}; diff --git a/mybulma/node_modules/retry/lib/retry_operation.js b/mybulma/node_modules/retry/lib/retry_operation.js new file mode 100644 index 0000000..1e56469 --- /dev/null +++ b/mybulma/node_modules/retry/lib/retry_operation.js @@ -0,0 +1,158 @@ +function RetryOperation(timeouts, options) { + // Compatibility for the old (timeouts, retryForever) signature + if (typeof options === 'boolean') { + options = { forever: options }; + } + + this._originalTimeouts = JSON.parse(JSON.stringify(timeouts)); + this._timeouts = timeouts; + this._options = options || {}; + this._maxRetryTime = options && options.maxRetryTime || Infinity; + this._fn = null; + this._errors = []; + this._attempts = 1; + this._operationTimeout = null; + this._operationTimeoutCb = null; + this._timeout = null; + this._operationStart = null; + + if (this._options.forever) { + this._cachedTimeouts = this._timeouts.slice(0); + } +} +module.exports = RetryOperation; + +RetryOperation.prototype.reset = function() { + this._attempts = 1; + this._timeouts = this._originalTimeouts; +} + +RetryOperation.prototype.stop = function() { + if (this._timeout) { + clearTimeout(this._timeout); + } + + this._timeouts = []; + this._cachedTimeouts = null; +}; + +RetryOperation.prototype.retry = function(err) { + if (this._timeout) { + clearTimeout(this._timeout); + } + + if (!err) { + return false; + } + var currentTime = new Date().getTime(); + if (err && currentTime - this._operationStart >= this._maxRetryTime) { + this._errors.unshift(new Error('RetryOperation timeout occurred')); + return false; + } + + this._errors.push(err); + + var timeout = this._timeouts.shift(); + if (timeout === undefined) { + if (this._cachedTimeouts) { + // retry forever, only keep last error + this._errors.splice(this._errors.length - 1, this._errors.length); + this._timeouts = this._cachedTimeouts.slice(0); + timeout = this._timeouts.shift(); + } else { + return false; + } + } + + var self = this; + var timer = setTimeout(function() { + self._attempts++; + + if (self._operationTimeoutCb) { + self._timeout = setTimeout(function() { + self._operationTimeoutCb(self._attempts); + }, self._operationTimeout); + + if (self._options.unref) { + self._timeout.unref(); + } + } + + self._fn(self._attempts); + }, timeout); + + if (this._options.unref) { + timer.unref(); + } + + return true; +}; + +RetryOperation.prototype.attempt = function(fn, timeoutOps) { + this._fn = fn; + + if (timeoutOps) { + if (timeoutOps.timeout) { + this._operationTimeout = timeoutOps.timeout; + } + if (timeoutOps.cb) { + this._operationTimeoutCb = timeoutOps.cb; + } + } + + var self = this; + if (this._operationTimeoutCb) { + this._timeout = setTimeout(function() { + self._operationTimeoutCb(); + }, self._operationTimeout); + } + + this._operationStart = new Date().getTime(); + + this._fn(this._attempts); +}; + +RetryOperation.prototype.try = function(fn) { + console.log('Using RetryOperation.try() is deprecated'); + this.attempt(fn); +}; + +RetryOperation.prototype.start = function(fn) { + console.log('Using RetryOperation.start() is deprecated'); + this.attempt(fn); +}; + +RetryOperation.prototype.start = RetryOperation.prototype.try; + +RetryOperation.prototype.errors = function() { + return this._errors; +}; + +RetryOperation.prototype.attempts = function() { + return this._attempts; +}; + +RetryOperation.prototype.mainError = function() { + if (this._errors.length === 0) { + return null; + } + + var counts = {}; + var mainError = null; + var mainErrorCount = 0; + + for (var i = 0; i < this._errors.length; i++) { + var error = this._errors[i]; + var message = error.message; + var count = (counts[message] || 0) + 1; + + counts[message] = count; + + if (count >= mainErrorCount) { + mainError = error; + mainErrorCount = count; + } + } + + return mainError; +}; diff --git a/mybulma/node_modules/retry/package.json b/mybulma/node_modules/retry/package.json new file mode 100644 index 0000000..73c7259 --- /dev/null +++ b/mybulma/node_modules/retry/package.json @@ -0,0 +1,32 @@ +{ + "author": "Tim Koschützki (http://debuggable.com/)", + "name": "retry", + "description": "Abstraction for exponential and custom retry strategies for failed operations.", + "license": "MIT", + "version": "0.12.0", + "homepage": "https://github.com/tim-kos/node-retry", + "repository": { + "type": "git", + "url": "git://github.com/tim-kos/node-retry.git" + }, + "directories": { + "lib": "./lib" + }, + "main": "index", + "engines": { + "node": ">= 4" + }, + "dependencies": {}, + "devDependencies": { + "fake": "0.2.0", + "istanbul": "^0.4.5", + "tape": "^4.8.0" + }, + "scripts": { + "test": "./node_modules/.bin/istanbul cover ./node_modules/tape/bin/tape ./test/integration/*.js", + "release:major": "env SEMANTIC=major npm run release", + "release:minor": "env SEMANTIC=minor npm run release", + "release:patch": "env SEMANTIC=patch npm run release", + "release": "npm version ${SEMANTIC:-patch} -m \"Release %s\" && git push && git push --tags && npm publish" + } +} diff --git a/mybulma/node_modules/retry/test/common.js b/mybulma/node_modules/retry/test/common.js new file mode 100644 index 0000000..2247206 --- /dev/null +++ b/mybulma/node_modules/retry/test/common.js @@ -0,0 +1,10 @@ +var common = module.exports; +var path = require('path'); + +var rootDir = path.join(__dirname, '..'); +common.dir = { + lib: rootDir + '/lib' +}; + +common.assert = require('assert'); +common.fake = require('fake'); \ No newline at end of file diff --git a/mybulma/node_modules/retry/test/integration/test-forever.js b/mybulma/node_modules/retry/test/integration/test-forever.js new file mode 100644 index 0000000..b41307c --- /dev/null +++ b/mybulma/node_modules/retry/test/integration/test-forever.js @@ -0,0 +1,24 @@ +var common = require('../common'); +var assert = common.assert; +var retry = require(common.dir.lib + '/retry'); + +(function testForeverUsesFirstTimeout() { + var operation = retry.operation({ + retries: 0, + minTimeout: 100, + maxTimeout: 100, + forever: true + }); + + operation.attempt(function(numAttempt) { + console.log('>numAttempt', numAttempt); + var err = new Error("foo"); + if (numAttempt == 10) { + operation.stop(); + } + + if (operation.retry(err)) { + return; + } + }); +})(); diff --git a/mybulma/node_modules/retry/test/integration/test-retry-operation.js b/mybulma/node_modules/retry/test/integration/test-retry-operation.js new file mode 100644 index 0000000..e351bb6 --- /dev/null +++ b/mybulma/node_modules/retry/test/integration/test-retry-operation.js @@ -0,0 +1,258 @@ +var common = require('../common'); +var assert = common.assert; +var fake = common.fake.create(); +var retry = require(common.dir.lib + '/retry'); + +(function testReset() { + var error = new Error('some error'); + var operation = retry.operation([1, 2, 3]); + var attempts = 0; + + var finalCallback = fake.callback('finalCallback'); + fake.expectAnytime(finalCallback); + + var expectedFinishes = 1; + var finishes = 0; + + var fn = function() { + operation.attempt(function(currentAttempt) { + attempts++; + assert.equal(currentAttempt, attempts); + if (operation.retry(error)) { + return; + } + + finishes++ + assert.equal(expectedFinishes, finishes); + assert.strictEqual(attempts, 4); + assert.strictEqual(operation.attempts(), attempts); + assert.strictEqual(operation.mainError(), error); + + if (finishes < 2) { + attempts = 0; + expectedFinishes++; + operation.reset(); + fn() + } else { + finalCallback(); + } + }); + }; + + fn(); +})(); + +(function testErrors() { + var operation = retry.operation(); + + var error = new Error('some error'); + var error2 = new Error('some other error'); + operation._errors.push(error); + operation._errors.push(error2); + + assert.deepEqual(operation.errors(), [error, error2]); +})(); + +(function testMainErrorReturnsMostFrequentError() { + var operation = retry.operation(); + var error = new Error('some error'); + var error2 = new Error('some other error'); + + operation._errors.push(error); + operation._errors.push(error2); + operation._errors.push(error); + + assert.strictEqual(operation.mainError(), error); +})(); + +(function testMainErrorReturnsLastErrorOnEqualCount() { + var operation = retry.operation(); + var error = new Error('some error'); + var error2 = new Error('some other error'); + + operation._errors.push(error); + operation._errors.push(error2); + + assert.strictEqual(operation.mainError(), error2); +})(); + +(function testAttempt() { + var operation = retry.operation(); + var fn = new Function(); + + var timeoutOpts = { + timeout: 1, + cb: function() {} + }; + operation.attempt(fn, timeoutOpts); + + assert.strictEqual(fn, operation._fn); + assert.strictEqual(timeoutOpts.timeout, operation._operationTimeout); + assert.strictEqual(timeoutOpts.cb, operation._operationTimeoutCb); +})(); + +(function testRetry() { + var error = new Error('some error'); + var operation = retry.operation([1, 2, 3]); + var attempts = 0; + + var finalCallback = fake.callback('finalCallback'); + fake.expectAnytime(finalCallback); + + var fn = function() { + operation.attempt(function(currentAttempt) { + attempts++; + assert.equal(currentAttempt, attempts); + if (operation.retry(error)) { + return; + } + + assert.strictEqual(attempts, 4); + assert.strictEqual(operation.attempts(), attempts); + assert.strictEqual(operation.mainError(), error); + finalCallback(); + }); + }; + + fn(); +})(); + +(function testRetryForever() { + var error = new Error('some error'); + var operation = retry.operation({ retries: 3, forever: true }); + var attempts = 0; + + var finalCallback = fake.callback('finalCallback'); + fake.expectAnytime(finalCallback); + + var fn = function() { + operation.attempt(function(currentAttempt) { + attempts++; + assert.equal(currentAttempt, attempts); + if (attempts !== 6 && operation.retry(error)) { + return; + } + + assert.strictEqual(attempts, 6); + assert.strictEqual(operation.attempts(), attempts); + assert.strictEqual(operation.mainError(), error); + finalCallback(); + }); + }; + + fn(); +})(); + +(function testRetryForeverNoRetries() { + var error = new Error('some error'); + var delay = 50 + var operation = retry.operation({ + retries: null, + forever: true, + minTimeout: delay, + maxTimeout: delay + }); + + var attempts = 0; + var startTime = new Date().getTime(); + + var finalCallback = fake.callback('finalCallback'); + fake.expectAnytime(finalCallback); + + var fn = function() { + operation.attempt(function(currentAttempt) { + attempts++; + assert.equal(currentAttempt, attempts); + if (attempts !== 4 && operation.retry(error)) { + return; + } + + var endTime = new Date().getTime(); + var minTime = startTime + (delay * 3); + var maxTime = minTime + 20 // add a little headroom for code execution time + assert(endTime >= minTime) + assert(endTime < maxTime) + assert.strictEqual(attempts, 4); + assert.strictEqual(operation.attempts(), attempts); + assert.strictEqual(operation.mainError(), error); + finalCallback(); + }); + }; + + fn(); +})(); + +(function testStop() { + var error = new Error('some error'); + var operation = retry.operation([1, 2, 3]); + var attempts = 0; + + var finalCallback = fake.callback('finalCallback'); + fake.expectAnytime(finalCallback); + + var fn = function() { + operation.attempt(function(currentAttempt) { + attempts++; + assert.equal(currentAttempt, attempts); + + if (attempts === 2) { + operation.stop(); + + assert.strictEqual(attempts, 2); + assert.strictEqual(operation.attempts(), attempts); + assert.strictEqual(operation.mainError(), error); + finalCallback(); + } + + if (operation.retry(error)) { + return; + } + }); + }; + + fn(); +})(); + +(function testMaxRetryTime() { + var error = new Error('some error'); + var maxRetryTime = 30; + var operation = retry.operation({ + minTimeout: 1, + maxRetryTime: maxRetryTime + }); + var attempts = 0; + + var finalCallback = fake.callback('finalCallback'); + fake.expectAnytime(finalCallback); + + var longAsyncFunction = function (wait, callback){ + setTimeout(callback, wait); + }; + + var fn = function() { + var startTime = new Date().getTime(); + operation.attempt(function(currentAttempt) { + attempts++; + assert.equal(currentAttempt, attempts); + + if (attempts !== 2) { + if (operation.retry(error)) { + return; + } + } else { + var curTime = new Date().getTime(); + longAsyncFunction(maxRetryTime - (curTime - startTime - 1), function(){ + if (operation.retry(error)) { + assert.fail('timeout should be occurred'); + return; + } + + assert.strictEqual(operation.mainError(), error); + finalCallback(); + }); + } + }); + }; + + fn(); +})(); diff --git a/mybulma/node_modules/retry/test/integration/test-retry-wrap.js b/mybulma/node_modules/retry/test/integration/test-retry-wrap.js new file mode 100644 index 0000000..3d2b6bf --- /dev/null +++ b/mybulma/node_modules/retry/test/integration/test-retry-wrap.js @@ -0,0 +1,101 @@ +var common = require('../common'); +var assert = common.assert; +var fake = common.fake.create(); +var retry = require(common.dir.lib + '/retry'); + +function getLib() { + return { + fn1: function() {}, + fn2: function() {}, + fn3: function() {} + }; +} + +(function wrapAll() { + var lib = getLib(); + retry.wrap(lib); + assert.equal(lib.fn1.name, 'bound retryWrapper'); + assert.equal(lib.fn2.name, 'bound retryWrapper'); + assert.equal(lib.fn3.name, 'bound retryWrapper'); +}()); + +(function wrapAllPassOptions() { + var lib = getLib(); + retry.wrap(lib, {retries: 2}); + assert.equal(lib.fn1.name, 'bound retryWrapper'); + assert.equal(lib.fn2.name, 'bound retryWrapper'); + assert.equal(lib.fn3.name, 'bound retryWrapper'); + assert.equal(lib.fn1.options.retries, 2); + assert.equal(lib.fn2.options.retries, 2); + assert.equal(lib.fn3.options.retries, 2); +}()); + +(function wrapDefined() { + var lib = getLib(); + retry.wrap(lib, ['fn2', 'fn3']); + assert.notEqual(lib.fn1.name, 'bound retryWrapper'); + assert.equal(lib.fn2.name, 'bound retryWrapper'); + assert.equal(lib.fn3.name, 'bound retryWrapper'); +}()); + +(function wrapDefinedAndPassOptions() { + var lib = getLib(); + retry.wrap(lib, {retries: 2}, ['fn2', 'fn3']); + assert.notEqual(lib.fn1.name, 'bound retryWrapper'); + assert.equal(lib.fn2.name, 'bound retryWrapper'); + assert.equal(lib.fn3.name, 'bound retryWrapper'); + assert.equal(lib.fn2.options.retries, 2); + assert.equal(lib.fn3.options.retries, 2); +}()); + +(function runWrappedWithoutError() { + var callbackCalled; + var lib = {method: function(a, b, callback) { + assert.equal(a, 1); + assert.equal(b, 2); + assert.equal(typeof callback, 'function'); + callback(); + }}; + retry.wrap(lib); + lib.method(1, 2, function() { + callbackCalled = true; + }); + assert.ok(callbackCalled); +}()); + +(function runWrappedSeveralWithoutError() { + var callbacksCalled = 0; + var lib = { + fn1: function (a, callback) { + assert.equal(a, 1); + assert.equal(typeof callback, 'function'); + callback(); + }, + fn2: function (a, callback) { + assert.equal(a, 2); + assert.equal(typeof callback, 'function'); + callback(); + } + }; + retry.wrap(lib, {}, ['fn1', 'fn2']); + lib.fn1(1, function() { + callbacksCalled++; + }); + lib.fn2(2, function() { + callbacksCalled++; + }); + assert.equal(callbacksCalled, 2); +}()); + +(function runWrappedWithError() { + var callbackCalled; + var lib = {method: function(callback) { + callback(new Error('Some error')); + }}; + retry.wrap(lib, {retries: 1}); + lib.method(function(err) { + callbackCalled = true; + assert.ok(err instanceof Error); + }); + assert.ok(!callbackCalled); +}()); diff --git a/mybulma/node_modules/retry/test/integration/test-timeouts.js b/mybulma/node_modules/retry/test/integration/test-timeouts.js new file mode 100644 index 0000000..7206b0f --- /dev/null +++ b/mybulma/node_modules/retry/test/integration/test-timeouts.js @@ -0,0 +1,69 @@ +var common = require('../common'); +var assert = common.assert; +var retry = require(common.dir.lib + '/retry'); + +(function testDefaultValues() { + var timeouts = retry.timeouts(); + + assert.equal(timeouts.length, 10); + assert.equal(timeouts[0], 1000); + assert.equal(timeouts[1], 2000); + assert.equal(timeouts[2], 4000); +})(); + +(function testDefaultValuesWithRandomize() { + var minTimeout = 5000; + var timeouts = retry.timeouts({ + minTimeout: minTimeout, + randomize: true + }); + + assert.equal(timeouts.length, 10); + assert.ok(timeouts[0] > minTimeout); + assert.ok(timeouts[1] > timeouts[0]); + assert.ok(timeouts[2] > timeouts[1]); +})(); + +(function testPassedTimeoutsAreUsed() { + var timeoutsArray = [1000, 2000, 3000]; + var timeouts = retry.timeouts(timeoutsArray); + assert.deepEqual(timeouts, timeoutsArray); + assert.notStrictEqual(timeouts, timeoutsArray); +})(); + +(function testTimeoutsAreWithinBoundaries() { + var minTimeout = 1000; + var maxTimeout = 10000; + var timeouts = retry.timeouts({ + minTimeout: minTimeout, + maxTimeout: maxTimeout + }); + for (var i = 0; i < timeouts; i++) { + assert.ok(timeouts[i] >= minTimeout); + assert.ok(timeouts[i] <= maxTimeout); + } +})(); + +(function testTimeoutsAreIncremental() { + var timeouts = retry.timeouts(); + var lastTimeout = timeouts[0]; + for (var i = 0; i < timeouts; i++) { + assert.ok(timeouts[i] > lastTimeout); + lastTimeout = timeouts[i]; + } +})(); + +(function testTimeoutsAreIncrementalForFactorsLessThanOne() { + var timeouts = retry.timeouts({ + retries: 3, + factor: 0.5 + }); + + var expected = [250, 500, 1000]; + assert.deepEqual(expected, timeouts); +})(); + +(function testRetries() { + var timeouts = retry.timeouts({retries: 2}); + assert.strictEqual(timeouts.length, 2); +})(); diff --git a/mybulma/node_modules/rimraf/CHANGELOG.md b/mybulma/node_modules/rimraf/CHANGELOG.md new file mode 100644 index 0000000..f116f14 --- /dev/null +++ b/mybulma/node_modules/rimraf/CHANGELOG.md @@ -0,0 +1,65 @@ +# v3.0 + +- Add `--preserve-root` option to executable (default true) +- Drop support for Node.js below version 6 + +# v2.7 + +- Make `glob` an optional dependency + +# 2.6 + +- Retry on EBUSY on non-windows platforms as well +- Make `rimraf.sync` 10000% more reliable on Windows + +# 2.5 + +- Handle Windows EPERM when lstat-ing read-only dirs +- Add glob option to pass options to glob + +# 2.4 + +- Add EPERM to delay/retry loop +- Add `disableGlob` option + +# 2.3 + +- Make maxBusyTries and emfileWait configurable +- Handle weird SunOS unlink-dir issue +- Glob the CLI arg for better Windows support + +# 2.2 + +- Handle ENOENT properly on Windows +- Allow overriding fs methods +- Treat EPERM as indicative of non-empty dir +- Remove optional graceful-fs dep +- Consistently return null error instead of undefined on success +- win32: Treat ENOTEMPTY the same as EBUSY +- Add `rimraf` binary + +# 2.1 + +- Fix SunOS error code for a non-empty directory +- Try rmdir before readdir +- Treat EISDIR like EPERM +- Remove chmod +- Remove lstat polyfill, node 0.7 is not supported + +# 2.0 + +- Fix myGid call to check process.getgid +- Simplify the EBUSY backoff logic. +- Use fs.lstat in node >= 0.7.9 +- Remove gently option +- remove fiber implementation +- Delete files that are marked read-only + +# 1.0 + +- Allow ENOENT in sync method +- Throw when no callback is provided +- Make opts.gently an absolute path +- use 'stat' if 'lstat' is not available +- Consistent error naming, and rethrow non-ENOENT stat errors +- add fiber implementation diff --git a/mybulma/node_modules/rimraf/LICENSE b/mybulma/node_modules/rimraf/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/mybulma/node_modules/rimraf/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/rimraf/README.md b/mybulma/node_modules/rimraf/README.md new file mode 100644 index 0000000..423b8cf --- /dev/null +++ b/mybulma/node_modules/rimraf/README.md @@ -0,0 +1,101 @@ +[![Build Status](https://travis-ci.org/isaacs/rimraf.svg?branch=master)](https://travis-ci.org/isaacs/rimraf) [![Dependency Status](https://david-dm.org/isaacs/rimraf.svg)](https://david-dm.org/isaacs/rimraf) [![devDependency Status](https://david-dm.org/isaacs/rimraf/dev-status.svg)](https://david-dm.org/isaacs/rimraf#info=devDependencies) + +The [UNIX command](http://en.wikipedia.org/wiki/Rm_(Unix)) `rm -rf` for node. + +Install with `npm install rimraf`, or just drop rimraf.js somewhere. + +## API + +`rimraf(f, [opts], callback)` + +The first parameter will be interpreted as a globbing pattern for files. If you +want to disable globbing you can do so with `opts.disableGlob` (defaults to +`false`). This might be handy, for instance, if you have filenames that contain +globbing wildcard characters. + +The callback will be called with an error if there is one. Certain +errors are handled for you: + +* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of + `opts.maxBusyTries` times before giving up, adding 100ms of wait + between each attempt. The default `maxBusyTries` is 3. +* `ENOENT` - If the file doesn't exist, rimraf will return + successfully, since your desired outcome is already the case. +* `EMFILE` - Since `readdir` requires opening a file descriptor, it's + possible to hit `EMFILE` if too many file descriptors are in use. + In the sync case, there's nothing to be done for this. But in the + async case, rimraf will gradually back off with timeouts up to + `opts.emfileWait` ms, which defaults to 1000. + +## options + +* unlink, chmod, stat, lstat, rmdir, readdir, + unlinkSync, chmodSync, statSync, lstatSync, rmdirSync, readdirSync + + In order to use a custom file system library, you can override + specific fs functions on the options object. + + If any of these functions are present on the options object, then + the supplied function will be used instead of the default fs + method. + + Sync methods are only relevant for `rimraf.sync()`, of course. + + For example: + + ```javascript + var myCustomFS = require('some-custom-fs') + + rimraf('some-thing', myCustomFS, callback) + ``` + +* maxBusyTries + + If an `EBUSY`, `ENOTEMPTY`, or `EPERM` error code is encountered + on Windows systems, then rimraf will retry with a linear backoff + wait of 100ms longer on each try. The default maxBusyTries is 3. + + Only relevant for async usage. + +* emfileWait + + If an `EMFILE` error is encountered, then rimraf will retry + repeatedly with a linear backoff of 1ms longer on each try, until + the timeout counter hits this max. The default limit is 1000. + + If you repeatedly encounter `EMFILE` errors, then consider using + [graceful-fs](http://npm.im/graceful-fs) in your program. + + Only relevant for async usage. + +* glob + + Set to `false` to disable [glob](http://npm.im/glob) pattern + matching. + + Set to an object to pass options to the glob module. The default + glob options are `{ nosort: true, silent: true }`. + + Glob version 6 is used in this module. + + Relevant for both sync and async usage. + +* disableGlob + + Set to any non-falsey value to disable globbing entirely. + (Equivalent to setting `glob: false`.) + +## rimraf.sync + +It can remove stuff synchronously, too. But that's not so good. Use +the async API. It's better. + +## CLI + +If installed with `npm install rimraf -g` it can be used as a global +command `rimraf [ ...]` which is useful for cross platform support. + +## mkdirp + +If you need to create a directory recursively, check out +[mkdirp](https://github.com/substack/node-mkdirp). diff --git a/mybulma/node_modules/rimraf/bin.js b/mybulma/node_modules/rimraf/bin.js new file mode 100644 index 0000000..023814c --- /dev/null +++ b/mybulma/node_modules/rimraf/bin.js @@ -0,0 +1,68 @@ +#!/usr/bin/env node + +const rimraf = require('./') + +const path = require('path') + +const isRoot = arg => /^(\/|[a-zA-Z]:\\)$/.test(path.resolve(arg)) +const filterOutRoot = arg => { + const ok = preserveRoot === false || !isRoot(arg) + if (!ok) { + console.error(`refusing to remove ${arg}`) + console.error('Set --no-preserve-root to allow this') + } + return ok +} + +let help = false +let dashdash = false +let noglob = false +let preserveRoot = true +const args = process.argv.slice(2).filter(arg => { + if (dashdash) + return !!arg + else if (arg === '--') + dashdash = true + else if (arg === '--no-glob' || arg === '-G') + noglob = true + else if (arg === '--glob' || arg === '-g') + noglob = false + else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/)) + help = true + else if (arg === '--preserve-root') + preserveRoot = true + else if (arg === '--no-preserve-root') + preserveRoot = false + else + return !!arg +}).filter(arg => !preserveRoot || filterOutRoot(arg)) + +const go = n => { + if (n >= args.length) + return + const options = noglob ? { glob: false } : {} + rimraf(args[n], options, er => { + if (er) + throw er + go(n+1) + }) +} + +if (help || args.length === 0) { + // If they didn't ask for help, then this is not a "success" + const log = help ? console.log : console.error + log('Usage: rimraf [ ...]') + log('') + log(' Deletes all files and folders at "path" recursively.') + log('') + log('Options:') + log('') + log(' -h, --help Display this usage info') + log(' -G, --no-glob Do not expand glob patterns in arguments') + log(' -g, --glob Expand glob patterns in arguments (default)') + log(' --preserve-root Do not remove \'/\' (default)') + log(' --no-preserve-root Do not treat \'/\' specially') + log(' -- Stop parsing flags') + process.exit(help ? 0 : 1) +} else + go(0) diff --git a/mybulma/node_modules/rimraf/package.json b/mybulma/node_modules/rimraf/package.json new file mode 100644 index 0000000..1bf8d5e --- /dev/null +++ b/mybulma/node_modules/rimraf/package.json @@ -0,0 +1,32 @@ +{ + "name": "rimraf", + "version": "3.0.2", + "main": "rimraf.js", + "description": "A deep deletion module for node (like `rm -rf`)", + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "repository": "git://github.com/isaacs/rimraf.git", + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --follow-tags", + "test": "tap test/*.js" + }, + "bin": "./bin.js", + "dependencies": { + "glob": "^7.1.3" + }, + "files": [ + "LICENSE", + "README.md", + "bin.js", + "rimraf.js" + ], + "devDependencies": { + "mkdirp": "^0.5.1", + "tap": "^12.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } +} diff --git a/mybulma/node_modules/rimraf/rimraf.js b/mybulma/node_modules/rimraf/rimraf.js new file mode 100644 index 0000000..34da417 --- /dev/null +++ b/mybulma/node_modules/rimraf/rimraf.js @@ -0,0 +1,360 @@ +const assert = require("assert") +const path = require("path") +const fs = require("fs") +let glob = undefined +try { + glob = require("glob") +} catch (_err) { + // treat glob as optional. +} + +const defaultGlobOpts = { + nosort: true, + silent: true +} + +// for EMFILE handling +let timeout = 0 + +const isWindows = (process.platform === "win32") + +const defaults = options => { + const methods = [ + 'unlink', + 'chmod', + 'stat', + 'lstat', + 'rmdir', + 'readdir' + ] + methods.forEach(m => { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) + + options.maxBusyTries = options.maxBusyTries || 3 + options.emfileWait = options.emfileWait || 1000 + if (options.glob === false) { + options.disableGlob = true + } + if (options.disableGlob !== true && glob === undefined) { + throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') + } + options.disableGlob = options.disableGlob || false + options.glob = options.glob || defaultGlobOpts +} + +const rimraf = (p, options, cb) => { + if (typeof options === 'function') { + cb = options + options = {} + } + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') + assert(options, 'rimraf: invalid options argument provided') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + defaults(options) + + let busyTries = 0 + let errState = null + let n = 0 + + const next = (er) => { + errState = errState || er + if (--n === 0) + cb(errState) + } + + const afterGlob = (er, results) => { + if (er) + return cb(er) + + n = results.length + if (n === 0) + return cb() + + results.forEach(p => { + const CB = (er) => { + if (er) { + if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && + busyTries < options.maxBusyTries) { + busyTries ++ + // try again, with the same exact callback as this one. + return setTimeout(() => rimraf_(p, options, CB), busyTries * 100) + } + + // this one won't happen if graceful-fs is used. + if (er.code === "EMFILE" && timeout < options.emfileWait) { + return setTimeout(() => rimraf_(p, options, CB), timeout ++) + } + + // already gone + if (er.code === "ENOENT") er = null + } + + timeout = 0 + next(er) + } + rimraf_(p, options, CB) + }) + } + + if (options.disableGlob || !glob.hasMagic(p)) + return afterGlob(null, [p]) + + options.lstat(p, (er, stat) => { + if (!er) + return afterGlob(null, [p]) + + glob(p, options.glob, afterGlob) + }) + +} + +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +const rimraf_ = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // sunos lets the root user unlink directories, which is... weird. + // so we have to lstat here and make sure it's not a dir. + options.lstat(p, (er, st) => { + if (er && er.code === "ENOENT") + return cb(null) + + // Windows can EPERM on stat. Life is suffering. + if (er && er.code === "EPERM" && isWindows) + fixWinEPERM(p, options, er, cb) + + if (st && st.isDirectory()) + return rmdir(p, options, er, cb) + + options.unlink(p, er => { + if (er) { + if (er.code === "ENOENT") + return cb(null) + if (er.code === "EPERM") + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + if (er.code === "EISDIR") + return rmdir(p, options, er, cb) + } + return cb(er) + }) + }) +} + +const fixWinEPERM = (p, options, er, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.chmod(p, 0o666, er2 => { + if (er2) + cb(er2.code === "ENOENT" ? null : er) + else + options.stat(p, (er3, stats) => { + if (er3) + cb(er3.code === "ENOENT" ? null : er) + else if (stats.isDirectory()) + rmdir(p, options, er, cb) + else + options.unlink(p, cb) + }) + }) +} + +const fixWinEPERMSync = (p, options, er) => { + assert(p) + assert(options) + + try { + options.chmodSync(p, 0o666) + } catch (er2) { + if (er2.code === "ENOENT") + return + else + throw er + } + + let stats + try { + stats = options.statSync(p) + } catch (er3) { + if (er3.code === "ENOENT") + return + else + throw er + } + + if (stats.isDirectory()) + rmdirSync(p, options, er) + else + options.unlinkSync(p) +} + +const rmdir = (p, options, originalEr, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, er => { + if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) + rmkids(p, options, cb) + else if (er && er.code === "ENOTDIR") + cb(originalEr) + else + cb(er) + }) +} + +const rmkids = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.readdir(p, (er, files) => { + if (er) + return cb(er) + let n = files.length + if (n === 0) + return options.rmdir(p, cb) + let errState + files.forEach(f => { + rimraf(path.join(p, f), options, er => { + if (errState) + return + if (er) + return cb(errState = er) + if (--n === 0) + options.rmdir(p, cb) + }) + }) + }) +} + +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +const rimrafSync = (p, options) => { + options = options || {} + defaults(options) + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + let results + + if (options.disableGlob || !glob.hasMagic(p)) { + results = [p] + } else { + try { + options.lstatSync(p) + results = [p] + } catch (er) { + results = glob.sync(p, options.glob) + } + } + + if (!results.length) + return + + for (let i = 0; i < results.length; i++) { + const p = results[i] + + let st + try { + st = options.lstatSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + + // Windows can EPERM on stat. Life is suffering. + if (er.code === "EPERM" && isWindows) + fixWinEPERMSync(p, options, er) + } + + try { + // sunos lets the root user unlink directories, which is... weird. + if (st && st.isDirectory()) + rmdirSync(p, options, null) + else + options.unlinkSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "EPERM") + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + if (er.code !== "EISDIR") + throw er + + rmdirSync(p, options, er) + } + } +} + +const rmdirSync = (p, options, originalEr) => { + assert(p) + assert(options) + + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "ENOTDIR") + throw originalEr + if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") + rmkidsSync(p, options) + } +} + +const rmkidsSync = (p, options) => { + assert(p) + assert(options) + options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) + + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + const retries = isWindows ? 100 : 1 + let i = 0 + do { + let threw = true + try { + const ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) + continue + } + } while (true) +} + +module.exports = rimraf +rimraf.sync = rimrafSync diff --git a/mybulma/node_modules/safe-buffer/LICENSE b/mybulma/node_modules/safe-buffer/LICENSE new file mode 100644 index 0000000..0c068ce --- /dev/null +++ b/mybulma/node_modules/safe-buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/mybulma/node_modules/safe-buffer/README.md b/mybulma/node_modules/safe-buffer/README.md new file mode 100644 index 0000000..e9a81af --- /dev/null +++ b/mybulma/node_modules/safe-buffer/README.md @@ -0,0 +1,584 @@ +# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg +[travis-url]: https://travis-ci.org/feross/safe-buffer +[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg +[npm-url]: https://npmjs.org/package/safe-buffer +[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg +[downloads-url]: https://npmjs.org/package/safe-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +#### Safer Node.js Buffer API + +**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, +`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** + +**Uses the built-in implementation when available.** + +## install + +``` +npm install safe-buffer +``` + +## usage + +The goal of this package is to provide a safe replacement for the node.js `Buffer`. + +It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to +the top of your node.js modules: + +```js +var Buffer = require('safe-buffer').Buffer + +// Existing buffer code will continue to work without issues: + +new Buffer('hey', 'utf8') +new Buffer([1, 2, 3], 'utf8') +new Buffer(obj) +new Buffer(16) // create an uninitialized buffer (potentially unsafe) + +// But you can use these new explicit APIs to make clear what you want: + +Buffer.from('hey', 'utf8') // convert from many types to a Buffer +Buffer.alloc(16) // create a zero-filled buffer (safe) +Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) +``` + +## api + +### Class Method: Buffer.from(array) + + +* `array` {Array} + +Allocates a new `Buffer` using an `array` of octets. + +```js +const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); + // creates a new Buffer containing ASCII bytes + // ['b','u','f','f','e','r'] +``` + +A `TypeError` will be thrown if `array` is not an `Array`. + +### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) + + +* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or + a `new ArrayBuffer()` +* `byteOffset` {Number} Default: `0` +* `length` {Number} Default: `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a `TypedArray` instance, +the newly created `Buffer` will share the same allocated memory as the +TypedArray. + +```js +const arr = new Uint16Array(2); +arr[0] = 5000; +arr[1] = 4000; + +const buf = Buffer.from(arr.buffer); // shares the memory with arr; + +console.log(buf); + // Prints: + +// changing the TypedArray changes the Buffer also +arr[1] = 6000; + +console.log(buf); + // Prints: +``` + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +```js +const ab = new ArrayBuffer(10); +const buf = Buffer.from(ab, 0, 2); +console.log(buf.length); + // Prints: 2 +``` + +A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. + +### Class Method: Buffer.from(buffer) + + +* `buffer` {Buffer} + +Copies the passed `buffer` data onto a new `Buffer` instance. + +```js +const buf1 = Buffer.from('buffer'); +const buf2 = Buffer.from(buf1); + +buf1[0] = 0x61; +console.log(buf1.toString()); + // 'auffer' +console.log(buf2.toString()); + // 'buffer' (copy is not changed) +``` + +A `TypeError` will be thrown if `buffer` is not a `Buffer`. + +### Class Method: Buffer.from(str[, encoding]) + + +* `str` {String} String to encode. +* `encoding` {String} Encoding to use, Default: `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `str`. If +provided, the `encoding` parameter identifies the character encoding. +If not provided, `encoding` defaults to `'utf8'`. + +```js +const buf1 = Buffer.from('this is a tést'); +console.log(buf1.toString()); + // prints: this is a tést +console.log(buf1.toString('ascii')); + // prints: this is a tC)st + +const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); +console.log(buf2.toString()); + // prints: this is a tést +``` + +A `TypeError` will be thrown if `str` is not a string. + +### Class Method: Buffer.alloc(size[, fill[, encoding]]) + + +* `size` {Number} +* `fill` {Value} Default: `undefined` +* `encoding` {String} Default: `utf8` + +Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the +`Buffer` will be *zero-filled*. + +```js +const buf = Buffer.alloc(5); +console.log(buf); + // +``` + +The `size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +If `fill` is specified, the allocated `Buffer` will be initialized by calling +`buf.fill(fill)`. See [`buf.fill()`][] for more information. + +```js +const buf = Buffer.alloc(5, 'a'); +console.log(buf); + // +``` + +If both `fill` and `encoding` are specified, the allocated `Buffer` will be +initialized by calling `buf.fill(fill, encoding)`. For example: + +```js +const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); +console.log(buf); + // +``` + +Calling `Buffer.alloc(size)` can be significantly slower than the alternative +`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance +contents will *never contain sensitive data*. + +A `TypeError` will be thrown if `size` is not a number. + +### Class Method: Buffer.allocUnsafe(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must +be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit +architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is +thrown. A zero-length Buffer will be created if a `size` less than or equal to +0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +```js +const buf = Buffer.allocUnsafe(5); +console.log(buf); + // + // (octets will be different, every time) +buf.fill(0); +console.log(buf); + // +``` + +A `TypeError` will be thrown if `size` is not a number. + +Note that the `Buffer` module pre-allocates an internal `Buffer` instance of +size `Buffer.poolSize` that is used as a pool for the fast allocation of new +`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated +`new Buffer(size)` constructor) only when `size` is less than or equal to +`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default +value of `Buffer.poolSize` is `8192` but can be modified. + +Use of this pre-allocated internal memory pool is a key difference between +calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. +Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer +pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal +Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The +difference is subtle but can be important when an application requires the +additional performance that `Buffer.allocUnsafe(size)` provides. + +### Class Method: Buffer.allocUnsafeSlow(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The +`size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, +allocations under 4KB are, by default, sliced from a single pre-allocated +`Buffer`. This allows applications to avoid the garbage collection overhead of +creating many individually allocated Buffers. This approach improves both +performance and memory usage by eliminating the need to track and cleanup as +many `Persistent` objects. + +However, in the case where a developer may need to retain a small chunk of +memory from a pool for an indeterminate amount of time, it may be appropriate +to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then +copy out the relevant bits. + +```js +// need to keep around a few small chunks of memory +const store = []; + +socket.on('readable', () => { + const data = socket.read(); + // allocate for retained data + const sb = Buffer.allocUnsafeSlow(10); + // copy the data into the new allocation + data.copy(sb, 0, 0, 10); + store.push(sb); +}); +``` + +Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* +a developer has observed undue memory retention in their applications. + +A `TypeError` will be thrown if `size` is not a number. + +### All the Rest + +The rest of the `Buffer` API is exactly the same as in node.js. +[See the docs](https://nodejs.org/api/buffer.html). + + +## Related links + +- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) +- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) + +## Why is `Buffer` unsafe? + +Today, the node.js `Buffer` constructor is overloaded to handle many different argument +types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), +`ArrayBuffer`, and also `Number`. + +The API is optimized for convenience: you can throw any type at it, and it will try to do +what you want. + +Because the Buffer constructor is so powerful, you often see code like this: + +```js +// Convert UTF-8 strings to hex +function toHex (str) { + return new Buffer(str).toString('hex') +} +``` + +***But what happens if `toHex` is called with a `Number` argument?*** + +### Remote Memory Disclosure + +If an attacker can make your program call the `Buffer` constructor with a `Number` +argument, then they can make it allocate uninitialized memory from the node.js process. +This could potentially disclose TLS private keys, user data, or database passwords. + +When the `Buffer` constructor is passed a `Number` argument, it returns an +**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like +this, you **MUST** overwrite the contents before returning it to the user. + +From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): + +> `new Buffer(size)` +> +> - `size` Number +> +> The underlying memory for `Buffer` instances created in this way is not initialized. +> **The contents of a newly created `Buffer` are unknown and could contain sensitive +> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. + +(Emphasis our own.) + +Whenever the programmer intended to create an uninitialized `Buffer` you often see code +like this: + +```js +var buf = new Buffer(16) + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### Would this ever be a problem in real code? + +Yes. It's surprisingly common to forget to check the type of your variables in a +dynamically-typed language like JavaScript. + +Usually the consequences of assuming the wrong type is that your program crashes with an +uncaught exception. But the failure mode for forgetting to check the type of arguments to +the `Buffer` constructor is more catastrophic. + +Here's an example of a vulnerable service that takes a JSON payload and converts it to +hex: + +```js +// Take a JSON payload {str: "some string"} and convert it to hex +var server = http.createServer(function (req, res) { + var data = '' + req.setEncoding('utf8') + req.on('data', function (chunk) { + data += chunk + }) + req.on('end', function () { + var body = JSON.parse(data) + res.end(new Buffer(body.str).toString('hex')) + }) +}) + +server.listen(8080) +``` + +In this example, an http client just has to send: + +```json +{ + "str": 1000 +} +``` + +and it will get back 1,000 bytes of uninitialized memory from the server. + +This is a very serious bug. It's similar in severity to the +[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process +memory by remote attackers. + + +### Which real-world packages were vulnerable? + +#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) + +[Mathias Buus](https://github.com/mafintosh) and I +([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, +[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow +anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get +them to reveal 20 bytes at a time of uninitialized memory from the node.js process. + +Here's +[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) +that fixed it. We released a new fixed version, created a +[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all +vulnerable versions on npm so users will get a warning to upgrade to a newer version. + +#### [`ws`](https://www.npmjs.com/package/ws) + +That got us wondering if there were other vulnerable packages. Sure enough, within a short +period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the +most popular WebSocket implementation in node.js. + +If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as +expected, then uninitialized server memory would be disclosed to the remote peer. + +These were the vulnerable methods: + +```js +socket.send(number) +socket.ping(number) +socket.pong(number) +``` + +Here's a vulnerable socket server with some echo functionality: + +```js +server.on('connection', function (socket) { + socket.on('message', function (message) { + message = JSON.parse(message) + if (message.type === 'echo') { + socket.send(message.data) // send back the user's message + } + }) +}) +``` + +`socket.send(number)` called on the server, will disclose server memory. + +Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue +was fixed, with a more detailed explanation. Props to +[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the +[Node Security Project disclosure](https://nodesecurity.io/advisories/67). + + +### What's the solution? + +It's important that node.js offers a fast way to get memory otherwise performance-critical +applications would needlessly get a lot slower. + +But we need a better way to *signal our intent* as programmers. **When we want +uninitialized memory, we should request it explicitly.** + +Sensitive functionality should not be packed into a developer-friendly API that loosely +accepts many different types. This type of API encourages the lazy practice of passing +variables in without checking the type very carefully. + +#### A new API: `Buffer.allocUnsafe(number)` + +The functionality of creating buffers with uninitialized memory should be part of another +API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that +frequently gets user input of all sorts of different types passed into it. + +```js +var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### How do we fix node.js core? + +We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as +`semver-major`) which defends against one case: + +```js +var str = 16 +new Buffer(str, 'utf8') +``` + +In this situation, it's implied that the programmer intended the first argument to be a +string, since they passed an encoding as a second argument. Today, node.js will allocate +uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not +what the programmer intended. + +But this is only a partial solution, since if the programmer does `new Buffer(variable)` +(without an `encoding` parameter) there's no way to know what they intended. If `variable` +is sometimes a number, then uninitialized memory will sometimes be returned. + +### What's the real long-term fix? + +We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when +we need uninitialized memory. But that would break 1000s of packages. + +~~We believe the best solution is to:~~ + +~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ + +~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ + +#### Update + +We now support adding three new APIs: + +- `Buffer.from(value)` - convert from any type to a buffer +- `Buffer.alloc(size)` - create a zero-filled buffer +- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size + +This solves the core problem that affected `ws` and `bittorrent-dht` which is +`Buffer(variable)` getting tricked into taking a number argument. + +This way, existing code continues working and the impact on the npm ecosystem will be +minimal. Over time, npm maintainers can migrate performance-critical code to use +`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. + + +### Conclusion + +We think there's a serious design issue with the `Buffer` API as it exists today. It +promotes insecure software by putting high-risk functionality into a convenient API +with friendly "developer ergonomics". + +This wasn't merely a theoretical exercise because we found the issue in some of the +most popular npm packages. + +Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of +`buffer`. + +```js +var Buffer = require('safe-buffer').Buffer +``` + +Eventually, we hope that node.js core can switch to this new, safer behavior. We believe +the impact on the ecosystem would be minimal since it's not a breaking change. +Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while +older, insecure packages would magically become safe from this attack vector. + + +## links + +- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) +- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) +- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) + + +## credit + +The original issues in `bittorrent-dht` +([disclosure](https://nodesecurity.io/advisories/68)) and +`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by +[Mathias Buus](https://github.com/mafintosh) and +[Feross Aboukhadijeh](http://feross.org/). + +Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues +and for his work running the [Node Security Project](https://nodesecurity.io/). + +Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and +auditing the code. + + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/mybulma/node_modules/safe-buffer/index.d.ts b/mybulma/node_modules/safe-buffer/index.d.ts new file mode 100644 index 0000000..e9fed80 --- /dev/null +++ b/mybulma/node_modules/safe-buffer/index.d.ts @@ -0,0 +1,187 @@ +declare module "safe-buffer" { + export class Buffer { + length: number + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + */ + constructor (str: string, encoding?: string); + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + */ + constructor (size: number); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: Uint8Array); + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}. + * + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + */ + constructor (arrayBuffer: ArrayBuffer); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: any[]); + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + */ + constructor (buffer: Buffer); + prototype: Buffer; + /** + * Allocates a new Buffer using an {array} of octets. + * + * @param array + */ + static from(array: any[]): Buffer; + /** + * When passed a reference to the .buffer property of a TypedArray instance, + * the newly created Buffer will share the same allocated memory as the TypedArray. + * The optional {byteOffset} and {length} arguments specify a memory range + * within the {arrayBuffer} that will be shared by the Buffer. + * + * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length + */ + static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + /** + * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer + */ + static from(buffer: Buffer): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + * + * @param str + */ + static from(str: string, encoding?: string): Buffer; + /** + * Returns true if {obj} is a Buffer + * + * @param obj object to test. + */ + static isBuffer(obj: any): obj is Buffer; + /** + * Returns true if {encoding} is a valid encoding argument. + * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + * + * @param encoding string to test. + */ + static isEncoding(encoding: string): boolean; + /** + * Gives the actual byte length of a string. encoding defaults to 'utf8'. + * This is not the same as String.prototype.length since that returns the number of characters in a string. + * + * @param string string to test. + * @param encoding encoding used to evaluate (defaults to 'utf8') + */ + static byteLength(string: string, encoding?: string): number; + /** + * Returns a buffer which is the result of concatenating all the buffers in the list together. + * + * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. + * If the list has exactly one item, then the first item of the list is returned. + * If the list has more than one item, then a new Buffer is created. + * + * @param list An array of Buffer objects to concatenate + * @param totalLength Total length of the buffers when concatenated. + * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. + */ + static concat(list: Buffer[], totalLength?: number): Buffer; + /** + * The same as buf1.compare(buf2). + */ + static compare(buf1: Buffer, buf2: Buffer): number; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @param fill if specified, buffer will be initialized by calling buf.fill(fill). + * If parameter is omitted, buffer will be filled with zeros. + * @param encoding encoding used for call to buf.fill while initalizing + */ + static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafe(size: number): Buffer; + /** + * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafeSlow(size: number): Buffer; + } +} \ No newline at end of file diff --git a/mybulma/node_modules/safe-buffer/index.js b/mybulma/node_modules/safe-buffer/index.js new file mode 100644 index 0000000..f8d3ec9 --- /dev/null +++ b/mybulma/node_modules/safe-buffer/index.js @@ -0,0 +1,65 @@ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} diff --git a/mybulma/node_modules/safe-buffer/package.json b/mybulma/node_modules/safe-buffer/package.json new file mode 100644 index 0000000..f2869e2 --- /dev/null +++ b/mybulma/node_modules/safe-buffer/package.json @@ -0,0 +1,51 @@ +{ + "name": "safe-buffer", + "description": "Safer Node.js Buffer API", + "version": "5.2.1", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "https://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/safe-buffer/issues" + }, + "devDependencies": { + "standard": "*", + "tape": "^5.0.0" + }, + "homepage": "https://github.com/feross/safe-buffer", + "keywords": [ + "buffer", + "buffer allocate", + "node security", + "safe", + "safe-buffer", + "security", + "uninitialized" + ], + "license": "MIT", + "main": "index.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "git://github.com/feross/safe-buffer.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] +} diff --git a/mybulma/node_modules/safer-buffer/LICENSE b/mybulma/node_modules/safer-buffer/LICENSE new file mode 100644 index 0000000..4fe9e6f --- /dev/null +++ b/mybulma/node_modules/safer-buffer/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Nikita Skovoroda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/mybulma/node_modules/safer-buffer/Porting-Buffer.md b/mybulma/node_modules/safer-buffer/Porting-Buffer.md new file mode 100644 index 0000000..68d86ba --- /dev/null +++ b/mybulma/node_modules/safer-buffer/Porting-Buffer.md @@ -0,0 +1,268 @@ +# Porting to the Buffer.from/Buffer.alloc API + + +## Overview + +- [Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x.](#variant-1) (*recommended*) +- [Variant 2: Use a polyfill](#variant-2) +- [Variant 3: manual detection, with safeguards](#variant-3) + +### Finding problematic bits of code using grep + +Just run `grep -nrE '[^a-zA-Z](Slow)?Buffer\s*\(' --exclude-dir node_modules`. + +It will find all the potentially unsafe places in your own code (with some considerably unlikely +exceptions). + +### Finding problematic bits of code using Node.js 8 + +If you’re using Node.js ≥ 8.0.0 (which is recommended), Node.js exposes multiple options that help with finding the relevant pieces of code: + +- `--trace-warnings` will make Node.js show a stack trace for this warning and other warnings that are printed by Node.js. +- `--trace-deprecation` does the same thing, but only for deprecation warnings. +- `--pending-deprecation` will show more types of deprecation warnings. In particular, it will show the `Buffer()` deprecation warning, even on Node.js 8. + +You can set these flags using an environment variable: + +```console +$ export NODE_OPTIONS='--trace-warnings --pending-deprecation' +$ cat example.js +'use strict'; +const foo = new Buffer('foo'); +$ node example.js +(node:7147) [DEP0005] DeprecationWarning: The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. + at showFlaggedDeprecation (buffer.js:127:13) + at new Buffer (buffer.js:148:3) + at Object. (/path/to/example.js:2:13) + [... more stack trace lines ...] +``` + +### Finding problematic bits of code using linters + +Eslint rules [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +or +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) +also find calls to deprecated `Buffer()` API. Those rules are included in some pre-sets. + +There is a drawback, though, that it doesn't always +[work correctly](https://github.com/chalker/safer-buffer#why-not-safe-buffer) when `Buffer` is +overriden e.g. with a polyfill, so recommended is a combination of this and some other method +described above. + + +## Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x. + +This is the recommended solution nowadays that would imply only minimal overhead. + +The Node.js 5.x release line has been unsupported since July 2016, and the Node.js 4.x release line reaches its End of Life in April 2018 (→ [Schedule](https://github.com/nodejs/Release#release-schedule)). This means that these versions of Node.js will *not* receive any updates, even in case of security issues, so using these release lines should be avoided, if at all possible. + +What you would do in this case is to convert all `new Buffer()` or `Buffer()` calls to use `Buffer.alloc()` or `Buffer.from()`, in the following way: + +- For `new Buffer(number)`, replace it with `Buffer.alloc(number)`. +- For `new Buffer(string)` (or `new Buffer(string, encoding)`), replace it with `Buffer.from(string)` (or `Buffer.from(string, encoding)`). +- For all other combinations of arguments (these are much rarer), also replace `new Buffer(...arguments)` with `Buffer.from(...arguments)`. + +Note that `Buffer.alloc()` is also _faster_ on the current Node.js versions than +`new Buffer(size).fill(0)`, which is what you would otherwise need to ensure zero-filling. + +Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +or +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) +is recommended to avoid accidential unsafe Buffer API usage. + +There is also a [JSCodeshift codemod](https://github.com/joyeecheung/node-dep-codemod#dep005) +for automatically migrating Buffer constructors to `Buffer.alloc()` or `Buffer.from()`. +Note that it currently only works with cases where the arguments are literals or where the +constructor is invoked with two arguments. + +_If you currently support those older Node.js versions and dropping them would be a semver-major change +for you, or if you support older branches of your packages, consider using [Variant 2](#variant-2) +or [Variant 3](#variant-3) on older branches, so people using those older branches will also receive +the fix. That way, you will eradicate potential issues caused by unguarded Buffer API usage and +your users will not observe a runtime deprecation warning when running your code on Node.js 10._ + + +## Variant 2: Use a polyfill + +Utilize [safer-buffer](https://www.npmjs.com/package/safer-buffer) as a polyfill to support older +Node.js versions. + +You would take exacly the same steps as in [Variant 1](#variant-1), but with a polyfill +`const Buffer = require('safer-buffer').Buffer` in all files where you use the new `Buffer` api. + +Make sure that you do not use old `new Buffer` API — in any files where the line above is added, +using old `new Buffer()` API will _throw_. It will be easy to notice that in CI, though. + +Alternatively, you could use [buffer-from](https://www.npmjs.com/package/buffer-from) and/or +[buffer-alloc](https://www.npmjs.com/package/buffer-alloc) [ponyfills](https://ponyfill.com/) — +those are great, the only downsides being 4 deps in the tree and slightly more code changes to +migrate off them (as you would be using e.g. `Buffer.from` under a different name). If you need only +`Buffer.from` polyfilled — `buffer-from` alone which comes with no extra dependencies. + +_Alternatively, you could use [safe-buffer](https://www.npmjs.com/package/safe-buffer) — it also +provides a polyfill, but takes a different approach which has +[it's drawbacks](https://github.com/chalker/safer-buffer#why-not-safe-buffer). It will allow you +to also use the older `new Buffer()` API in your code, though — but that's arguably a benefit, as +it is problematic, can cause issues in your code, and will start emitting runtime deprecation +warnings starting with Node.js 10._ + +Note that in either case, it is important that you also remove all calls to the old Buffer +API manually — just throwing in `safe-buffer` doesn't fix the problem by itself, it just provides +a polyfill for the new API. I have seen people doing that mistake. + +Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +or +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) +is recommended. + +_Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5.0._ + + +## Variant 3 — manual detection, with safeguards + +This is useful if you create Buffer instances in only a few places (e.g. one), or you have your own +wrapper around them. + +### Buffer(0) + +This special case for creating empty buffers can be safely replaced with `Buffer.concat([])`, which +returns the same result all the way down to Node.js 0.8.x. + +### Buffer(notNumber) + +Before: + +```js +var buf = new Buffer(notNumber, encoding); +``` + +After: + +```js +var buf; +if (Buffer.from && Buffer.from !== Uint8Array.from) { + buf = Buffer.from(notNumber, encoding); +} else { + if (typeof notNumber === 'number') + throw new Error('The "size" argument must be of type number.'); + buf = new Buffer(notNumber, encoding); +} +``` + +`encoding` is optional. + +Note that the `typeof notNumber` before `new Buffer` is required (for cases when `notNumber` argument is not +hard-coded) and _is not caused by the deprecation of Buffer constructor_ — it's exactly _why_ the +Buffer constructor is deprecated. Ecosystem packages lacking this type-check caused numereous +security issues — situations when unsanitized user input could end up in the `Buffer(arg)` create +problems ranging from DoS to leaking sensitive information to the attacker from the process memory. + +When `notNumber` argument is hardcoded (e.g. literal `"abc"` or `[0,1,2]`), the `typeof` check can +be omitted. + +Also note that using TypeScript does not fix this problem for you — when libs written in +`TypeScript` are used from JS, or when user input ends up there — it behaves exactly as pure JS, as +all type checks are translation-time only and are not present in the actual JS code which TS +compiles to. + +### Buffer(number) + +For Node.js 0.10.x (and below) support: + +```js +var buf; +if (Buffer.alloc) { + buf = Buffer.alloc(number); +} else { + buf = new Buffer(number); + buf.fill(0); +} +``` + +Otherwise (Node.js ≥ 0.12.x): + +```js +const buf = Buffer.alloc ? Buffer.alloc(number) : new Buffer(number).fill(0); +``` + +## Regarding Buffer.allocUnsafe + +Be extra cautious when using `Buffer.allocUnsafe`: + * Don't use it if you don't have a good reason to + * e.g. you probably won't ever see a performance difference for small buffers, in fact, those + might be even faster with `Buffer.alloc()`, + * if your code is not in the hot code path — you also probably won't notice a difference, + * keep in mind that zero-filling minimizes the potential risks. + * If you use it, make sure that you never return the buffer in a partially-filled state, + * if you are writing to it sequentially — always truncate it to the actuall written length + +Errors in handling buffers allocated with `Buffer.allocUnsafe` could result in various issues, +ranged from undefined behaviour of your code to sensitive data (user input, passwords, certs) +leaking to the remote attacker. + +_Note that the same applies to `new Buffer` usage without zero-filling, depending on the Node.js +version (and lacking type checks also adds DoS to the list of potential problems)._ + + +## FAQ + + +### What is wrong with the `Buffer` constructor? + +The `Buffer` constructor could be used to create a buffer in many different ways: + +- `new Buffer(42)` creates a `Buffer` of 42 bytes. Before Node.js 8, this buffer contained + *arbitrary memory* for performance reasons, which could include anything ranging from + program source code to passwords and encryption keys. +- `new Buffer('abc')` creates a `Buffer` that contains the UTF-8-encoded version of + the string `'abc'`. A second argument could specify another encoding: For example, + `new Buffer(string, 'base64')` could be used to convert a Base64 string into the original + sequence of bytes that it represents. +- There are several other combinations of arguments. + +This meant that, in code like `var buffer = new Buffer(foo);`, *it is not possible to tell +what exactly the contents of the generated buffer are* without knowing the type of `foo`. + +Sometimes, the value of `foo` comes from an external source. For example, this function +could be exposed as a service on a web server, converting a UTF-8 string into its Base64 form: + +``` +function stringToBase64(req, res) { + // The request body should have the format of `{ string: 'foobar' }` + const rawBytes = new Buffer(req.body.string) + const encoded = rawBytes.toString('base64') + res.end({ encoded: encoded }) +} +``` + +Note that this code does *not* validate the type of `req.body.string`: + +- `req.body.string` is expected to be a string. If this is the case, all goes well. +- `req.body.string` is controlled by the client that sends the request. +- If `req.body.string` is the *number* `50`, the `rawBytes` would be 50 bytes: + - Before Node.js 8, the content would be uninitialized + - After Node.js 8, the content would be `50` bytes with the value `0` + +Because of the missing type check, an attacker could intentionally send a number +as part of the request. Using this, they can either: + +- Read uninitialized memory. This **will** leak passwords, encryption keys and other + kinds of sensitive information. (Information leak) +- Force the program to allocate a large amount of memory. For example, when specifying + `500000000` as the input value, each request will allocate 500MB of memory. + This can be used to either exhaust the memory available of a program completely + and make it crash, or slow it down significantly. (Denial of Service) + +Both of these scenarios are considered serious security issues in a real-world +web server context. + +when using `Buffer.from(req.body.string)` instead, passing a number will always +throw an exception instead, giving a controlled behaviour that can always be +handled by the program. + + +### The `Buffer()` constructor has been deprecated for a while. Is this really an issue? + +Surveys of code in the `npm` ecosystem have shown that the `Buffer()` constructor is still +widely used. This includes new code, and overall usage of such code has actually been +*increasing*. diff --git a/mybulma/node_modules/safer-buffer/Readme.md b/mybulma/node_modules/safer-buffer/Readme.md new file mode 100644 index 0000000..14b0822 --- /dev/null +++ b/mybulma/node_modules/safer-buffer/Readme.md @@ -0,0 +1,156 @@ +# safer-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![javascript style guide][standard-image]][standard-url] [![Security Responsible Disclosure][secuirty-image]][secuirty-url] + +[travis-image]: https://travis-ci.org/ChALkeR/safer-buffer.svg?branch=master +[travis-url]: https://travis-ci.org/ChALkeR/safer-buffer +[npm-image]: https://img.shields.io/npm/v/safer-buffer.svg +[npm-url]: https://npmjs.org/package/safer-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com +[secuirty-image]: https://img.shields.io/badge/Security-Responsible%20Disclosure-green.svg +[secuirty-url]: https://github.com/nodejs/security-wg/blob/master/processes/responsible_disclosure_template.md + +Modern Buffer API polyfill without footguns, working on Node.js from 0.8 to current. + +## How to use? + +First, port all `Buffer()` and `new Buffer()` calls to `Buffer.alloc()` and `Buffer.from()` API. + +Then, to achieve compatibility with outdated Node.js versions (`<4.5.0` and 5.x `<5.9.0`), use +`const Buffer = require('safer-buffer').Buffer` in all files where you make calls to the new +Buffer API. _Use `var` instead of `const` if you need that for your Node.js version range support._ + +Also, see the +[porting Buffer](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) guide. + +## Do I need it? + +Hopefully, not — dropping support for outdated Node.js versions should be fine nowdays, and that +is the recommended path forward. You _do_ need to port to the `Buffer.alloc()` and `Buffer.from()` +though. + +See the [porting guide](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) +for a better description. + +## Why not [safe-buffer](https://npmjs.com/safe-buffer)? + +_In short: while `safe-buffer` serves as a polyfill for the new API, it allows old API usage and +itself contains footguns._ + +`safe-buffer` could be used safely to get the new API while still keeping support for older +Node.js versions (like this module), but while analyzing ecosystem usage of the old Buffer API +I found out that `safe-buffer` is itself causing problems in some cases. + +For example, consider the following snippet: + +```console +$ cat example.unsafe.js +console.log(Buffer(20)) +$ ./node-v6.13.0-linux-x64/bin/node example.unsafe.js + +$ standard example.unsafe.js +standard: Use JavaScript Standard Style (https://standardjs.com) + /home/chalker/repo/safer-buffer/example.unsafe.js:2:13: 'Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead. +``` + +This is allocates and writes to console an uninitialized chunk of memory. +[standard](https://www.npmjs.com/package/standard) linter (among others) catch that and warn people +to avoid using unsafe API. + +Let's now throw in `safe-buffer`! + +```console +$ cat example.safe-buffer.js +const Buffer = require('safe-buffer').Buffer +console.log(Buffer(20)) +$ standard example.safe-buffer.js +$ ./node-v6.13.0-linux-x64/bin/node example.safe-buffer.js + +``` + +See the problem? Adding in `safe-buffer` _magically removes the lint warning_, but the behavior +remains identiсal to what we had before, and when launched on Node.js 6.x LTS — this dumps out +chunks of uninitialized memory. +_And this code will still emit runtime warnings on Node.js 10.x and above._ + +That was done by design. I first considered changing `safe-buffer`, prohibiting old API usage or +emitting warnings on it, but that significantly diverges from `safe-buffer` design. After some +discussion, it was decided to move my approach into a separate package, and _this is that separate +package_. + +This footgun is not imaginary — I observed top-downloaded packages doing that kind of thing, +«fixing» the lint warning by blindly including `safe-buffer` without any actual changes. + +Also in some cases, even if the API _was_ migrated to use of safe Buffer API — a random pull request +can bring unsafe Buffer API usage back to the codebase by adding new calls — and that could go +unnoticed even if you have a linter prohibiting that (becase of the reason stated above), and even +pass CI. _I also observed that being done in popular packages._ + +Some examples: + * [webdriverio](https://github.com/webdriverio/webdriverio/commit/05cbd3167c12e4930f09ef7cf93b127ba4effae4#diff-124380949022817b90b622871837d56cR31) + (a module with 548 759 downloads/month), + * [websocket-stream](https://github.com/maxogden/websocket-stream/commit/c9312bd24d08271687d76da0fe3c83493871cf61) + (218 288 d/m, fix in [maxogden/websocket-stream#142](https://github.com/maxogden/websocket-stream/pull/142)), + * [node-serialport](https://github.com/node-serialport/node-serialport/commit/e8d9d2b16c664224920ce1c895199b1ce2def48c) + (113 138 d/m, fix in [node-serialport/node-serialport#1510](https://github.com/node-serialport/node-serialport/pull/1510)), + * [karma](https://github.com/karma-runner/karma/commit/3d94b8cf18c695104ca195334dc75ff054c74eec) + (3 973 193 d/m, fix in [karma-runner/karma#2947](https://github.com/karma-runner/karma/pull/2947)), + * [spdy-transport](https://github.com/spdy-http2/spdy-transport/commit/5375ac33f4a62a4f65bcfc2827447d42a5dbe8b1) + (5 970 727 d/m, fix in [spdy-http2/spdy-transport#53](https://github.com/spdy-http2/spdy-transport/pull/53)). + * And there are a lot more over the ecosystem. + +I filed a PR at +[mysticatea/eslint-plugin-node#110](https://github.com/mysticatea/eslint-plugin-node/pull/110) to +partially fix that (for cases when that lint rule is used), but it is a semver-major change for +linter rules and presets, so it would take significant time for that to reach actual setups. +_It also hasn't been released yet (2018-03-20)._ + +Also, `safer-buffer` discourages the usage of `.allocUnsafe()`, which is often done by a mistake. +It still supports it with an explicit concern barier, by placing it under +`require('safer-buffer/dangereous')`. + +## But isn't throwing bad? + +Not really. It's an error that could be noticed and fixed early, instead of causing havoc later like +unguarded `new Buffer()` calls that end up receiving user input can do. + +This package affects only the files where `var Buffer = require('safer-buffer').Buffer` was done, so +it is really simple to keep track of things and make sure that you don't mix old API usage with that. +Also, CI should hint anything that you might have missed. + +New commits, if tested, won't land new usage of unsafe Buffer API this way. +_Node.js 10.x also deals with that by printing a runtime depecation warning._ + +### Would it affect third-party modules? + +No, unless you explicitly do an awful thing like monkey-patching or overriding the built-in `Buffer`. +Don't do that. + +### But I don't want throwing… + +That is also fine! + +Also, it could be better in some cases when you don't comprehensive enough test coverage. + +In that case — just don't override `Buffer` and use +`var SaferBuffer = require('safer-buffer').Buffer` instead. + +That way, everything using `Buffer` natively would still work, but there would be two drawbacks: + +* `Buffer.from`/`Buffer.alloc` won't be polyfilled — use `SaferBuffer.from` and + `SaferBuffer.alloc` instead. +* You are still open to accidentally using the insecure deprecated API — use a linter to catch that. + +Note that using a linter to catch accidential `Buffer` constructor usage in this case is strongly +recommended. `Buffer` is not overriden in this usecase, so linters won't get confused. + +## «Without footguns»? + +Well, it is still possible to do _some_ things with `Buffer` API, e.g. accessing `.buffer` property +on older versions and duping things from there. You shouldn't do that in your code, probabably. + +The intention is to remove the most significant footguns that affect lots of packages in the +ecosystem, and to do it in the proper way. + +Also, this package doesn't protect against security issues affecting some Node.js versions, so for +usage in your own production code, it is still recommended to update to a Node.js version +[supported by upstream](https://github.com/nodejs/release#release-schedule). diff --git a/mybulma/node_modules/safer-buffer/dangerous.js b/mybulma/node_modules/safer-buffer/dangerous.js new file mode 100644 index 0000000..ca41fdc --- /dev/null +++ b/mybulma/node_modules/safer-buffer/dangerous.js @@ -0,0 +1,58 @@ +/* eslint-disable node/no-deprecated-api */ + +'use strict' + +var buffer = require('buffer') +var Buffer = buffer.Buffer +var safer = require('./safer.js') +var Safer = safer.Buffer + +var dangerous = {} + +var key + +for (key in safer) { + if (!safer.hasOwnProperty(key)) continue + dangerous[key] = safer[key] +} + +var Dangereous = dangerous.Buffer = {} + +// Copy Safer API +for (key in Safer) { + if (!Safer.hasOwnProperty(key)) continue + Dangereous[key] = Safer[key] +} + +// Copy those missing unsafe methods, if they are present +for (key in Buffer) { + if (!Buffer.hasOwnProperty(key)) continue + if (Dangereous.hasOwnProperty(key)) continue + Dangereous[key] = Buffer[key] +} + +if (!Dangereous.allocUnsafe) { + Dangereous.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + return Buffer(size) + } +} + +if (!Dangereous.allocUnsafeSlow) { + Dangereous.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + return buffer.SlowBuffer(size) + } +} + +module.exports = dangerous diff --git a/mybulma/node_modules/safer-buffer/package.json b/mybulma/node_modules/safer-buffer/package.json new file mode 100644 index 0000000..d452b04 --- /dev/null +++ b/mybulma/node_modules/safer-buffer/package.json @@ -0,0 +1,34 @@ +{ + "name": "safer-buffer", + "version": "2.1.2", + "description": "Modern Buffer API polyfill without footguns", + "main": "safer.js", + "scripts": { + "browserify-test": "browserify --external tape tests.js > browserify-tests.js && tape browserify-tests.js", + "test": "standard && tape tests.js" + }, + "author": { + "name": "Nikita Skovoroda", + "email": "chalkerx@gmail.com", + "url": "https://github.com/ChALkeR" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/ChALkeR/safer-buffer.git" + }, + "bugs": { + "url": "https://github.com/ChALkeR/safer-buffer/issues" + }, + "devDependencies": { + "standard": "^11.0.1", + "tape": "^4.9.0" + }, + "files": [ + "Porting-Buffer.md", + "Readme.md", + "tests.js", + "dangerous.js", + "safer.js" + ] +} diff --git a/mybulma/node_modules/safer-buffer/safer.js b/mybulma/node_modules/safer-buffer/safer.js new file mode 100644 index 0000000..37c7e1a --- /dev/null +++ b/mybulma/node_modules/safer-buffer/safer.js @@ -0,0 +1,77 @@ +/* eslint-disable node/no-deprecated-api */ + +'use strict' + +var buffer = require('buffer') +var Buffer = buffer.Buffer + +var safer = {} + +var key + +for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue + if (key === 'SlowBuffer' || key === 'Buffer') continue + safer[key] = buffer[key] +} + +var Safer = safer.Buffer = {} +for (key in Buffer) { + if (!Buffer.hasOwnProperty(key)) continue + if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue + Safer[key] = Buffer[key] +} + +safer.Buffer.prototype = Buffer.prototype + +if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) + } + if (value && typeof value.length === 'undefined') { + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) + } + return Buffer(value, encodingOrOffset, length) + } +} + +if (!Safer.alloc) { + Safer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + var buf = Buffer(size) + if (!fill || fill.length === 0) { + buf.fill(0) + } else if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + return buf + } +} + +if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding('buffer').kStringMaxLength + } catch (e) { + // we can't determine kStringMaxLength in environments where process.binding + // is unsupported, so let's not set it + } +} + +if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + } + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength + } +} + +module.exports = safer diff --git a/mybulma/node_modules/safer-buffer/tests.js b/mybulma/node_modules/safer-buffer/tests.js new file mode 100644 index 0000000..7ed2777 --- /dev/null +++ b/mybulma/node_modules/safer-buffer/tests.js @@ -0,0 +1,406 @@ +/* eslint-disable node/no-deprecated-api */ + +'use strict' + +var test = require('tape') + +var buffer = require('buffer') + +var index = require('./') +var safer = require('./safer') +var dangerous = require('./dangerous') + +/* Inheritance tests */ + +test('Default is Safer', function (t) { + t.equal(index, safer) + t.notEqual(safer, dangerous) + t.notEqual(index, dangerous) + t.end() +}) + +test('Is not a function', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(typeof impl, 'object') + t.equal(typeof impl.Buffer, 'object') + }); + [buffer].forEach(function (impl) { + t.equal(typeof impl, 'object') + t.equal(typeof impl.Buffer, 'function') + }) + t.end() +}) + +test('Constructor throws', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.throws(function () { impl.Buffer() }) + t.throws(function () { impl.Buffer(0) }) + t.throws(function () { impl.Buffer('a') }) + t.throws(function () { impl.Buffer('a', 'utf-8') }) + t.throws(function () { return new impl.Buffer() }) + t.throws(function () { return new impl.Buffer(0) }) + t.throws(function () { return new impl.Buffer('a') }) + t.throws(function () { return new impl.Buffer('a', 'utf-8') }) + }) + t.end() +}) + +test('Safe methods exist', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(typeof impl.Buffer.alloc, 'function', 'alloc') + t.equal(typeof impl.Buffer.from, 'function', 'from') + }) + t.end() +}) + +test('Unsafe methods exist only in Dangerous', function (t) { + [index, safer].forEach(function (impl) { + t.equal(typeof impl.Buffer.allocUnsafe, 'undefined') + t.equal(typeof impl.Buffer.allocUnsafeSlow, 'undefined') + }); + [dangerous].forEach(function (impl) { + t.equal(typeof impl.Buffer.allocUnsafe, 'function') + t.equal(typeof impl.Buffer.allocUnsafeSlow, 'function') + }) + t.end() +}) + +test('Generic methods/properties are defined and equal', function (t) { + ['poolSize', 'isBuffer', 'concat', 'byteLength'].forEach(function (method) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], buffer.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +test('Built-in buffer static methods/properties are inherited', function (t) { + Object.keys(buffer).forEach(function (method) { + if (method === 'SlowBuffer' || method === 'Buffer') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl[method], buffer[method], method) + t.notEqual(typeof impl[method], 'undefined', method) + }) + }) + t.end() +}) + +test('Built-in Buffer static methods/properties are inherited', function (t) { + Object.keys(buffer.Buffer).forEach(function (method) { + if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], buffer.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +test('.prototype property of Buffer is inherited', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer.prototype, buffer.Buffer.prototype, 'prototype') + t.notEqual(typeof impl.Buffer.prototype, 'undefined', 'prototype') + }) + t.end() +}) + +test('All Safer methods are present in Dangerous', function (t) { + Object.keys(safer).forEach(function (method) { + if (method === 'Buffer') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl[method], safer[method], method) + if (method !== 'kStringMaxLength') { + t.notEqual(typeof impl[method], 'undefined', method) + } + }) + }) + Object.keys(safer.Buffer).forEach(function (method) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], safer.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +test('Safe methods from Dangerous methods are present in Safer', function (t) { + Object.keys(dangerous).forEach(function (method) { + if (method === 'Buffer') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl[method], dangerous[method], method) + if (method !== 'kStringMaxLength') { + t.notEqual(typeof impl[method], 'undefined', method) + } + }) + }) + Object.keys(dangerous.Buffer).forEach(function (method) { + if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], dangerous.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +/* Behaviour tests */ + +test('Methods return Buffers', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 10))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 'a'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10, 'x'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(9, 'ab'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(''))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string', 'utf-8'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([0, 42, 3]))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(new Uint8Array([0, 42, 3])))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([]))) + }); + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](0))) + t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](10))) + }) + t.end() +}) + +test('Constructor is buffer.Buffer', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer.alloc(0).constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(0, 10).constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(0, 'a').constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(10).constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(10, 'x').constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(9, 'ab').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('string').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('string', 'utf-8').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').constructor, buffer.Buffer) + t.equal(impl.Buffer.from([0, 42, 3]).constructor, buffer.Buffer) + t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).constructor, buffer.Buffer) + t.equal(impl.Buffer.from([]).constructor, buffer.Buffer) + }); + [0, 10, 100].forEach(function (arg) { + t.equal(dangerous.Buffer.allocUnsafe(arg).constructor, buffer.Buffer) + t.equal(dangerous.Buffer.allocUnsafeSlow(arg).constructor, buffer.SlowBuffer(0).constructor) + }) + t.end() +}) + +test('Invalid calls throw', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.throws(function () { impl.Buffer.from(0) }) + t.throws(function () { impl.Buffer.from(10) }) + t.throws(function () { impl.Buffer.from(10, 'utf-8') }) + t.throws(function () { impl.Buffer.from('string', 'invalid encoding') }) + t.throws(function () { impl.Buffer.from(-10) }) + t.throws(function () { impl.Buffer.from(1e90) }) + t.throws(function () { impl.Buffer.from(Infinity) }) + t.throws(function () { impl.Buffer.from(-Infinity) }) + t.throws(function () { impl.Buffer.from(NaN) }) + t.throws(function () { impl.Buffer.from(null) }) + t.throws(function () { impl.Buffer.from(undefined) }) + t.throws(function () { impl.Buffer.from() }) + t.throws(function () { impl.Buffer.from({}) }) + t.throws(function () { impl.Buffer.alloc('') }) + t.throws(function () { impl.Buffer.alloc('string') }) + t.throws(function () { impl.Buffer.alloc('string', 'utf-8') }) + t.throws(function () { impl.Buffer.alloc('b25ldHdvdGhyZWU=', 'base64') }) + t.throws(function () { impl.Buffer.alloc(-10) }) + t.throws(function () { impl.Buffer.alloc(1e90) }) + t.throws(function () { impl.Buffer.alloc(2 * (1 << 30)) }) + t.throws(function () { impl.Buffer.alloc(Infinity) }) + t.throws(function () { impl.Buffer.alloc(-Infinity) }) + t.throws(function () { impl.Buffer.alloc(null) }) + t.throws(function () { impl.Buffer.alloc(undefined) }) + t.throws(function () { impl.Buffer.alloc() }) + t.throws(function () { impl.Buffer.alloc([]) }) + t.throws(function () { impl.Buffer.alloc([0, 42, 3]) }) + t.throws(function () { impl.Buffer.alloc({}) }) + }); + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + t.throws(function () { dangerous.Buffer[method]('') }) + t.throws(function () { dangerous.Buffer[method]('string') }) + t.throws(function () { dangerous.Buffer[method]('string', 'utf-8') }) + t.throws(function () { dangerous.Buffer[method](2 * (1 << 30)) }) + t.throws(function () { dangerous.Buffer[method](Infinity) }) + if (dangerous.Buffer[method] === buffer.Buffer.allocUnsafe) { + t.skip('Skipping, older impl of allocUnsafe coerced negative sizes to 0') + } else { + t.throws(function () { dangerous.Buffer[method](-10) }) + t.throws(function () { dangerous.Buffer[method](-1e90) }) + t.throws(function () { dangerous.Buffer[method](-Infinity) }) + } + t.throws(function () { dangerous.Buffer[method](null) }) + t.throws(function () { dangerous.Buffer[method](undefined) }) + t.throws(function () { dangerous.Buffer[method]() }) + t.throws(function () { dangerous.Buffer[method]([]) }) + t.throws(function () { dangerous.Buffer[method]([0, 42, 3]) }) + t.throws(function () { dangerous.Buffer[method]({}) }) + }) + t.end() +}) + +test('Buffers have appropriate lengths', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer.alloc(0).length, 0) + t.equal(impl.Buffer.alloc(10).length, 10) + t.equal(impl.Buffer.from('').length, 0) + t.equal(impl.Buffer.from('string').length, 6) + t.equal(impl.Buffer.from('string', 'utf-8').length, 6) + t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').length, 11) + t.equal(impl.Buffer.from([0, 42, 3]).length, 3) + t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).length, 3) + t.equal(impl.Buffer.from([]).length, 0) + }); + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + t.equal(dangerous.Buffer[method](0).length, 0) + t.equal(dangerous.Buffer[method](10).length, 10) + }) + t.end() +}) + +test('Buffers have appropriate lengths (2)', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true; + [ safer.Buffer.alloc, + dangerous.Buffer.allocUnsafe, + dangerous.Buffer.allocUnsafeSlow + ].forEach(function (method) { + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 1e5) + var buf = method(length) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + } + }) + t.ok(ok) + t.end() +}) + +test('.alloc(size) is zero-filled and has correct length', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var buf = index.Buffer.alloc(length) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + var j + for (j = 0; j < length; j++) { + if (buf[j] !== 0) ok = false + } + buf.fill(1) + for (j = 0; j < length; j++) { + if (buf[j] !== 1) ok = false + } + } + t.ok(ok) + t.end() +}) + +test('.allocUnsafe / .allocUnsafeSlow are fillable and have correct lengths', function (t) { + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var buf = dangerous.Buffer[method](length) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + buf.fill(0, 0, length) + var j + for (j = 0; j < length; j++) { + if (buf[j] !== 0) ok = false + } + buf.fill(1, 0, length) + for (j = 0; j < length; j++) { + if (buf[j] !== 1) ok = false + } + } + t.ok(ok, method) + }) + t.end() +}) + +test('.alloc(size, fill) is `fill`-filled', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var fill = Math.round(Math.random() * 255) + var buf = index.Buffer.alloc(length, fill) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + for (var j = 0; j < length; j++) { + if (buf[j] !== fill) ok = false + } + } + t.ok(ok) + t.end() +}) + +test('.alloc(size, fill) is `fill`-filled', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var fill = Math.round(Math.random() * 255) + var buf = index.Buffer.alloc(length, fill) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + for (var j = 0; j < length; j++) { + if (buf[j] !== fill) ok = false + } + } + t.ok(ok) + t.deepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 97)) + t.notDeepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 98)) + + var tmp = new buffer.Buffer(2) + tmp.fill('ok') + if (tmp[1] === tmp[0]) { + // Outdated Node.js + t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('ooooo')) + } else { + t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('okoko')) + } + t.notDeepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('kokok')) + + t.end() +}) + +test('safer.Buffer.from returns results same as Buffer constructor', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.deepEqual(impl.Buffer.from(''), new buffer.Buffer('')) + t.deepEqual(impl.Buffer.from('string'), new buffer.Buffer('string')) + t.deepEqual(impl.Buffer.from('string', 'utf-8'), new buffer.Buffer('string', 'utf-8')) + t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), new buffer.Buffer('b25ldHdvdGhyZWU=', 'base64')) + t.deepEqual(impl.Buffer.from([0, 42, 3]), new buffer.Buffer([0, 42, 3])) + t.deepEqual(impl.Buffer.from(new Uint8Array([0, 42, 3])), new buffer.Buffer(new Uint8Array([0, 42, 3]))) + t.deepEqual(impl.Buffer.from([]), new buffer.Buffer([])) + }) + t.end() +}) + +test('safer.Buffer.from returns consistent results', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.deepEqual(impl.Buffer.from(''), impl.Buffer.alloc(0)) + t.deepEqual(impl.Buffer.from([]), impl.Buffer.alloc(0)) + t.deepEqual(impl.Buffer.from(new Uint8Array([])), impl.Buffer.alloc(0)) + t.deepEqual(impl.Buffer.from('string', 'utf-8'), impl.Buffer.from('string')) + t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from([115, 116, 114, 105, 110, 103])) + t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from(impl.Buffer.from('string'))) + t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), impl.Buffer.from('onetwothree')) + t.notDeepEqual(impl.Buffer.from('b25ldHdvdGhyZWU='), impl.Buffer.from('onetwothree')) + }) + t.end() +}) diff --git a/mybulma/node_modules/sass-graph/LICENSE b/mybulma/node_modules/sass-graph/LICENSE new file mode 100644 index 0000000..4ec017f --- /dev/null +++ b/mybulma/node_modules/sass-graph/LICENSE @@ -0,0 +1,7 @@ +Copyright 2014 Michael Mifsud + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/sass-graph/bin/sassgraph b/mybulma/node_modules/sass-graph/bin/sassgraph new file mode 100644 index 0000000..0d6f842 --- /dev/null +++ b/mybulma/node_modules/sass-graph/bin/sassgraph @@ -0,0 +1,122 @@ +#!/usr/bin/env node +var fs = require('fs'); +var path = require('path'); + +var command, directory, file; + +var yargs = require('yargs') + .usage('Usage: $0 [options] [file]') + // .demand(1) + + .command('ancestors', 'Output the ancestors') + .command('descendents', 'Output the descendents') + + .example('$0 ancestors -I src src/ src/_footer.scss', 'outputs the ancestors of src/_footer.scss') + + .option('I', { + alias: 'load-path', + default: [process.cwd()], + describe: 'Add directories to the sass load path', + type: 'array', + }) + + .option('e', { + alias: 'extensions', + default: ['scss', 'sass'], + describe: 'File extensions to include in the graph', + type: 'array', + }) + + .option('f', { + alias: 'follow', + default: false, + describe: 'Follow symbolic links', + type: 'bool', + }) + + .option('j', { + alias: 'json', + default: false, + describe: 'Output the index in json', + type: 'bool', + }) + + .version() + .alias('v', 'version') + + .help('h') + .alias('h', 'help'); + +var argv = yargs.argv; + +if (argv._.length === 0) { + yargs.showHelp(); + process.exit(1); +} + +if (['ancestors', 'descendents'].indexOf(argv._[0]) !== -1) { + command = argv._.shift(); +} + +if (argv._.length && path.extname(argv._[0]) === '') { + directory = argv._.shift(); +} + +if (argv._.length && path.extname(argv._[0])) { + file = argv._.shift(); +} + + +try { + if (!directory) { + throw new Error('Missing directory'); + } + + if (!command && !argv.json) { + throw new Error('Missing command'); + } + + if (!file && (command === 'ancestors' || command === 'descendents')) { + throw new Error(command + ' command requires a file'); + } + + var loadPaths = argv.loadPath; + if(process.env.SASS_PATH) { + loadPaths = loadPaths.concat(process.env.SASS_PATH.split(/:/).map(function(f) { + return path.resolve(f); + })); + } + + var graph = require('../').parseDir(directory, { + extensions: argv.extensions, + loadPaths: loadPaths, + follow: argv.follow, + }); + + if(argv.json) { + console.log(JSON.stringify(graph.index, null, 4)); + process.exit(0); + } + + if (command === 'ancestors') { + graph.visitAncestors(path.resolve(file), function(f) { + console.log(f); + }); + } + + if (command === 'descendents') { + graph.visitDescendents(path.resolve(file), function(f) { + console.log(f); + }); + } +} catch(e) { + if (e.code === 'ENOENT') { + console.error('Error: no such file or directory "' + e.path + '"'); + } + else { + console.log('Error: ' + e.message); + } + + // console.log(e.stack); + process.exit(1); +} diff --git a/mybulma/node_modules/sass-graph/package.json b/mybulma/node_modules/sass-graph/package.json new file mode 100644 index 0000000..1ca02db --- /dev/null +++ b/mybulma/node_modules/sass-graph/package.json @@ -0,0 +1,41 @@ +{ + "name": "sass-graph", + "version": "4.0.1", + "description": "Parse sass files and extract a graph of imports", + "license": "MIT", + "repository": "xzyfer/sass-graph", + "author": "xzyfer", + "main": "sass-graph.js", + "directories": { + "bin": "./bin" + }, + "scripts": { + "test": "nyc mocha", + "coverage": "nyc report --reporter=text-lcov | coveralls" + }, + "keywords": [ + "sass", + "graph" + ], + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.4.3", + "yargs": "^17.2.1" + }, + "devDependencies": { + "assert": "^1.3.0", + "chai": "^4.1.2", + "coveralls": "^3.0.0", + "mocha": "^5.2.0", + "nyc": "^13.1.0" + }, + "engines": { + "node": ">=12" + }, + "files": [ + "bin", + "parse-imports.js", + "sass-graph.js" + ] +} diff --git a/mybulma/node_modules/sass-graph/parse-imports.js b/mybulma/node_modules/sass-graph/parse-imports.js new file mode 100644 index 0000000..634253e --- /dev/null +++ b/mybulma/node_modules/sass-graph/parse-imports.js @@ -0,0 +1,64 @@ +var tokenizer = require('scss-tokenizer'); + +function parseImports(content, isIndentedSyntax) { + var tokens = tokenizer.tokenize(content); + var results = []; + var tmp = ''; + var inImport = false; + var inParen = false; + var prevToken = tokens[0]; + + var i, token; + for (i = 1; i < tokens.length; i++) { + token = tokens[i]; + + if (inImport && !inParen && token[0] === 'string') { + results.push(token[1]); + } + else if (token[1] === 'import' && prevToken[1] === '@') { + if (inImport && !isIndentedSyntax) { + throw new Error('Encountered invalid @import syntax.'); + } + + inImport = true; + } + else if (inImport && !inParen && (token[0] === 'ident' || token[0] === '/')) { + tmp += token[1]; + } + else if (inImport && !inParen && (token[0] === 'space' || token[0] === 'newline')) { + if (tmp !== '') { + results.push(tmp); + tmp = ''; + + if (isIndentedSyntax) { + inImport = false; + } + } + } + else if (inImport && token[0] === ';') { + inImport = false; + + if (tmp !== '') { + results.push(tmp); + tmp = ''; + } + } + else if (inImport && token[0] === '(') { + inParen = true; + tmp = ''; + } + else if (inParen && token[0] === ')') { + inParen = false; + } + + prevToken = token; + } + + if (tmp !== '') { + results.push(tmp); + } + + return results; +} + +module.exports = parseImports; diff --git a/mybulma/node_modules/sass-graph/readme.md b/mybulma/node_modules/sass-graph/readme.md new file mode 100644 index 0000000..16346e2 --- /dev/null +++ b/mybulma/node_modules/sass-graph/readme.md @@ -0,0 +1,130 @@ +# Sass Graph + +Parses Sass files in a directory and exposes a graph of dependencies + +[![Build Status](https://travis-ci.org/xzyfer/sass-graph.svg?branch=master)](https://travis-ci.org/xzyfer/sass-graph) +[![Coverage Status](https://coveralls.io/repos/github/xzyfer/sass-graph/badge.svg?branch=master)](https://coveralls.io/github/xzyfer/sass-graph?branch=master) +[![npm version](https://badge.fury.io/js/sass-graph.svg)](http://badge.fury.io/js/sass-graph) +[![Dependency Status](https://david-dm.org/xzyfer/sass-graph.svg?theme=shields.io)](https://david-dm.org/xzyfer/sass-graph) +[![devDependency Status](https://david-dm.org/xzyfer/sass-graph/dev-status.svg?theme=shields.io)](https://david-dm.org/xzyfer/sass-graph#info=devDependencies) + +## Install + +Install with [npm](https://npmjs.org/package/sass-graph) + +``` +npm install --save-dev sass-graph +``` + +## Usage + +Usage as a Node library: + +```js +var sassGraph = require('./sass-graph'); +``` + +Usage as a command line tool: + +The command line tool will parse a graph and then either display ancestors, descendents or both. + +``` +$ ./bin/sassgraph --help +Usage: bin/sassgraph [options] [file] + +Commands: + ancestors Output the ancestors + descendents Output the descendents + +Options: + -I, --load-path Add directories to the sass load path + -e, --extensions File extensions to include in the graph + -j, --json Output the index in json + -h, --help Show help + -v, --version Show version number + +Examples: + ./bin/sassgraph descendents test/fixtures test/fixtures/a.scss + /path/to/test/fixtures/b.scss + /path/to/test/fixtures/_c.scss +``` + +## API + +#### parseDir + +Parses a directory and builds a dependency graph of all requested file extensions. + +#### parseFile + +Parses a file and builds its dependency graph. + +## Options + +#### loadPaths + +Type: `Array` +Default: `[process.cwd]` + +Directories to use when resolved `@import` directives. + +#### extensions + +Type: `Array` +Default: `['scss', 'sass']` + +File types to be parsed. + +#### follow + +Type: `Boolean` +Default: `false` + +Follow symbolic links. + +#### exclude + +Type: `RegExp` +Default: `undefined` + +Exclude files matching regular expression. + +## Example + +```js +var sassGraph = require('./sass-graph'); +console.log(sassGraph.parseDir('test/fixtures')); + +//{ index: {, +// '/path/to/test/fixtures/a.scss': { +// imports: ['b.scss'], +// importedBy: [], +// }, +// '/path/to/test/fixtures/b.scss': { +// imports: ['_c.scss'], +// importedBy: ['a.scss'], +// }, +// '/path/to/test/fixtures/_c.scss': { +// imports: [], +// importedBy: ['b/scss'], +// }, +//}} +``` + +## Running Mocha tests + +You can run the tests by executing the following commands: + +``` +npm install +npm test +``` + +## Authors + +Sass graph was originally written by [Lachlan Donald](http://lachlan.me). +It is now maintained by [Michael Mifsud](http://twitter.com/xzyfer). + +## License + +MIT diff --git a/mybulma/node_modules/sass-graph/sass-graph.js b/mybulma/node_modules/sass-graph/sass-graph.js new file mode 100644 index 0000000..e3a272d --- /dev/null +++ b/mybulma/node_modules/sass-graph/sass-graph.js @@ -0,0 +1,171 @@ +'use strict'; + +var fs = require('fs'); +var path = require('path'); +var _ = require('lodash'); +var glob = require('glob'); +var parseImports = require('./parse-imports'); + +// resolve a sass module to a path +function resolveSassPath(sassPath, loadPaths, extensions) { + // trim sass file extensions + var re = new RegExp('(\.('+extensions.join('|')+'))$', 'i'); + var sassPathName = sassPath.replace(re, ''); + // check all load paths + var i, j, length = loadPaths.length, scssPath, partialPath; + for (i = 0; i < length; i++) { + for (j = 0; j < extensions.length; j++) { + scssPath = path.normalize(loadPaths[i] + '/' + sassPathName + '.' + extensions[j]); + try { + if (fs.lstatSync(scssPath).isFile()) { + return scssPath; + } + } catch (e) {} + } + + // special case for _partials + for (j = 0; j < extensions.length; j++) { + scssPath = path.normalize(loadPaths[i] + '/' + sassPathName + '.' + extensions[j]); + partialPath = path.join(path.dirname(scssPath), '_' + path.basename(scssPath)); + try { + if (fs.lstatSync(partialPath).isFile()) { + return partialPath; + } + } catch (e) {} + } + } + + // File to import not found or unreadable so we assume this is a custom import + return false; +} + +function Graph(options, dir) { + this.dir = dir; + this.extensions = options.extensions || []; + this.exclude = options.exclude instanceof RegExp ? options.exclude : null; + this.index = {}; + this.follow = options.follow || false; + this.loadPaths = _(options.loadPaths).map(function(p) { + return path.resolve(p); + }).value(); + + if (dir) { + var graph = this; + _.each(glob.sync(dir+'/**/*.@('+this.extensions.join('|')+')', { dot: true, nodir: true, follow: this.follow }), function(file) { + try { + graph.addFile(path.resolve(file)); + } catch (e) {} + }); + } +} + +// add a sass file to the graph +Graph.prototype.addFile = function(filepath, parent) { + if (this.exclude !== null && this.exclude.test(filepath)) return; + + var entry = this.index[filepath] = this.index[filepath] || { + imports: [], + importedBy: [], + modified: fs.statSync(filepath).mtime + }; + + var resolvedParent; + var isIndentedSyntax = path.extname(filepath) === '.sass'; + var imports = parseImports(fs.readFileSync(filepath, 'utf-8'), isIndentedSyntax); + var cwd = path.dirname(filepath); + + var i, length = imports.length, loadPaths, resolved; + for (i = 0; i < length; i++) { + loadPaths = _([cwd, this.dir]).concat(this.loadPaths).filter().uniq().value(); + resolved = resolveSassPath(imports[i], loadPaths, this.extensions); + if (!resolved) continue; + + // check exclcude regex + if (this.exclude !== null && this.exclude.test(resolved)) continue; + + // recurse into dependencies if not already enumerated + if (!_.includes(entry.imports, resolved)) { + entry.imports.push(resolved); + this.addFile(fs.realpathSync(resolved), filepath); + } + } + + // add link back to parent + if (parent) { + resolvedParent = _(parent).intersection(this.loadPaths).value(); + + if (resolvedParent) { + resolvedParent = parent.substr(parent.indexOf(resolvedParent)); + } else { + resolvedParent = parent; + } + + // check exclcude regex + if (!(this.exclude !== null && this.exclude.test(resolvedParent))) { + entry.importedBy.push(resolvedParent); + } + } +}; + +// visits all files that are ancestors of the provided file +Graph.prototype.visitAncestors = function(filepath, callback) { + this.visit(filepath, callback, function(err, node) { + if (err || !node) return []; + return node.importedBy; + }); +}; + +// visits all files that are descendents of the provided file +Graph.prototype.visitDescendents = function(filepath, callback) { + this.visit(filepath, callback, function(err, node) { + if (err || !node) return []; + return node.imports; + }); +}; + +// a generic visitor that uses an edgeCallback to find the edges to traverse for a node +Graph.prototype.visit = function(filepath, callback, edgeCallback, visited) { + filepath = fs.realpathSync(filepath); + var visited = visited || []; + if (!this.index.hasOwnProperty(filepath)) { + edgeCallback('Graph doesn\'t contain ' + filepath, null); + } + var edges = edgeCallback(null, this.index[filepath]); + + var i, length = edges.length; + for (i = 0; i < length; i++) { + if (!_.includes(visited, edges[i])) { + visited.push(edges[i]); + callback(edges[i], this.index[edges[i]]); + this.visit(edges[i], callback, edgeCallback, visited); + } + } +}; + +function processOptions(options) { + return Object.assign({ + loadPaths: [process.cwd()], + extensions: ['scss', 'sass'], + }, options); +} + +module.exports.parseFile = function(filepath, options) { + if (fs.lstatSync(filepath).isFile()) { + filepath = path.resolve(filepath); + options = processOptions(options); + var graph = new Graph(options); + graph.addFile(filepath); + return graph; + } + // throws +}; + +module.exports.parseDir = function(dirpath, options) { + if (fs.lstatSync(dirpath).isDirectory()) { + dirpath = path.resolve(dirpath); + options = processOptions(options); + var graph = new Graph(options, dirpath); + return graph; + } + // throws +}; diff --git a/mybulma/node_modules/scss-tokenizer/LICENSE b/mybulma/node_modules/scss-tokenizer/LICENSE new file mode 100644 index 0000000..eb44a43 --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 sasstools + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/mybulma/node_modules/scss-tokenizer/README.md b/mybulma/node_modules/scss-tokenizer/README.md new file mode 100644 index 0000000..97f4c8d --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/README.md @@ -0,0 +1,50 @@ +# scss-tokenizer +A tokenizer for Sass' SCSS syntax + +![https://travis-ci.org/sasstools/scss-tokenizer.svg?branch=master](https://img.shields.io/travis/sasstools/scss-tokenizer.svg) +![https://www.npmjs.com/package/scss-tokenizer](https://img.shields.io/npm/v/scss-tokenizer.svg) +![https://github.com/sasstools/scss-tokenizer/issues](https://img.shields.io/github/issues/sasstools/scss-tokenizer.svg) +![](https://img.shields.io/github/license/sasstools/scss-tokenizer.svg) + +# Install + +``` +npm install scss-tokenizer +``` + +# Usage + +```js +var scss = require('scss-tokenizer'); +scss.tokenize(css); +``` + +# API + +### `tokenize` + +Tokenizes source `css` and returns an ordered array of tokens with positional +data. + +```js +var tokenizer = require('scss-tokenizer'); +var tokens = tokenize.tokenize(css); +``` + +Arguments: + +* `css (string|#toString)`: String with input CSS or any object + with `toString()` method, like file stream. +* `opts (object) optional`: options: + * `from`: the path to the source CSS file. You should always set `from`, + because it is used in map generation and in syntax error messages. + +# Test + +``` +npm test +``` + +## Attribution + +This project started as a fork of the [PostCSS](https://github.com/postcss/postcss) tokenizer. diff --git a/mybulma/node_modules/scss-tokenizer/index.js b/mybulma/node_modules/scss-tokenizer/index.js new file mode 100644 index 0000000..51d496c --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/entry').default; diff --git a/mybulma/node_modules/scss-tokenizer/lib/entry.js b/mybulma/node_modules/scss-tokenizer/lib/entry.js new file mode 100644 index 0000000..a9fc589 --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/lib/entry.js @@ -0,0 +1,23 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _input = require('./input'); + +var _input2 = _interopRequireDefault(_input); + +var _tokenize = require('./tokenize'); + +var _tokenize2 = _interopRequireDefault(_tokenize); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var scss = {}; +scss.tokenize = function (css) { + var input = new _input2.default(css); + return (0, _tokenize2.default)(input); +}; + +exports.default = scss; \ No newline at end of file diff --git a/mybulma/node_modules/scss-tokenizer/lib/input.js b/mybulma/node_modules/scss-tokenizer/lib/input.js new file mode 100644 index 0000000..3477a14 --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/lib/input.js @@ -0,0 +1,64 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _previousMap = require('./previous-map'); + +var _previousMap2 = _interopRequireDefault(_previousMap); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var sequence = 0; + +var Input = function () { + function Input(css) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Input); + + this.css = css.toString(); + + if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') { + this.css = this.css.slice(1); + } + + if (opts.from) this.file = _path2.default.resolve(opts.from); + + var map = new _previousMap2.default(this.css, opts, this.id); + if (map.text) { + this.map = map; + var file = map.consumer().file; + if (!this.file && file) this.file = this.mapResolve(file); + } + + if (this.file) { + this.from = this.file; + } else { + sequence += 1; + this.id = ''; + this.from = this.id; + } + if (this.map) this.map.file = this.from; + } + + _createClass(Input, [{ + key: 'mapResolve', + value: function mapResolve(file) { + return _path2.default.resolve(this.map.consumer().sourceRoot || '.', file); + } + }]); + + return Input; +}(); + +exports.default = Input; \ No newline at end of file diff --git a/mybulma/node_modules/scss-tokenizer/lib/previous-map.js b/mybulma/node_modules/scss-tokenizer/lib/previous-map.js new file mode 100644 index 0000000..e34ef3c --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/lib/previous-map.js @@ -0,0 +1,123 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _jsBase = require('js-base64'); + +var _sourceMap = require('source-map'); + +var _sourceMap2 = _interopRequireDefault(_sourceMap); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _fs = require('fs'); + +var _fs2 = _interopRequireDefault(_fs); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var PreviousMap = function () { + function PreviousMap(css, opts) { + _classCallCheck(this, PreviousMap); + + this.loadAnnotation(css); + this.inline = this.startWith(this.annotation, 'data:'); + + var prev = opts.map ? opts.map.prev : undefined; + var text = this.loadMap(opts.from, prev); + if (text) this.text = text; + } + + _createClass(PreviousMap, [{ + key: 'consumer', + value: function consumer() { + if (!this.consumerCache) { + this.consumerCache = new _sourceMap2.default.SourceMapConsumer(this.text); + } + return this.consumerCache; + } + }, { + key: 'withContent', + value: function withContent() { + return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0); + } + }, { + key: 'startWith', + value: function startWith(string, start) { + if (!string) return false; + return string.substr(0, start.length) === start; + } + }, { + key: 'loadAnnotation', + value: function loadAnnotation(css) { + var match = css.match(/\/\*\s*# sourceMappingURL=((?:(?!sourceMappingURL=).)*)\s*\*\//); + if (match) this.annotation = match[1].trim(); + } + }, { + key: 'decodeInline', + value: function decodeInline(text) { + var utfd64 = 'data:application/json;charset=utf-8;base64,'; + var utf64 = 'data:application/json;charset=utf8;base64,'; + var b64 = 'data:application/json;base64,'; + var uri = 'data:application/json,'; + + if (this.startWith(text, uri)) { + return decodeURIComponent(text.substr(uri.length)); + } else if (this.startWith(text, base64)) { + return _jsBase.Base64.decode(text.substr(base64.length)); + } else if (this.startWith(text, utf64)) { + return _jsBase.Base64.decode(text.substr(utf64.length)); + } else if (this.startWith(text, utfd64)) { + return _jsBase.Base64.decode(text.substr(utfd64.length)); + } else { + var encoding = text.match(/data:application\/json;([^,]+),/)[1]; + throw new Error('Unsupported source map encoding ' + encoding); + } + } + }, { + key: 'loadMap', + value: function loadMap(file, prev) { + if (prev === false) return false; + + if (prev) { + if (typeof prev === 'string') { + return prev; + } else if (prev instanceof _sourceMap2.default.SourceMapConsumer) { + return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString(); + } else if (prev instanceof _sourceMap2.default.SourceMapGenerator) { + return prev.toString(); + } else if ((typeof prev === 'undefined' ? 'undefined' : _typeof(prev)) === 'object' && prev.mappings) { + return JSON.stringify(prev); + } else { + throw new Error('Unsupported previous source map format: ' + prev.toString()); + } + } else if (this.inline) { + return this.decodeInline(this.annotation); + } else if (this.annotation) { + var map = this.annotation; + if (file) map = _path2.default.join(_path2.default.dirname(file), map); + + this.root = _path2.default.dirname(map); + if (_fs2.default.existsSync && _fs2.default.existsSync(map)) { + return _fs2.default.readFileSync(map, 'utf-8').toString().trim(); + } else { + return false; + } + } + } + }]); + + return PreviousMap; +}(); + +exports.default = PreviousMap; \ No newline at end of file diff --git a/mybulma/node_modules/scss-tokenizer/lib/tokenize-comment.js b/mybulma/node_modules/scss-tokenizer/lib/tokenize-comment.js new file mode 100644 index 0000000..70f8413 --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/lib/tokenize-comment.js @@ -0,0 +1,154 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenize; + +var _input = require('./input'); + +var _input2 = _interopRequireDefault(_input); + +var _tokenizeString = require('./tokenize-string'); + +var _tokenizeString2 = _interopRequireDefault(_tokenizeString); + +var _tokenizeInterpolant2 = require('./tokenize-interpolant'); + +var _tokenizeInterpolant3 = _interopRequireDefault(_tokenizeInterpolant2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var newline = '\n'.charCodeAt(0), + space = ' '.charCodeAt(0), + feed = '\f'.charCodeAt(0), + tab = '\t'.charCodeAt(0), + cr = '\r'.charCodeAt(0), + hash = '#'.charCodeAt(0), + backslash = '\\'.charCodeAt(0), + slash = '/'.charCodeAt(0), + openCurly = '{'.charCodeAt(0), + closeCurly = '}'.charCodeAt(0), + asterisk = '*'.charCodeAt(0), + wordEnd = /[ \n\t\r\(\)\{\},:;@!'"\\]|\*(?=\/)|#(?={)/g; + +function tokenize(input, l, p, o) { + var tokens = []; + var css = input.css.valueOf(); + + var code = void 0, + next = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0, + inInterpolant = void 0, + inComment = void 0, + inString = void 0; + + var length = css.length; + var offset = o || -1; + var line = l || 1; + var pos = p || 0; + + loop: while (pos < length) { + code = css.charCodeAt(pos); + + if (code === newline) { + offset = pos; + line += 1; + } + + switch (code) { + case space: + case tab: + case cr: + case feed: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === newline) { + offset = next; + line += 1; + } + } while (code === space || code === tab || code === cr || code === feed); + + tokens.push(['space', css.slice(pos, next)]); + pos = next - 1; + break; + + case newline: + tokens.push(['newline', '\n', line, pos - offset]); + break; + + case closeCurly: + tokens.push(['endInterpolant', '}', line, pos - offset]); + break; + + case backslash: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === backslash) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== slash && code !== space && code !== newline && code !== tab && code !== cr && code !== feed) { + next += 1; + } + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + break; + + default: + + if (code === asterisk && css.charCodeAt(pos + 1) === slash) { + next = pos; + pos = next - 1; + break loop; + } + + if (code === hash && css.charCodeAt(pos + 1) === openCurly) { + tokens.push(['startInterpolant', '#{', line, pos + 1 - offset]); + next = pos + 1; + + var _tokenizeInterpolant = (0, _tokenizeInterpolant3.default)(input, line, next + 1, offset), + t = _tokenizeInterpolant.tokens, + _l = _tokenizeInterpolant.line, + _p = _tokenizeInterpolant.pos, + _o = _tokenizeInterpolant.offset; + + tokens = tokens.concat(t); + next = _p; + line = _l; + offset = _o; + + pos = next; + break; + } + + wordEnd.lastIndex = pos + 1; + wordEnd.test(css); + if (wordEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = wordEnd.lastIndex - 2; + } + + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + + break; + } + + pos++; + } + + return { tokens: tokens, line: line, pos: pos, offset: offset }; +} \ No newline at end of file diff --git a/mybulma/node_modules/scss-tokenizer/lib/tokenize-interpolant.js b/mybulma/node_modules/scss-tokenizer/lib/tokenize-interpolant.js new file mode 100644 index 0000000..8fcef5b --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/lib/tokenize-interpolant.js @@ -0,0 +1,304 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenize; + +var _input = require('./input'); + +var _input2 = _interopRequireDefault(_input); + +var _tokenizeString2 = require('./tokenize-string'); + +var _tokenizeString3 = _interopRequireDefault(_tokenizeString2); + +var _tokenizeComment2 = require('./tokenize-comment'); + +var _tokenizeComment3 = _interopRequireDefault(_tokenizeComment2); + +var _tokenizeInterpolant2 = require('./tokenize-interpolant'); + +var _tokenizeInterpolant3 = _interopRequireDefault(_tokenizeInterpolant2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var singleQuote = "'".charCodeAt(0), + doubleQuote = '"'.charCodeAt(0), + dollar = '$'.charCodeAt(0), + hash = '#'.charCodeAt(0), + backslash = '\\'.charCodeAt(0), + slash = '/'.charCodeAt(0), + newline = '\n'.charCodeAt(0), + space = ' '.charCodeAt(0), + feed = '\f'.charCodeAt(0), + tab = '\t'.charCodeAt(0), + cr = '\r'.charCodeAt(0), + openBracket = '('.charCodeAt(0), + closeBracket = ')'.charCodeAt(0), + openCurly = '{'.charCodeAt(0), + closeCurly = '}'.charCodeAt(0), + semicolon = ';'.charCodeAt(0), + asterisk = '*'.charCodeAt(0), + colon = ':'.charCodeAt(0), + at = '@'.charCodeAt(0), + comma = ','.charCodeAt(0), + plus = '+'.charCodeAt(0), + minus = '-'.charCodeAt(0), + decComb = '>'.charCodeAt(0), + adjComb = '~'.charCodeAt(0), + number = /[+-]?(\d+(\.\d+)?|\.\d+)|(e[+-]\d+)/gi, + sQuoteEnd = /(.*?)[^\\](?=((#{)|'))/gm, + dQuoteEnd = /(.*?)[^\\](?=((#{)|"))/gm, + wordEnd = /[ \n\t\r\(\)\{\},:;@!'"\\]|\/(?=\*)|#(?={)/g, + ident = /-?([a-z_]|\\[^\\])([a-z-_0-9]|\\[^\\])*/gi; + +function tokenize(input, l, p, o) { + var tokens = []; + var css = input.css.valueOf(); + + var code = void 0, + next = void 0, + quote = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0, + inInterpolant = void 0, + inComment = void 0, + inString = void 0; + + var length = css.length; + var offset = o || -1; + var line = l || 1; + var pos = p || 0; + + loop: while (pos < length) { + code = css.charCodeAt(pos); + + if (code === newline) { + offset = pos; + line += 1; + } + + switch (code) { + case space: + case tab: + case cr: + case feed: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === newline) { + offset = next; + line += 1; + } + } while (code === space || code === tab || code === cr || code === feed); + + tokens.push(['space', css.slice(pos, next)]); + pos = next - 1; + break; + + case newline: + tokens.push(['newline', '\n', line, pos - offset]); + break; + + case plus: + tokens.push(['+', '+', line, pos - offset]); + break; + + case minus: + tokens.push(['-', '-', line, pos - offset]); + break; + + case decComb: + tokens.push(['>', '>', line, pos - offset]); + break; + + case adjComb: + tokens.push(['~', '~', line, pos - offset]); + break; + + case openCurly: + tokens.push(['{', '{', line, pos - offset]); + break; + + case closeCurly: + tokens.push(['endInterpolant', '}', line, pos - offset]); + break loop; + + case comma: + tokens.push([',', ',', line, pos - offset]); + break; + + case dollar: + tokens.push(['$', '$', line, pos - offset]); + break; + + case colon: + tokens.push([':', ':', line, pos - offset]); + break; + + case semicolon: + tokens.push([';', ';', line, pos - offset]); + break; + + case openBracket: + tokens.push(['(', '(', line, pos - offset]); + break; + + case closeBracket: + tokens.push([')', ')', line, pos - offset]); + break; + + case singleQuote: + case doubleQuote: + quote = code === singleQuote ? "'" : '"'; + tokens.push([quote, quote, line, pos - offset]); + next = pos + 1; + + var _tokenizeString = (0, _tokenizeString3.default)(input, line, next, offset, quote), + t = _tokenizeString.tokens, + _l = _tokenizeString.line, + _p = _tokenizeString.pos, + _o = _tokenizeString.offset; + + tokens = tokens.concat(t); + next = _p; + line = _l; + offset = _o; + + pos = next; + break; + + case at: + tokens.push(['@', '@', line, pos - offset]); + break; + + case backslash: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === backslash) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== space && code !== newline && code !== tab && code !== cr && code !== feed) { + next += 1; + } + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + break; + + default: + ident.lastIndex = pos; + number.lastIndex = pos; + wordEnd.lastIndex = pos; + + if (code === slash && css.charCodeAt(pos + 1) === asterisk) { + inComment = true; + tokens.push(['startComment', '/*', line, pos + 1 - offset]); + next = pos + 1; + + var _tokenizeComment = (0, _tokenizeComment3.default)(input, line, next + 1, offset), + _t = _tokenizeComment.tokens, + _l2 = _tokenizeComment.line, + _p2 = _tokenizeComment.pos, + _o2 = _tokenizeComment.offset; + + tokens = tokens.concat(_t); + next = _p2; + line = _l2; + offset = _o2; + + pos = next; + break; + } + + if (code === asterisk && css.charCodeAt(pos + 1) !== slash) { + tokens.push(['*', '*', line, pos - offset]); + break; + } + + if (inComment && code === asterisk && css.charCodeAt(pos + 1) === slash) { + inComment = false; + tokens.push(['endComment', '*/', line, pos + 1 - offset]); + pos += 2; + break; + } + + if (code === slash && css.charCodeAt(pos + 1) !== slash) { + tokens.push(['/', '/', line, pos - offset]); + pos += 2; + break; + } + + if (code === hash && css.charCodeAt(pos + 1) === openCurly) { + inInterpolant = true; + tokens.push(['startInterpolant', '#{', line, pos + 1 - offset]); + next = pos + 1; + + var _tokenizeInterpolant = (0, _tokenizeInterpolant3.default)(input, line, next + 1), + _t2 = _tokenizeInterpolant.tokens, + _p3 = _tokenizeInterpolant.pos; + + tokens = tokens.concat(_t2); + next = _p3; + + pos = next; + break; + } + + if (code === slash && css.charCodeAt(pos + 1) === slash) { + next = css.indexOf('\n\n', pos + 2); + next = next > 0 ? next : css.length; + + tokens.push(['scssComment', css.slice(pos, next), line, pos - offset, line, next - offset]); + + pos = next; + break; + } + + if (ident.test(css) && (ident.lastIndex = pos || 1) && ident.exec(css).index === pos) { + next = ident.lastIndex - 1; + + tokens.push(['ident', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + break; + } + + if (number.test(css) && (number.lastIndex = pos || 1) && number.exec(css).index === pos) { + next = number.lastIndex - 1; + + tokens.push(['number', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + break; + } + + wordEnd.lastIndex = pos + 1; + wordEnd.test(css); + if (wordEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = wordEnd.lastIndex - 2; + } + + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + + break; + } + + pos++; + } + + return { tokens: tokens, line: line, pos: pos, offset: offset }; +} \ No newline at end of file diff --git a/mybulma/node_modules/scss-tokenizer/lib/tokenize-string.js b/mybulma/node_modules/scss-tokenizer/lib/tokenize-string.js new file mode 100644 index 0000000..6fc2fe6 --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/lib/tokenize-string.js @@ -0,0 +1,136 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenize; + +var _input = require('./input'); + +var _input2 = _interopRequireDefault(_input); + +var _tokenizeString = require('./tokenize-string'); + +var _tokenizeString2 = _interopRequireDefault(_tokenizeString); + +var _tokenizeInterpolant2 = require('./tokenize-interpolant'); + +var _tokenizeInterpolant3 = _interopRequireDefault(_tokenizeInterpolant2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var singleQuote = "'".charCodeAt(0), + doubleQuote = '"'.charCodeAt(0), + newline = '\n'.charCodeAt(0), + space = ' '.charCodeAt(0), + feed = '\f'.charCodeAt(0), + tab = '\t'.charCodeAt(0), + cr = '\r'.charCodeAt(0), + hash = '#'.charCodeAt(0), + backslash = '\\'.charCodeAt(0), + slash = '/'.charCodeAt(0), + openCurly = '{'.charCodeAt(0), + closeCurly = '}'.charCodeAt(0), + interpolantEnd = /([.\s]*?)[^\\](?=(}))/gm, + sQuoteEnd = /([.\s]*?)[^\\](?=((#{)|'))/gm, + dQuoteEnd = /([.\s]*?)[^\\](?=((#{)|"))/gm; + +function tokenize(input, l, p, o, quote) { + var tokens = []; + var css = input.css.valueOf(); + + var code = void 0, + next = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0, + inInterpolant = void 0, + inComment = void 0, + inString = void 0; + + var length = css.length; + var offset = o || -1; + var line = l || 1; + var pos = p || 0; + + var quoteEnd = quote === "'" ? sQuoteEnd : dQuoteEnd; + var quoteChar = quote.charCodeAt(0); + + loop: while (pos < length) { + code = css.charCodeAt(pos); + + if (code === newline) { + offset = pos; + line += 1; + } + + switch (code) { + + case closeCurly: + tokens.push(['endInterpolant', '}', line, pos - offset]); + break; + + case quoteChar: + tokens.push([quote, quote, line, pos - offset]); + break loop; + + case backslash: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === backslash) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== slash && code !== space && code !== newline && code !== tab && code !== cr && code !== feed) { + next += 1; + } + tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + break; + + default: + if (code === hash && css.charCodeAt(pos + 1) === openCurly) { + tokens.push(['startInterpolant', '#{', line, pos + 1 - offset]); + next = pos + 1; + + var _tokenizeInterpolant = (0, _tokenizeInterpolant3.default)(input, line, next + 1, offset), + t = _tokenizeInterpolant.tokens, + _l = _tokenizeInterpolant.line, + _p = _tokenizeInterpolant.pos, + _o = _tokenizeInterpolant.offset; + + tokens = tokens.concat(t); + next = _p; + line = _l; + offset = _o; + + pos = next; + } else { + quoteEnd.lastIndex = pos; + quoteEnd.test(css); + + if (quoteEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = quoteEnd.lastIndex - 1; + } + + tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + } + + break; + } + + pos++; + } + + return { tokens: tokens, line: line, pos: pos, offset: offset }; +} \ No newline at end of file diff --git a/mybulma/node_modules/scss-tokenizer/lib/tokenize.js b/mybulma/node_modules/scss-tokenizer/lib/tokenize.js new file mode 100644 index 0000000..4ef702a --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/lib/tokenize.js @@ -0,0 +1,312 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenize; + +var _input = require('./input'); + +var _input2 = _interopRequireDefault(_input); + +var _tokenizeString2 = require('./tokenize-string'); + +var _tokenizeString3 = _interopRequireDefault(_tokenizeString2); + +var _tokenizeComment2 = require('./tokenize-comment'); + +var _tokenizeComment3 = _interopRequireDefault(_tokenizeComment2); + +var _tokenizeInterpolant2 = require('./tokenize-interpolant'); + +var _tokenizeInterpolant3 = _interopRequireDefault(_tokenizeInterpolant2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var singleQuote = "'".charCodeAt(0), + doubleQuote = '"'.charCodeAt(0), + dollar = '$'.charCodeAt(0), + hash = '#'.charCodeAt(0), + backslash = '\\'.charCodeAt(0), + slash = '/'.charCodeAt(0), + newline = '\n'.charCodeAt(0), + space = ' '.charCodeAt(0), + feed = '\f'.charCodeAt(0), + tab = '\t'.charCodeAt(0), + cr = '\r'.charCodeAt(0), + openBracket = '('.charCodeAt(0), + closeBracket = ')'.charCodeAt(0), + openCurly = '{'.charCodeAt(0), + closeCurly = '}'.charCodeAt(0), + semicolon = ';'.charCodeAt(0), + asterisk = '*'.charCodeAt(0), + colon = ':'.charCodeAt(0), + at = '@'.charCodeAt(0), + comma = ','.charCodeAt(0), + plus = '+'.charCodeAt(0), + minus = '-'.charCodeAt(0), + decComb = '>'.charCodeAt(0), + adjComb = '~'.charCodeAt(0), + number = /[+-]?(\d+(\.\d+)?|\.\d+)|(e[+-]\d+)/gi, + sQuoteEnd = /(.*?)[^\\](?=((#{)|'))/gm, + dQuoteEnd = /(.*?)[^\\](?=((#{)|"))/gm, + wordEnd = /[ \n\t\r\(\)\{\},:;@!'"\\]|\/(?=\*)|#(?={)/g, + ident = /-?([a-z_]|\\[^\\])([a-z-_0-9]|\\[^\\])*/gi; + +function tokenize(input, l, p) { + var tokens = []; + var css = input.css.valueOf(); + + var code = void 0, + next = void 0, + quote = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0, + inInterpolant = void 0, + inComment = void 0, + inString = void 0; + + var length = css.length; + var offset = -1; + var line = l || 1; + var pos = p || 0; + + while (pos < length) { + code = css.charCodeAt(pos); + + if (code === newline) { + offset = pos; + line += 1; + } + + switch (code) { + case space: + case tab: + case cr: + case feed: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === newline) { + offset = next; + line += 1; + } + } while (code === space || code === tab || code === cr || code === feed); + + tokens.push(['space', css.slice(pos, next)]); + pos = next - 1; + break; + + case newline: + tokens.push(['newline', '\n', line, pos - offset]); + break; + + case plus: + tokens.push(['+', '+', line, pos - offset]); + break; + + case minus: + tokens.push(['-', '-', line, pos - offset]); + break; + + case decComb: + tokens.push(['>', '>', line, pos - offset]); + break; + + case adjComb: + tokens.push(['~', '~', line, pos - offset]); + break; + + case openCurly: + tokens.push(['{', '{', line, pos - offset]); + break; + + case closeCurly: + if (inInterpolant) { + inInterpolant = false; + tokens.push(['endInterpolant', '}', line, pos - offset]); + } else { + tokens.push(['}', '}', line, pos - offset]); + } + break; + + case comma: + tokens.push([',', ',', line, pos - offset]); + break; + + case dollar: + tokens.push(['$', '$', line, pos - offset]); + break; + + case colon: + tokens.push([':', ':', line, pos - offset]); + break; + + case semicolon: + tokens.push([';', ';', line, pos - offset]); + break; + + case openBracket: + tokens.push(['(', '(', line, pos - offset]); + break; + + case closeBracket: + tokens.push([')', ')', line, pos - offset]); + break; + + case singleQuote: + case doubleQuote: + quote = code === singleQuote ? "'" : '"'; + tokens.push([quote, quote, line, pos - offset]); + next = pos + 1; + + var _tokenizeString = (0, _tokenizeString3.default)(input, line, next, offset, quote), + t = _tokenizeString.tokens, + _l = _tokenizeString.line, + _p = _tokenizeString.pos, + o = _tokenizeString.offset; + + tokens = tokens.concat(t); + next = _p; + line = _l; + offset = o; + + pos = next; + break; + + case at: + tokens.push(['@', '@', line, pos - offset]); + break; + + case backslash: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === backslash) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== space && code !== newline && code !== tab && code !== cr && code !== feed) { + next += 1; + } + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + break; + + default: + ident.lastIndex = pos; + number.lastIndex = pos; + wordEnd.lastIndex = pos; + + if (code === slash && css.charCodeAt(pos + 1) === asterisk) { + inComment = true; + tokens.push(['startComment', '/*', line, pos + 1 - offset]); + next = pos + 1; + + var _tokenizeComment = (0, _tokenizeComment3.default)(input, line, next + 1, offset), + _t = _tokenizeComment.tokens, + _l2 = _tokenizeComment.line, + _p2 = _tokenizeComment.pos, + _o = _tokenizeComment.offset; + + tokens = tokens.concat(_t); + next = _p2; + line = _l2; + offset = _o; + + pos = next; + break; + } + + if (code === asterisk && css.charCodeAt(pos + 1) !== slash) { + tokens.push(['*', '*', line, pos - offset]); + break; + } + + if (inComment && code === asterisk && css.charCodeAt(pos + 1) === slash) { + inComment = false; + tokens.push(['endComment', '*/', line, pos + 1 - offset]); + pos += 2; + break; + } + + if (code === slash && css.charCodeAt(pos + 1) !== slash) { + tokens.push(['/', '/', line, pos - offset]); + break; + } + + if (code === hash && css.charCodeAt(pos + 1) === openCurly) { + inInterpolant = true; + tokens.push(['startInterpolant', '#{', line, pos + 1 - offset]); + next = pos + 1; + + var _tokenizeInterpolant = (0, _tokenizeInterpolant3.default)(input, line, next + 1, offset), + _t2 = _tokenizeInterpolant.tokens, + _l3 = _tokenizeInterpolant.line, + _p3 = _tokenizeInterpolant.pos, + _o2 = _tokenizeInterpolant.offset; + + tokens = tokens.concat(_t2); + next = _p3; + line = _l3; + offset = _o2; + + pos = next; + break; + } + + if (code === slash && css.charCodeAt(pos + 1) === slash) { + next = css.indexOf('\n', pos + 2); + next = (next > 0 ? next : css.length) - 1; + + tokens.push(['scssComment', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + break; + } + + if (ident.test(css) && (ident.lastIndex = pos || 1) && ident.exec(css).index === pos) { + next = ident.lastIndex - 1; + + tokens.push(['ident', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + break; + } + + if (number.test(css) && (number.lastIndex = pos || 1) && number.exec(css).index === pos) { + next = number.lastIndex - 1; + + tokens.push(['number', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + break; + } + + wordEnd.lastIndex = pos + 1; + wordEnd.test(css); + if (wordEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = wordEnd.lastIndex - 2; + } + + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + + pos = next; + + break; + } + + pos++; + } + + return tokens; +} \ No newline at end of file diff --git a/mybulma/node_modules/scss-tokenizer/package.json b/mybulma/node_modules/scss-tokenizer/package.json new file mode 100644 index 0000000..ddd56fb --- /dev/null +++ b/mybulma/node_modules/scss-tokenizer/package.json @@ -0,0 +1,46 @@ +{ + "name": "scss-tokenizer", + "version": "0.4.3", + "description": "A tokenzier for Sass' SCSS syntax", + "main": "index.js", + "scripts": { + "test": "jest", + "clean": "rm lib/*", + "build": "npm run clean; babel src/ --out-dir lib", + "prepublishOnly": "npm run build" + }, + "files": [ + "index.js", + "lib" + ], + "repository": { + "type": "git", + "url": "https://github.com/sasstools/scss-tokenizer.git" + }, + "keywords": [ + "parser", + "tokenizer", + "sass", + "scss", + "libsass" + ], + "author": "xzyfer", + "license": "MIT", + "bugs": { + "url": "https://github.com/sasstools/scss-tokenizer/issues" + }, + "homepage": "https://github.com/sasstools/scss-tokenizer", + "dependencies": { + "js-base64": "^2.4.9", + "source-map": "^0.7.3" + }, + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-jest": "^23.6.0", + "babel-preset-env": "^1.7.0", + "glob": "^7.1.3", + "jest": "^23.6.0", + "sass-spec": "3.5.1" + } +} diff --git a/mybulma/node_modules/semver/bin/semver.js b/mybulma/node_modules/semver/bin/semver.js new file mode 100644 index 0000000..8d1b557 --- /dev/null +++ b/mybulma/node_modules/semver/bin/semver.js @@ -0,0 +1,183 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +const argv = process.argv.slice(2) + +let versions = [] + +const range = [] + +let inc = null + +const version = require('../package.json').version + +let loose = false + +let includePrerelease = false + +let coerce = false + +let rtl = false + +let identifier + +const semver = require('../') + +let reverse = false + +let options = {} + +const main = () => { + if (!argv.length) { + return help() + } + while (argv.length) { + let a = argv.shift() + const indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + const value = a.slice(indexOfEqualSign + 1) + a = a.slice(0, indexOfEqualSign) + argv.unshift(value) + } + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + switch (argv[0]) { + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': + inc = argv.shift() + break + default: + inc = 'patch' + break + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-c': case '--coerce': + coerce = true + break + case '--rtl': + rtl = true + break + case '--ltr': + rtl = false + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl } + + versions = versions.map((v) => { + return coerce ? (semver.coerce(v, options) || { version: v }).version : v + }).filter((v) => { + return semver.valid(v) + }) + if (!versions.length) { + return fail() + } + if (inc && (versions.length !== 1 || range.length)) { + return failInc() + } + + for (let i = 0, l = range.length; i < l; i++) { + versions = versions.filter((v) => { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) { + return fail() + } + } + return success(versions) +} + +const failInc = () => { + console.error('--inc can only be used on a single version with no range') + fail() +} + +const fail = () => process.exit(1) + +const success = () => { + const compare = reverse ? 'rcompare' : 'compare' + versions.sort((a, b) => { + return semver[compare](a, b, options) + }).map((v) => { + return semver.clean(v, options) + }).map((v) => { + return inc ? semver.inc(v, inc, options, identifier) : v + }).forEach((v, i, _) => { + console.log(v) + }) +} + +const help = () => console.log( +`SemVer ${version} + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, or prerelease. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them.`) + +main() diff --git a/mybulma/node_modules/semver/classes/comparator.js b/mybulma/node_modules/semver/classes/comparator.js new file mode 100644 index 0000000..62cd204 --- /dev/null +++ b/mybulma/node_modules/semver/classes/comparator.js @@ -0,0 +1,136 @@ +const ANY = Symbol('SemVer ANY') +// hoisted class for cyclic dependency +class Comparator { + static get ANY () { + return ANY + } + + constructor (comp, options) { + options = parseOptions(options) + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) + } + + parse (comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + const m = comp.match(r) + + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } + } + + toString () { + return this.value + } + + test (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) + } + + intersects (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false, + } + } + + if (this.operator === '') { + if (this.value === '') { + return true + } + return new Range(comp.value, options).test(this.value) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + return new Range(this.value, options).test(comp.semver) + } + + const sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + const sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + const sameSemVer = this.semver.version === comp.semver.version + const differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + const oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<') + const oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>') + + return ( + sameDirectionIncreasing || + sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || + oppositeDirectionsGreaterThan + ) + } +} + +module.exports = Comparator + +const parseOptions = require('../internal/parse-options') +const { re, t } = require('../internal/re') +const cmp = require('../functions/cmp') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const Range = require('./range') diff --git a/mybulma/node_modules/semver/classes/index.js b/mybulma/node_modules/semver/classes/index.js new file mode 100644 index 0000000..5e3f5c9 --- /dev/null +++ b/mybulma/node_modules/semver/classes/index.js @@ -0,0 +1,5 @@ +module.exports = { + SemVer: require('./semver.js'), + Range: require('./range.js'), + Comparator: require('./comparator.js'), +} diff --git a/mybulma/node_modules/semver/classes/range.js b/mybulma/node_modules/semver/classes/range.js new file mode 100644 index 0000000..a791d91 --- /dev/null +++ b/mybulma/node_modules/semver/classes/range.js @@ -0,0 +1,522 @@ +// hoisted class for cyclic dependency +class Range { + constructor (range, options) { + options = parseOptions(options) + + if (range instanceof Range) { + if ( + range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease + ) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + // just put it in the set and return + this.raw = range.value + this.set = [[range]] + this.format() + return this + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First, split based on boolean or || + this.raw = range + this.set = range + .split('||') + // map the range to a 2d array of comparators + .map(r => this.parseRange(r.trim())) + // throw out any comparator lists that are empty + // this generally means that it was not a valid range, which is allowed + // in loose mode, but will still throw if the WHOLE range is invalid. + .filter(c => c.length) + + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${range}`) + } + + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) { + this.set = [first] + } else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } + } + } + } + + this.format() + } + + format () { + this.range = this.set + .map((comps) => { + return comps.join(' ').trim() + }) + .join('||') + .trim() + return this.range + } + + toString () { + return this.range + } + + parseRange (range) { + range = range.trim() + + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = Object.keys(this.options).join(',') + const memoKey = `parseRange:${memoOpts}:${range}` + const cached = cache.get(memoKey) + if (cached) { + return cached + } + + const loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + let rangeList = range + .split(' ') + .map(comp => parseComparator(comp, this.options)) + .join(' ') + .split(/\s+/) + // >=0.0.0 is equivalent to * + .map(comp => replaceGTE0(comp, this.options)) + + if (loose) { + // in loose mode, throw out any that are not valid comparators + rangeList = rangeList.filter(comp => { + debug('loose invalid filter', comp, this.options) + return !!comp.match(re[t.COMPARATORLOOSE]) + }) + } + debug('range list', rangeList) + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const rangeMap = new Map() + const comparators = rangeList.map(comp => new Comparator(comp, this.options)) + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp] + } + rangeMap.set(comp.value, comp) + } + if (rangeMap.size > 1 && rangeMap.has('')) { + rangeMap.delete('') + } + + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result + } + + intersects (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some((thisComparators) => { + return ( + isSatisfiable(thisComparators, options) && + range.set.some((rangeComparators) => { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + } + + // if ANY of the sets match ALL of its comparators, then pass + test (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + } +} +module.exports = Range + +const LRU = require('lru-cache') +const cache = new LRU({ max: 1000 }) + +const parseOptions = require('../internal/parse-options') +const Comparator = require('./comparator') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const { + re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace, +} = require('../internal/re') + +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +const isSatisfiable = (comparators, options) => { + let result = true + const remainingComparators = comparators.slice() + let testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +const parseComparator = (comp, options) => { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +const isX = id => !id || id.toLowerCase() === 'x' || id === '*' + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +const replaceTildes = (comp, options) => + comp.trim().split(/\s+/).map((c) => { + return replaceTilde(c, options) + }).join(' ') + +const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0` + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` + } else if (pr) { + debug('replaceTilde pr', pr) + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0` + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +const replaceCarets = (comp, options) => + comp.trim().split(/\s+/).map((c) => { + return replaceCaret(c, options) + }).join(' ') + +const replaceCaret = (comp, options) => { + debug('caret', comp, options) + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + const z = options.includePrerelease ? '-0' : '' + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${+M + 1}.0.0-0` + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p + }${z} <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p + }${z} <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p + } <${+M + 1}.0.0-0` + } + } + + debug('caret return', ret) + return ret + }) +} + +const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map((c) => { + return replaceXRange(c, options) + }).join(' ') +} + +const replaceXRange = (comp, options) => { + comp = comp.trim() + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + const xM = isX(M) + const xm = xM || isX(m) + const xp = xm || isX(p) + const anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + if (gtlt === '<') { + pr = '-0' + } + + ret = `${gtlt + M}.${m}.${p}${pr}` + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` + } else if (xp) { + ret = `>=${M}.${m}.0${pr + } <${M}.${+m + 1}.0-0` + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +const replaceStars = (comp, options) => { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[t.STAR], '') +} + +const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options) + return comp.trim() + .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +const hyphenReplace = incPr => ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) => { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}` + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` + } else if (fpr) { + from = `>=${from}` + } else { + from = `>=${from}${incPr ? '-0' : ''}` + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0` + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0` + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}` + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0` + } else { + to = `<=${to}` + } + + return (`${from} ${to}`).trim() +} + +const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === Comparator.ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} diff --git a/mybulma/node_modules/semver/classes/semver.js b/mybulma/node_modules/semver/classes/semver.js new file mode 100644 index 0000000..af62955 --- /dev/null +++ b/mybulma/node_modules/semver/classes/semver.js @@ -0,0 +1,287 @@ +const debug = require('../internal/debug') +const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants') +const { re, t } = require('../internal/re') + +const parseOptions = require('../internal/parse-options') +const { compareIdentifiers } = require('../internal/identifiers') +class SemVer { + constructor (version, options) { + options = parseOptions(options) + + if (version instanceof SemVer) { + if (version.loose === !!options.loose && + version.includePrerelease === !!options.includePrerelease) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError(`Invalid Version: ${version}`) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + // this isn't actually relevant for versions, but keep it so that we + // don't run into trouble passing this.options around. + this.includePrerelease = !!options.includePrerelease + + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + + if (!m) { + throw new TypeError(`Invalid Version: ${version}`) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() + } + + format () { + this.version = `${this.major}.${this.minor}.${this.patch}` + if (this.prerelease.length) { + this.version += `-${this.prerelease.join('.')}` + } + return this.version + } + + toString () { + return this.version + } + + compare (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + if (typeof other === 'string' && other === this.version) { + return 0 + } + other = new SemVer(other, this.options) + } + + if (other.version === this.version) { + return 0 + } + + return this.compareMain(other) || this.comparePre(other) + } + + compareMain (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return ( + compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) + ) + } + + comparePre (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + let i = 0 + do { + const a = this.prerelease[i] + const b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + compareBuild (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + let i = 0 + do { + const a = this.build[i] + const b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + let i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.format() + this.raw = this.version + return this + } +} + +module.exports = SemVer diff --git a/mybulma/node_modules/semver/functions/clean.js b/mybulma/node_modules/semver/functions/clean.js new file mode 100644 index 0000000..811fe6b --- /dev/null +++ b/mybulma/node_modules/semver/functions/clean.js @@ -0,0 +1,6 @@ +const parse = require('./parse') +const clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} +module.exports = clean diff --git a/mybulma/node_modules/semver/functions/cmp.js b/mybulma/node_modules/semver/functions/cmp.js new file mode 100644 index 0000000..4011909 --- /dev/null +++ b/mybulma/node_modules/semver/functions/cmp.js @@ -0,0 +1,52 @@ +const eq = require('./eq') +const neq = require('./neq') +const gt = require('./gt') +const gte = require('./gte') +const lt = require('./lt') +const lte = require('./lte') + +const cmp = (a, op, b, loose) => { + switch (op) { + case '===': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a === b + + case '!==': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError(`Invalid operator: ${op}`) + } +} +module.exports = cmp diff --git a/mybulma/node_modules/semver/functions/coerce.js b/mybulma/node_modules/semver/functions/coerce.js new file mode 100644 index 0000000..2e01452 --- /dev/null +++ b/mybulma/node_modules/semver/functions/coerce.js @@ -0,0 +1,52 @@ +const SemVer = require('../classes/semver') +const parse = require('./parse') +const { re, t } = require('../internal/re') + +const coerce = (version, options) => { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + let match = null + if (!options.rtl) { + match = version.match(re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + let next + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1 + } + + if (match === null) { + return null + } + + return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) +} +module.exports = coerce diff --git a/mybulma/node_modules/semver/functions/compare-build.js b/mybulma/node_modules/semver/functions/compare-build.js new file mode 100644 index 0000000..9eb881b --- /dev/null +++ b/mybulma/node_modules/semver/functions/compare-build.js @@ -0,0 +1,7 @@ +const SemVer = require('../classes/semver') +const compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose) + const versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} +module.exports = compareBuild diff --git a/mybulma/node_modules/semver/functions/compare-loose.js b/mybulma/node_modules/semver/functions/compare-loose.js new file mode 100644 index 0000000..4881fbe --- /dev/null +++ b/mybulma/node_modules/semver/functions/compare-loose.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const compareLoose = (a, b) => compare(a, b, true) +module.exports = compareLoose diff --git a/mybulma/node_modules/semver/functions/compare.js b/mybulma/node_modules/semver/functions/compare.js new file mode 100644 index 0000000..748b7af --- /dev/null +++ b/mybulma/node_modules/semver/functions/compare.js @@ -0,0 +1,5 @@ +const SemVer = require('../classes/semver') +const compare = (a, b, loose) => + new SemVer(a, loose).compare(new SemVer(b, loose)) + +module.exports = compare diff --git a/mybulma/node_modules/semver/functions/diff.js b/mybulma/node_modules/semver/functions/diff.js new file mode 100644 index 0000000..87200ef --- /dev/null +++ b/mybulma/node_modules/semver/functions/diff.js @@ -0,0 +1,23 @@ +const parse = require('./parse') +const eq = require('./eq') + +const diff = (version1, version2) => { + if (eq(version1, version2)) { + return null + } else { + const v1 = parse(version1) + const v2 = parse(version2) + const hasPre = v1.prerelease.length || v2.prerelease.length + const prefix = hasPre ? 'pre' : '' + const defaultResult = hasPre ? 'prerelease' : '' + for (const key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} +module.exports = diff diff --git a/mybulma/node_modules/semver/functions/eq.js b/mybulma/node_modules/semver/functions/eq.js new file mode 100644 index 0000000..271fed9 --- /dev/null +++ b/mybulma/node_modules/semver/functions/eq.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const eq = (a, b, loose) => compare(a, b, loose) === 0 +module.exports = eq diff --git a/mybulma/node_modules/semver/functions/gt.js b/mybulma/node_modules/semver/functions/gt.js new file mode 100644 index 0000000..d9b2156 --- /dev/null +++ b/mybulma/node_modules/semver/functions/gt.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const gt = (a, b, loose) => compare(a, b, loose) > 0 +module.exports = gt diff --git a/mybulma/node_modules/semver/functions/gte.js b/mybulma/node_modules/semver/functions/gte.js new file mode 100644 index 0000000..5aeaa63 --- /dev/null +++ b/mybulma/node_modules/semver/functions/gte.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const gte = (a, b, loose) => compare(a, b, loose) >= 0 +module.exports = gte diff --git a/mybulma/node_modules/semver/functions/inc.js b/mybulma/node_modules/semver/functions/inc.js new file mode 100644 index 0000000..62d1da2 --- /dev/null +++ b/mybulma/node_modules/semver/functions/inc.js @@ -0,0 +1,18 @@ +const SemVer = require('../classes/semver') + +const inc = (version, release, options, identifier) => { + if (typeof (options) === 'string') { + identifier = options + options = undefined + } + + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier).version + } catch (er) { + return null + } +} +module.exports = inc diff --git a/mybulma/node_modules/semver/functions/lt.js b/mybulma/node_modules/semver/functions/lt.js new file mode 100644 index 0000000..b440ab7 --- /dev/null +++ b/mybulma/node_modules/semver/functions/lt.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const lt = (a, b, loose) => compare(a, b, loose) < 0 +module.exports = lt diff --git a/mybulma/node_modules/semver/functions/lte.js b/mybulma/node_modules/semver/functions/lte.js new file mode 100644 index 0000000..6dcc956 --- /dev/null +++ b/mybulma/node_modules/semver/functions/lte.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const lte = (a, b, loose) => compare(a, b, loose) <= 0 +module.exports = lte diff --git a/mybulma/node_modules/semver/functions/major.js b/mybulma/node_modules/semver/functions/major.js new file mode 100644 index 0000000..4283165 --- /dev/null +++ b/mybulma/node_modules/semver/functions/major.js @@ -0,0 +1,3 @@ +const SemVer = require('../classes/semver') +const major = (a, loose) => new SemVer(a, loose).major +module.exports = major diff --git a/mybulma/node_modules/semver/functions/minor.js b/mybulma/node_modules/semver/functions/minor.js new file mode 100644 index 0000000..57b3455 --- /dev/null +++ b/mybulma/node_modules/semver/functions/minor.js @@ -0,0 +1,3 @@ +const SemVer = require('../classes/semver') +const minor = (a, loose) => new SemVer(a, loose).minor +module.exports = minor diff --git a/mybulma/node_modules/semver/functions/neq.js b/mybulma/node_modules/semver/functions/neq.js new file mode 100644 index 0000000..f944c01 --- /dev/null +++ b/mybulma/node_modules/semver/functions/neq.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const neq = (a, b, loose) => compare(a, b, loose) !== 0 +module.exports = neq diff --git a/mybulma/node_modules/semver/functions/parse.js b/mybulma/node_modules/semver/functions/parse.js new file mode 100644 index 0000000..a66663a --- /dev/null +++ b/mybulma/node_modules/semver/functions/parse.js @@ -0,0 +1,33 @@ +const { MAX_LENGTH } = require('../internal/constants') +const { re, t } = require('../internal/re') +const SemVer = require('../classes/semver') + +const parseOptions = require('../internal/parse-options') +const parse = (version, options) => { + options = parseOptions(options) + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + const r = options.loose ? re[t.LOOSE] : re[t.FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +module.exports = parse diff --git a/mybulma/node_modules/semver/functions/patch.js b/mybulma/node_modules/semver/functions/patch.js new file mode 100644 index 0000000..63afca2 --- /dev/null +++ b/mybulma/node_modules/semver/functions/patch.js @@ -0,0 +1,3 @@ +const SemVer = require('../classes/semver') +const patch = (a, loose) => new SemVer(a, loose).patch +module.exports = patch diff --git a/mybulma/node_modules/semver/functions/prerelease.js b/mybulma/node_modules/semver/functions/prerelease.js new file mode 100644 index 0000000..06aa132 --- /dev/null +++ b/mybulma/node_modules/semver/functions/prerelease.js @@ -0,0 +1,6 @@ +const parse = require('./parse') +const prerelease = (version, options) => { + const parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} +module.exports = prerelease diff --git a/mybulma/node_modules/semver/functions/rcompare.js b/mybulma/node_modules/semver/functions/rcompare.js new file mode 100644 index 0000000..0ac509e --- /dev/null +++ b/mybulma/node_modules/semver/functions/rcompare.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const rcompare = (a, b, loose) => compare(b, a, loose) +module.exports = rcompare diff --git a/mybulma/node_modules/semver/functions/rsort.js b/mybulma/node_modules/semver/functions/rsort.js new file mode 100644 index 0000000..82404c5 --- /dev/null +++ b/mybulma/node_modules/semver/functions/rsort.js @@ -0,0 +1,3 @@ +const compareBuild = require('./compare-build') +const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) +module.exports = rsort diff --git a/mybulma/node_modules/semver/functions/satisfies.js b/mybulma/node_modules/semver/functions/satisfies.js new file mode 100644 index 0000000..50af1c1 --- /dev/null +++ b/mybulma/node_modules/semver/functions/satisfies.js @@ -0,0 +1,10 @@ +const Range = require('../classes/range') +const satisfies = (version, range, options) => { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} +module.exports = satisfies diff --git a/mybulma/node_modules/semver/functions/sort.js b/mybulma/node_modules/semver/functions/sort.js new file mode 100644 index 0000000..4d10917 --- /dev/null +++ b/mybulma/node_modules/semver/functions/sort.js @@ -0,0 +1,3 @@ +const compareBuild = require('./compare-build') +const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) +module.exports = sort diff --git a/mybulma/node_modules/semver/functions/valid.js b/mybulma/node_modules/semver/functions/valid.js new file mode 100644 index 0000000..f27bae1 --- /dev/null +++ b/mybulma/node_modules/semver/functions/valid.js @@ -0,0 +1,6 @@ +const parse = require('./parse') +const valid = (version, options) => { + const v = parse(version, options) + return v ? v.version : null +} +module.exports = valid diff --git a/mybulma/node_modules/semver/internal/constants.js b/mybulma/node_modules/semver/internal/constants.js new file mode 100644 index 0000000..4f0de59 --- /dev/null +++ b/mybulma/node_modules/semver/internal/constants.js @@ -0,0 +1,17 @@ +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +const SEMVER_SPEC_VERSION = '2.0.0' + +const MAX_LENGTH = 256 +const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || +/* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH = 16 + +module.exports = { + SEMVER_SPEC_VERSION, + MAX_LENGTH, + MAX_SAFE_INTEGER, + MAX_SAFE_COMPONENT_LENGTH, +} diff --git a/mybulma/node_modules/semver/internal/debug.js b/mybulma/node_modules/semver/internal/debug.js new file mode 100644 index 0000000..1c00e13 --- /dev/null +++ b/mybulma/node_modules/semver/internal/debug.js @@ -0,0 +1,9 @@ +const debug = ( + typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG) +) ? (...args) => console.error('SEMVER', ...args) + : () => {} + +module.exports = debug diff --git a/mybulma/node_modules/semver/internal/identifiers.js b/mybulma/node_modules/semver/internal/identifiers.js new file mode 100644 index 0000000..e612d0a --- /dev/null +++ b/mybulma/node_modules/semver/internal/identifiers.js @@ -0,0 +1,23 @@ +const numeric = /^[0-9]+$/ +const compareIdentifiers = (a, b) => { + const anum = numeric.test(a) + const bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) + +module.exports = { + compareIdentifiers, + rcompareIdentifiers, +} diff --git a/mybulma/node_modules/semver/internal/parse-options.js b/mybulma/node_modules/semver/internal/parse-options.js new file mode 100644 index 0000000..bbd9ec7 --- /dev/null +++ b/mybulma/node_modules/semver/internal/parse-options.js @@ -0,0 +1,11 @@ +// parse out just the options we care about so we always get a consistent +// obj with keys in a consistent order. +const opts = ['includePrerelease', 'loose', 'rtl'] +const parseOptions = options => + !options ? {} + : typeof options !== 'object' ? { loose: true } + : opts.filter(k => options[k]).reduce((o, k) => { + o[k] = true + return o + }, {}) +module.exports = parseOptions diff --git a/mybulma/node_modules/semver/internal/re.js b/mybulma/node_modules/semver/internal/re.js new file mode 100644 index 0000000..ed88398 --- /dev/null +++ b/mybulma/node_modules/semver/internal/re.js @@ -0,0 +1,182 @@ +const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants') +const debug = require('./debug') +exports = module.exports = {} + +// The actual regexps go on exports.re +const re = exports.re = [] +const src = exports.src = [] +const t = exports.t = {} +let R = 0 + +const createToken = (name, value, isGlobal) => { + const index = R++ + debug(name, index, value) + t[name] = index + src[index] = value + re[index] = new RegExp(value, isGlobal ? 'g' : undefined) +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') +createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+') + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*') + +// ## Main Version +// Three dot-separated numeric identifiers. + +createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`) + +createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`) + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] +}|${src[t.NONNUMERICIDENTIFIER]})`) + +createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] +}|${src[t.NONNUMERICIDENTIFIER]})`) + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] +}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) + +createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] +}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+') + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] +}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +createToken('FULLPLAIN', `v?${src[t.MAINVERSION] +}${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`) + +createToken('FULL', `^${src[t.FULLPLAIN]}$`) + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] +}${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`) + +createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) + +createToken('GTLT', '((?:<|>)?=?)') + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) +createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) + +createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) +createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +createToken('COERCE', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:$|[^\\d])`) +createToken('COERCERTL', src[t.COERCE], true) + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +createToken('LONETILDE', '(?:~>?)') + +createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) +exports.tildeTrimReplace = '$1~' + +createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) +createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +createToken('LONECARET', '(?:\\^)') + +createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) +exports.caretTrimReplace = '$1^' + +createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) +createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) +createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] +}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) +exports.comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`) + +createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`) + +// Star ranges basically just allow anything at all. +createToken('STAR', '(<|>)?=?\\s*\\*') +// >=0.0.0 is like a star +createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') +createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') diff --git a/mybulma/node_modules/semver/node_modules/lru-cache/LICENSE b/mybulma/node_modules/semver/node_modules/lru-cache/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/mybulma/node_modules/semver/node_modules/lru-cache/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/semver/node_modules/lru-cache/README.md b/mybulma/node_modules/semver/node_modules/lru-cache/README.md new file mode 100644 index 0000000..435dfeb --- /dev/null +++ b/mybulma/node_modules/semver/node_modules/lru-cache/README.md @@ -0,0 +1,166 @@ +# lru cache + +A cache object that deletes the least-recently-used items. + +[![Build Status](https://travis-ci.org/isaacs/node-lru-cache.svg?branch=master)](https://travis-ci.org/isaacs/node-lru-cache) [![Coverage Status](https://coveralls.io/repos/isaacs/node-lru-cache/badge.svg?service=github)](https://coveralls.io/github/isaacs/node-lru-cache) + +## Installation: + +```javascript +npm install lru-cache --save +``` + +## Usage: + +```javascript +var LRU = require("lru-cache") + , options = { max: 500 + , length: function (n, key) { return n * 2 + key.length } + , dispose: function (key, n) { n.close() } + , maxAge: 1000 * 60 * 60 } + , cache = new LRU(options) + , otherCache = new LRU(50) // sets just the max size + +cache.set("key", "value") +cache.get("key") // "value" + +// non-string keys ARE fully supported +// but note that it must be THE SAME object, not +// just a JSON-equivalent object. +var someObject = { a: 1 } +cache.set(someObject, 'a value') +// Object keys are not toString()-ed +cache.set('[object Object]', 'a different value') +assert.equal(cache.get(someObject), 'a value') +// A similar object with same keys/values won't work, +// because it's a different object identity +assert.equal(cache.get({ a: 1 }), undefined) + +cache.reset() // empty the cache +``` + +If you put more stuff in it, then items will fall out. + +If you try to put an oversized thing in it, then it'll fall out right +away. + +## Options + +* `max` The maximum size of the cache, checked by applying the length + function to all values in the cache. Not setting this is kind of + silly, since that's the whole purpose of this lib, but it defaults + to `Infinity`. Setting it to a non-number or negative number will + throw a `TypeError`. Setting it to 0 makes it be `Infinity`. +* `maxAge` Maximum age in ms. Items are not pro-actively pruned out + as they age, but if you try to get an item that is too old, it'll + drop it and return undefined instead of giving it to you. + Setting this to a negative value will make everything seem old! + Setting it to a non-number will throw a `TypeError`. +* `length` Function that is used to calculate the length of stored + items. If you're storing strings or buffers, then you probably want + to do something like `function(n, key){return n.length}`. The default is + `function(){return 1}`, which is fine if you want to store `max` + like-sized things. The item is passed as the first argument, and + the key is passed as the second argumnet. +* `dispose` Function that is called on items when they are dropped + from the cache. This can be handy if you want to close file + descriptors or do other cleanup tasks when items are no longer + accessible. Called with `key, value`. It's called *before* + actually removing the item from the internal cache, so if you want + to immediately put it back in, you'll have to do that in a + `nextTick` or `setTimeout` callback or it won't do anything. +* `stale` By default, if you set a `maxAge`, it'll only actually pull + stale items out of the cache when you `get(key)`. (That is, it's + not pre-emptively doing a `setTimeout` or anything.) If you set + `stale:true`, it'll return the stale value before deleting it. If + you don't set this, then it'll return `undefined` when you try to + get a stale entry, as if it had already been deleted. +* `noDisposeOnSet` By default, if you set a `dispose()` method, then + it'll be called whenever a `set()` operation overwrites an existing + key. If you set this option, `dispose()` will only be called when a + key falls out of the cache, not when it is overwritten. +* `updateAgeOnGet` When using time-expiring entries with `maxAge`, + setting this to `true` will make each item's effective time update + to the current time whenever it is retrieved from cache, causing it + to not expire. (It can still fall out of cache based on recency of + use, of course.) + +## API + +* `set(key, value, maxAge)` +* `get(key) => value` + + Both of these will update the "recently used"-ness of the key. + They do what you think. `maxAge` is optional and overrides the + cache `maxAge` option if provided. + + If the key is not found, `get()` will return `undefined`. + + The key and val can be any value. + +* `peek(key)` + + Returns the key value (or `undefined` if not found) without + updating the "recently used"-ness of the key. + + (If you find yourself using this a lot, you *might* be using the + wrong sort of data structure, but there are some use cases where + it's handy.) + +* `del(key)` + + Deletes a key out of the cache. + +* `reset()` + + Clear the cache entirely, throwing away all values. + +* `has(key)` + + Check if a key is in the cache, without updating the recent-ness + or deleting it for being stale. + +* `forEach(function(value,key,cache), [thisp])` + + Just like `Array.prototype.forEach`. Iterates over all the keys + in the cache, in order of recent-ness. (Ie, more recently used + items are iterated over first.) + +* `rforEach(function(value,key,cache), [thisp])` + + The same as `cache.forEach(...)` but items are iterated over in + reverse order. (ie, less recently used items are iterated over + first.) + +* `keys()` + + Return an array of the keys in the cache. + +* `values()` + + Return an array of the values in the cache. + +* `length` + + Return total length of objects in cache taking into account + `length` options function. + +* `itemCount` + + Return total quantity of objects currently in cache. Note, that + `stale` (see options) items are returned as part of this item + count. + +* `dump()` + + Return an array of the cache entries ready for serialization and usage + with 'destinationCache.load(arr)`. + +* `load(cacheEntriesArray)` + + Loads another cache entries array, obtained with `sourceCache.dump()`, + into the cache. The destination cache is reset before loading new entries + +* `prune()` + + Manually iterates over the entire cache proactively pruning old entries diff --git a/mybulma/node_modules/semver/node_modules/lru-cache/index.js b/mybulma/node_modules/semver/node_modules/lru-cache/index.js new file mode 100644 index 0000000..573b6b8 --- /dev/null +++ b/mybulma/node_modules/semver/node_modules/lru-cache/index.js @@ -0,0 +1,334 @@ +'use strict' + +// A linked list to keep track of recently-used-ness +const Yallist = require('yallist') + +const MAX = Symbol('max') +const LENGTH = Symbol('length') +const LENGTH_CALCULATOR = Symbol('lengthCalculator') +const ALLOW_STALE = Symbol('allowStale') +const MAX_AGE = Symbol('maxAge') +const DISPOSE = Symbol('dispose') +const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet') +const LRU_LIST = Symbol('lruList') +const CACHE = Symbol('cache') +const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet') + +const naiveLength = () => 1 + +// lruList is a yallist where the head is the youngest +// item, and the tail is the oldest. the list contains the Hit +// objects as the entries. +// Each Hit object has a reference to its Yallist.Node. This +// never changes. +// +// cache is a Map (or PseudoMap) that matches the keys to +// the Yallist.Node object. +class LRUCache { + constructor (options) { + if (typeof options === 'number') + options = { max: options } + + if (!options) + options = {} + + if (options.max && (typeof options.max !== 'number' || options.max < 0)) + throw new TypeError('max must be a non-negative number') + // Kind of weird to have a default max of Infinity, but oh well. + const max = this[MAX] = options.max || Infinity + + const lc = options.length || naiveLength + this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc + this[ALLOW_STALE] = options.stale || false + if (options.maxAge && typeof options.maxAge !== 'number') + throw new TypeError('maxAge must be a number') + this[MAX_AGE] = options.maxAge || 0 + this[DISPOSE] = options.dispose + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false + this.reset() + } + + // resize the cache when the max changes. + set max (mL) { + if (typeof mL !== 'number' || mL < 0) + throw new TypeError('max must be a non-negative number') + + this[MAX] = mL || Infinity + trim(this) + } + get max () { + return this[MAX] + } + + set allowStale (allowStale) { + this[ALLOW_STALE] = !!allowStale + } + get allowStale () { + return this[ALLOW_STALE] + } + + set maxAge (mA) { + if (typeof mA !== 'number') + throw new TypeError('maxAge must be a non-negative number') + + this[MAX_AGE] = mA + trim(this) + } + get maxAge () { + return this[MAX_AGE] + } + + // resize the cache when the lengthCalculator changes. + set lengthCalculator (lC) { + if (typeof lC !== 'function') + lC = naiveLength + + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC + this[LENGTH] = 0 + this[LRU_LIST].forEach(hit => { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key) + this[LENGTH] += hit.length + }) + } + trim(this) + } + get lengthCalculator () { return this[LENGTH_CALCULATOR] } + + get length () { return this[LENGTH] } + get itemCount () { return this[LRU_LIST].length } + + rforEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].tail; walker !== null;) { + const prev = walker.prev + forEachStep(this, fn, walker, thisp) + walker = prev + } + } + + forEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].head; walker !== null;) { + const next = walker.next + forEachStep(this, fn, walker, thisp) + walker = next + } + } + + keys () { + return this[LRU_LIST].toArray().map(k => k.key) + } + + values () { + return this[LRU_LIST].toArray().map(k => k.value) + } + + reset () { + if (this[DISPOSE] && + this[LRU_LIST] && + this[LRU_LIST].length) { + this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)) + } + + this[CACHE] = new Map() // hash of items by key + this[LRU_LIST] = new Yallist() // list of items in order of use recency + this[LENGTH] = 0 // length of items in the list + } + + dump () { + return this[LRU_LIST].map(hit => + isStale(this, hit) ? false : { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }).toArray().filter(h => h) + } + + dumpLru () { + return this[LRU_LIST] + } + + set (key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE] + + if (maxAge && typeof maxAge !== 'number') + throw new TypeError('maxAge must be a number') + + const now = maxAge ? Date.now() : 0 + const len = this[LENGTH_CALCULATOR](value, key) + + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)) + return false + } + + const node = this[CACHE].get(key) + const item = node.value + + // dispose of the old one before overwriting + // split out into 2 ifs for better coverage tracking + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) + this[DISPOSE](key, item.value) + } + + item.now = now + item.maxAge = maxAge + item.value = value + this[LENGTH] += len - item.length + item.length = len + this.get(key) + trim(this) + return true + } + + const hit = new Entry(key, value, len, now, maxAge) + + // oversized objects fall out of cache automatically. + if (hit.length > this[MAX]) { + if (this[DISPOSE]) + this[DISPOSE](key, value) + + return false + } + + this[LENGTH] += hit.length + this[LRU_LIST].unshift(hit) + this[CACHE].set(key, this[LRU_LIST].head) + trim(this) + return true + } + + has (key) { + if (!this[CACHE].has(key)) return false + const hit = this[CACHE].get(key).value + return !isStale(this, hit) + } + + get (key) { + return get(this, key, true) + } + + peek (key) { + return get(this, key, false) + } + + pop () { + const node = this[LRU_LIST].tail + if (!node) + return null + + del(this, node) + return node.value + } + + del (key) { + del(this, this[CACHE].get(key)) + } + + load (arr) { + // reset the cache + this.reset() + + const now = Date.now() + // A previous serialized cache has the most recent items first + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l] + const expiresAt = hit.e || 0 + if (expiresAt === 0) + // the item was created without expiration in a non aged cache + this.set(hit.k, hit.v) + else { + const maxAge = expiresAt - now + // dont add already expired items + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge) + } + } + } + } + + prune () { + this[CACHE].forEach((value, key) => get(this, key, false)) + } +} + +const get = (self, key, doUse) => { + const node = self[CACHE].get(key) + if (node) { + const hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + return undefined + } else { + if (doUse) { + if (self[UPDATE_AGE_ON_GET]) + node.value.now = Date.now() + self[LRU_LIST].unshiftNode(node) + } + } + return hit.value + } +} + +const isStale = (self, hit) => { + if (!hit || (!hit.maxAge && !self[MAX_AGE])) + return false + + const diff = Date.now() - hit.now + return hit.maxAge ? diff > hit.maxAge + : self[MAX_AGE] && (diff > self[MAX_AGE]) +} + +const trim = self => { + if (self[LENGTH] > self[MAX]) { + for (let walker = self[LRU_LIST].tail; + self[LENGTH] > self[MAX] && walker !== null;) { + // We know that we're about to delete this one, and also + // what the next least recently used key will be, so just + // go ahead and set it now. + const prev = walker.prev + del(self, walker) + walker = prev + } + } +} + +const del = (self, node) => { + if (node) { + const hit = node.value + if (self[DISPOSE]) + self[DISPOSE](hit.key, hit.value) + + self[LENGTH] -= hit.length + self[CACHE].delete(hit.key) + self[LRU_LIST].removeNode(node) + } +} + +class Entry { + constructor (key, value, length, now, maxAge) { + this.key = key + this.value = value + this.length = length + this.now = now + this.maxAge = maxAge || 0 + } +} + +const forEachStep = (self, fn, node, thisp) => { + let hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + hit = undefined + } + if (hit) + fn.call(thisp, hit.value, hit.key, self) +} + +module.exports = LRUCache diff --git a/mybulma/node_modules/semver/node_modules/lru-cache/package.json b/mybulma/node_modules/semver/node_modules/lru-cache/package.json new file mode 100644 index 0000000..43b7502 --- /dev/null +++ b/mybulma/node_modules/semver/node_modules/lru-cache/package.json @@ -0,0 +1,34 @@ +{ + "name": "lru-cache", + "description": "A cache object that deletes the least-recently-used items.", + "version": "6.0.0", + "author": "Isaac Z. Schlueter ", + "keywords": [ + "mru", + "lru", + "cache" + ], + "scripts": { + "test": "tap", + "snap": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags" + }, + "main": "index.js", + "repository": "git://github.com/isaacs/node-lru-cache.git", + "devDependencies": { + "benchmark": "^2.1.4", + "tap": "^14.10.7" + }, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "files": [ + "index.js" + ], + "engines": { + "node": ">=10" + } +} diff --git a/mybulma/node_modules/semver/ranges/gtr.js b/mybulma/node_modules/semver/ranges/gtr.js new file mode 100644 index 0000000..db7e355 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/gtr.js @@ -0,0 +1,4 @@ +// Determine if version is greater than all the versions possible in the range. +const outside = require('./outside') +const gtr = (version, range, options) => outside(version, range, '>', options) +module.exports = gtr diff --git a/mybulma/node_modules/semver/ranges/intersects.js b/mybulma/node_modules/semver/ranges/intersects.js new file mode 100644 index 0000000..3d1a6f3 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/intersects.js @@ -0,0 +1,7 @@ +const Range = require('../classes/range') +const intersects = (r1, r2, options) => { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} +module.exports = intersects diff --git a/mybulma/node_modules/semver/ranges/ltr.js b/mybulma/node_modules/semver/ranges/ltr.js new file mode 100644 index 0000000..528a885 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/ltr.js @@ -0,0 +1,4 @@ +const outside = require('./outside') +// Determine if version is less than all the versions possible in the range +const ltr = (version, range, options) => outside(version, range, '<', options) +module.exports = ltr diff --git a/mybulma/node_modules/semver/ranges/max-satisfying.js b/mybulma/node_modules/semver/ranges/max-satisfying.js new file mode 100644 index 0000000..6e3d993 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/max-satisfying.js @@ -0,0 +1,25 @@ +const SemVer = require('../classes/semver') +const Range = require('../classes/range') + +const maxSatisfying = (versions, range, options) => { + let max = null + let maxSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} +module.exports = maxSatisfying diff --git a/mybulma/node_modules/semver/ranges/min-satisfying.js b/mybulma/node_modules/semver/ranges/min-satisfying.js new file mode 100644 index 0000000..9b60974 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/min-satisfying.js @@ -0,0 +1,24 @@ +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const minSatisfying = (versions, range, options) => { + let min = null + let minSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} +module.exports = minSatisfying diff --git a/mybulma/node_modules/semver/ranges/min-version.js b/mybulma/node_modules/semver/ranges/min-version.js new file mode 100644 index 0000000..350e1f7 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/min-version.js @@ -0,0 +1,61 @@ +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const gt = require('../functions/gt') + +const minVersion = (range, loose) => { + range = new Range(range, loose) + + let minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let setMin = null + comparators.forEach((comparator) => { + // Clone to avoid manipulating the comparator's semver object. + const compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!setMin || gt(compver, setMin)) { + setMin = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`) + } + }) + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin + } + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} +module.exports = minVersion diff --git a/mybulma/node_modules/semver/ranges/outside.js b/mybulma/node_modules/semver/ranges/outside.js new file mode 100644 index 0000000..ae99b10 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/outside.js @@ -0,0 +1,80 @@ +const SemVer = require('../classes/semver') +const Comparator = require('../classes/comparator') +const { ANY } = Comparator +const Range = require('../classes/range') +const satisfies = require('../functions/satisfies') +const gt = require('../functions/gt') +const lt = require('../functions/lt') +const lte = require('../functions/lte') +const gte = require('../functions/gte') + +const outside = (version, range, hilo, options) => { + version = new SemVer(version, options) + range = new Range(range, options) + + let gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisfies the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let high = null + let low = null + + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +module.exports = outside diff --git a/mybulma/node_modules/semver/ranges/simplify.js b/mybulma/node_modules/semver/ranges/simplify.js new file mode 100644 index 0000000..618d5b6 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/simplify.js @@ -0,0 +1,47 @@ +// given a set of versions and a range, create a "simplified" range +// that includes the same versions that the original range does +// If the original range is shorter than the simplified one, return that. +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') +module.exports = (versions, range, options) => { + const set = [] + let first = null + let prev = null + const v = versions.sort((a, b) => compare(a, b, options)) + for (const version of v) { + const included = satisfies(version, range, options) + if (included) { + prev = version + if (!first) { + first = version + } + } else { + if (prev) { + set.push([first, prev]) + } + prev = null + first = null + } + } + if (first) { + set.push([first, null]) + } + + const ranges = [] + for (const [min, max] of set) { + if (min === max) { + ranges.push(min) + } else if (!max && min === v[0]) { + ranges.push('*') + } else if (!max) { + ranges.push(`>=${min}`) + } else if (min === v[0]) { + ranges.push(`<=${max}`) + } else { + ranges.push(`${min} - ${max}`) + } + } + const simplified = ranges.join(' || ') + const original = typeof range.raw === 'string' ? range.raw : String(range) + return simplified.length < original.length ? simplified : range +} diff --git a/mybulma/node_modules/semver/ranges/subset.js b/mybulma/node_modules/semver/ranges/subset.js new file mode 100644 index 0000000..e0dea43 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/subset.js @@ -0,0 +1,244 @@ +const Range = require('../classes/range.js') +const Comparator = require('../classes/comparator.js') +const { ANY } = Comparator +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') + +// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: +// - Every simple range `r1, r2, ...` is a null set, OR +// - Every simple range `r1, r2, ...` which is not a null set is a subset of +// some `R1, R2, ...` +// +// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: +// - If c is only the ANY comparator +// - If C is only the ANY comparator, return true +// - Else if in prerelease mode, return false +// - else replace c with `[>=0.0.0]` +// - If C is only the ANY comparator +// - if in prerelease mode, return true +// - else replace C with `[>=0.0.0]` +// - Let EQ be the set of = comparators in c +// - If EQ is more than one, return true (null set) +// - Let GT be the highest > or >= comparator in c +// - Let LT be the lowest < or <= comparator in c +// - If GT and LT, and GT.semver > LT.semver, return true (null set) +// - If any C is a = range, and GT or LT are set, return false +// - If EQ +// - If GT, and EQ does not satisfy GT, return true (null set) +// - If LT, and EQ does not satisfy LT, return true (null set) +// - If EQ satisfies every C, return true +// - Else return false +// - If GT +// - If GT.semver is lower than any > or >= comp in C, return false +// - If GT is >=, and GT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the GT.semver tuple, return false +// - If LT +// - If LT.semver is greater than any < or <= comp in C, return false +// - If LT is <=, and LT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the LT.semver tuple, return false +// - Else return true + +const subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true + } + + sub = new Range(sub, options) + dom = new Range(dom, options) + let sawNonNull = false + + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options) + sawNonNull = sawNonNull || isSub !== null + if (isSub) { + continue OUTER + } + } + // the null set is a subset of everything, but null simple ranges in + // a complex range should be ignored. so if we saw a non-null range, + // then we know this isn't a subset, but if EVERY simple range was null, + // then it is a subset. + if (sawNonNull) { + return false + } + } + return true +} + +const simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true + } + + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true + } else if (options.includePrerelease) { + sub = [new Comparator('>=0.0.0-0')] + } else { + sub = [new Comparator('>=0.0.0')] + } + } + + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true + } else { + dom = [new Comparator('>=0.0.0')] + } + } + + const eqSet = new Set() + let gt, lt + for (const c of sub) { + if (c.operator === '>' || c.operator === '>=') { + gt = higherGT(gt, c, options) + } else if (c.operator === '<' || c.operator === '<=') { + lt = lowerLT(lt, c, options) + } else { + eqSet.add(c.semver) + } + } + + if (eqSet.size > 1) { + return null + } + + let gtltComp + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options) + if (gtltComp > 0) { + return null + } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { + return null + } + } + + // will iterate one or zero times + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null + } + + if (lt && !satisfies(eq, String(lt), options)) { + return null + } + + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false + } + } + + return true + } + + let higher, lower + let hasDomLT, hasDomGT + // if the subset has a prerelease, we need a comparator in the superset + // with the same tuple and a prerelease, or it's not a subset + let needDomLTPre = lt && + !options.includePrerelease && + lt.semver.prerelease.length ? lt.semver : false + let needDomGTPre = gt && + !options.includePrerelease && + gt.semver.prerelease.length ? gt.semver : false + // exception: <1.2.3-0 is the same as <1.2.3 + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && + lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false + } + + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' + hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomGTPre.major && + c.semver.minor === needDomGTPre.minor && + c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false + } + } + if (c.operator === '>' || c.operator === '>=') { + higher = higherGT(gt, c, options) + if (higher === c && higher !== gt) { + return false + } + } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { + return false + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomLTPre.major && + c.semver.minor === needDomLTPre.minor && + c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false + } + } + if (c.operator === '<' || c.operator === '<=') { + lower = lowerLT(lt, c, options) + if (lower === c && lower !== lt) { + return false + } + } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { + return false + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false + } + } + + // if there was a < or >, and nothing in the dom, then must be false + // UNLESS it was limited by another range in the other direction. + // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false + } + + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false + } + + // we needed a prerelease range in a specific tuple, but didn't get one + // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, + // because it includes prereleases in the 1.2.3 tuple + if (needDomGTPre || needDomLTPre) { + return false + } + + return true +} + +// >=1.2.3 is lower than >1.2.3 +const higherGT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp > 0 ? a + : comp < 0 ? b + : b.operator === '>' && a.operator === '>=' ? b + : a +} + +// <=1.2.3 is higher than <1.2.3 +const lowerLT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp < 0 ? a + : comp > 0 ? b + : b.operator === '<' && a.operator === '<=' ? b + : a +} + +module.exports = subset diff --git a/mybulma/node_modules/semver/ranges/to-comparators.js b/mybulma/node_modules/semver/ranges/to-comparators.js new file mode 100644 index 0000000..6c8bc7e --- /dev/null +++ b/mybulma/node_modules/semver/ranges/to-comparators.js @@ -0,0 +1,8 @@ +const Range = require('../classes/range') + +// Mostly just for testing and legacy API reasons +const toComparators = (range, options) => + new Range(range, options).set + .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) + +module.exports = toComparators diff --git a/mybulma/node_modules/semver/ranges/valid.js b/mybulma/node_modules/semver/ranges/valid.js new file mode 100644 index 0000000..365f356 --- /dev/null +++ b/mybulma/node_modules/semver/ranges/valid.js @@ -0,0 +1,11 @@ +const Range = require('../classes/range') +const validRange = (range, options) => { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} +module.exports = validRange diff --git a/mybulma/node_modules/set-blocking/CHANGELOG.md b/mybulma/node_modules/set-blocking/CHANGELOG.md new file mode 100644 index 0000000..03bf591 --- /dev/null +++ b/mybulma/node_modules/set-blocking/CHANGELOG.md @@ -0,0 +1,26 @@ +# Change Log + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + + +# [2.0.0](https://github.com/yargs/set-blocking/compare/v1.0.0...v2.0.0) (2016-05-17) + + +### Features + +* add an isTTY check ([#3](https://github.com/yargs/set-blocking/issues/3)) ([66ce277](https://github.com/yargs/set-blocking/commit/66ce277)) + + +### BREAKING CHANGES + +* stdio/stderr will not be set to blocking if isTTY === false + + + + +# 1.0.0 (2016-05-14) + + +### Features + +* implemented shim for stream._handle.setBlocking ([6bde0c0](https://github.com/yargs/set-blocking/commit/6bde0c0)) diff --git a/mybulma/node_modules/set-blocking/LICENSE.txt b/mybulma/node_modules/set-blocking/LICENSE.txt new file mode 100644 index 0000000..836440b --- /dev/null +++ b/mybulma/node_modules/set-blocking/LICENSE.txt @@ -0,0 +1,14 @@ +Copyright (c) 2016, Contributors + +Permission to use, copy, modify, and/or distribute this software +for any purpose with or without fee is hereby granted, provided +that the above copyright notice and this permission notice +appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/set-blocking/README.md b/mybulma/node_modules/set-blocking/README.md new file mode 100644 index 0000000..e93b420 --- /dev/null +++ b/mybulma/node_modules/set-blocking/README.md @@ -0,0 +1,31 @@ +# set-blocking + +[![Build Status](https://travis-ci.org/yargs/set-blocking.svg)](https://travis-ci.org/yargs/set-blocking) +[![NPM version](https://img.shields.io/npm/v/set-blocking.svg)](https://www.npmjs.com/package/set-blocking) +[![Coverage Status](https://coveralls.io/repos/yargs/set-blocking/badge.svg?branch=)](https://coveralls.io/r/yargs/set-blocking?branch=master) +[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version) + +set blocking `stdio` and `stderr` ensuring that terminal output does not truncate. + +```js +const setBlocking = require('set-blocking') +setBlocking(true) +console.log(someLargeStringToOutput) +``` + +## Historical Context/Word of Warning + +This was created as a shim to address the bug discussed in [node #6456](https://github.com/nodejs/node/issues/6456). This bug crops up on +newer versions of Node.js (`0.12+`), truncating terminal output. + +You should be mindful of the side-effects caused by using `set-blocking`: + +* if your module sets blocking to `true`, it will effect other modules + consuming your library. In [yargs](https://github.com/yargs/yargs/blob/master/yargs.js#L653) we only call + `setBlocking(true)` once we already know we are about to call `process.exit(code)`. +* this patch will not apply to subprocesses spawned with `isTTY = true`, this is + the [default `spawn()` behavior](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options). + +## License + +ISC diff --git a/mybulma/node_modules/set-blocking/index.js b/mybulma/node_modules/set-blocking/index.js new file mode 100644 index 0000000..6f78774 --- /dev/null +++ b/mybulma/node_modules/set-blocking/index.js @@ -0,0 +1,7 @@ +module.exports = function (blocking) { + [process.stdout, process.stderr].forEach(function (stream) { + if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === 'function') { + stream._handle.setBlocking(blocking) + } + }) +} diff --git a/mybulma/node_modules/set-blocking/package.json b/mybulma/node_modules/set-blocking/package.json new file mode 100644 index 0000000..c082db7 --- /dev/null +++ b/mybulma/node_modules/set-blocking/package.json @@ -0,0 +1,42 @@ +{ + "name": "set-blocking", + "version": "2.0.0", + "description": "set blocking stdio and stderr ensuring that terminal output does not truncate", + "main": "index.js", + "scripts": { + "pretest": "standard", + "test": "nyc mocha ./test/*.js", + "coverage": "nyc report --reporter=text-lcov | coveralls", + "version": "standard-version" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/yargs/set-blocking.git" + }, + "keywords": [ + "flush", + "terminal", + "blocking", + "shim", + "stdio", + "stderr" + ], + "author": "Ben Coe ", + "license": "ISC", + "bugs": { + "url": "https://github.com/yargs/set-blocking/issues" + }, + "homepage": "https://github.com/yargs/set-blocking#readme", + "devDependencies": { + "chai": "^3.5.0", + "coveralls": "^2.11.9", + "mocha": "^2.4.5", + "nyc": "^6.4.4", + "standard": "^7.0.1", + "standard-version": "^2.2.1" + }, + "files": [ + "index.js", + "LICENSE.txt" + ] +} \ No newline at end of file diff --git a/mybulma/node_modules/shebang-command/index.js b/mybulma/node_modules/shebang-command/index.js new file mode 100644 index 0000000..f35db30 --- /dev/null +++ b/mybulma/node_modules/shebang-command/index.js @@ -0,0 +1,19 @@ +'use strict'; +const shebangRegex = require('shebang-regex'); + +module.exports = (string = '') => { + const match = string.match(shebangRegex); + + if (!match) { + return null; + } + + const [path, argument] = match[0].replace(/#! ?/, '').split(' '); + const binary = path.split('/').pop(); + + if (binary === 'env') { + return argument; + } + + return argument ? `${binary} ${argument}` : binary; +}; diff --git a/mybulma/node_modules/shebang-command/license b/mybulma/node_modules/shebang-command/license new file mode 100644 index 0000000..db6bc32 --- /dev/null +++ b/mybulma/node_modules/shebang-command/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/shebang-command/package.json b/mybulma/node_modules/shebang-command/package.json new file mode 100644 index 0000000..18e3c04 --- /dev/null +++ b/mybulma/node_modules/shebang-command/package.json @@ -0,0 +1,34 @@ +{ + "name": "shebang-command", + "version": "2.0.0", + "description": "Get the command from a shebang", + "license": "MIT", + "repository": "kevva/shebang-command", + "author": { + "name": "Kevin Mårtensson", + "email": "kevinmartensson@gmail.com", + "url": "github.com/kevva" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js" + ], + "keywords": [ + "cmd", + "command", + "parse", + "shebang" + ], + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "devDependencies": { + "ava": "^2.3.0", + "xo": "^0.24.0" + } +} diff --git a/mybulma/node_modules/shebang-command/readme.md b/mybulma/node_modules/shebang-command/readme.md new file mode 100644 index 0000000..84feb44 --- /dev/null +++ b/mybulma/node_modules/shebang-command/readme.md @@ -0,0 +1,34 @@ +# shebang-command [![Build Status](https://travis-ci.org/kevva/shebang-command.svg?branch=master)](https://travis-ci.org/kevva/shebang-command) + +> Get the command from a shebang + + +## Install + +``` +$ npm install shebang-command +``` + + +## Usage + +```js +const shebangCommand = require('shebang-command'); + +shebangCommand('#!/usr/bin/env node'); +//=> 'node' + +shebangCommand('#!/bin/bash'); +//=> 'bash' +``` + + +## API + +### shebangCommand(string) + +#### string + +Type: `string` + +String containing a shebang. diff --git a/mybulma/node_modules/shebang-regex/index.d.ts b/mybulma/node_modules/shebang-regex/index.d.ts new file mode 100644 index 0000000..61d034b --- /dev/null +++ b/mybulma/node_modules/shebang-regex/index.d.ts @@ -0,0 +1,22 @@ +/** +Regular expression for matching a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) line. + +@example +``` +import shebangRegex = require('shebang-regex'); + +const string = '#!/usr/bin/env node\nconsole.log("unicorns");'; + +shebangRegex.test(string); +//=> true + +shebangRegex.exec(string)[0]; +//=> '#!/usr/bin/env node' + +shebangRegex.exec(string)[1]; +//=> '/usr/bin/env node' +``` +*/ +declare const shebangRegex: RegExp; + +export = shebangRegex; diff --git a/mybulma/node_modules/shebang-regex/index.js b/mybulma/node_modules/shebang-regex/index.js new file mode 100644 index 0000000..63fc4a0 --- /dev/null +++ b/mybulma/node_modules/shebang-regex/index.js @@ -0,0 +1,2 @@ +'use strict'; +module.exports = /^#!(.*)/; diff --git a/mybulma/node_modules/shebang-regex/license b/mybulma/node_modules/shebang-regex/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/mybulma/node_modules/shebang-regex/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/shebang-regex/package.json b/mybulma/node_modules/shebang-regex/package.json new file mode 100644 index 0000000..00ab30f --- /dev/null +++ b/mybulma/node_modules/shebang-regex/package.json @@ -0,0 +1,35 @@ +{ + "name": "shebang-regex", + "version": "3.0.0", + "description": "Regular expression for matching a shebang line", + "license": "MIT", + "repository": "sindresorhus/shebang-regex", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "regex", + "regexp", + "shebang", + "match", + "test", + "line" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/mybulma/node_modules/shebang-regex/readme.md b/mybulma/node_modules/shebang-regex/readme.md new file mode 100644 index 0000000..5ecf863 --- /dev/null +++ b/mybulma/node_modules/shebang-regex/readme.md @@ -0,0 +1,33 @@ +# shebang-regex [![Build Status](https://travis-ci.org/sindresorhus/shebang-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/shebang-regex) + +> Regular expression for matching a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) line + + +## Install + +``` +$ npm install shebang-regex +``` + + +## Usage + +```js +const shebangRegex = require('shebang-regex'); + +const string = '#!/usr/bin/env node\nconsole.log("unicorns");'; + +shebangRegex.test(string); +//=> true + +shebangRegex.exec(string)[0]; +//=> '#!/usr/bin/env node' + +shebangRegex.exec(string)[1]; +//=> '/usr/bin/env node' +``` + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/mybulma/node_modules/smart-buffer/.prettierrc.yaml b/mybulma/node_modules/smart-buffer/.prettierrc.yaml new file mode 100644 index 0000000..9a4f5ed --- /dev/null +++ b/mybulma/node_modules/smart-buffer/.prettierrc.yaml @@ -0,0 +1,5 @@ +parser: typescript +printWidth: 120 +tabWidth: 2 +singleQuote: true +trailingComma: none \ No newline at end of file diff --git a/mybulma/node_modules/smart-buffer/.travis.yml b/mybulma/node_modules/smart-buffer/.travis.yml new file mode 100644 index 0000000..eec71ce --- /dev/null +++ b/mybulma/node_modules/smart-buffer/.travis.yml @@ -0,0 +1,13 @@ +language: node_js +node_js: + - 6 + - 8 + - 10 + - 12 + - stable + +before_script: + - npm install -g typescript + - tsc -p ./ + +script: "npm run coveralls" \ No newline at end of file diff --git a/mybulma/node_modules/smart-buffer/LICENSE b/mybulma/node_modules/smart-buffer/LICENSE new file mode 100644 index 0000000..aab5771 --- /dev/null +++ b/mybulma/node_modules/smart-buffer/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013-2017 Josh Glazebrook + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/smart-buffer/README.md b/mybulma/node_modules/smart-buffer/README.md new file mode 100644 index 0000000..6e49828 --- /dev/null +++ b/mybulma/node_modules/smart-buffer/README.md @@ -0,0 +1,633 @@ +smart-buffer [![Build Status](https://travis-ci.org/JoshGlazebrook/smart-buffer.svg?branch=master)](https://travis-ci.org/JoshGlazebrook/smart-buffer) [![Coverage Status](https://coveralls.io/repos/github/JoshGlazebrook/smart-buffer/badge.svg?branch=master)](https://coveralls.io/github/JoshGlazebrook/smart-buffer?branch=master) +============= + +smart-buffer is a Buffer wrapper that adds automatic read & write offset tracking, string operations, data insertions, and more. + +![stats](https://nodei.co/npm/smart-buffer.png?downloads=true&downloadRank=true&stars=true "stats") + +**Key Features**: +* Proxies all of the Buffer write and read functions +* Keeps track of read and write offsets automatically +* Grows the internal Buffer as needed +* Useful string operations. (Null terminating strings) +* Allows for inserting values at specific points in the Buffer +* Built in TypeScript +* Type Definitions Provided +* Browser Support (using Webpack/Browserify) +* Full test coverage + +**Requirements**: +* Node v4.0+ is supported at this time. (Versions prior to 2.0 will work on node 0.10) + + + +## Breaking Changes in v4.0 + +* Old constructor patterns have been completely removed. It's now required to use the SmartBuffer.fromXXX() factory constructors. +* rewind(), skip(), moveTo() have been removed. (see [offsets](#offsets)) +* Internal private properties are now prefixed with underscores (_) +* **All** writeXXX() methods that are given an offset will now **overwrite data** instead of insert. (see [write vs insert](#write-vs-insert)) +* insertXXX() methods have been added for when you want to insert data at a specific offset (this replaces the old behavior of writeXXX() when an offset was provided) + + +## Looking for v3 docs? + +Legacy documentation for version 3 and prior can be found [here](https://github.com/JoshGlazebrook/smart-buffer/blob/master/docs/README_v3.md). + +## Installing: + +`yarn add smart-buffer` + +or + +`npm install smart-buffer` + +Note: The published NPM package includes the built javascript library. +If you cloned this repo and wish to build the library manually use: + +`npm run build` + +## Using smart-buffer + +```javascript +// Javascript +const SmartBuffer = require('smart-buffer').SmartBuffer; + +// Typescript +import { SmartBuffer, SmartBufferOptions} from 'smart-buffer'; +``` + +### Simple Example + +Building a packet that uses the following protocol specification: + +`[PacketType:2][PacketLength:2][Data:XX]` + +To build this packet using the vanilla Buffer class, you would have to count up the length of the data payload beforehand. You would also need to keep track of the current "cursor" position in your Buffer so you write everything in the right places. With smart-buffer you don't have to do either of those things. + +```javascript +function createLoginPacket(username, password, age, country) { + const packet = new SmartBuffer(); + packet.writeUInt16LE(0x0060); // Some packet type + packet.writeStringNT(username); + packet.writeStringNT(password); + packet.writeUInt8(age); + packet.writeStringNT(country); + packet.insertUInt16LE(packet.length - 2, 2); + + return packet.toBuffer(); +} +``` +With the above function, you now can do this: +```javascript +const login = createLoginPacket("Josh", "secret123", 22, "United States"); + +// +``` +Notice that the `[PacketLength:2]` value (1e 00) was inserted at position 2. + +Reading back the packet we created above is just as easy: +```javascript + +const reader = SmartBuffer.fromBuffer(login); + +const logininfo = { + packetType: reader.readUInt16LE(), + packetLength: reader.readUInt16LE(), + username: reader.readStringNT(), + password: reader.readStringNT(), + age: reader.readUInt8(), + country: reader.readStringNT() +}; + +/* +{ + packetType: 96, (0x0060) + packetLength: 30, + username: 'Josh', + password: 'secret123', + age: 22, + country: 'United States' +} +*/ +``` + + +## Write vs Insert +In prior versions of SmartBuffer, .writeXXX(value, offset) calls would insert data when an offset was provided. In version 4, this will now overwrite the data at the offset position. To insert data there are now corresponding .insertXXX(value, offset) methods. + +**SmartBuffer v3**: +```javascript +const buff = SmartBuffer.fromBuffer(new Buffer([1,2,3,4,5,6])); +buff.writeInt8(7, 2); +console.log(buff.toBuffer()) + +// +``` + +**SmartBuffer v4**: +```javascript +const buff = SmartBuffer.fromBuffer(new Buffer([1,2,3,4,5,6])); +buff.writeInt8(7, 2); +console.log(buff.toBuffer()); + +// +``` + +To insert you instead should use: +```javascript +const buff = SmartBuffer.fromBuffer(new Buffer([1,2,3,4,5,6])); +buff.insertInt8(7, 2); +console.log(buff.toBuffer()); + +// +``` + +**Note:** Insert/Writing to a position beyond the currently tracked internal Buffer will zero pad to your offset. + +## Constructing a smart-buffer + +There are a few different ways to construct a SmartBuffer instance. + +```javascript +// Creating SmartBuffer from existing Buffer +const buff = SmartBuffer.fromBuffer(buffer); // Creates instance from buffer. (Uses default utf8 encoding) +const buff = SmartBuffer.fromBuffer(buffer, 'ascii'); // Creates instance from buffer with ascii encoding for strings. + +// Creating SmartBuffer with specified internal Buffer size. (Note: this is not a hard cap, the internal buffer will grow as needed). +const buff = SmartBuffer.fromSize(1024); // Creates instance with internal Buffer size of 1024. +const buff = SmartBuffer.fromSize(1024, 'utf8'); // Creates instance with internal Buffer size of 1024, and utf8 encoding for strings. + +// Creating SmartBuffer with options object. This one specifies size and encoding. +const buff = SmartBuffer.fromOptions({ + size: 1024, + encoding: 'ascii' +}); + +// Creating SmartBuffer with options object. This one specified an existing Buffer. +const buff = SmartBuffer.fromOptions({ + buff: buffer +}); + +// Creating SmartBuffer from a string. +const buff = SmartBuffer.fromBuffer(Buffer.from('some string', 'utf8')); + +// Just want a regular SmartBuffer with all default options? +const buff = new SmartBuffer(); +``` + +# Api Reference: + +**Note:** SmartBuffer is fully documented with Typescript definitions as well as jsdocs so your favorite editor/IDE will have intellisense. + +**Table of Contents** + +1. [Constructing](#constructing) +2. **Numbers** + 1. [Integers](#integers) + 2. [Floating Points](#floating-point-numbers) +3. **Strings** + 1. [Strings](#strings) + 2. [Null Terminated Strings](#null-terminated-strings) +4. [Buffers](#buffers) +5. [Offsets](#offsets) +6. [Other](#other) + + +## Constructing + +### constructor() +### constructor([options]) +- ```options``` *{SmartBufferOptions}* An optional options object to construct a SmartBuffer with. + +Examples: +```javascript +const buff = new SmartBuffer(); +const buff = new SmartBuffer({ + size: 1024, + encoding: 'ascii' +}); +``` + +### Class Method: fromBuffer(buffer[, encoding]) +- ```buffer``` *{Buffer}* The Buffer instance to wrap. +- ```encoding``` *{string}* The string encoding to use. ```Default: 'utf8'``` + +Examples: +```javascript +const someBuffer = Buffer.from('some string'); +const buff = SmartBuffer.fromBuffer(someBuffer); // Defaults to utf8 +const buff = SmartBuffer.fromBuffer(someBuffer, 'ascii'); +``` + +### Class Method: fromSize(size[, encoding]) +- ```size``` *{number}* The size to initialize the internal Buffer. +- ```encoding``` *{string}* The string encoding to use. ```Default: 'utf8'``` + +Examples: +```javascript +const buff = SmartBuffer.fromSize(1024); // Defaults to utf8 +const buff = SmartBuffer.fromSize(1024, 'ascii'); +``` + +### Class Method: fromOptions(options) +- ```options``` *{SmartBufferOptions}* The Buffer instance to wrap. + +```typescript +interface SmartBufferOptions { + encoding?: BufferEncoding; // Defaults to utf8 + size?: number; // Defaults to 4096 + buff?: Buffer; +} +``` + +Examples: +```javascript +const buff = SmartBuffer.fromOptions({ + size: 1024 +}; +const buff = SmartBuffer.fromOptions({ + size: 1024, + encoding: 'utf8' +}); +const buff = SmartBuffer.fromOptions({ + encoding: 'utf8' +}); + +const someBuff = Buffer.from('some string', 'utf8'); +const buff = SmartBuffer.fromOptions({ + buffer: someBuff, + encoding: 'utf8' +}); +``` + +## Integers + +### buff.readInt8([offset]) +### buff.readUInt8([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a Int8 value. + +### buff.readInt16BE([offset]) +### buff.readInt16LE([offset]) +### buff.readUInt16BE([offset]) +### buff.readUInt16LE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a 16 bit integer value. + +### buff.readInt32BE([offset]) +### buff.readInt32LE([offset]) +### buff.readUInt32BE([offset]) +### buff.readUInt32LE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a 32 bit integer value. + + +### buff.writeInt8(value[, offset]) +### buff.writeUInt8(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a Int8 value. + +### buff.insertInt8(value, offset) +### buff.insertUInt8(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a Int8 value. + + +### buff.writeInt16BE(value[, offset]) +### buff.writeInt16LE(value[, offset]) +### buff.writeUInt16BE(value[, offset]) +### buff.writeUInt16LE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a 16 bit integer value. + +### buff.insertInt16BE(value, offset) +### buff.insertInt16LE(value, offset) +### buff.insertUInt16BE(value, offset) +### buff.insertUInt16LE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a 16 bit integer value. + + +### buff.writeInt32BE(value[, offset]) +### buff.writeInt32LE(value[, offset]) +### buff.writeUInt32BE(value[, offset]) +### buff.writeUInt32LE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a 32 bit integer value. + +### buff.insertInt32BE(value, offset) +### buff.insertInt32LE(value, offset) +### buff.insertUInt32BE(value, offset) +### buff.nsertUInt32LE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a 32 bit integer value. + + +## Floating Point Numbers + +### buff.readFloatBE([offset]) +### buff.readFloatLE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a Float value. + +### buff.readDoubleBE([offset]) +### buff.readDoubleLE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a Double value. + + +### buff.writeFloatBE(value[, offset]) +### buff.writeFloatLE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a Float value. + +### buff.insertFloatBE(value, offset) +### buff.insertFloatLE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a Float value. + + +### buff.writeDoubleBE(value[, offset]) +### buff.writeDoubleLE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a Double value. + +### buff.insertDoubleBE(value, offset) +### buff.insertDoubleLE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a Double value. + +## Strings + +### buff.readString() +### buff.readString(size[, encoding]) +### buff.readString(encoding) +- ```size``` *{number}* The number of bytes to read. **Default:** ```Reads to the end of the Buffer.``` +- ```encoding``` *{string}* The string encoding to use. **Default:** ```utf8```. + +Read a string value. + +Examples: +```javascript +const buff = SmartBuffer.fromBuffer(Buffer.from('hello there', 'utf8')); +buff.readString(); // 'hello there' +buff.readString(2); // 'he' +buff.readString(2, 'utf8'); // 'he' +buff.readString('utf8'); // 'hello there' +``` + +### buff.writeString(value) +### buff.writeString(value[, offset]) +### buff.writeString(value[, encoding]) +### buff.writeString(value[, offset[, encoding]]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. **Default:** ```Auto managed offset``` +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Write a string value. + +Examples: +```javascript +buff.writeString('hello'); // Auto managed offset +buff.writeString('hello', 2); +buff.writeString('hello', 'utf8') // Auto managed offset +buff.writeString('hello', 2, 'utf8'); +``` + +### buff.insertString(value, offset[, encoding]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Insert a string value. + +Examples: +```javascript +buff.insertString('hello', 2); +buff.insertString('hello', 2, 'utf8'); +``` + +## Null Terminated Strings + +### buff.readStringNT() +### buff.readStringNT(encoding) +- ```encoding``` *{string}* The string encoding to use. **Default:** ```utf8```. + +Read a null terminated string value. (If a null is not found, it will read to the end of the Buffer). + +Examples: +```javascript +const buff = SmartBuffer.fromBuffer(Buffer.from('hello\0 there', 'utf8')); +buff.readStringNT(); // 'hello' + +// If we called this again: +buff.readStringNT(); // ' there' +``` + +### buff.writeStringNT(value) +### buff.writeStringNT(value[, offset]) +### buff.writeStringNT(value[, encoding]) +### buff.writeStringNT(value[, offset[, encoding]]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. **Default:** ```Auto managed offset``` +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Write a null terminated string value. + +Examples: +```javascript +buff.writeStringNT('hello'); // Auto managed offset +buff.writeStringNT('hello', 2); // +buff.writeStringNT('hello', 'utf8') // Auto managed offset +buff.writeStringNT('hello', 2, 'utf8'); +``` + +### buff.insertStringNT(value, offset[, encoding]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Insert a null terminated string value. + +Examples: +```javascript +buff.insertStringNT('hello', 2); +buff.insertStringNT('hello', 2, 'utf8'); +``` + +## Buffers + +### buff.readBuffer([length]) +- ```length``` *{number}* The number of bytes to read into a Buffer. **Default:** ```Reads to the end of the Buffer``` + +Read a Buffer of a specified size. + +### buff.writeBuffer(value[, offset]) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* An optional offset to write the value to. **Default:** ```Auto managed offset``` + +### buff.insertBuffer(value, offset) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* The offset to write the value to. + + +### buff.readBufferNT() + +Read a null terminated Buffer. + +### buff.writeBufferNT(value[, offset]) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* An optional offset to write the value to. **Default:** ```Auto managed offset``` + +Write a null terminated Buffer. + + +### buff.insertBufferNT(value, offset) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* The offset to write the value to. + +Insert a null terminated Buffer. + + +## Offsets + +### buff.readOffset +### buff.readOffset(offset) +- ```offset``` *{number}* The new read offset value to set. +- Returns: ```The current read offset``` + +Gets or sets the current read offset. + +Examples: +```javascript +const currentOffset = buff.readOffset; // 5 + +buff.readOffset = 10; + +console.log(buff.readOffset) // 10 +``` + +### buff.writeOffset +### buff.writeOffset(offset) +- ```offset``` *{number}* The new write offset value to set. +- Returns: ```The current write offset``` + +Gets or sets the current write offset. + +Examples: +```javascript +const currentOffset = buff.writeOffset; // 5 + +buff.writeOffset = 10; + +console.log(buff.writeOffset) // 10 +``` + +### buff.encoding +### buff.encoding(encoding) +- ```encoding``` *{string}* The new string encoding to set. +- Returns: ```The current string encoding``` + +Gets or sets the current string encoding. + +Examples: +```javascript +const currentEncoding = buff.encoding; // 'utf8' + +buff.encoding = 'ascii'; + +console.log(buff.encoding) // 'ascii' +``` + +## Other + +### buff.clear() + +Clear and resets the SmartBuffer instance. + +### buff.remaining() +- Returns ```Remaining data left to be read``` + +Gets the number of remaining bytes to be read. + + +### buff.internalBuffer +- Returns: *{Buffer}* + +Gets the internally managed Buffer (Includes unmanaged data). + +Examples: +```javascript +const buff = SmartBuffer.fromSize(16); +buff.writeString('hello'); +console.log(buff.InternalBuffer); // +``` + +### buff.toBuffer() +- Returns: *{Buffer}* + +Gets a sliced Buffer instance of the internally managed Buffer. (Only includes managed data) + +Examples: +```javascript +const buff = SmartBuffer.fromSize(16); +buff.writeString('hello'); +console.log(buff.toBuffer()); // +``` + +### buff.toString([encoding]) +- ```encoding``` *{string}* The string encoding to use when converting to a string. **Default:** ```utf8``` +- Returns *{string}* + +Gets a string representation of all data in the SmartBuffer. + +### buff.destroy() + +Destroys the SmartBuffer instance. + + + +## License + +This work is licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License). diff --git a/mybulma/node_modules/smart-buffer/build/smartbuffer.js b/mybulma/node_modules/smart-buffer/build/smartbuffer.js new file mode 100644 index 0000000..5353ae1 --- /dev/null +++ b/mybulma/node_modules/smart-buffer/build/smartbuffer.js @@ -0,0 +1,1233 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils_1 = require("./utils"); +// The default Buffer size if one is not provided. +const DEFAULT_SMARTBUFFER_SIZE = 4096; +// The default string encoding to use for reading/writing strings. +const DEFAULT_SMARTBUFFER_ENCODING = 'utf8'; +class SmartBuffer { + /** + * Creates a new SmartBuffer instance. + * + * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance. + */ + constructor(options) { + this.length = 0; + this._encoding = DEFAULT_SMARTBUFFER_ENCODING; + this._writeOffset = 0; + this._readOffset = 0; + if (SmartBuffer.isSmartBufferOptions(options)) { + // Checks for encoding + if (options.encoding) { + utils_1.checkEncoding(options.encoding); + this._encoding = options.encoding; + } + // Checks for initial size length + if (options.size) { + if (utils_1.isFiniteInteger(options.size) && options.size > 0) { + this._buff = Buffer.allocUnsafe(options.size); + } + else { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_SIZE); + } + // Check for initial Buffer + } + else if (options.buff) { + if (Buffer.isBuffer(options.buff)) { + this._buff = options.buff; + this.length = options.buff.length; + } + else { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_BUFFER); + } + } + else { + this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); + } + } + else { + // If something was passed but it's not a SmartBufferOptions object + if (typeof options !== 'undefined') { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_OBJECT); + } + // Otherwise default to sane options + this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); + } + } + /** + * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding. + * + * @param size { Number } The size of the internal Buffer. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromSize(size, encoding) { + return new this({ + size: size, + encoding: encoding + }); + } + /** + * Creates a new SmartBuffer instance with the provided Buffer and optional encoding. + * + * @param buffer { Buffer } The Buffer to use as the internal Buffer value. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromBuffer(buff, encoding) { + return new this({ + buff: buff, + encoding: encoding + }); + } + /** + * Creates a new SmartBuffer instance with the provided SmartBufferOptions options. + * + * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance. + */ + static fromOptions(options) { + return new this(options); + } + /** + * Type checking function that determines if an object is a SmartBufferOptions object. + */ + static isSmartBufferOptions(options) { + const castOptions = options; + return (castOptions && + (castOptions.encoding !== undefined || castOptions.size !== undefined || castOptions.buff !== undefined)); + } + // Signed integers + /** + * Reads an Int8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt8(offset) { + return this._readNumberValue(Buffer.prototype.readInt8, 1, offset); + } + /** + * Reads an Int16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16BE(offset) { + return this._readNumberValue(Buffer.prototype.readInt16BE, 2, offset); + } + /** + * Reads an Int16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16LE(offset) { + return this._readNumberValue(Buffer.prototype.readInt16LE, 2, offset); + } + /** + * Reads an Int32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32BE(offset) { + return this._readNumberValue(Buffer.prototype.readInt32BE, 4, offset); + } + /** + * Reads an Int32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32LE(offset) { + return this._readNumberValue(Buffer.prototype.readInt32LE, 4, offset); + } + /** + * Reads a BigInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64BE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigInt64BE'); + return this._readNumberValue(Buffer.prototype.readBigInt64BE, 8, offset); + } + /** + * Reads a BigInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64LE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigInt64LE'); + return this._readNumberValue(Buffer.prototype.readBigInt64LE, 8, offset); + } + /** + * Writes an Int8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt8(value, offset) { + this._writeNumberValue(Buffer.prototype.writeInt8, 1, value, offset); + return this; + } + /** + * Inserts an Int8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt8(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt8, 1, value, offset); + } + /** + * Writes an Int16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); + } + /** + * Inserts an Int16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); + } + /** + * Writes an Int16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); + } + /** + * Inserts an Int16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); + } + /** + * Writes an Int32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); + } + /** + * Inserts an Int32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); + } + /** + * Writes an Int32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); + } + /** + * Inserts an Int32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); + } + /** + * Writes a BigInt64BE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64BE'); + return this._writeNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); + } + /** + * Inserts a BigInt64BE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64BE'); + return this._insertNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); + } + /** + * Writes a BigInt64LE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64LE'); + return this._writeNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); + } + /** + * Inserts a Int64LE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64LE'); + return this._insertNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); + } + // Unsigned Integers + /** + * Reads an UInt8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt8(offset) { + return this._readNumberValue(Buffer.prototype.readUInt8, 1, offset); + } + /** + * Reads an UInt16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16BE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt16BE, 2, offset); + } + /** + * Reads an UInt16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16LE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt16LE, 2, offset); + } + /** + * Reads an UInt32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32BE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt32BE, 4, offset); + } + /** + * Reads an UInt32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32LE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt32LE, 4, offset); + } + /** + * Reads a BigUInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64BE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigUInt64BE'); + return this._readNumberValue(Buffer.prototype.readBigUInt64BE, 8, offset); + } + /** + * Reads a BigUInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64LE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigUInt64LE'); + return this._readNumberValue(Buffer.prototype.readBigUInt64LE, 8, offset); + } + /** + * Writes an UInt8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt8(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); + } + /** + * Inserts an UInt8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt8(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); + } + /** + * Writes an UInt16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); + } + /** + * Inserts an UInt16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); + } + /** + * Writes an UInt16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); + } + /** + * Inserts an UInt16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); + } + /** + * Writes an UInt32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); + } + /** + * Inserts an UInt32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); + } + /** + * Writes an UInt32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); + } + /** + * Inserts an UInt32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); + } + /** + * Writes a BigUInt64BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64BE'); + return this._writeNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); + } + /** + * Inserts a BigUInt64BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64BE'); + return this._insertNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); + } + /** + * Writes a BigUInt64LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64LE'); + return this._writeNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); + } + /** + * Inserts a BigUInt64LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64LE'); + return this._insertNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); + } + // Floating Point + /** + * Reads an FloatBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatBE(offset) { + return this._readNumberValue(Buffer.prototype.readFloatBE, 4, offset); + } + /** + * Reads an FloatLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatLE(offset) { + return this._readNumberValue(Buffer.prototype.readFloatLE, 4, offset); + } + /** + * Writes a FloatBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatBE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); + } + /** + * Inserts a FloatBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatBE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); + } + /** + * Writes a FloatLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatLE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); + } + /** + * Inserts a FloatLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatLE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); + } + // Double Floating Point + /** + * Reads an DoublEBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleBE(offset) { + return this._readNumberValue(Buffer.prototype.readDoubleBE, 8, offset); + } + /** + * Reads an DoubleLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleLE(offset) { + return this._readNumberValue(Buffer.prototype.readDoubleLE, 8, offset); + } + /** + * Writes a DoubleBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleBE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); + } + /** + * Inserts a DoubleBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleBE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); + } + /** + * Writes a DoubleLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleLE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); + } + /** + * Inserts a DoubleLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleLE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); + } + // Strings + /** + * Reads a String from the current read position. + * + * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for + * the string (Defaults to instance level encoding). + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readString(arg1, encoding) { + let lengthVal; + // Length provided + if (typeof arg1 === 'number') { + utils_1.checkLengthValue(arg1); + lengthVal = Math.min(arg1, this.length - this._readOffset); + } + else { + encoding = arg1; + lengthVal = this.length - this._readOffset; + } + // Check encoding + if (typeof encoding !== 'undefined') { + utils_1.checkEncoding(encoding); + } + const value = this._buff.slice(this._readOffset, this._readOffset + lengthVal).toString(encoding || this._encoding); + this._readOffset += lengthVal; + return value; + } + /** + * Inserts a String + * + * @param value { String } The String value to insert. + * @param offset { Number } The offset to insert the string at. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertString(value, offset, encoding) { + utils_1.checkOffsetValue(offset); + return this._handleString(value, true, offset, encoding); + } + /** + * Writes a String + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeString(value, arg2, encoding) { + return this._handleString(value, false, arg2, encoding); + } + /** + * Reads a null-terminated String from the current read position. + * + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readStringNT(encoding) { + if (typeof encoding !== 'undefined') { + utils_1.checkEncoding(encoding); + } + // Set null character position to the end SmartBuffer instance. + let nullPos = this.length; + // Find next null character (if one is not found, default from above is used) + for (let i = this._readOffset; i < this.length; i++) { + if (this._buff[i] === 0x00) { + nullPos = i; + break; + } + } + // Read string value + const value = this._buff.slice(this._readOffset, nullPos); + // Increment internal Buffer read offset + this._readOffset = nullPos + 1; + return value.toString(encoding || this._encoding); + } + /** + * Inserts a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertStringNT(value, offset, encoding) { + utils_1.checkOffsetValue(offset); + // Write Values + this.insertString(value, offset, encoding); + this.insertUInt8(0x00, offset + value.length); + return this; + } + /** + * Writes a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeStringNT(value, arg2, encoding) { + // Write Values + this.writeString(value, arg2, encoding); + this.writeUInt8(0x00, typeof arg2 === 'number' ? arg2 + value.length : this.writeOffset); + return this; + } + // Buffers + /** + * Reads a Buffer from the internal read position. + * + * @param length { Number } The length of data to read as a Buffer. + * + * @return { Buffer } + */ + readBuffer(length) { + if (typeof length !== 'undefined') { + utils_1.checkLengthValue(length); + } + const lengthVal = typeof length === 'number' ? length : this.length; + const endPoint = Math.min(this.length, this._readOffset + lengthVal); + // Read buffer value + const value = this._buff.slice(this._readOffset, endPoint); + // Increment internal Buffer read offset + this._readOffset = endPoint; + return value; + } + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBuffer(value, offset) { + utils_1.checkOffsetValue(offset); + return this._handleBuffer(value, true, offset); + } + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBuffer(value, offset) { + return this._handleBuffer(value, false, offset); + } + /** + * Reads a null-terminated Buffer from the current read poisiton. + * + * @return { Buffer } + */ + readBufferNT() { + // Set null character position to the end SmartBuffer instance. + let nullPos = this.length; + // Find next null character (if one is not found, default from above is used) + for (let i = this._readOffset; i < this.length; i++) { + if (this._buff[i] === 0x00) { + nullPos = i; + break; + } + } + // Read value + const value = this._buff.slice(this._readOffset, nullPos); + // Increment internal Buffer read offset + this._readOffset = nullPos + 1; + return value; + } + /** + * Inserts a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBufferNT(value, offset) { + utils_1.checkOffsetValue(offset); + // Write Values + this.insertBuffer(value, offset); + this.insertUInt8(0x00, offset + value.length); + return this; + } + /** + * Writes a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBufferNT(value, offset) { + // Checks for valid numberic value; + if (typeof offset !== 'undefined') { + utils_1.checkOffsetValue(offset); + } + // Write Values + this.writeBuffer(value, offset); + this.writeUInt8(0x00, typeof offset === 'number' ? offset + value.length : this._writeOffset); + return this; + } + /** + * Clears the SmartBuffer instance to its original empty state. + */ + clear() { + this._writeOffset = 0; + this._readOffset = 0; + this.length = 0; + return this; + } + /** + * Gets the remaining data left to be read from the SmartBuffer instance. + * + * @return { Number } + */ + remaining() { + return this.length - this._readOffset; + } + /** + * Gets the current read offset value of the SmartBuffer instance. + * + * @return { Number } + */ + get readOffset() { + return this._readOffset; + } + /** + * Sets the read offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + set readOffset(offset) { + utils_1.checkOffsetValue(offset); + // Check for bounds. + utils_1.checkTargetOffset(offset, this); + this._readOffset = offset; + } + /** + * Gets the current write offset value of the SmartBuffer instance. + * + * @return { Number } + */ + get writeOffset() { + return this._writeOffset; + } + /** + * Sets the write offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + set writeOffset(offset) { + utils_1.checkOffsetValue(offset); + // Check for bounds. + utils_1.checkTargetOffset(offset, this); + this._writeOffset = offset; + } + /** + * Gets the currently set string encoding of the SmartBuffer instance. + * + * @return { BufferEncoding } The string Buffer encoding currently set. + */ + get encoding() { + return this._encoding; + } + /** + * Sets the string encoding of the SmartBuffer instance. + * + * @param encoding { BufferEncoding } The string Buffer encoding to set. + */ + set encoding(encoding) { + utils_1.checkEncoding(encoding); + this._encoding = encoding; + } + /** + * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer) + * + * @return { Buffer } The Buffer value. + */ + get internalBuffer() { + return this._buff; + } + /** + * Gets the value of the internal managed Buffer (Includes managed data only) + * + * @param { Buffer } + */ + toBuffer() { + return this._buff.slice(0, this.length); + } + /** + * Gets the String value of the internal managed Buffer + * + * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding). + */ + toString(encoding) { + const encodingVal = typeof encoding === 'string' ? encoding : this._encoding; + // Check for invalid encoding. + utils_1.checkEncoding(encodingVal); + return this._buff.toString(encodingVal, 0, this.length); + } + /** + * Destroys the SmartBuffer instance. + */ + destroy() { + this.clear(); + return this; + } + /** + * Handles inserting and writing strings. + * + * @param value { String } The String value to insert. + * @param isInsert { Boolean } True if inserting a string, false if writing. + * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + */ + _handleString(value, isInsert, arg3, encoding) { + let offsetVal = this._writeOffset; + let encodingVal = this._encoding; + // Check for offset + if (typeof arg3 === 'number') { + offsetVal = arg3; + // Check for encoding + } + else if (typeof arg3 === 'string') { + utils_1.checkEncoding(arg3); + encodingVal = arg3; + } + // Check for encoding (third param) + if (typeof encoding === 'string') { + utils_1.checkEncoding(encoding); + encodingVal = encoding; + } + // Calculate bytelength of string. + const byteLength = Buffer.byteLength(value, encodingVal); + // Ensure there is enough internal Buffer capacity. + if (isInsert) { + this.ensureInsertable(byteLength, offsetVal); + } + else { + this._ensureWriteable(byteLength, offsetVal); + } + // Write value + this._buff.write(value, offsetVal, byteLength, encodingVal); + // Increment internal Buffer write offset; + if (isInsert) { + this._writeOffset += byteLength; + } + else { + // If an offset was given, check to see if we wrote beyond the current writeOffset. + if (typeof arg3 === 'number') { + this._writeOffset = Math.max(this._writeOffset, offsetVal + byteLength); + } + else { + // If no offset was given, we wrote to the end of the SmartBuffer so increment writeOffset. + this._writeOffset += byteLength; + } + } + return this; + } + /** + * Handles writing or insert of a Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + */ + _handleBuffer(value, isInsert, offset) { + const offsetVal = typeof offset === 'number' ? offset : this._writeOffset; + // Ensure there is enough internal Buffer capacity. + if (isInsert) { + this.ensureInsertable(value.length, offsetVal); + } + else { + this._ensureWriteable(value.length, offsetVal); + } + // Write buffer value + value.copy(this._buff, offsetVal); + // Increment internal Buffer write offset; + if (isInsert) { + this._writeOffset += value.length; + } + else { + // If an offset was given, check to see if we wrote beyond the current writeOffset. + if (typeof offset === 'number') { + this._writeOffset = Math.max(this._writeOffset, offsetVal + value.length); + } + else { + // If no offset was given, we wrote to the end of the SmartBuffer so increment writeOffset. + this._writeOffset += value.length; + } + } + return this; + } + /** + * Ensures that the internal Buffer is large enough to read data. + * + * @param length { Number } The length of the data that needs to be read. + * @param offset { Number } The offset of the data that needs to be read. + */ + ensureReadable(length, offset) { + // Offset value defaults to managed read offset. + let offsetVal = this._readOffset; + // If an offset was provided, use it. + if (typeof offset !== 'undefined') { + // Checks for valid numberic value; + utils_1.checkOffsetValue(offset); + // Overide with custom offset. + offsetVal = offset; + } + // Checks if offset is below zero, or the offset+length offset is beyond the total length of the managed data. + if (offsetVal < 0 || offsetVal + length > this.length) { + throw new Error(utils_1.ERRORS.INVALID_READ_BEYOND_BOUNDS); + } + } + /** + * Ensures that the internal Buffer is large enough to insert data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written. + */ + ensureInsertable(dataLength, offset) { + // Checks for valid numberic value; + utils_1.checkOffsetValue(offset); + // Ensure there is enough internal Buffer capacity. + this._ensureCapacity(this.length + dataLength); + // If an offset was provided and its not the very end of the buffer, copy data into appropriate location in regards to the offset. + if (offset < this.length) { + this._buff.copy(this._buff, offset + dataLength, offset, this._buff.length); + } + // Adjust tracked smart buffer length + if (offset + dataLength > this.length) { + this.length = offset + dataLength; + } + else { + this.length += dataLength; + } + } + /** + * Ensures that the internal Buffer is large enough to write data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written (defaults to writeOffset). + */ + _ensureWriteable(dataLength, offset) { + const offsetVal = typeof offset === 'number' ? offset : this._writeOffset; + // Ensure enough capacity to write data. + this._ensureCapacity(offsetVal + dataLength); + // Adjust SmartBuffer length (if offset + length is larger than managed length, adjust length) + if (offsetVal + dataLength > this.length) { + this.length = offsetVal + dataLength; + } + } + /** + * Ensures that the internal Buffer is large enough to write at least the given amount of data. + * + * @param minLength { Number } The minimum length of the data needs to be written. + */ + _ensureCapacity(minLength) { + const oldLength = this._buff.length; + if (minLength > oldLength) { + let data = this._buff; + let newLength = (oldLength * 3) / 2 + 1; + if (newLength < minLength) { + newLength = minLength; + } + this._buff = Buffer.allocUnsafe(newLength); + data.copy(this._buff, 0, 0, oldLength); + } + } + /** + * Reads a numeric number value using the provided function. + * + * @typeparam T { number | bigint } The type of the value to be read + * + * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with. + * @param byteSize { Number } The number of bytes read. + * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead. + * + * @returns { T } the number value + */ + _readNumberValue(func, byteSize, offset) { + this.ensureReadable(byteSize, offset); + // Call Buffer.readXXXX(); + const value = func.call(this._buff, typeof offset === 'number' ? offset : this._readOffset); + // Adjust internal read offset if an optional read offset was not provided. + if (typeof offset === 'undefined') { + this._readOffset += byteSize; + } + return value; + } + /** + * Inserts a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + _insertNumberValue(func, byteSize, value, offset) { + // Check for invalid offset values. + utils_1.checkOffsetValue(offset); + // Ensure there is enough internal Buffer capacity. (raw offset is passed) + this.ensureInsertable(byteSize, offset); + // Call buffer.writeXXXX(); + func.call(this._buff, value, offset); + // Adjusts internally managed write offset. + this._writeOffset += byteSize; + return this; + } + /** + * Writes a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + _writeNumberValue(func, byteSize, value, offset) { + // If an offset was provided, validate it. + if (typeof offset === 'number') { + // Check if we're writing beyond the bounds of the managed data. + if (offset < 0) { + throw new Error(utils_1.ERRORS.INVALID_WRITE_BEYOND_BOUNDS); + } + utils_1.checkOffsetValue(offset); + } + // Default to writeOffset if no offset value was given. + const offsetVal = typeof offset === 'number' ? offset : this._writeOffset; + // Ensure there is enough internal Buffer capacity. (raw offset is passed) + this._ensureWriteable(byteSize, offsetVal); + func.call(this._buff, value, offsetVal); + // If an offset was given, check to see if we wrote beyond the current writeOffset. + if (typeof offset === 'number') { + this._writeOffset = Math.max(this._writeOffset, offsetVal + byteSize); + } + else { + // If no numeric offset was given, we wrote to the end of the SmartBuffer so increment writeOffset. + this._writeOffset += byteSize; + } + return this; + } +} +exports.SmartBuffer = SmartBuffer; +//# sourceMappingURL=smartbuffer.js.map \ No newline at end of file diff --git a/mybulma/node_modules/smart-buffer/build/smartbuffer.js.map b/mybulma/node_modules/smart-buffer/build/smartbuffer.js.map new file mode 100644 index 0000000..37f0d6e --- /dev/null +++ b/mybulma/node_modules/smart-buffer/build/smartbuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"smartbuffer.js","sourceRoot":"","sources":["../src/smartbuffer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/mybulma/node_modules/smart-buffer/build/utils.js b/mybulma/node_modules/smart-buffer/build/utils.js new file mode 100644 index 0000000..6d55981 --- /dev/null +++ b/mybulma/node_modules/smart-buffer/build/utils.js @@ -0,0 +1,108 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const buffer_1 = require("buffer"); +/** + * Error strings + */ +const ERRORS = { + INVALID_ENCODING: 'Invalid encoding provided. Please specify a valid encoding the internal Node.js Buffer supports.', + INVALID_SMARTBUFFER_SIZE: 'Invalid size provided. Size must be a valid integer greater than zero.', + INVALID_SMARTBUFFER_BUFFER: 'Invalid Buffer provided in SmartBufferOptions.', + INVALID_SMARTBUFFER_OBJECT: 'Invalid SmartBufferOptions object supplied to SmartBuffer constructor or factory methods.', + INVALID_OFFSET: 'An invalid offset value was provided.', + INVALID_OFFSET_NON_NUMBER: 'An invalid offset value was provided. A numeric value is required.', + INVALID_LENGTH: 'An invalid length value was provided.', + INVALID_LENGTH_NON_NUMBER: 'An invalid length value was provived. A numeric value is required.', + INVALID_TARGET_OFFSET: 'Target offset is beyond the bounds of the internal SmartBuffer data.', + INVALID_TARGET_LENGTH: 'Specified length value moves cursor beyong the bounds of the internal SmartBuffer data.', + INVALID_READ_BEYOND_BOUNDS: 'Attempted to read beyond the bounds of the managed data.', + INVALID_WRITE_BEYOND_BOUNDS: 'Attempted to write beyond the bounds of the managed data.' +}; +exports.ERRORS = ERRORS; +/** + * Checks if a given encoding is a valid Buffer encoding. (Throws an exception if check fails) + * + * @param { String } encoding The encoding string to check. + */ +function checkEncoding(encoding) { + if (!buffer_1.Buffer.isEncoding(encoding)) { + throw new Error(ERRORS.INVALID_ENCODING); + } +} +exports.checkEncoding = checkEncoding; +/** + * Checks if a given number is a finite integer. (Throws an exception if check fails) + * + * @param { Number } value The number value to check. + */ +function isFiniteInteger(value) { + return typeof value === 'number' && isFinite(value) && isInteger(value); +} +exports.isFiniteInteger = isFiniteInteger; +/** + * Checks if an offset/length value is valid. (Throws an exception if check fails) + * + * @param value The value to check. + * @param offset True if checking an offset, false if checking a length. + */ +function checkOffsetOrLengthValue(value, offset) { + if (typeof value === 'number') { + // Check for non finite/non integers + if (!isFiniteInteger(value) || value < 0) { + throw new Error(offset ? ERRORS.INVALID_OFFSET : ERRORS.INVALID_LENGTH); + } + } + else { + throw new Error(offset ? ERRORS.INVALID_OFFSET_NON_NUMBER : ERRORS.INVALID_LENGTH_NON_NUMBER); + } +} +/** + * Checks if a length value is valid. (Throws an exception if check fails) + * + * @param { Number } length The value to check. + */ +function checkLengthValue(length) { + checkOffsetOrLengthValue(length, false); +} +exports.checkLengthValue = checkLengthValue; +/** + * Checks if a offset value is valid. (Throws an exception if check fails) + * + * @param { Number } offset The value to check. + */ +function checkOffsetValue(offset) { + checkOffsetOrLengthValue(offset, true); +} +exports.checkOffsetValue = checkOffsetValue; +/** + * Checks if a target offset value is out of bounds. (Throws an exception if check fails) + * + * @param { Number } offset The offset value to check. + * @param { SmartBuffer } buff The SmartBuffer instance to check against. + */ +function checkTargetOffset(offset, buff) { + if (offset < 0 || offset > buff.length) { + throw new Error(ERRORS.INVALID_TARGET_OFFSET); + } +} +exports.checkTargetOffset = checkTargetOffset; +/** + * Determines whether a given number is a integer. + * @param value The number to check. + */ +function isInteger(value) { + return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; +} +/** + * Throws if Node.js version is too low to support bigint + */ +function bigIntAndBufferInt64Check(bufferMethod) { + if (typeof BigInt === 'undefined') { + throw new Error('Platform does not support JS BigInt type.'); + } + if (typeof buffer_1.Buffer.prototype[bufferMethod] === 'undefined') { + throw new Error(`Platform does not support Buffer.prototype.${bufferMethod}.`); + } +} +exports.bigIntAndBufferInt64Check = bigIntAndBufferInt64Check; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/mybulma/node_modules/smart-buffer/build/utils.js.map b/mybulma/node_modules/smart-buffer/build/utils.js.map new file mode 100644 index 0000000..fc7388d --- /dev/null +++ b/mybulma/node_modules/smart-buffer/build/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AACA,mCAAgC;AAEhC;;GAEG;AACH,MAAM,MAAM,GAAG;IACb,gBAAgB,EAAE,kGAAkG;IACpH,wBAAwB,EAAE,wEAAwE;IAClG,0BAA0B,EAAE,gDAAgD;IAC5E,0BAA0B,EAAE,2FAA2F;IACvH,cAAc,EAAE,uCAAuC;IACvD,yBAAyB,EAAE,oEAAoE;IAC/F,cAAc,EAAE,uCAAuC;IACvD,yBAAyB,EAAE,oEAAoE;IAC/F,qBAAqB,EAAE,sEAAsE;IAC7F,qBAAqB,EAAE,yFAAyF;IAChH,0BAA0B,EAAE,0DAA0D;IACtF,2BAA2B,EAAE,2DAA2D;CACzF,CAAC;AAuGA,wBAAM;AArGR;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAwB;IAC7C,IAAI,CAAC,eAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAC1C;AACH,CAAC;AA4F0B,sCAAa;AA1FxC;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAmFS,0CAAe;AAjFzB;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAAU,EAAE,MAAe;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,oCAAoC;QACpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;SACzE;KACF;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;KAC/F;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAW;IACnC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AA0DC,4CAAgB;AAxDlB;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAW;IACnC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAgDyC,4CAAgB;AA9C1D;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,IAAiB;IAC1D,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;KAC/C;AACH,CAAC;AAqCmB,8CAAiB;AAnCrC;;;GAGG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACrF,CAAC;AAcD;;GAEG;AACH,SAAS,yBAAyB,CAAC,YAA0B;IAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,IAAI,OAAO,eAAM,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,WAAW,EAAE;QACzD,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,GAAG,CAAC,CAAC;KAChF;AACH,CAAC;AAIsC,8DAAyB"} \ No newline at end of file diff --git a/mybulma/node_modules/smart-buffer/docs/CHANGELOG.md b/mybulma/node_modules/smart-buffer/docs/CHANGELOG.md new file mode 100644 index 0000000..1199a4d --- /dev/null +++ b/mybulma/node_modules/smart-buffer/docs/CHANGELOG.md @@ -0,0 +1,70 @@ +# Change Log +## 4.1.0 +> Released 07/24/2019 +* Adds int64 support for node v12+ +* Drops support for node v4 + +## 4.0 +> Released 10/21/2017 +* Major breaking changes arriving in v4. + +### New Features +* Ability to read data from a specific offset. ex: readInt8(5) +* Ability to write over data when an offset is given (see breaking changes) ex: writeInt8(5, 0); +* Ability to set internal read and write offsets. + + + +### Breaking Changes + +* Old constructor patterns have been completely removed. It's now required to use the SmartBuffer.fromXXX() factory constructors. Read more on the v4 docs. +* rewind(), skip(), moveTo() have been removed. +* Internal private properties are now prefixed with underscores (_). +* **All** writeXXX() methods that are given an offset will now **overwrite data** instead of insert +* insertXXX() methods have been added for when you want to insert data at a specific offset (this replaces the old behavior of writeXXX() when an offset was provided) + + +### Other Changes +* Standardizd error messaging +* Standardized offset/length bounds and sanity checking +* General overall cleanup of code. + +## 3.0.3 +> Released 02/19/2017 +* Adds missing type definitions for some internal functions. + +## 3.0.2 +> Released 02/17/2017 + +### Bug Fixes +* Fixes a bug where using readString with a length of zero resulted in reading the remaining data instead of returning an empty string. (Fixed by Seldszar) + +## 3.0.1 +> Released 02/15/2017 + +### Bug Fixes +* Fixes a bug leftover from the TypeScript refactor where .readIntXXX() resulted in .readUIntXXX() being called by mistake. + +## 3.0 +> Released 02/12/2017 + +### Bug Fixes +* readUIntXXXX() methods will now throw an exception if they attempt to read beyond the bounds of the valid buffer data available. + * **Note** This is technically a breaking change, so version is bumped to 3.x. + +## 2.0 +> Relased 01/30/2017 + +### New Features: + +* Entire package re-written in TypeScript (2.1) +* Backwards compatibility is preserved for now +* New factory methods for creating SmartBuffer instances + * SmartBuffer.fromSize() + * SmartBuffer.fromBuffer() + * SmartBuffer.fromOptions() +* New SmartBufferOptions constructor options +* Added additional tests + +### Bug Fixes: +* Fixes a bug where reading null terminated strings may result in an exception. diff --git a/mybulma/node_modules/smart-buffer/docs/README_v3.md b/mybulma/node_modules/smart-buffer/docs/README_v3.md new file mode 100644 index 0000000..b7c48b8 --- /dev/null +++ b/mybulma/node_modules/smart-buffer/docs/README_v3.md @@ -0,0 +1,367 @@ +smart-buffer [![Build Status](https://travis-ci.org/JoshGlazebrook/smart-buffer.svg?branch=master)](https://travis-ci.org/JoshGlazebrook/smart-buffer) [![Coverage Status](https://coveralls.io/repos/github/JoshGlazebrook/smart-buffer/badge.svg?branch=master)](https://coveralls.io/github/JoshGlazebrook/smart-buffer?branch=master) +============= + +smart-buffer is a light Buffer wrapper that takes away the need to keep track of what position to read and write data to and from the underlying Buffer. It also adds null terminating string operations and **grows** as you add more data. + +![stats](https://nodei.co/npm/smart-buffer.png?downloads=true&downloadRank=true&stars=true "stats") + +### What it's useful for: + +I created smart-buffer because I wanted to simplify the process of using Buffer for building and reading network packets to send over a socket. Rather than having to keep track of which position I need to write a UInt16 to after adding a string of variable length, I simply don't have to. + +Key Features: +* Proxies all of the Buffer write and read functions. +* Keeps track of read and write positions for you. +* Grows the internal Buffer as you add data to it. +* Useful string operations. (Null terminating strings) +* Allows for inserting values at specific points in the internal Buffer. +* Built in TypeScript +* Type Definitions Provided + +Requirements: +* Node v4.0+ is supported at this time. (Versions prior to 2.0 will work on node 0.10) + + +#### Note: +smart-buffer can be used for writing to an underlying buffer as well as reading from it. It however does not function correctly if you're mixing both read and write operations with each other. + +## Breaking Changes with 2.0 +The latest version (2.0+) is written in TypeScript, and are compiled to ES6 Javascript. This means the earliest Node.js it supports will be 4.x (in strict mode.) If you're using version 6 and above it will work without any issues. From an API standpoint, 2.0 is backwards compatible. The only difference is SmartBuffer is not exported directly as the root module. + +## Breaking Changes with 3.0 +Starting with 3.0, if any of the readIntXXXX() methods are called and the requested data is larger than the bounds of the internally managed valid buffer data, an exception will now be thrown. + +## Installing: + +`npm install smart-buffer` + +or + +`yarn add smart-buffer` + +Note: The published NPM package includes the built javascript library. +If you cloned this repo and wish to build the library manually use: + +`tsc -p ./` + +## Using smart-buffer + +### Example + +Say you were building a packet that had to conform to the following protocol: + +`[PacketType:2][PacketLength:2][Data:XX]` + +To build this packet using the vanilla Buffer class, you would have to count up the length of the data payload beforehand. You would also need to keep track of the current "cursor" position in your Buffer so you write everything in the right places. With smart-buffer you don't have to do either of those things. + +```javascript +// 1.x (javascript) +var SmartBuffer = require('smart-buffer'); + +// 1.x (typescript) +import SmartBuffer = require('smart-buffer'); + +// 2.x+ (javascript) +const SmartBuffer = require('smart-buffer').SmartBuffer; + +// 2.x+ (typescript) +import { SmartBuffer, SmartBufferOptions} from 'smart-buffer'; + +function createLoginPacket(username, password, age, country) { + let packet = new SmartBuffer(); + packet.writeUInt16LE(0x0060); // Login Packet Type/ID + packet.writeStringNT(username); + packet.writeStringNT(password); + packet.writeUInt8(age); + packet.writeStringNT(country); + packet.writeUInt16LE(packet.length - 2, 2); + + return packet.toBuffer(); +} +``` +With the above function, you now can do this: +```javascript +let login = createLoginPacket("Josh", "secret123", 22, "United States"); + +// +``` +Notice that the `[PacketLength:2]` part of the packet was inserted after we had added everything else, and as shown in the Buffer dump above, is in the correct location along with everything else. + +Reading back the packet we created above is just as easy: +```javascript + +let reader = SmartBuffer.fromBuffer(login); + +let logininfo = { + packetType: reader.readUInt16LE(), + packetLength: reader.readUInt16LE(), + username: reader.readStringNT(), + password: reader.readStringNT(), + age: reader.readUInt8(), + country: reader.readStringNT() +}; + +/* +{ + packetType: 96, (0x0060) + packetLength: 30, + username: 'Josh', + password: 'secret123', + age: 22, + country: 'United States' +}; +*/ +``` + +# Api Reference: + +### Constructing a smart-buffer + +smart-buffer has a few different ways to construct an instance. Starting with version 2.0, the following factory methods are preffered. + +```javascript +let SmartBuffer = require('smart-buffer'); + +// Creating SmartBuffer from existing Buffer +let buff = SmartBuffer.fromBuffer(buffer); // Creates instance from buffer. (Uses default utf8 encoding) +let buff = SmartBuffer.fromBuffer(buffer, 'ascii'); // Creates instance from buffer with ascii encoding for Strings. + +// Creating SmartBuffer with specified internal Buffer size. +let buff = SmartBuffer.fromSize(1024); // Creates instance with internal Buffer size of 1024. +let buff = SmartBuffer.fromSize(1024, 'utf8'); // Creates instance with intenral Buffer size of 1024, and utf8 encoding. + +// Creating SmartBuffer with options object. This one specifies size and encoding. +let buff = SmartBuffer.fromOptions({ + size: 1024, + encoding: 'ascii' +}); + +// Creating SmartBuffer with options object. This one specified an existing Buffer. +let buff = SmartBuffer.fromOptions({ + buff: buffer +}); + +// Just want a regular SmartBuffer with all default options? +let buff = new SmartBuffer(); +``` + +## Backwards Compatibility: + +All constructors used prior to 2.0 still are supported. However it's not recommended to use these. + +```javascript +let writer = new SmartBuffer(); // Defaults to utf8, 4096 length internal Buffer. +let writer = new SmartBuffer(1024); // Defaults to utf8, 1024 length internal Buffer. +let writer = new SmartBuffer('ascii'); // Sets to ascii encoding, 4096 length internal buffer. +let writer = new SmartBuffer(1024, 'ascii'); // Sets to ascii encoding, 1024 length internal buffer. +``` + +## Reading Data + +smart-buffer supports all of the common read functions you will find in the vanilla Buffer class. The only difference is, you do not need to specify which location to start reading from. This is possible because as you read data out of a smart-buffer, it automatically progresses an internal read offset/position to know where to pick up from on the next read. + +## Reading Numeric Values + +When numeric values, you simply need to call the function you want, and the data is returned. + +Supported Operations: +* readInt8 +* readInt16BE +* readInt16LE +* readInt32BE +* readInt32LE +* readBigInt64LE +* readBigInt64BE +* readUInt8 +* readUInt16BE +* readUInt16LE +* readUInt32BE +* readUInt32LE +* readBigUInt64LE +* readBigUInt64BE +* readFloatBE +* readFloatLE +* readDoubleBE +* readDoubleLE + +```javascript +let reader = new SmartBuffer(somebuffer); +let num = reader.readInt8(); +``` + +## Reading String Values + +When reading String values, you can either choose to read a null terminated string, or a string of a specified length. + +### SmartBuffer.readStringNT( [encoding] ) +> `String` **String encoding to use** - Defaults to the encoding set in the constructor. + +returns `String` + +> Note: When readStringNT is called and there is no null character found, smart-buffer will read to the end of the internal Buffer. + +### SmartBuffer.readString( [length] ) +### SmartBuffer.readString( [encoding] ) +### SmartBuffer.readString( [length], [encoding] ) +> `Number` **Length of the string to read** + +> `String` **String encoding to use** - Defaults to the encoding set in the constructor, or utf8. + +returns `String` + +> Note: When readString is called without a specified length, smart-buffer will read to the end of the internal Buffer. + + + +## Reading Buffer Values + +### SmartBuffer.readBuffer( length ) +> `Number` **Length of data to read into a Buffer** + +returns `Buffer` + +> Note: This function uses `slice` to retrieve the Buffer. + + +### SmartBuffer.readBufferNT() + +returns `Buffer` + +> Note: This reads the next sequence of bytes in the buffer until a null (0x00) value is found. (Null terminated buffer) +> Note: This function uses `slice` to retrieve the Buffer. + + +## Writing Data + +smart-buffer supports all of the common write functions you will find in the vanilla Buffer class. The only difference is, you do not need to specify which location to write to in your Buffer by default. You do however have the option of **inserting** a piece of data into your smart-buffer at a given location. + + +## Writing Numeric Values + + +For numeric values, you simply need to call the function you want, and the data is written at the end of the internal Buffer's current write position. You can specify a offset/position to **insert** the given value at, but keep in mind this does not override data at the given position. This feature also does not work properly when inserting a value beyond the current internal length of the smart-buffer (length being the .length property of the smart-buffer instance you're writing to) + +Supported Operations: +* writeInt8 +* writeInt16BE +* writeInt16LE +* writeInt32BE +* writeInt32LE +* writeBigInt64BE +* writeBigInt64LE +* writeUInt8 +* writeUInt16BE +* writeUInt16LE +* writeUInt32BE +* writeUInt32LE +* writeBigUInt64BE +* writeBigUInt64LE +* writeFloatBE +* writeFloatLE +* writeDoubleBE +* writeDoubleLE + +The following signature is the same for all the above functions: + +### SmartBuffer.writeInt8( value, [offset] ) +> `Number` **A valid Int8 number** + +> `Number` **The position to insert this value at** + +returns this + +> Note: All write operations return `this` to allow for chaining. + +## Writing String Values + +When reading String values, you can either choose to write a null terminated string, or a non null terminated string. + +### SmartBuffer.writeStringNT( value, [offset], [encoding] ) +### SmartBuffer.writeStringNT( value, [offset] ) +### SmartBuffer.writeStringNT( value, [encoding] ) +> `String` **String value to write** + +> `Number` **The position to insert this String at** + +> `String` **The String encoding to use.** - Defaults to the encoding set in the constructor, or utf8. + +returns this + +### SmartBuffer.writeString( value, [offset], [encoding] ) +### SmartBuffer.writeString( value, [offset] ) +### SmartBuffer.writeString( value, [encoding] ) +> `String` **String value to write** + +> `Number` **The position to insert this String at** + +> `String` **The String encoding to use** - Defaults to the encoding set in the constructor, or utf8. + +returns this + + +## Writing Buffer Values + +### SmartBuffer.writeBuffer( value, [offset] ) +> `Buffer` **Buffer value to write** + +> `Number` **The position to insert this Buffer's content at** + +returns this + +### SmartBuffer.writeBufferNT( value, [offset] ) +> `Buffer` **Buffer value to write** + +> `Number` **The position to insert this Buffer's content at** + +returns this + + +## Utility Functions + +### SmartBuffer.clear() +Resets the SmartBuffer to its default state where it can be reused for reading or writing. + +### SmartBuffer.remaining() + +returns `Number` The amount of data left to read based on the current read Position. + +### SmartBuffer.skip( value ) +> `Number` **The amount of bytes to skip ahead** + +Skips the read position ahead by the given value. + +returns this + +### SmartBuffer.rewind( value ) +> `Number` **The amount of bytes to reward backwards** + +Rewinds the read position backwards by the given value. + +returns this + +### SmartBuffer.moveTo( position ) +> `Number` **The point to skip the read position to** + +Moves the read position to the given point. +returns this + +### SmartBuffer.toBuffer() + +returns `Buffer` A Buffer containing the contents of the internal Buffer. + +> Note: This uses the slice function. + +### SmartBuffer.toString( [encoding] ) +> `String` **The String encoding to use** - Defaults to the encoding set in the constructor, or utf8. + +returns `String` The internal Buffer in String representation. + +## Properties + +### SmartBuffer.length + +returns `Number` **The length of the data that is being tracked in the internal Buffer** - Does NOT return the absolute length of the internal Buffer being written to. + +## License + +This work is licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License). \ No newline at end of file diff --git a/mybulma/node_modules/smart-buffer/docs/ROADMAP.md b/mybulma/node_modules/smart-buffer/docs/ROADMAP.md new file mode 100644 index 0000000..e69de29 diff --git a/mybulma/node_modules/smart-buffer/package.json b/mybulma/node_modules/smart-buffer/package.json new file mode 100644 index 0000000..2f326f2 --- /dev/null +++ b/mybulma/node_modules/smart-buffer/package.json @@ -0,0 +1,79 @@ +{ + "name": "smart-buffer", + "version": "4.2.0", + "description": "smart-buffer is a Buffer wrapper that adds automatic read & write offset tracking, string operations, data insertions, and more.", + "main": "build/smartbuffer.js", + "contributors": ["syvita"], + "homepage": "https://github.com/JoshGlazebrook/smart-buffer/", + "repository": { + "type": "git", + "url": "https://github.com/JoshGlazebrook/smart-buffer.git" + }, + "bugs": { + "url": "https://github.com/JoshGlazebrook/smart-buffer/issues" + }, + "keywords": [ + "buffer", + "smart", + "packet", + "serialize", + "network", + "cursor", + "simple" + ], + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + }, + "author": "Josh Glazebrook", + "license": "MIT", + "readmeFilename": "README.md", + "devDependencies": { + "@types/chai": "4.1.7", + "@types/mocha": "5.2.7", + "@types/node": "^12.0.0", + "chai": "4.2.0", + "coveralls": "3.0.5", + "istanbul": "^0.4.5", + "mocha": "6.2.0", + "mocha-lcov-reporter": "^1.3.0", + "nyc": "14.1.1", + "source-map-support": "0.5.12", + "ts-node": "8.3.0", + "tslint": "5.18.0", + "typescript": "^3.2.1" + }, + "typings": "typings/smartbuffer.d.ts", + "dependencies": {}, + "scripts": { + "prepublish": "npm install -g typescript && npm run build", + "test": "NODE_ENV=test mocha --recursive --require ts-node/register test/**/*.ts", + "coverage": "NODE_ENV=test nyc npm test", + "coveralls": "NODE_ENV=test nyc npm test && nyc report --reporter=text-lcov | coveralls", + "lint": "tslint --type-check --project tsconfig.json 'src/**/*.ts'", + "build": "tsc -p ./" + }, + "nyc": { + "extension": [ + ".ts", + ".tsx" + ], + "include": [ + "src/*.ts", + "src/**/*.ts" + ], + "exclude": [ + "**.*.d.ts", + "node_modules", + "typings" + ], + "require": [ + "ts-node/register" + ], + "reporter": [ + "json", + "html" + ], + "all": true + } +} diff --git a/mybulma/node_modules/smart-buffer/typings/smartbuffer.d.ts b/mybulma/node_modules/smart-buffer/typings/smartbuffer.d.ts new file mode 100644 index 0000000..d07379b --- /dev/null +++ b/mybulma/node_modules/smart-buffer/typings/smartbuffer.d.ts @@ -0,0 +1,755 @@ +/// +/** + * Object interface for constructing new SmartBuffer instances. + */ +interface SmartBufferOptions { + encoding?: BufferEncoding; + size?: number; + buff?: Buffer; +} +declare class SmartBuffer { + length: number; + private _encoding; + private _buff; + private _writeOffset; + private _readOffset; + /** + * Creates a new SmartBuffer instance. + * + * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance. + */ + constructor(options?: SmartBufferOptions); + /** + * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding. + * + * @param size { Number } The size of the internal Buffer. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromSize(size: number, encoding?: BufferEncoding): SmartBuffer; + /** + * Creates a new SmartBuffer instance with the provided Buffer and optional encoding. + * + * @param buffer { Buffer } The Buffer to use as the internal Buffer value. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromBuffer(buff: Buffer, encoding?: BufferEncoding): SmartBuffer; + /** + * Creates a new SmartBuffer instance with the provided SmartBufferOptions options. + * + * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance. + */ + static fromOptions(options: SmartBufferOptions): SmartBuffer; + /** + * Type checking function that determines if an object is a SmartBufferOptions object. + */ + static isSmartBufferOptions(options: SmartBufferOptions): options is SmartBufferOptions; + /** + * Reads an Int8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt8(offset?: number): number; + /** + * Reads an Int16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16BE(offset?: number): number; + /** + * Reads an Int16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16LE(offset?: number): number; + /** + * Reads an Int32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32BE(offset?: number): number; + /** + * Reads an Int32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32LE(offset?: number): number; + /** + * Reads a BigInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64BE(offset?: number): bigint; + /** + * Reads a BigInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64LE(offset?: number): bigint; + /** + * Writes an Int8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt8(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt8(value: number, offset: number): SmartBuffer; + /** + * Writes an Int16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16BE(value: number, offset: number): SmartBuffer; + /** + * Writes an Int16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16LE(value: number, offset: number): SmartBuffer; + /** + * Writes an Int32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32BE(value: number, offset: number): SmartBuffer; + /** + * Writes an Int32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32LE(value: number, offset: number): SmartBuffer; + /** + * Writes a BigInt64BE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64BE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a BigInt64BE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64BE(value: bigint, offset: number): SmartBuffer; + /** + * Writes a BigInt64LE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64LE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a Int64LE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64LE(value: bigint, offset: number): SmartBuffer; + /** + * Reads an UInt8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt8(offset?: number): number; + /** + * Reads an UInt16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16BE(offset?: number): number; + /** + * Reads an UInt16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16LE(offset?: number): number; + /** + * Reads an UInt32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32BE(offset?: number): number; + /** + * Reads an UInt32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32LE(offset?: number): number; + /** + * Reads a BigUInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64BE(offset?: number): bigint; + /** + * Reads a BigUInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64LE(offset?: number): bigint; + /** + * Writes an UInt8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt8(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt8(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16BE(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16LE(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32BE(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32LE(value: number, offset: number): SmartBuffer; + /** + * Writes a BigUInt64BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64BE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a BigUInt64BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64BE(value: bigint, offset: number): SmartBuffer; + /** + * Writes a BigUInt64LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64LE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a BigUInt64LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64LE(value: bigint, offset: number): SmartBuffer; + /** + * Reads an FloatBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatBE(offset?: number): number; + /** + * Reads an FloatLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatLE(offset?: number): number; + /** + * Writes a FloatBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatBE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a FloatBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatBE(value: number, offset: number): SmartBuffer; + /** + * Writes a FloatLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatLE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a FloatLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatLE(value: number, offset: number): SmartBuffer; + /** + * Reads an DoublEBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleBE(offset?: number): number; + /** + * Reads an DoubleLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleLE(offset?: number): number; + /** + * Writes a DoubleBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleBE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a DoubleBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleBE(value: number, offset: number): SmartBuffer; + /** + * Writes a DoubleLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleLE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a DoubleLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleLE(value: number, offset: number): SmartBuffer; + /** + * Reads a String from the current read position. + * + * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for + * the string (Defaults to instance level encoding). + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readString(arg1?: number | BufferEncoding, encoding?: BufferEncoding): string; + /** + * Inserts a String + * + * @param value { String } The String value to insert. + * @param offset { Number } The offset to insert the string at. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertString(value: string, offset: number, encoding?: BufferEncoding): SmartBuffer; + /** + * Writes a String + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeString(value: string, arg2?: number | BufferEncoding, encoding?: BufferEncoding): SmartBuffer; + /** + * Reads a null-terminated String from the current read position. + * + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readStringNT(encoding?: BufferEncoding): string; + /** + * Inserts a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertStringNT(value: string, offset: number, encoding?: BufferEncoding): SmartBuffer; + /** + * Writes a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeStringNT(value: string, arg2?: number | BufferEncoding, encoding?: BufferEncoding): SmartBuffer; + /** + * Reads a Buffer from the internal read position. + * + * @param length { Number } The length of data to read as a Buffer. + * + * @return { Buffer } + */ + readBuffer(length?: number): Buffer; + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBuffer(value: Buffer, offset: number): SmartBuffer; + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBuffer(value: Buffer, offset?: number): SmartBuffer; + /** + * Reads a null-terminated Buffer from the current read poisiton. + * + * @return { Buffer } + */ + readBufferNT(): Buffer; + /** + * Inserts a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBufferNT(value: Buffer, offset: number): SmartBuffer; + /** + * Writes a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBufferNT(value: Buffer, offset?: number): SmartBuffer; + /** + * Clears the SmartBuffer instance to its original empty state. + */ + clear(): SmartBuffer; + /** + * Gets the remaining data left to be read from the SmartBuffer instance. + * + * @return { Number } + */ + remaining(): number; + /** + * Gets the current read offset value of the SmartBuffer instance. + * + * @return { Number } + */ + /** + * Sets the read offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + readOffset: number; + /** + * Gets the current write offset value of the SmartBuffer instance. + * + * @return { Number } + */ + /** + * Sets the write offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + writeOffset: number; + /** + * Gets the currently set string encoding of the SmartBuffer instance. + * + * @return { BufferEncoding } The string Buffer encoding currently set. + */ + /** + * Sets the string encoding of the SmartBuffer instance. + * + * @param encoding { BufferEncoding } The string Buffer encoding to set. + */ + encoding: BufferEncoding; + /** + * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer) + * + * @return { Buffer } The Buffer value. + */ + readonly internalBuffer: Buffer; + /** + * Gets the value of the internal managed Buffer (Includes managed data only) + * + * @param { Buffer } + */ + toBuffer(): Buffer; + /** + * Gets the String value of the internal managed Buffer + * + * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding). + */ + toString(encoding?: BufferEncoding): string; + /** + * Destroys the SmartBuffer instance. + */ + destroy(): SmartBuffer; + /** + * Handles inserting and writing strings. + * + * @param value { String } The String value to insert. + * @param isInsert { Boolean } True if inserting a string, false if writing. + * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + */ + private _handleString; + /** + * Handles writing or insert of a Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + */ + private _handleBuffer; + /** + * Ensures that the internal Buffer is large enough to read data. + * + * @param length { Number } The length of the data that needs to be read. + * @param offset { Number } The offset of the data that needs to be read. + */ + private ensureReadable; + /** + * Ensures that the internal Buffer is large enough to insert data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written. + */ + private ensureInsertable; + /** + * Ensures that the internal Buffer is large enough to write data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written (defaults to writeOffset). + */ + private _ensureWriteable; + /** + * Ensures that the internal Buffer is large enough to write at least the given amount of data. + * + * @param minLength { Number } The minimum length of the data needs to be written. + */ + private _ensureCapacity; + /** + * Reads a numeric number value using the provided function. + * + * @typeparam T { number | bigint } The type of the value to be read + * + * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with. + * @param byteSize { Number } The number of bytes read. + * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead. + * + * @returns { T } the number value + */ + private _readNumberValue; + /** + * Inserts a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + private _insertNumberValue; + /** + * Writes a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + private _writeNumberValue; +} +export { SmartBufferOptions, SmartBuffer }; diff --git a/mybulma/node_modules/smart-buffer/typings/utils.d.ts b/mybulma/node_modules/smart-buffer/typings/utils.d.ts new file mode 100644 index 0000000..b32b4d4 --- /dev/null +++ b/mybulma/node_modules/smart-buffer/typings/utils.d.ts @@ -0,0 +1,66 @@ +/// +import { SmartBuffer } from './smartbuffer'; +import { Buffer } from 'buffer'; +/** + * Error strings + */ +declare const ERRORS: { + INVALID_ENCODING: string; + INVALID_SMARTBUFFER_SIZE: string; + INVALID_SMARTBUFFER_BUFFER: string; + INVALID_SMARTBUFFER_OBJECT: string; + INVALID_OFFSET: string; + INVALID_OFFSET_NON_NUMBER: string; + INVALID_LENGTH: string; + INVALID_LENGTH_NON_NUMBER: string; + INVALID_TARGET_OFFSET: string; + INVALID_TARGET_LENGTH: string; + INVALID_READ_BEYOND_BOUNDS: string; + INVALID_WRITE_BEYOND_BOUNDS: string; +}; +/** + * Checks if a given encoding is a valid Buffer encoding. (Throws an exception if check fails) + * + * @param { String } encoding The encoding string to check. + */ +declare function checkEncoding(encoding: BufferEncoding): void; +/** + * Checks if a given number is a finite integer. (Throws an exception if check fails) + * + * @param { Number } value The number value to check. + */ +declare function isFiniteInteger(value: number): boolean; +/** + * Checks if a length value is valid. (Throws an exception if check fails) + * + * @param { Number } length The value to check. + */ +declare function checkLengthValue(length: any): void; +/** + * Checks if a offset value is valid. (Throws an exception if check fails) + * + * @param { Number } offset The value to check. + */ +declare function checkOffsetValue(offset: any): void; +/** + * Checks if a target offset value is out of bounds. (Throws an exception if check fails) + * + * @param { Number } offset The offset value to check. + * @param { SmartBuffer } buff The SmartBuffer instance to check against. + */ +declare function checkTargetOffset(offset: number, buff: SmartBuffer): void; +interface Buffer { + readBigInt64BE(offset?: number): bigint; + readBigInt64LE(offset?: number): bigint; + readBigUInt64BE(offset?: number): bigint; + readBigUInt64LE(offset?: number): bigint; + writeBigInt64BE(value: bigint, offset?: number): number; + writeBigInt64LE(value: bigint, offset?: number): number; + writeBigUInt64BE(value: bigint, offset?: number): number; + writeBigUInt64LE(value: bigint, offset?: number): number; +} +/** + * Throws if Node.js version is too low to support bigint + */ +declare function bigIntAndBufferInt64Check(bufferMethod: keyof Buffer): void; +export { ERRORS, isFiniteInteger, checkEncoding, checkOffsetValue, checkLengthValue, checkTargetOffset, bigIntAndBufferInt64Check }; diff --git a/mybulma/node_modules/socks-proxy-agent/dist/index.d.ts b/mybulma/node_modules/socks-proxy-agent/dist/index.d.ts new file mode 100644 index 0000000..4de33b1 --- /dev/null +++ b/mybulma/node_modules/socks-proxy-agent/dist/index.d.ts @@ -0,0 +1,33 @@ +/// +import { SocksProxy } from 'socks'; +import { Agent, ClientRequest, RequestOptions } from 'agent-base'; +import { AgentOptions } from 'agent-base'; +import { Url } from 'url'; +import net from 'net'; +import tls from 'tls'; +interface BaseSocksProxyAgentOptions { + host?: string | null; + port?: string | number | null; + username?: string | null; + tls?: tls.ConnectionOptions | null; +} +interface SocksProxyAgentOptionsExtra { + timeout?: number; +} +export interface SocksProxyAgentOptions extends AgentOptions, BaseSocksProxyAgentOptions, Partial> { +} +export declare class SocksProxyAgent extends Agent { + private readonly shouldLookup; + private readonly proxy; + private readonly tlsConnectionOptions; + timeout: number | null; + constructor(input: string | SocksProxyAgentOptions, options?: SocksProxyAgentOptionsExtra); + /** + * Initiates a SOCKS connection to the specified SOCKS proxy server, + * which in turn connects to the specified remote host and port. + * + * @api protected + */ + callback(req: ClientRequest, opts: RequestOptions): Promise; +} +export {}; diff --git a/mybulma/node_modules/socks-proxy-agent/dist/index.js b/mybulma/node_modules/socks-proxy-agent/dist/index.js new file mode 100644 index 0000000..55b598b --- /dev/null +++ b/mybulma/node_modules/socks-proxy-agent/dist/index.js @@ -0,0 +1,197 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SocksProxyAgent = void 0; +const socks_1 = require("socks"); +const agent_base_1 = require("agent-base"); +const debug_1 = __importDefault(require("debug")); +const dns_1 = __importDefault(require("dns")); +const tls_1 = __importDefault(require("tls")); +const debug = (0, debug_1.default)('socks-proxy-agent'); +function parseSocksProxy(opts) { + var _a; + let port = 0; + let lookup = false; + let type = 5; + const host = opts.hostname; + if (host == null) { + throw new TypeError('No "host"'); + } + if (typeof opts.port === 'number') { + port = opts.port; + } + else if (typeof opts.port === 'string') { + port = parseInt(opts.port, 10); + } + // From RFC 1928, Section 3: https://tools.ietf.org/html/rfc1928#section-3 + // "The SOCKS service is conventionally located on TCP port 1080" + if (port == null) { + port = 1080; + } + // figure out if we want socks v4 or v5, based on the "protocol" used. + // Defaults to 5. + if (opts.protocol != null) { + switch (opts.protocol.replace(':', '')) { + case 'socks4': + lookup = true; + // pass through + case 'socks4a': + type = 4; + break; + case 'socks5': + lookup = true; + // pass through + case 'socks': // no version specified, default to 5h + case 'socks5h': + type = 5; + break; + default: + throw new TypeError(`A "socks" protocol must be specified! Got: ${String(opts.protocol)}`); + } + } + if (typeof opts.type !== 'undefined') { + if (opts.type === 4 || opts.type === 5) { + type = opts.type; + } + else { + throw new TypeError(`"type" must be 4 or 5, got: ${String(opts.type)}`); + } + } + const proxy = { + host, + port, + type + }; + let userId = (_a = opts.userId) !== null && _a !== void 0 ? _a : opts.username; + let password = opts.password; + if (opts.auth != null) { + const auth = opts.auth.split(':'); + userId = auth[0]; + password = auth[1]; + } + if (userId != null) { + Object.defineProperty(proxy, 'userId', { + value: userId, + enumerable: false + }); + } + if (password != null) { + Object.defineProperty(proxy, 'password', { + value: password, + enumerable: false + }); + } + return { lookup, proxy }; +} +const normalizeProxyOptions = (input) => { + let proxyOptions; + if (typeof input === 'string') { + proxyOptions = new URL(input); + } + else { + proxyOptions = input; + } + if (proxyOptions == null) { + throw new TypeError('a SOCKS proxy server `host` and `port` must be specified!'); + } + return proxyOptions; +}; +class SocksProxyAgent extends agent_base_1.Agent { + constructor(input, options) { + var _a; + const proxyOptions = normalizeProxyOptions(input); + super(proxyOptions); + const parsedProxy = parseSocksProxy(proxyOptions); + this.shouldLookup = parsedProxy.lookup; + this.proxy = parsedProxy.proxy; + this.tlsConnectionOptions = proxyOptions.tls != null ? proxyOptions.tls : {}; + this.timeout = (_a = options === null || options === void 0 ? void 0 : options.timeout) !== null && _a !== void 0 ? _a : null; + } + /** + * Initiates a SOCKS connection to the specified SOCKS proxy server, + * which in turn connects to the specified remote host and port. + * + * @api protected + */ + callback(req, opts) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const { shouldLookup, proxy, timeout } = this; + let { host, port, lookup: lookupCallback } = opts; + if (host == null) { + throw new Error('No `host` defined!'); + } + if (shouldLookup) { + // Client-side DNS resolution for "4" and "5" socks proxy versions. + host = yield new Promise((resolve, reject) => { + // Use the request's custom lookup, if one was configured: + const lookupFn = lookupCallback !== null && lookupCallback !== void 0 ? lookupCallback : dns_1.default.lookup; + lookupFn(host, {}, (err, res) => { + if (err) { + reject(err); + } + else { + resolve(res); + } + }); + }); + } + const socksOpts = { + proxy, + destination: { host, port }, + command: 'connect', + timeout: timeout !== null && timeout !== void 0 ? timeout : undefined + }; + const cleanup = (tlsSocket) => { + req.destroy(); + socket.destroy(); + if (tlsSocket) + tlsSocket.destroy(); + }; + debug('Creating socks proxy connection: %o', socksOpts); + const { socket } = yield socks_1.SocksClient.createConnection(socksOpts); + debug('Successfully created socks proxy connection'); + if (timeout !== null) { + socket.setTimeout(timeout); + socket.on('timeout', () => cleanup()); + } + if (opts.secureEndpoint) { + // The proxy is connecting to a TLS server, so upgrade + // this socket connection to a TLS connection. + debug('Upgrading socket connection to TLS'); + const servername = (_a = opts.servername) !== null && _a !== void 0 ? _a : opts.host; + const tlsSocket = tls_1.default.connect(Object.assign(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket, + servername }), this.tlsConnectionOptions)); + tlsSocket.once('error', (error) => { + debug('socket TLS error', error.message); + cleanup(tlsSocket); + }); + return tlsSocket; + } + return socket; + }); + } +} +exports.SocksProxyAgent = SocksProxyAgent; +function omit(obj, ...keys) { + const ret = {}; + let key; + for (key in obj) { + if (!keys.includes(key)) { + ret[key] = obj[key]; + } + } + return ret; +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/mybulma/node_modules/socks-proxy-agent/dist/index.js.map b/mybulma/node_modules/socks-proxy-agent/dist/index.js.map new file mode 100644 index 0000000..e183e8e --- /dev/null +++ b/mybulma/node_modules/socks-proxy-agent/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/mybulma/node_modules/socks/.eslintrc.cjs b/mybulma/node_modules/socks/.eslintrc.cjs new file mode 100644 index 0000000..cc5d089 --- /dev/null +++ b/mybulma/node_modules/socks/.eslintrc.cjs @@ -0,0 +1,11 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: [ + '@typescript-eslint', + ], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + ], +}; \ No newline at end of file diff --git a/mybulma/node_modules/socks/.prettierrc.yaml b/mybulma/node_modules/socks/.prettierrc.yaml new file mode 100644 index 0000000..d7b7335 --- /dev/null +++ b/mybulma/node_modules/socks/.prettierrc.yaml @@ -0,0 +1,7 @@ +parser: typescript +printWidth: 80 +tabWidth: 2 +singleQuote: true +trailingComma: all +arrowParens: always +bracketSpacing: false \ No newline at end of file diff --git a/mybulma/node_modules/socks/LICENSE b/mybulma/node_modules/socks/LICENSE new file mode 100644 index 0000000..b2442a9 --- /dev/null +++ b/mybulma/node_modules/socks/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Josh Glazebrook + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mybulma/node_modules/socks/README.md b/mybulma/node_modules/socks/README.md new file mode 100644 index 0000000..b796220 --- /dev/null +++ b/mybulma/node_modules/socks/README.md @@ -0,0 +1,686 @@ +# socks [![Build Status](https://travis-ci.org/JoshGlazebrook/socks.svg?branch=master)](https://travis-ci.org/JoshGlazebrook/socks) [![Coverage Status](https://coveralls.io/repos/github/JoshGlazebrook/socks/badge.svg?branch=master)](https://coveralls.io/github/JoshGlazebrook/socks?branch=v2) + +Fully featured SOCKS proxy client supporting SOCKSv4, SOCKSv4a, and SOCKSv5. Includes Bind and Associate functionality. + +> Looking for Node.js agent? Check [node-socks-proxy-agent](https://github.com/TooTallNate/node-socks-proxy-agent). + +### Features + +* Supports SOCKS v4, v4a, v5, and v5h protocols. +* Supports the CONNECT, BIND, and ASSOCIATE commands. +* Supports callbacks, promises, and events for proxy connection creation async flow control. +* Supports proxy chaining (CONNECT only). +* Supports user/password authentication. +* Supports custom authentication. +* Built in UDP frame creation & parse functions. +* Created with TypeScript, type definitions are provided. + +### Requirements + +* Node.js v10.0+ (Please use [v1](https://github.com/JoshGlazebrook/socks/tree/82d83923ad960693d8b774cafe17443ded7ed584) for older versions of Node.js) + +### Looking for v1? +* Docs for v1 are available [here](https://github.com/JoshGlazebrook/socks/tree/82d83923ad960693d8b774cafe17443ded7ed584) + +## Installation + +`yarn add socks` + +or + +`npm install --save socks` + +## Usage + +```typescript +// TypeScript +import { SocksClient, SocksClientOptions, SocksClientChainOptions } from 'socks'; + +// ES6 JavaScript +import { SocksClient } from 'socks'; + +// Legacy JavaScript +const SocksClient = require('socks').SocksClient; +``` + +## Quick Start Example + +Connect to github.com (192.30.253.113) on port 80, using a SOCKS proxy. + +```javascript +const options = { + proxy: { + host: '159.203.75.200', // ipv4 or ipv6 or hostname + port: 1080, + type: 5 // Proxy version (4 or 5) + }, + + command: 'connect', // SOCKS command (createConnection factory function only supports the connect command) + + destination: { + host: '192.30.253.113', // github.com (hostname lookups are supported with SOCKS v4a and 5) + port: 80 + } +}; + +// Async/Await +try { + const info = await SocksClient.createConnection(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) +} catch (err) { + // Handle errors +} + +// Promises +SocksClient.createConnection(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) +}) +.catch(err => { + // Handle errors +}); + +// Callbacks +SocksClient.createConnection(options, (err, info) => { + if (!err) { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) + } else { + // Handle errors + } +}); +``` + +## Chaining Proxies + +**Note:** Chaining is only supported when using the SOCKS connect command, and chaining can only be done through the special factory chaining function. + +This example makes a proxy chain through two SOCKS proxies to ip-api.com. Once the connection to the destination is established it sends an HTTP request to get a JSON response that returns ip info for the requesting ip. + +```javascript +const options = { + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + command: 'connect', // Only the connect command is supported when chaining proxies. + proxies: [ // The chain order is the order in the proxies array, meaning the last proxy will establish a connection to the destination. + { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + { + host: '104.131.124.203', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + } + ] +} + +// Async/Await +try { + const info = await SocksClient.createConnectionChain(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + console.log(info.socket.remoteAddress) // The remote address of the returned socket is the first proxy in the chain. + // 159.203.75.235 + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy in the chain (104.131.124.203) is connected to it. + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +} catch (err) { + // Handle errors +} + +// Promises +SocksClient.createConnectionChain(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) + + console.log(info.socket.remoteAddress) // The remote address of the returned socket is the first proxy in the chain. + // 159.203.75.235 + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy in the chain (104.131.124.203) is connected to it. + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +}) +.catch(err => { + // Handle errors +}); + +// Callbacks +SocksClient.createConnectionChain(options, (err, info) => { + if (!err) { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) + + console.log(info.socket.remoteAddress) // The remote address of the returned socket is the first proxy in the chain. + // 159.203.75.235 + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy in the chain (104.131.124.203) is connected to it. + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); + } else { + // Handle errors + } +}); +``` + +## Bind Example (TCP Relay) + +When the bind command is sent to a SOCKS v4/v5 proxy server, the proxy server starts listening on a new TCP port and the proxy relays then remote host information back to the client. When another remote client connects to the proxy server on this port the SOCKS proxy sends a notification that an incoming connection has been accepted to the initial client and a full duplex stream is now established to the initial client and the client that connected to that special port. + +```javascript +const options = { + proxy: { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + + command: 'bind', + + // When using BIND, the destination should be the remote client that is expected to connect to the SOCKS proxy. Using 0.0.0.0 makes the Proxy accept any incoming connection on that port. + destination: { + host: '0.0.0.0', + port: 0 + } +}; + +// Creates a new SocksClient instance. +const client = new SocksClient(options); + +// When the SOCKS proxy has bound a new port and started listening, this event is fired. +client.on('bound', info => { + console.log(info.remoteHost); + /* + { + host: "159.203.75.235", + port: 57362 + } + */ +}); + +// When a client connects to the newly bound port on the SOCKS proxy, this event is fired. +client.on('established', info => { + // info.remoteHost is the remote address of the client that connected to the SOCKS proxy. + console.log(info.remoteHost); + /* + host: 67.171.34.23, + port: 49823 + */ + + console.log(info.socket); + // (This is a raw net.Socket that is a connection between the initial client and the remote client that connected to the proxy) + + // Handle received data... + info.socket.on('data', data => { + console.log('recv', data); + }); +}); + +// An error occurred trying to establish this SOCKS connection. +client.on('error', err => { + console.error(err); +}); + +// Start connection to proxy +client.connect(); +``` + +## Associate Example (UDP Relay) + +When the associate command is sent to a SOCKS v5 proxy server, it sets up a UDP relay that allows the client to send UDP packets to a remote host through the proxy server, and also receive UDP packet responses back through the proxy server. + +```javascript +const options = { + proxy: { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + + command: 'associate', + + // When using associate, the destination should be the remote client that is expected to send UDP packets to the proxy server to be forwarded. This should be your local ip, or optionally the wildcard address (0.0.0.0) UDP Client <-> Proxy <-> UDP Client + destination: { + host: '0.0.0.0', + port: 0 + } +}; + +// Create a local UDP socket for sending packets to the proxy. +const udpSocket = dgram.createSocket('udp4'); +udpSocket.bind(); + +// Listen for incoming UDP packets from the proxy server. +udpSocket.on('message', (message, rinfo) => { + console.log(SocksClient.parseUDPFrame(message)); + /* + { frameNumber: 0, + remoteHost: { host: '165.227.108.231', port: 4444 }, // The remote host that replied with a UDP packet + data: // The data + } + */ +}); + +let client = new SocksClient(associateOptions); + +// When the UDP relay is established, this event is fired and includes the UDP relay port to send data to on the proxy server. +client.on('established', info => { + console.log(info.remoteHost); + /* + { + host: '159.203.75.235', + port: 44711 + } + */ + + // Send 'hello' to 165.227.108.231:4444 + const packet = SocksClient.createUDPFrame({ + remoteHost: { host: '165.227.108.231', port: 4444 }, + data: Buffer.from(line) + }); + udpSocket.send(packet, info.remoteHost.port, info.remoteHost.host); +}); + +// Start connection +client.connect(); +``` + +**Note:** The associate TCP connection to the proxy must remain open for the UDP relay to work. + +## Additional Examples + +[Documentation](docs/index.md) + + +## Migrating from v1 + +Looking for a guide to migrate from v1? Look [here](docs/migratingFromV1.md) + +## Api Reference: + +**Note:** socks includes full TypeScript definitions. These can even be used without using TypeScript as most IDEs (such as VS Code) will use these type definition files for auto completion intellisense even in JavaScript files. + +* Class: SocksClient + * [new SocksClient(options[, callback])](#new-socksclientoptions) + * [Class Method: SocksClient.createConnection(options[, callback])](#class-method-socksclientcreateconnectionoptions-callback) + * [Class Method: SocksClient.createConnectionChain(options[, callback])](#class-method-socksclientcreateconnectionchainoptions-callback) + * [Class Method: SocksClient.createUDPFrame(options)](#class-method-socksclientcreateudpframedetails) + * [Class Method: SocksClient.parseUDPFrame(data)](#class-method-socksclientparseudpframedata) + * [Event: 'error'](#event-error) + * [Event: 'bound'](#event-bound) + * [Event: 'established'](#event-established) + * [client.connect()](#clientconnect) + * [client.socksClientOptions](#clientconnect) + +### SocksClient + +SocksClient establishes SOCKS proxy connections to remote destination hosts. These proxy connections are fully transparent to the server and once established act as full duplex streams. SOCKS v4, v4a, v5, and v5h are supported, as well as the connect, bind, and associate commands. + +SocksClient supports creating connections using callbacks, promises, and async/await flow control using two static factory functions createConnection and createConnectionChain. It also internally extends EventEmitter which results in allowing event handling based async flow control. + +**SOCKS Compatibility Table** + +Note: When using 4a please specify type: 4, and when using 5h please specify type 5. + +| Socks Version | TCP | UDP | IPv4 | IPv6 | Hostname | +| --- | :---: | :---: | :---: | :---: | :---: | +| SOCKS v4 | ✅ | ❌ | ✅ | ❌ | ❌ | +| SOCKS v4a | ✅ | ❌ | ✅ | ❌ | ✅ | +| SOCKS v5 (includes v5h) | ✅ | ✅ | ✅ | ✅ | ✅ | + +### new SocksClient(options) + +* ```options``` {SocksClientOptions} - An object describing the SOCKS proxy to use, the command to send and establish, and the destination host to connect to. + +### SocksClientOptions + +```typescript +{ + proxy: { + host: '159.203.75.200', // ipv4, ipv6, or hostname + port: 1080, + type: 5, // Proxy version (4 or 5). For v4a use 4, for v5h use 5. + + // Optional fields + userId: 'some username', // Used for SOCKS4 userId auth, and SOCKS5 user/pass auth in conjunction with password. + password: 'some password', // Used in conjunction with userId for user/pass auth for SOCKS5 proxies. + custom_auth_method: 0x80, // If using a custom auth method, specify the type here. If this is set, ALL other custom_auth_*** options must be set as well. + custom_auth_request_handler: async () =>. { + // This will be called when it's time to send the custom auth handshake. You must return a Buffer containing the data to send as your authentication. + return Buffer.from([0x01,0x02,0x03]); + }, + // This is the expected size (bytes) of the custom auth response from the proxy server. + custom_auth_response_size: 2, + // This is called when the auth response is received. The received packet is passed in as a Buffer, and you must return a boolean indicating the response from the server said your custom auth was successful or failed. + custom_auth_response_handler: async (data) => { + return data[1] === 0x00; + } + }, + + command: 'connect', // connect, bind, associate + + destination: { + host: '192.30.253.113', // ipv4, ipv6, hostname. Hostnames work with v4a and v5. + port: 80 + }, + + // Optional fields + timeout: 30000, // How long to wait to establish a proxy connection. (defaults to 30 seconds) + + set_tcp_nodelay: true // If true, will turn on the underlying sockets TCP_NODELAY option. +} +``` + +### Class Method: SocksClient.createConnection(options[, callback]) +* ```options``` { SocksClientOptions } - An object describing the SOCKS proxy to use, the command to send and establish, and the destination host to connect to. +* ```callback``` { Function } - Optional callback function that is called when the proxy connection is established, or an error occurs. +* ```returns``` { Promise } - A Promise is returned that is resolved when the proxy connection is established, or rejected when an error occurs. + +Creates a new proxy connection through the given proxy to the given destination host. This factory function supports callbacks and promises for async flow control. + +**Note:** If a callback function is provided, the promise will always resolve regardless of an error occurring. Please be sure to exclusively use either promises or callbacks when using this factory function. + +```typescript +const options = { + proxy: { + host: '159.203.75.200', // ipv4, ipv6, or hostname + port: 1080, + type: 5 // Proxy version (4 or 5) + }, + + command: 'connect', // connect, bind, associate + + destination: { + host: '192.30.253.113', // ipv4, ipv6, or hostname + port: 80 + } +} + +// Await/Async (uses a Promise) +try { + const info = await SocksClient.createConnection(options); + console.log(info); + /* + { + socket: , // Raw net.Socket + } + */ + / (this is a raw net.Socket that is established to the destination host through the given proxy server) + +} catch (err) { + // Handle error... +} + +// Promise +SocksClient.createConnection(options) +.then(info => { + console.log(info); + /* + { + socket: , // Raw net.Socket + } + */ +}) +.catch(err => { + // Handle error... +}); + +// Callback +SocksClient.createConnection(options, (err, info) => { + if (!err) { + console.log(info); + /* + { + socket: , // Raw net.Socket + } + */ + } else { + // Handle error... + } +}); +``` + +### Class Method: SocksClient.createConnectionChain(options[, callback]) +* ```options``` { SocksClientChainOptions } - An object describing a list of SOCKS proxies to use, the command to send and establish, and the destination host to connect to. +* ```callback``` { Function } - Optional callback function that is called when the proxy connection chain is established, or an error occurs. +* ```returns``` { Promise } - A Promise is returned that is resolved when the proxy connection chain is established, or rejected when an error occurs. + +Creates a new proxy connection chain through a list of at least two SOCKS proxies to the given destination host. This factory method supports callbacks and promises for async flow control. + +**Note:** If a callback function is provided, the promise will always resolve regardless of an error occurring. Please be sure to exclusively use either promises or callbacks when using this factory function. + +**Note:** At least two proxies must be provided for the chain to be established. + +```typescript +const options = { + proxies: [ // The chain order is the order in the proxies array, meaning the last proxy will establish a connection to the destination. + { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + { + host: '104.131.124.203', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + } + ] + + command: 'connect', // Only connect is supported in chaining mode. + + destination: { + host: '192.30.253.113', // ipv4, ipv6, hostname + port: 80 + } +} +``` + +### Class Method: SocksClient.createUDPFrame(details) +* ```details``` { SocksUDPFrameDetails } - An object containing the remote host, frame number, and frame data to use when creating a SOCKS UDP frame packet. +* ```returns``` { Buffer } - A Buffer containing all of the UDP frame data. + +Creates a SOCKS UDP frame relay packet that is sent and received via a SOCKS proxy when using the associate command for UDP packet forwarding. + +**SocksUDPFrameDetails** + +```typescript +{ + frameNumber: 0, // The frame number (used for breaking up larger packets) + + remoteHost: { // The remote host to have the proxy send data to, or the remote host that send this data. + host: '1.2.3.4', + port: 1234 + }, + + data: // A Buffer instance of data to include in the packet (actual data sent to the remote host) +} +interface SocksUDPFrameDetails { + // The frame number of the packet. + frameNumber?: number; + + // The remote host. + remoteHost: SocksRemoteHost; + + // The packet data. + data: Buffer; +} +``` + +### Class Method: SocksClient.parseUDPFrame(data) +* ```data``` { Buffer } - A Buffer instance containing SOCKS UDP frame data to parse. +* ```returns``` { SocksUDPFrameDetails } - An object containing the remote host, frame number, and frame data of the SOCKS UDP frame. + +```typescript +const frame = SocksClient.parseUDPFrame(data); +console.log(frame); +/* +{ + frameNumber: 0, + remoteHost: { + host: '1.2.3.4', + port: 1234 + }, + data: +} +*/ +``` + +Parses a Buffer instance and returns the parsed SocksUDPFrameDetails object. + +## Event: 'error' +* ```err``` { SocksClientError } - An Error object containing an error message and the original SocksClientOptions. + +This event is emitted if an error occurs when trying to establish the proxy connection. + +## Event: 'bound' +* ```info``` { SocksClientBoundEvent } An object containing a Socket and SocksRemoteHost info. + +This event is emitted when using the BIND command on a remote SOCKS proxy server. This event indicates the proxy server is now listening for incoming connections on a specified port. + +**SocksClientBoundEvent** +```typescript +{ + socket: net.Socket, // The underlying raw Socket + remoteHost: { + host: '1.2.3.4', // The remote host that is listening (usually the proxy itself) + port: 4444 // The remote port the proxy is listening on for incoming connections (when using BIND). + } +} +``` + +## Event: 'established' +* ```info``` { SocksClientEstablishedEvent } An object containing a Socket and SocksRemoteHost info. + +This event is emitted when the following conditions are met: +1. When using the CONNECT command, and a proxy connection has been established to the remote host. +2. When using the BIND command, and an incoming connection has been accepted by the proxy and a TCP relay has been established. +3. When using the ASSOCIATE command, and a UDP relay has been established. + +When using BIND, 'bound' is first emitted to indicate the SOCKS server is waiting for an incoming connection, and provides the remote port the SOCKS server is listening on. + +When using ASSOCIATE, 'established' is emitted with the remote UDP port the SOCKS server is accepting UDP frame packets on. + +**SocksClientEstablishedEvent** +```typescript +{ + socket: net.Socket, // The underlying raw Socket + remoteHost: { + host: '1.2.3.4', // The remote host that is listening (usually the proxy itself) + port: 52738 // The remote port the proxy is listening on for incoming connections (when using BIND). + } +} +``` + +## client.connect() + +Starts connecting to the remote SOCKS proxy server to establish a proxy connection to the destination host. + +## client.socksClientOptions +* ```returns``` { SocksClientOptions } The options that were passed to the SocksClient. + +Gets the options that were passed to the SocksClient when it was created. + + +**SocksClientError** +```typescript +{ // Subclassed from Error. + message: 'An error has occurred', + options: { + // SocksClientOptions + } +} +``` + +# Further Reading: + +Please read the SOCKS 5 specifications for more information on how to use BIND and Associate. +http://www.ietf.org/rfc/rfc1928.txt + +# License + +This work is licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License). diff --git a/mybulma/node_modules/socks/build/client/socksclient.js b/mybulma/node_modules/socks/build/client/socksclient.js new file mode 100644 index 0000000..c343916 --- /dev/null +++ b/mybulma/node_modules/socks/build/client/socksclient.js @@ -0,0 +1,793 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SocksClientError = exports.SocksClient = void 0; +const events_1 = require("events"); +const net = require("net"); +const ip = require("ip"); +const smart_buffer_1 = require("smart-buffer"); +const constants_1 = require("../common/constants"); +const helpers_1 = require("../common/helpers"); +const receivebuffer_1 = require("../common/receivebuffer"); +const util_1 = require("../common/util"); +Object.defineProperty(exports, "SocksClientError", { enumerable: true, get: function () { return util_1.SocksClientError; } }); +class SocksClient extends events_1.EventEmitter { + constructor(options) { + super(); + this.options = Object.assign({}, options); + // Validate SocksClientOptions + (0, helpers_1.validateSocksClientOptions)(options); + // Default state + this.setState(constants_1.SocksClientState.Created); + } + /** + * Creates a new SOCKS connection. + * + * Note: Supports callbacks and promises. Only supports the connect command. + * @param options { SocksClientOptions } Options. + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnection(options, callback) { + return new Promise((resolve, reject) => { + // Validate SocksClientOptions + try { + (0, helpers_1.validateSocksClientOptions)(options, ['connect']); + } + catch (err) { + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + return reject(err); + } + } + const client = new SocksClient(options); + client.connect(options.existing_socket); + client.once('established', (info) => { + client.removeAllListeners(); + if (typeof callback === 'function') { + callback(null, info); + resolve(info); // Resolves pending promise (prevents memory leaks). + } + else { + resolve(info); + } + }); + // Error occurred, failed to establish connection. + client.once('error', (err) => { + client.removeAllListeners(); + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + reject(err); + } + }); + }); + } + /** + * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. + * + * Note: Supports callbacks and promises. Only supports the connect method. + * Note: Implemented via createConnection() factory function. + * @param options { SocksClientChainOptions } Options + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnectionChain(options, callback) { + // eslint-disable-next-line no-async-promise-executor + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + // Validate SocksClientChainOptions + try { + (0, helpers_1.validateSocksClientChainOptions)(options); + } + catch (err) { + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + return reject(err); + } + } + // Shuffle proxies + if (options.randomizeChain) { + (0, util_1.shuffleArray)(options.proxies); + } + try { + let sock; + for (let i = 0; i < options.proxies.length; i++) { + const nextProxy = options.proxies[i]; + // If we've reached the last proxy in the chain, the destination is the actual destination, otherwise it's the next proxy. + const nextDestination = i === options.proxies.length - 1 + ? options.destination + : { + host: options.proxies[i + 1].host || + options.proxies[i + 1].ipaddress, + port: options.proxies[i + 1].port, + }; + // Creates the next connection in the chain. + const result = yield SocksClient.createConnection({ + command: 'connect', + proxy: nextProxy, + destination: nextDestination, + existing_socket: sock, + }); + // If sock is undefined, assign it here. + sock = sock || result.socket; + } + if (typeof callback === 'function') { + callback(null, { socket: sock }); + resolve({ socket: sock }); // Resolves pending promise (prevents memory leaks). + } + else { + resolve({ socket: sock }); + } + } + catch (err) { + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + reject(err); + } + } + })); + } + /** + * Creates a SOCKS UDP Frame. + * @param options + */ + static createUDPFrame(options) { + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt16BE(0); + buff.writeUInt8(options.frameNumber || 0); + // IPv4/IPv6/Hostname + if (net.isIPv4(options.remoteHost.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv4); + buff.writeUInt32BE(ip.toLong(options.remoteHost.host)); + } + else if (net.isIPv6(options.remoteHost.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv6); + buff.writeBuffer(ip.toBuffer(options.remoteHost.host)); + } + else { + buff.writeUInt8(constants_1.Socks5HostType.Hostname); + buff.writeUInt8(Buffer.byteLength(options.remoteHost.host)); + buff.writeString(options.remoteHost.host); + } + // Port + buff.writeUInt16BE(options.remoteHost.port); + // Data + buff.writeBuffer(options.data); + return buff.toBuffer(); + } + /** + * Parses a SOCKS UDP frame. + * @param data + */ + static parseUDPFrame(data) { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const frameNumber = buff.readUInt8(); + const hostType = buff.readUInt8(); + let remoteHost; + if (hostType === constants_1.Socks5HostType.IPv4) { + remoteHost = ip.fromLong(buff.readUInt32BE()); + } + else if (hostType === constants_1.Socks5HostType.IPv6) { + remoteHost = ip.toString(buff.readBuffer(16)); + } + else { + remoteHost = buff.readString(buff.readUInt8()); + } + const remotePort = buff.readUInt16BE(); + return { + frameNumber, + remoteHost: { + host: remoteHost, + port: remotePort, + }, + data: buff.readBuffer(), + }; + } + /** + * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state. + */ + setState(newState) { + if (this.state !== constants_1.SocksClientState.Error) { + this.state = newState; + } + } + /** + * Starts the connection establishment to the proxy and destination. + * @param existingSocket Connected socket to use instead of creating a new one (internal use). + */ + connect(existingSocket) { + this.onDataReceived = (data) => this.onDataReceivedHandler(data); + this.onClose = () => this.onCloseHandler(); + this.onError = (err) => this.onErrorHandler(err); + this.onConnect = () => this.onConnectHandler(); + // Start timeout timer (defaults to 30 seconds) + const timer = setTimeout(() => this.onEstablishedTimeout(), this.options.timeout || constants_1.DEFAULT_TIMEOUT); + // check whether unref is available as it differs from browser to NodeJS (#33) + if (timer.unref && typeof timer.unref === 'function') { + timer.unref(); + } + // If an existing socket is provided, use it to negotiate SOCKS handshake. Otherwise create a new Socket. + if (existingSocket) { + this.socket = existingSocket; + } + else { + this.socket = new net.Socket(); + } + // Attach Socket error handlers. + this.socket.once('close', this.onClose); + this.socket.once('error', this.onError); + this.socket.once('connect', this.onConnect); + this.socket.on('data', this.onDataReceived); + this.setState(constants_1.SocksClientState.Connecting); + this.receiveBuffer = new receivebuffer_1.ReceiveBuffer(); + if (existingSocket) { + this.socket.emit('connect'); + } + else { + this.socket.connect(this.getSocketOptions()); + if (this.options.set_tcp_nodelay !== undefined && + this.options.set_tcp_nodelay !== null) { + this.socket.setNoDelay(!!this.options.set_tcp_nodelay); + } + } + // Listen for established event so we can re-emit any excess data received during handshakes. + this.prependOnceListener('established', (info) => { + setImmediate(() => { + if (this.receiveBuffer.length > 0) { + const excessData = this.receiveBuffer.get(this.receiveBuffer.length); + info.socket.emit('data', excessData); + } + info.socket.resume(); + }); + }); + } + // Socket options (defaults host/port to options.proxy.host/options.proxy.port) + getSocketOptions() { + return Object.assign(Object.assign({}, this.options.socket_options), { host: this.options.proxy.host || this.options.proxy.ipaddress, port: this.options.proxy.port }); + } + /** + * Handles internal Socks timeout callback. + * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed. + */ + onEstablishedTimeout() { + if (this.state !== constants_1.SocksClientState.Established && + this.state !== constants_1.SocksClientState.BoundWaitingForConnection) { + this.closeSocket(constants_1.ERRORS.ProxyConnectionTimedOut); + } + } + /** + * Handles Socket connect event. + */ + onConnectHandler() { + this.setState(constants_1.SocksClientState.Connected); + // Send initial handshake. + if (this.options.proxy.type === 4) { + this.sendSocks4InitialHandshake(); + } + else { + this.sendSocks5InitialHandshake(); + } + this.setState(constants_1.SocksClientState.SentInitialHandshake); + } + /** + * Handles Socket data event. + * @param data + */ + onDataReceivedHandler(data) { + /* + All received data is appended to a ReceiveBuffer. + This makes sure that all the data we need is received before we attempt to process it. + */ + this.receiveBuffer.append(data); + // Process data that we have. + this.processData(); + } + /** + * Handles processing of the data we have received. + */ + processData() { + // If we have enough data to process the next step in the SOCKS handshake, proceed. + while (this.state !== constants_1.SocksClientState.Established && + this.state !== constants_1.SocksClientState.Error && + this.receiveBuffer.length >= this.nextRequiredPacketBufferSize) { + // Sent initial handshake, waiting for response. + if (this.state === constants_1.SocksClientState.SentInitialHandshake) { + if (this.options.proxy.type === 4) { + // Socks v4 only has one handshake response. + this.handleSocks4FinalHandshakeResponse(); + } + else { + // Socks v5 has two handshakes, handle initial one here. + this.handleInitialSocks5HandshakeResponse(); + } + // Sent auth request for Socks v5, waiting for response. + } + else if (this.state === constants_1.SocksClientState.SentAuthentication) { + this.handleInitialSocks5AuthenticationHandshakeResponse(); + // Sent final Socks v5 handshake, waiting for final response. + } + else if (this.state === constants_1.SocksClientState.SentFinalHandshake) { + this.handleSocks5FinalHandshakeResponse(); + // Socks BIND established. Waiting for remote connection via proxy. + } + else if (this.state === constants_1.SocksClientState.BoundWaitingForConnection) { + if (this.options.proxy.type === 4) { + this.handleSocks4IncomingConnectionResponse(); + } + else { + this.handleSocks5IncomingConnectionResponse(); + } + } + else { + this.closeSocket(constants_1.ERRORS.InternalError); + break; + } + } + } + /** + * Handles Socket close event. + * @param had_error + */ + onCloseHandler() { + this.closeSocket(constants_1.ERRORS.SocketClosed); + } + /** + * Handles Socket error event. + * @param err + */ + onErrorHandler(err) { + this.closeSocket(err.message); + } + /** + * Removes internal event listeners on the underlying Socket. + */ + removeInternalSocketHandlers() { + // Pauses data flow of the socket (this is internally resumed after 'established' is emitted) + this.socket.pause(); + this.socket.removeListener('data', this.onDataReceived); + this.socket.removeListener('close', this.onClose); + this.socket.removeListener('error', this.onError); + this.socket.removeListener('connect', this.onConnect); + } + /** + * Closes and destroys the underlying Socket. Emits an error event. + * @param err { String } An error string to include in error event. + */ + closeSocket(err) { + // Make sure only one 'error' event is fired for the lifetime of this SocksClient instance. + if (this.state !== constants_1.SocksClientState.Error) { + // Set internal state to Error. + this.setState(constants_1.SocksClientState.Error); + // Destroy Socket + this.socket.destroy(); + // Remove internal listeners + this.removeInternalSocketHandlers(); + // Fire 'error' event. + this.emit('error', new util_1.SocksClientError(err, this.options)); + } + } + /** + * Sends initial Socks v4 handshake request. + */ + sendSocks4InitialHandshake() { + const userId = this.options.proxy.userId || ''; + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(0x04); + buff.writeUInt8(constants_1.SocksCommand[this.options.command]); + buff.writeUInt16BE(this.options.destination.port); + // Socks 4 (IPv4) + if (net.isIPv4(this.options.destination.host)) { + buff.writeBuffer(ip.toBuffer(this.options.destination.host)); + buff.writeStringNT(userId); + // Socks 4a (hostname) + } + else { + buff.writeUInt8(0x00); + buff.writeUInt8(0x00); + buff.writeUInt8(0x00); + buff.writeUInt8(0x01); + buff.writeStringNT(userId); + buff.writeStringNT(this.options.destination.host); + } + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks4Response; + this.socket.write(buff.toBuffer()); + } + /** + * Handles Socks v4 handshake response. + * @param data + */ + handleSocks4FinalHandshakeResponse() { + const data = this.receiveBuffer.get(8); + if (data[1] !== constants_1.Socks4Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedConnection} - (${constants_1.Socks4Response[data[1]]})`); + } + else { + // Bind response + if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const remoteHost = { + port: buff.readUInt16BE(), + host: ip.fromLong(buff.readUInt32BE()), + }; + // If host is 0.0.0.0, set to proxy host. + if (remoteHost.host === '0.0.0.0') { + remoteHost.host = this.options.proxy.ipaddress; + } + this.setState(constants_1.SocksClientState.BoundWaitingForConnection); + this.emit('bound', { remoteHost, socket: this.socket }); + // Connect response + } + else { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { socket: this.socket }); + } + } + } + /** + * Handles Socks v4 incoming connection request (BIND) + * @param data + */ + handleSocks4IncomingConnectionResponse() { + const data = this.receiveBuffer.get(8); + if (data[1] !== constants_1.Socks4Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedIncomingBoundConnection} - (${constants_1.Socks4Response[data[1]]})`); + } + else { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const remoteHost = { + port: buff.readUInt16BE(), + host: ip.fromLong(buff.readUInt32BE()), + }; + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { remoteHost, socket: this.socket }); + } + } + /** + * Sends initial Socks v5 handshake request. + */ + sendSocks5InitialHandshake() { + const buff = new smart_buffer_1.SmartBuffer(); + // By default we always support no auth. + const supportedAuthMethods = [constants_1.Socks5Auth.NoAuth]; + // We should only tell the proxy we support user/pass auth if auth info is actually provided. + // Note: As of Tor v0.3.5.7+, if user/pass auth is an option from the client, by default it will always take priority. + if (this.options.proxy.userId || this.options.proxy.password) { + supportedAuthMethods.push(constants_1.Socks5Auth.UserPass); + } + // Custom auth method? + if (this.options.proxy.custom_auth_method !== undefined) { + supportedAuthMethods.push(this.options.proxy.custom_auth_method); + } + // Build handshake packet + buff.writeUInt8(0x05); + buff.writeUInt8(supportedAuthMethods.length); + for (const authMethod of supportedAuthMethods) { + buff.writeUInt8(authMethod); + } + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5InitialHandshakeResponse; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentInitialHandshake); + } + /** + * Handles initial Socks v5 handshake response. + * @param data + */ + handleInitialSocks5HandshakeResponse() { + const data = this.receiveBuffer.get(2); + if (data[0] !== 0x05) { + this.closeSocket(constants_1.ERRORS.InvalidSocks5IntiailHandshakeSocksVersion); + } + else if (data[1] === constants_1.SOCKS5_NO_ACCEPTABLE_AUTH) { + this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeNoAcceptedAuthType); + } + else { + // If selected Socks v5 auth method is no auth, send final handshake request. + if (data[1] === constants_1.Socks5Auth.NoAuth) { + this.socks5ChosenAuthType = constants_1.Socks5Auth.NoAuth; + this.sendSocks5CommandRequest(); + // If selected Socks v5 auth method is user/password, send auth handshake. + } + else if (data[1] === constants_1.Socks5Auth.UserPass) { + this.socks5ChosenAuthType = constants_1.Socks5Auth.UserPass; + this.sendSocks5UserPassAuthentication(); + // If selected Socks v5 auth method is the custom_auth_method, send custom handshake. + } + else if (data[1] === this.options.proxy.custom_auth_method) { + this.socks5ChosenAuthType = this.options.proxy.custom_auth_method; + this.sendSocks5CustomAuthentication(); + } + else { + this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeUnknownAuthType); + } + } + } + /** + * Sends Socks v5 user & password auth handshake. + * + * Note: No auth and user/pass are currently supported. + */ + sendSocks5UserPassAuthentication() { + const userId = this.options.proxy.userId || ''; + const password = this.options.proxy.password || ''; + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(0x01); + buff.writeUInt8(Buffer.byteLength(userId)); + buff.writeString(userId); + buff.writeUInt8(Buffer.byteLength(password)); + buff.writeString(password); + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5UserPassAuthenticationResponse; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentAuthentication); + } + sendSocks5CustomAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + this.nextRequiredPacketBufferSize = + this.options.proxy.custom_auth_response_size; + this.socket.write(yield this.options.proxy.custom_auth_request_handler()); + this.setState(constants_1.SocksClientState.SentAuthentication); + }); + } + handleSocks5CustomAuthHandshakeResponse(data) { + return __awaiter(this, void 0, void 0, function* () { + return yield this.options.proxy.custom_auth_response_handler(data); + }); + } + handleSocks5AuthenticationNoAuthHandshakeResponse(data) { + return __awaiter(this, void 0, void 0, function* () { + return data[1] === 0x00; + }); + } + handleSocks5AuthenticationUserPassHandshakeResponse(data) { + return __awaiter(this, void 0, void 0, function* () { + return data[1] === 0x00; + }); + } + /** + * Handles Socks v5 auth handshake response. + * @param data + */ + handleInitialSocks5AuthenticationHandshakeResponse() { + return __awaiter(this, void 0, void 0, function* () { + this.setState(constants_1.SocksClientState.ReceivedAuthenticationResponse); + let authResult = false; + if (this.socks5ChosenAuthType === constants_1.Socks5Auth.NoAuth) { + authResult = yield this.handleSocks5AuthenticationNoAuthHandshakeResponse(this.receiveBuffer.get(2)); + } + else if (this.socks5ChosenAuthType === constants_1.Socks5Auth.UserPass) { + authResult = + yield this.handleSocks5AuthenticationUserPassHandshakeResponse(this.receiveBuffer.get(2)); + } + else if (this.socks5ChosenAuthType === this.options.proxy.custom_auth_method) { + authResult = yield this.handleSocks5CustomAuthHandshakeResponse(this.receiveBuffer.get(this.options.proxy.custom_auth_response_size)); + } + if (!authResult) { + this.closeSocket(constants_1.ERRORS.Socks5AuthenticationFailed); + } + else { + this.sendSocks5CommandRequest(); + } + }); + } + /** + * Sends Socks v5 final handshake request. + */ + sendSocks5CommandRequest() { + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(0x05); + buff.writeUInt8(constants_1.SocksCommand[this.options.command]); + buff.writeUInt8(0x00); + // ipv4, ipv6, domain? + if (net.isIPv4(this.options.destination.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv4); + buff.writeBuffer(ip.toBuffer(this.options.destination.host)); + } + else if (net.isIPv6(this.options.destination.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv6); + buff.writeBuffer(ip.toBuffer(this.options.destination.host)); + } + else { + buff.writeUInt8(constants_1.Socks5HostType.Hostname); + buff.writeUInt8(this.options.destination.host.length); + buff.writeString(this.options.destination.host); + } + buff.writeUInt16BE(this.options.destination.port); + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentFinalHandshake); + } + /** + * Handles Socks v5 final handshake response. + * @param data + */ + handleSocks5FinalHandshakeResponse() { + // Peek at available data (we need at least 5 bytes to get the hostname length) + const header = this.receiveBuffer.peek(5); + if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.InvalidSocks5FinalHandshakeRejected} - ${constants_1.Socks5Response[header[1]]}`); + } + else { + // Read address type + const addressType = header[3]; + let remoteHost; + let buff; + // IPv4 + if (addressType === constants_1.Socks5HostType.IPv4) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip.fromLong(buff.readUInt32BE()), + port: buff.readUInt16BE(), + }; + // If given host is 0.0.0.0, assume remote proxy ip instead. + if (remoteHost.host === '0.0.0.0') { + remoteHost.host = this.options.proxy.ipaddress; + } + // Hostname + } + else if (addressType === constants_1.Socks5HostType.Hostname) { + const hostLength = header[4]; + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + host + port + // Check if data is available. + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); + remoteHost = { + host: buff.readString(hostLength), + port: buff.readUInt16BE(), + }; + // IPv6 + } + else if (addressType === constants_1.Socks5HostType.IPv6) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip.toString(buff.readBuffer(16)), + port: buff.readUInt16BE(), + }; + } + // We have everything we need + this.setState(constants_1.SocksClientState.ReceivedFinalResponse); + // If using CONNECT, the client is now in the established state. + if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.connect) { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { remoteHost, socket: this.socket }); + } + else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { + /* If using BIND, the Socks client is now in BoundWaitingForConnection state. + This means that the remote proxy server is waiting for a remote connection to the bound port. */ + this.setState(constants_1.SocksClientState.BoundWaitingForConnection); + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; + this.emit('bound', { remoteHost, socket: this.socket }); + /* + If using Associate, the Socks client is now Established. And the proxy server is now accepting UDP packets at the + given bound port. This initial Socks TCP connection must remain open for the UDP relay to continue to work. + */ + } + else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.associate) { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { + remoteHost, + socket: this.socket, + }); + } + } + } + /** + * Handles Socks v5 incoming connection request (BIND). + */ + handleSocks5IncomingConnectionResponse() { + // Peek at available data (we need at least 5 bytes to get the hostname length) + const header = this.receiveBuffer.peek(5); + if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks5ProxyRejectedIncomingBoundConnection} - ${constants_1.Socks5Response[header[1]]}`); + } + else { + // Read address type + const addressType = header[3]; + let remoteHost; + let buff; + // IPv4 + if (addressType === constants_1.Socks5HostType.IPv4) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip.fromLong(buff.readUInt32BE()), + port: buff.readUInt16BE(), + }; + // If given host is 0.0.0.0, assume remote proxy ip instead. + if (remoteHost.host === '0.0.0.0') { + remoteHost.host = this.options.proxy.ipaddress; + } + // Hostname + } + else if (addressType === constants_1.Socks5HostType.Hostname) { + const hostLength = header[4]; + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + port + // Check if data is available. + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); + remoteHost = { + host: buff.readString(hostLength), + port: buff.readUInt16BE(), + }; + // IPv6 + } + else if (addressType === constants_1.Socks5HostType.IPv6) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip.toString(buff.readBuffer(16)), + port: buff.readUInt16BE(), + }; + } + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { remoteHost, socket: this.socket }); + } + } + get socksClientOptions() { + return Object.assign({}, this.options); + } +} +exports.SocksClient = SocksClient; +//# sourceMappingURL=socksclient.js.map \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/client/socksclient.js.map b/mybulma/node_modules/socks/build/client/socksclient.js.map new file mode 100644 index 0000000..f01f317 --- /dev/null +++ b/mybulma/node_modules/socks/build/client/socksclient.js.map @@ -0,0 +1 @@ +{"version":3,"file":"socksclient.js","sourceRoot":"","sources":["../../src/client/socksclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/constants.js b/mybulma/node_modules/socks/build/common/constants.js new file mode 100644 index 0000000..3c9ff90 --- /dev/null +++ b/mybulma/node_modules/socks/build/common/constants.js @@ -0,0 +1,114 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SOCKS5_NO_ACCEPTABLE_AUTH = exports.SOCKS5_CUSTOM_AUTH_END = exports.SOCKS5_CUSTOM_AUTH_START = exports.SOCKS_INCOMING_PACKET_SIZES = exports.SocksClientState = exports.Socks5Response = exports.Socks5HostType = exports.Socks5Auth = exports.Socks4Response = exports.SocksCommand = exports.ERRORS = exports.DEFAULT_TIMEOUT = void 0; +const DEFAULT_TIMEOUT = 30000; +exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; +// prettier-ignore +const ERRORS = { + InvalidSocksCommand: 'An invalid SOCKS command was provided. Valid options are connect, bind, and associate.', + InvalidSocksCommandForOperation: 'An invalid SOCKS command was provided. Only a subset of commands are supported for this operation.', + InvalidSocksCommandChain: 'An invalid SOCKS command was provided. Chaining currently only supports the connect command.', + InvalidSocksClientOptionsDestination: 'An invalid destination host was provided.', + InvalidSocksClientOptionsExistingSocket: 'An invalid existing socket was provided. This should be an instance of stream.Duplex.', + InvalidSocksClientOptionsProxy: 'Invalid SOCKS proxy details were provided.', + InvalidSocksClientOptionsTimeout: 'An invalid timeout value was provided. Please enter a value above 0 (in ms).', + InvalidSocksClientOptionsProxiesLength: 'At least two socks proxies must be provided for chaining.', + InvalidSocksClientOptionsCustomAuthRange: 'Custom auth must be a value between 0x80 and 0xFE.', + InvalidSocksClientOptionsCustomAuthOptions: 'When a custom_auth_method is provided, custom_auth_request_handler, custom_auth_response_size, and custom_auth_response_handler must also be provided and valid.', + NegotiationError: 'Negotiation error', + SocketClosed: 'Socket closed', + ProxyConnectionTimedOut: 'Proxy connection timed out', + InternalError: 'SocksClient internal error (this should not happen)', + InvalidSocks4HandshakeResponse: 'Received invalid Socks4 handshake response', + Socks4ProxyRejectedConnection: 'Socks4 Proxy rejected connection', + InvalidSocks4IncomingConnectionResponse: 'Socks4 invalid incoming connection response', + Socks4ProxyRejectedIncomingBoundConnection: 'Socks4 Proxy rejected incoming bound connection', + InvalidSocks5InitialHandshakeResponse: 'Received invalid Socks5 initial handshake response', + InvalidSocks5IntiailHandshakeSocksVersion: 'Received invalid Socks5 initial handshake (invalid socks version)', + InvalidSocks5InitialHandshakeNoAcceptedAuthType: 'Received invalid Socks5 initial handshake (no accepted authentication type)', + InvalidSocks5InitialHandshakeUnknownAuthType: 'Received invalid Socks5 initial handshake (unknown authentication type)', + Socks5AuthenticationFailed: 'Socks5 Authentication failed', + InvalidSocks5FinalHandshake: 'Received invalid Socks5 final handshake response', + InvalidSocks5FinalHandshakeRejected: 'Socks5 proxy rejected connection', + InvalidSocks5IncomingConnectionResponse: 'Received invalid Socks5 incoming connection response', + Socks5ProxyRejectedIncomingBoundConnection: 'Socks5 Proxy rejected incoming bound connection', +}; +exports.ERRORS = ERRORS; +const SOCKS_INCOMING_PACKET_SIZES = { + Socks5InitialHandshakeResponse: 2, + Socks5UserPassAuthenticationResponse: 2, + // Command response + incoming connection (bind) + Socks5ResponseHeader: 5, + Socks5ResponseIPv4: 10, + Socks5ResponseIPv6: 22, + Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7, + // Command response + incoming connection (bind) + Socks4Response: 8, // 2 header + 2 port + 4 ip +}; +exports.SOCKS_INCOMING_PACKET_SIZES = SOCKS_INCOMING_PACKET_SIZES; +var SocksCommand; +(function (SocksCommand) { + SocksCommand[SocksCommand["connect"] = 1] = "connect"; + SocksCommand[SocksCommand["bind"] = 2] = "bind"; + SocksCommand[SocksCommand["associate"] = 3] = "associate"; +})(SocksCommand || (SocksCommand = {})); +exports.SocksCommand = SocksCommand; +var Socks4Response; +(function (Socks4Response) { + Socks4Response[Socks4Response["Granted"] = 90] = "Granted"; + Socks4Response[Socks4Response["Failed"] = 91] = "Failed"; + Socks4Response[Socks4Response["Rejected"] = 92] = "Rejected"; + Socks4Response[Socks4Response["RejectedIdent"] = 93] = "RejectedIdent"; +})(Socks4Response || (Socks4Response = {})); +exports.Socks4Response = Socks4Response; +var Socks5Auth; +(function (Socks5Auth) { + Socks5Auth[Socks5Auth["NoAuth"] = 0] = "NoAuth"; + Socks5Auth[Socks5Auth["GSSApi"] = 1] = "GSSApi"; + Socks5Auth[Socks5Auth["UserPass"] = 2] = "UserPass"; +})(Socks5Auth || (Socks5Auth = {})); +exports.Socks5Auth = Socks5Auth; +const SOCKS5_CUSTOM_AUTH_START = 0x80; +exports.SOCKS5_CUSTOM_AUTH_START = SOCKS5_CUSTOM_AUTH_START; +const SOCKS5_CUSTOM_AUTH_END = 0xfe; +exports.SOCKS5_CUSTOM_AUTH_END = SOCKS5_CUSTOM_AUTH_END; +const SOCKS5_NO_ACCEPTABLE_AUTH = 0xff; +exports.SOCKS5_NO_ACCEPTABLE_AUTH = SOCKS5_NO_ACCEPTABLE_AUTH; +var Socks5Response; +(function (Socks5Response) { + Socks5Response[Socks5Response["Granted"] = 0] = "Granted"; + Socks5Response[Socks5Response["Failure"] = 1] = "Failure"; + Socks5Response[Socks5Response["NotAllowed"] = 2] = "NotAllowed"; + Socks5Response[Socks5Response["NetworkUnreachable"] = 3] = "NetworkUnreachable"; + Socks5Response[Socks5Response["HostUnreachable"] = 4] = "HostUnreachable"; + Socks5Response[Socks5Response["ConnectionRefused"] = 5] = "ConnectionRefused"; + Socks5Response[Socks5Response["TTLExpired"] = 6] = "TTLExpired"; + Socks5Response[Socks5Response["CommandNotSupported"] = 7] = "CommandNotSupported"; + Socks5Response[Socks5Response["AddressNotSupported"] = 8] = "AddressNotSupported"; +})(Socks5Response || (Socks5Response = {})); +exports.Socks5Response = Socks5Response; +var Socks5HostType; +(function (Socks5HostType) { + Socks5HostType[Socks5HostType["IPv4"] = 1] = "IPv4"; + Socks5HostType[Socks5HostType["Hostname"] = 3] = "Hostname"; + Socks5HostType[Socks5HostType["IPv6"] = 4] = "IPv6"; +})(Socks5HostType || (Socks5HostType = {})); +exports.Socks5HostType = Socks5HostType; +var SocksClientState; +(function (SocksClientState) { + SocksClientState[SocksClientState["Created"] = 0] = "Created"; + SocksClientState[SocksClientState["Connecting"] = 1] = "Connecting"; + SocksClientState[SocksClientState["Connected"] = 2] = "Connected"; + SocksClientState[SocksClientState["SentInitialHandshake"] = 3] = "SentInitialHandshake"; + SocksClientState[SocksClientState["ReceivedInitialHandshakeResponse"] = 4] = "ReceivedInitialHandshakeResponse"; + SocksClientState[SocksClientState["SentAuthentication"] = 5] = "SentAuthentication"; + SocksClientState[SocksClientState["ReceivedAuthenticationResponse"] = 6] = "ReceivedAuthenticationResponse"; + SocksClientState[SocksClientState["SentFinalHandshake"] = 7] = "SentFinalHandshake"; + SocksClientState[SocksClientState["ReceivedFinalResponse"] = 8] = "ReceivedFinalResponse"; + SocksClientState[SocksClientState["BoundWaitingForConnection"] = 9] = "BoundWaitingForConnection"; + SocksClientState[SocksClientState["Established"] = 10] = "Established"; + SocksClientState[SocksClientState["Disconnected"] = 11] = "Disconnected"; + SocksClientState[SocksClientState["Error"] = 99] = "Error"; +})(SocksClientState || (SocksClientState = {})); +exports.SocksClientState = SocksClientState; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/constants.js.map b/mybulma/node_modules/socks/build/common/constants.js.map new file mode 100644 index 0000000..c1e070d --- /dev/null +++ b/mybulma/node_modules/socks/build/common/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/helpers.js b/mybulma/node_modules/socks/build/common/helpers.js new file mode 100644 index 0000000..f84db8f --- /dev/null +++ b/mybulma/node_modules/socks/build/common/helpers.js @@ -0,0 +1,128 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateSocksClientChainOptions = exports.validateSocksClientOptions = void 0; +const util_1 = require("./util"); +const constants_1 = require("./constants"); +const stream = require("stream"); +/** + * Validates the provided SocksClientOptions + * @param options { SocksClientOptions } + * @param acceptedCommands { string[] } A list of accepted SocksProxy commands. + */ +function validateSocksClientOptions(options, acceptedCommands = ['connect', 'bind', 'associate']) { + // Check SOCKs command option. + if (!constants_1.SocksCommand[options.command]) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommand, options); + } + // Check SocksCommand for acceptable command. + if (acceptedCommands.indexOf(options.command) === -1) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandForOperation, options); + } + // Check destination + if (!isValidSocksRemoteHost(options.destination)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); + } + // Check SOCKS proxy to use + if (!isValidSocksProxy(options.proxy)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); + } + // Validate custom auth (if set) + validateCustomProxyAuth(options.proxy, options); + // Check timeout + if (options.timeout && !isValidTimeoutValue(options.timeout)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); + } + // Check existing_socket (if provided) + if (options.existing_socket && + !(options.existing_socket instanceof stream.Duplex)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsExistingSocket, options); + } +} +exports.validateSocksClientOptions = validateSocksClientOptions; +/** + * Validates the SocksClientChainOptions + * @param options { SocksClientChainOptions } + */ +function validateSocksClientChainOptions(options) { + // Only connect is supported when chaining. + if (options.command !== 'connect') { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandChain, options); + } + // Check destination + if (!isValidSocksRemoteHost(options.destination)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); + } + // Validate proxies (length) + if (!(options.proxies && + Array.isArray(options.proxies) && + options.proxies.length >= 2)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxiesLength, options); + } + // Validate proxies + options.proxies.forEach((proxy) => { + if (!isValidSocksProxy(proxy)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); + } + // Validate custom auth (if set) + validateCustomProxyAuth(proxy, options); + }); + // Check timeout + if (options.timeout && !isValidTimeoutValue(options.timeout)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); + } +} +exports.validateSocksClientChainOptions = validateSocksClientChainOptions; +function validateCustomProxyAuth(proxy, options) { + if (proxy.custom_auth_method !== undefined) { + // Invalid auth method range + if (proxy.custom_auth_method < constants_1.SOCKS5_CUSTOM_AUTH_START || + proxy.custom_auth_method > constants_1.SOCKS5_CUSTOM_AUTH_END) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthRange, options); + } + // Missing custom_auth_request_handler + if (proxy.custom_auth_request_handler === undefined || + typeof proxy.custom_auth_request_handler !== 'function') { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + // Missing custom_auth_response_size + if (proxy.custom_auth_response_size === undefined) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + // Missing/invalid custom_auth_response_handler + if (proxy.custom_auth_response_handler === undefined || + typeof proxy.custom_auth_response_handler !== 'function') { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + } +} +/** + * Validates a SocksRemoteHost + * @param remoteHost { SocksRemoteHost } + */ +function isValidSocksRemoteHost(remoteHost) { + return (remoteHost && + typeof remoteHost.host === 'string' && + typeof remoteHost.port === 'number' && + remoteHost.port >= 0 && + remoteHost.port <= 65535); +} +/** + * Validates a SocksProxy + * @param proxy { SocksProxy } + */ +function isValidSocksProxy(proxy) { + return (proxy && + (typeof proxy.host === 'string' || typeof proxy.ipaddress === 'string') && + typeof proxy.port === 'number' && + proxy.port >= 0 && + proxy.port <= 65535 && + (proxy.type === 4 || proxy.type === 5)); +} +/** + * Validates a timeout value. + * @param value { Number } + */ +function isValidTimeoutValue(value) { + return typeof value === 'number' && value > 0; +} +//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/helpers.js.map b/mybulma/node_modules/socks/build/common/helpers.js.map new file mode 100644 index 0000000..dae1248 --- /dev/null +++ b/mybulma/node_modules/socks/build/common/helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/receivebuffer.js b/mybulma/node_modules/socks/build/common/receivebuffer.js new file mode 100644 index 0000000..3dacbf9 --- /dev/null +++ b/mybulma/node_modules/socks/build/common/receivebuffer.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ReceiveBuffer = void 0; +class ReceiveBuffer { + constructor(size = 4096) { + this.buffer = Buffer.allocUnsafe(size); + this.offset = 0; + this.originalSize = size; + } + get length() { + return this.offset; + } + append(data) { + if (!Buffer.isBuffer(data)) { + throw new Error('Attempted to append a non-buffer instance to ReceiveBuffer.'); + } + if (this.offset + data.length >= this.buffer.length) { + const tmp = this.buffer; + this.buffer = Buffer.allocUnsafe(Math.max(this.buffer.length + this.originalSize, this.buffer.length + data.length)); + tmp.copy(this.buffer); + } + data.copy(this.buffer, this.offset); + return (this.offset += data.length); + } + peek(length) { + if (length > this.offset) { + throw new Error('Attempted to read beyond the bounds of the managed internal data.'); + } + return this.buffer.slice(0, length); + } + get(length) { + if (length > this.offset) { + throw new Error('Attempted to read beyond the bounds of the managed internal data.'); + } + const value = Buffer.allocUnsafe(length); + this.buffer.slice(0, length).copy(value); + this.buffer.copyWithin(0, length, length + this.offset - length); + this.offset -= length; + return value; + } +} +exports.ReceiveBuffer = ReceiveBuffer; +//# sourceMappingURL=receivebuffer.js.map \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/receivebuffer.js.map b/mybulma/node_modules/socks/build/common/receivebuffer.js.map new file mode 100644 index 0000000..af5e220 --- /dev/null +++ b/mybulma/node_modules/socks/build/common/receivebuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"receivebuffer.js","sourceRoot":"","sources":["../../src/common/receivebuffer.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa;IAKjB,YAAY,IAAI,GAAG,IAAI;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;SACH;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAC9B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CACjC,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvB;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QAEtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAEO,sCAAa"} \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/util.js b/mybulma/node_modules/socks/build/common/util.js new file mode 100644 index 0000000..f66b72e --- /dev/null +++ b/mybulma/node_modules/socks/build/common/util.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.shuffleArray = exports.SocksClientError = void 0; +/** + * Error wrapper for SocksClient + */ +class SocksClientError extends Error { + constructor(message, options) { + super(message); + this.options = options; + } +} +exports.SocksClientError = SocksClientError; +/** + * Shuffles a given array. + * @param array The array to shuffle. + */ +function shuffleArray(array) { + for (let i = array.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [array[i], array[j]] = [array[j], array[i]]; + } +} +exports.shuffleArray = shuffleArray; +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/common/util.js.map b/mybulma/node_modules/socks/build/common/util.js.map new file mode 100644 index 0000000..f199323 --- /dev/null +++ b/mybulma/node_modules/socks/build/common/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAM,gBAAiB,SAAQ,KAAK;IAClC,YACE,OAAe,EACR,OAAqD;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,YAAO,GAAP,OAAO,CAA8C;IAG9D,CAAC;CACF;AAuBuB,4CAAgB;AArBxC;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAgB;IACpC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;AACH,CAAC;AAYyC,oCAAY"} \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/index.js b/mybulma/node_modules/socks/build/index.js new file mode 100644 index 0000000..05fbb1d --- /dev/null +++ b/mybulma/node_modules/socks/build/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./client/socksclient"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/mybulma/node_modules/socks/build/index.js.map b/mybulma/node_modules/socks/build/index.js.map new file mode 100644 index 0000000..0e2bcb2 --- /dev/null +++ b/mybulma/node_modules/socks/build/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC"} \ No newline at end of file diff --git a/mybulma/node_modules/socks/docs/examples/index.md b/mybulma/node_modules/socks/docs/examples/index.md new file mode 100644 index 0000000..87bfe25 --- /dev/null +++ b/mybulma/node_modules/socks/docs/examples/index.md @@ -0,0 +1,17 @@ +# socks examples + +## TypeScript Examples + +[Connect command](typescript/connectExample.md) + +[Bind command](typescript/bindExample.md) + +[Associate command](typescript/associateExample.md) + +## JavaScript Examples + +[Connect command](javascript/connectExample.md) + +[Bind command](javascript/bindExample.md) + +[Associate command](javascript/associateExample.md) \ No newline at end of file diff --git a/mybulma/node_modules/socks/docs/examples/javascript/associateExample.md b/mybulma/node_modules/socks/docs/examples/javascript/associateExample.md new file mode 100644 index 0000000..c2c7b17 --- /dev/null +++ b/mybulma/node_modules/socks/docs/examples/javascript/associateExample.md @@ -0,0 +1,90 @@ +# socks examples + +## Example for SOCKS 'associate' command + +The associate command tells the SOCKS proxy server to establish a UDP relay. The server binds to a new UDP port and communicates the newly opened port back to the origin client. From here, any SOCKS UDP frame packets sent to this special UDP port on the Proxy server will be forwarded to the desired destination, and any responses will be forwarded back to the origin client (you). + +This can be used for things such as DNS queries, and other UDP communicates. + +**Connection Steps** + +1. Client -(associate)-> Proxy (Tells the proxy to create a UDP relay and bind on a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened and is accepting UDP frame packets on) + +At this point the proxy is accepting UDP frames on the specified port. + +3. Client --(udp frame) -> Proxy -> Destination (The origin client sends a UDP frame to the proxy on the UDP port, and the proxy then forwards it to the destination specified in the UDP frame.) +4. Client <--(udp frame) <-- Proxy <-- Destination (The destination client responds to the udp packet sent in #3) + +## Usage + +The 'associate' command can only be used by creating a new SocksClient instance and listening for the 'established' event. + +**Note:** UDP packets relayed through the proxy servers are encompassed in a special Socks UDP frame format. SocksClient.createUDPFrame() and SocksClient.parseUDPFrame() create and parse these special UDP packets. + +```typescript +const dgram = require('dgram'); +const SocksClient = require('socks').SocksClient; + +// Create a local UDP socket for sending/receiving packets to/from the proxy. +const udpSocket = dgram.createSocket('udp4'); +udpSocket.bind(); + +// Listen for incoming UDP packets from the proxy server. +udpSocket.on('message', (message, rinfo) => { + console.log(SocksClient.parseUDPFrame(message)); + /* + { frameNumber: 0, + remoteHost: { host: '8.8.8.8', port: 53 }, // The remote host that replied with a UDP packet + data: // The data + } + */ +}); + +const options = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will be sending UDP frames to the newly opened UDP port on the server. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept UDP frames from any source. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'associate' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new UDP port for UDP relaying. +client.on('established', info => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote port on the SOCKS proxy server to send UDP frame packets to. + host: '104.131.124.203', + port: 58232 + } + } + */ + + // Send a udp frame to 8.8.8.8 on port 53 through the proxy. + const packet = SocksClient.createUDPFrame({ + remoteHost: { host: '8.8.8.8', port: 53 }, + data: Buffer.from('hello') // A DNS lookup in the real world. + }); + + // Send packet. + udpSocket.send(packet, info.remoteHost.port, info.remoteHost.host); +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); +``` diff --git a/mybulma/node_modules/socks/docs/examples/javascript/bindExample.md b/mybulma/node_modules/socks/docs/examples/javascript/bindExample.md new file mode 100644 index 0000000..be601d5 --- /dev/null +++ b/mybulma/node_modules/socks/docs/examples/javascript/bindExample.md @@ -0,0 +1,83 @@ +# socks examples + +## Example for SOCKS 'bind' command + +The bind command tells the SOCKS proxy server to bind and listen on a new TCP port for an incoming connection. It communicates the newly opened port back to the origin client. Once a incoming connection is accepted by the SOCKS proxy server it then communicates the remote host that connected to the SOCKS proxy back through the same initial connection via the origin client. + +This can be used for things such as FTP clients which require incoming TCP connections, etc. + +**Connection Steps** + +1. Client -(bind)-> Proxy (Tells the proxy to bind to a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened) +3. Client2 --> Proxy (Other client connects to the proxy on this port) +4. Client <--(client2's host info) (Proxy tells the origin client who connected to it) +5. Original connection to the proxy is now a full TCP stream between client (you) and client2. +6. Client <--> Proxy <--> Client2 + + +## Usage + +The 'bind' command can only be used by creating a new SocksClient instance and listening for 'bound' and 'established' events. + + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will connect to the SOCKS proxy server on the newly bound port. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept any client. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'bind' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new port for incoming connections. +client.on('bound', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port of the SOCKS proxy that is now accepting incoming connections. + host: '104.131.124.203', + port: 49928 + } + } + */ +}); + +// This event is fired when the SOCKS server has accepted an incoming connection on the newly bound port. +client.on('established', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port that connected to the SOCKS proxy on the newly bound port. + host: '1.2.3.4', + port: 58232 + } + } + */ + + // At this point info.socket is a regular net.Socket TCP connection between client and client2 (1.2.3.4) (the client which connected to the proxy on the newly bound port.) + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); +``` \ No newline at end of file diff --git a/mybulma/node_modules/socks/docs/examples/javascript/connectExample.md b/mybulma/node_modules/socks/docs/examples/javascript/connectExample.md new file mode 100644 index 0000000..66244c5 --- /dev/null +++ b/mybulma/node_modules/socks/docs/examples/javascript/connectExample.md @@ -0,0 +1,258 @@ +# socks examples + +## Example for SOCKS 'connect' command + +The connect command is the most common use-case for a SOCKS proxy. This establishes a direct connection to a destination host through a proxy server. The destination host only has knowledge of the proxy server connecting to it and does not know about the origin client (you). + +**Origin Client (you) <-> Proxy Server <-> Destination Server** + +In this example, we are connecting to a web server on port 80, and sending a very basic HTTP request to receive a response. It's worth noting that there are many socks-http-agents that can be used with the node http module (and libraries such as request.js) to make this easier. This HTTP request is used as a simple example. + +The 'connect' command can be used via the SocksClient.createConnection() factory function as well as by creating a SocksClient instance and using event handlers. + +### Using createConnection with async/await + +Since SocksClient.createConnection returns a Promise, we can easily use async/await for flow control. + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +async function start() { + try { + const info = await SocksClient.createConnection(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + } catch (err) { + // Handle errors + } +} + +start(); +``` + +### Using createConnection with Promises + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ +}) +.catch(err => { + // handle errors +}); +``` + +### Using createConnection with callbacks + +SocksClient.createConnection() optionally accepts a callback function as a second parameter. + +**Note:** If a callback function is provided, a Promise is still returned from the function, but the promise will always resolve regardless of if there was en error. (tldr: Do not mix callbacks and Promises). + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options, (err, info) => { + if (err) { + // handle errors + } else { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + } +}) +``` + +### Using event handlers + +SocksClient also supports instance creation of a SocksClient. This allows for event based flow control. + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +const client = new SocksClient(options); + +client.on('established', (info) => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ +}); + +// Failed to establish proxy connection to destination. +client.on('error', () => { + // Handle errors +}); +``` \ No newline at end of file diff --git a/mybulma/node_modules/socks/docs/examples/typescript/associateExample.md b/mybulma/node_modules/socks/docs/examples/typescript/associateExample.md new file mode 100644 index 0000000..e8ca193 --- /dev/null +++ b/mybulma/node_modules/socks/docs/examples/typescript/associateExample.md @@ -0,0 +1,93 @@ +# socks examples + +## Example for SOCKS 'associate' command + +The associate command tells the SOCKS proxy server to establish a UDP relay. The server binds to a new UDP port and communicates the newly opened port back to the origin client. From here, any SOCKS UDP frame packets sent to this special UDP port on the Proxy server will be forwarded to the desired destination, and any responses will be forwarded back to the origin client (you). + +This can be used for things such as DNS queries, and other UDP communicates. + +**Connection Steps** + +1. Client -(associate)-> Proxy (Tells the proxy to create a UDP relay and bind on a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened and is accepting UDP frame packets on) + +At this point the proxy is accepting UDP frames on the specified port. + +3. Client --(udp frame) -> Proxy -> Destination (The origin client sends a UDP frame to the proxy on the UDP port, and the proxy then forwards it to the destination specified in the UDP frame.) +4. Client <--(udp frame) <-- Proxy <-- Destination (The destination client responds to the udp packet sent in #3) + +## Usage + +The 'associate' command can only be used by creating a new SocksClient instance and listening for the 'established' event. + +**Note:** UDP packets relayed through the proxy servers are packaged in a special Socks UDP frame format. SocksClient.createUDPFrame() and SocksClient.parseUDPFrame() create and parse these special UDP packets. + +```typescript +import * as dgram from 'dgram'; +import { SocksClient, SocksClientOptions } from 'socks'; + +// Create a local UDP socket for sending/receiving packets to/from the proxy. +const udpSocket = dgram.createSocket('udp4'); +udpSocket.bind(); + +// Listen for incoming UDP packets from the proxy server. +udpSocket.on('message', (message, rinfo) => { + console.log(SocksClient.parseUDPFrame(message)); + /* + { frameNumber: 0, + remoteHost: { host: '8.8.8.8', port: 53 }, // The remote host that replied with a UDP packet + data: // The data + } + */ +}); + +const options: SocksClientOptions = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will be sending UDP frames to the newly opened UDP port on the server. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept UDP frames from any source. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'associate' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new UDP port for UDP relaying. +client.on('established', info => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote port on the SOCKS proxy server to send UDP frame packets to. + host: '104.131.124.203', + port: 58232 + } + } + */ + + // Send a udp frame to 8.8.8.8 on port 53 through the proxy. + const packet = SocksClient.createUDPFrame({ + remoteHost: { host: '8.8.8.8', port: 53 }, + data: Buffer.from('hello') // A DNS lookup in the real world. + }); + + // Send packet. + udpSocket.send(packet, info.remoteHost.port, info.remoteHost.host); +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); + +// Start connection +client.connect(); +``` diff --git a/mybulma/node_modules/socks/docs/examples/typescript/bindExample.md b/mybulma/node_modules/socks/docs/examples/typescript/bindExample.md new file mode 100644 index 0000000..6b7607d --- /dev/null +++ b/mybulma/node_modules/socks/docs/examples/typescript/bindExample.md @@ -0,0 +1,86 @@ +# socks examples + +## Example for SOCKS 'bind' command + +The bind command tells the SOCKS proxy server to bind and listen on a new TCP port for an incoming connection. It communicates the newly opened port back to the origin client. Once a incoming connection is accepted by the SOCKS proxy server it then communicates the remote host that connected to the SOCKS proxy back through the same initial connection via the origin client. + +This can be used for things such as FTP clients which require incoming TCP connections, etc. + +**Connection Steps** + +1. Client -(bind)-> Proxy (Tells the proxy to bind to a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened) +3. Client2 --> Proxy (Other client connects to the proxy on this port) +4. Client <--(client2's host info) (Proxy tells the origin client who connected to it) +5. Original connection to the proxy is now a full TCP stream between client (you) and client2. +6. Client <--> Proxy <--> Client2 + + +## Usage + +The 'bind' command can only be used by creating a new SocksClient instance and listening for 'bound' and 'established' events. + + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will connect to the SOCKS proxy server on the newly bound port. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept any client. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'bind' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new port for incoming connections. +client.on('bound', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port of the SOCKS proxy that is now accepting incoming connections. + host: '104.131.124.203', + port: 49928 + } + } + */ +}); + +// This event is fired when the SOCKS server has accepted an incoming connection on the newly bound port. +client.on('established', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port that connected to the SOCKS proxy on the newly bound port. + host: '1.2.3.4', + port: 58232 + } + } + */ + + // At this point info.socket is a regular net.Socket TCP connection between client and client2 (1.2.3.4) (the client which connected to the proxy on the newly bound port.) + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); + +// Start connection +client.connect(); +``` \ No newline at end of file diff --git a/mybulma/node_modules/socks/docs/examples/typescript/connectExample.md b/mybulma/node_modules/socks/docs/examples/typescript/connectExample.md new file mode 100644 index 0000000..30606d0 --- /dev/null +++ b/mybulma/node_modules/socks/docs/examples/typescript/connectExample.md @@ -0,0 +1,265 @@ +# socks examples + +## Example for SOCKS 'connect' command + +The connect command is the most common use-case for a SOCKS proxy. This establishes a direct connection to a destination host through a proxy server. The destination host only has knowledge of the proxy server connecting to it and does not know about the origin client (you). + +**Origin Client (you) <-> Proxy Server <-> Destination Server** + +In this example, we are connecting to a web server on port 80, and sending a very basic HTTP request to receive a response. It's worth noting that there are many socks-http-agents that can be used with the node http module (and libraries such as request.js) to make this easier. This HTTP request is used as a simple example. + +The 'connect' command can be used via the SocksClient.createConnection() factory function as well as by creating a SocksClient instance and using event handlers. + +### Using createConnection with async/await + +Since SocksClient.createConnection returns a Promise, we can easily use async/await for flow control. + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +async function start() { + try { + const info = await SocksClient.createConnection(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); + } catch (err) { + // Handle errors + } +} + +start(); +``` + +### Using createConnection with Promises + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +}) +.catch(err => { + // handle errors +}); +``` + +### Using createConnection with callbacks + +SocksClient.createConnection() optionally accepts a callback function as a second parameter. + +**Note:** If a callback function is provided, a Promise is still returned from the function, but the promise will always resolve regardless of if there was en error. (tldr: Do not mix callbacks and Promises). + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options, (err, info) => { + if (err) { + // handle errors + } else { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); + } +}) +``` + +### Using event handlers + +SocksClient also supports instance creation of a SocksClient. This allows for event based flow control. + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +const client = new SocksClient(options); + +client.on('established', (info) => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +}); + +// Failed to establish proxy connection to destination. +client.on('error', () => { + // Handle errors +}); + +// Start connection +client.connect(); +``` \ No newline at end of file diff --git a/mybulma/node_modules/socks/docs/index.md b/mybulma/node_modules/socks/docs/index.md new file mode 100644 index 0000000..3eb1d71 --- /dev/null +++ b/mybulma/node_modules/socks/docs/index.md @@ -0,0 +1,5 @@ +# Documentation + +- [API Reference](https://github.com/JoshGlazebrook/socks#api-reference) + +- [Code Examples](./examples/index.md) \ No newline at end of file diff --git a/mybulma/node_modules/socks/docs/migratingFromV1.md b/mybulma/node_modules/socks/docs/migratingFromV1.md new file mode 100644 index 0000000..dd00838 --- /dev/null +++ b/mybulma/node_modules/socks/docs/migratingFromV1.md @@ -0,0 +1,86 @@ +# socks + +## Migrating from v1 + +For the most part, migrating from v1 takes minimal effort as v2 still supports factory creation of proxy connections with callback support. + +### Notable breaking changes + +- In an options object, the proxy 'command' is now required and does not default to 'connect'. +- **In an options object, 'target' is now known as 'destination'.** +- Sockets are no longer paused after a SOCKS connection is made, so socket.resume() is no longer required. (Please be sure to attach data handlers immediately to the Socket to avoid losing data). +- In v2, only the 'connect' command is supported via the factory SocksClient.createConnection function. (BIND and ASSOCIATE must be used with a SocksClient instance via event handlers). +- In v2, the factory SocksClient.createConnection function callback is called with a single object rather than separate socket and info object. +- A SOCKS http/https agent is no longer bundled into the library. + +For informational purposes, here is the original getting started example from v1 converted to work with v2. + +### Before (v1) + +```javascript +var Socks = require('socks'); + +var options = { + proxy: { + ipaddress: "202.101.228.108", + port: 1080, + type: 5 + }, + target: { + host: "google.com", + port: 80 + }, + command: 'connect' +}; + +Socks.createConnection(options, function(err, socket, info) { + if (err) + console.log(err); + else { + socket.write("GET / HTTP/1.1\nHost: google.com\n\n"); + socket.on('data', function(data) { + console.log(data.length); + console.log(data); + }); + + // PLEASE NOTE: sockets need to be resumed before any data will come in or out as they are paused right before this callback is fired. + socket.resume(); + + // 569 + // = 10.13.0", + "npm": ">= 3.0.0" + }, + "author": "Josh Glazebrook", + "contributors": [ + "castorw" + ], + "license": "MIT", + "readmeFilename": "README.md", + "devDependencies": { + "@types/ip": "1.1.0", + "@types/mocha": "^9.1.1", + "@types/node": "^18.0.6", + "@typescript-eslint/eslint-plugin": "^5.30.6", + "@typescript-eslint/parser": "^5.30.6", + "eslint": "^8.20.0", + "mocha": "^10.0.0", + "prettier": "^2.7.1", + "ts-node": "^10.9.1", + "typescript": "^4.7.4" + }, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "scripts": { + "prepublish": "npm install -g typescript && npm run build", + "test": "NODE_ENV=test mocha --recursive --require ts-node/register test/**/*.ts", + "prettier": "prettier --write ./src/**/*.ts --config .prettierrc.yaml", + "lint": "eslint 'src/**/*.ts'", + "build": "rm -rf build typings && prettier --write ./src/**/*.ts --config .prettierrc.yaml && tsc -p ." + } +} diff --git a/mybulma/node_modules/socks/typings/client/socksclient.d.ts b/mybulma/node_modules/socks/typings/client/socksclient.d.ts new file mode 100644 index 0000000..b886d95 --- /dev/null +++ b/mybulma/node_modules/socks/typings/client/socksclient.d.ts @@ -0,0 +1,162 @@ +/// +/// +/// +import { EventEmitter } from 'events'; +import { SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksClientBoundEvent, SocksClientEstablishedEvent, SocksUDPFrameDetails } from '../common/constants'; +import { SocksClientError } from '../common/util'; +import { Duplex } from 'stream'; +declare interface SocksClient { + on(event: 'error', listener: (err: SocksClientError) => void): this; + on(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; + on(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; + once(event: string, listener: (...args: unknown[]) => void): this; + once(event: 'error', listener: (err: SocksClientError) => void): this; + once(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; + once(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; + emit(event: string | symbol, ...args: unknown[]): boolean; + emit(event: 'error', err: SocksClientError): boolean; + emit(event: 'bound', info: SocksClientBoundEvent): boolean; + emit(event: 'established', info: SocksClientEstablishedEvent): boolean; +} +declare class SocksClient extends EventEmitter implements SocksClient { + private options; + private socket; + private state; + private receiveBuffer; + private nextRequiredPacketBufferSize; + private socks5ChosenAuthType; + private onDataReceived; + private onClose; + private onError; + private onConnect; + constructor(options: SocksClientOptions); + /** + * Creates a new SOCKS connection. + * + * Note: Supports callbacks and promises. Only supports the connect command. + * @param options { SocksClientOptions } Options. + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnection(options: SocksClientOptions, callback?: (error: Error | null, info?: SocksClientEstablishedEvent) => void): Promise; + /** + * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. + * + * Note: Supports callbacks and promises. Only supports the connect method. + * Note: Implemented via createConnection() factory function. + * @param options { SocksClientChainOptions } Options + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnectionChain(options: SocksClientChainOptions, callback?: (error: Error | null, socket?: SocksClientEstablishedEvent) => void): Promise; + /** + * Creates a SOCKS UDP Frame. + * @param options + */ + static createUDPFrame(options: SocksUDPFrameDetails): Buffer; + /** + * Parses a SOCKS UDP frame. + * @param data + */ + static parseUDPFrame(data: Buffer): SocksUDPFrameDetails; + /** + * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state. + */ + private setState; + /** + * Starts the connection establishment to the proxy and destination. + * @param existingSocket Connected socket to use instead of creating a new one (internal use). + */ + connect(existingSocket?: Duplex): void; + private getSocketOptions; + /** + * Handles internal Socks timeout callback. + * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed. + */ + private onEstablishedTimeout; + /** + * Handles Socket connect event. + */ + private onConnectHandler; + /** + * Handles Socket data event. + * @param data + */ + private onDataReceivedHandler; + /** + * Handles processing of the data we have received. + */ + private processData; + /** + * Handles Socket close event. + * @param had_error + */ + private onCloseHandler; + /** + * Handles Socket error event. + * @param err + */ + private onErrorHandler; + /** + * Removes internal event listeners on the underlying Socket. + */ + private removeInternalSocketHandlers; + /** + * Closes and destroys the underlying Socket. Emits an error event. + * @param err { String } An error string to include in error event. + */ + private closeSocket; + /** + * Sends initial Socks v4 handshake request. + */ + private sendSocks4InitialHandshake; + /** + * Handles Socks v4 handshake response. + * @param data + */ + private handleSocks4FinalHandshakeResponse; + /** + * Handles Socks v4 incoming connection request (BIND) + * @param data + */ + private handleSocks4IncomingConnectionResponse; + /** + * Sends initial Socks v5 handshake request. + */ + private sendSocks5InitialHandshake; + /** + * Handles initial Socks v5 handshake response. + * @param data + */ + private handleInitialSocks5HandshakeResponse; + /** + * Sends Socks v5 user & password auth handshake. + * + * Note: No auth and user/pass are currently supported. + */ + private sendSocks5UserPassAuthentication; + private sendSocks5CustomAuthentication; + private handleSocks5CustomAuthHandshakeResponse; + private handleSocks5AuthenticationNoAuthHandshakeResponse; + private handleSocks5AuthenticationUserPassHandshakeResponse; + /** + * Handles Socks v5 auth handshake response. + * @param data + */ + private handleInitialSocks5AuthenticationHandshakeResponse; + /** + * Sends Socks v5 final handshake request. + */ + private sendSocks5CommandRequest; + /** + * Handles Socks v5 final handshake response. + * @param data + */ + private handleSocks5FinalHandshakeResponse; + /** + * Handles Socks v5 incoming connection request (BIND). + */ + private handleSocks5IncomingConnectionResponse; + get socksClientOptions(): SocksClientOptions; +} +export { SocksClient, SocksClientOptions, SocksClientChainOptions, SocksClientError, SocksRemoteHost, SocksProxy, SocksUDPFrameDetails, }; diff --git a/mybulma/node_modules/socks/typings/common/constants.d.ts b/mybulma/node_modules/socks/typings/common/constants.d.ts new file mode 100644 index 0000000..32a5705 --- /dev/null +++ b/mybulma/node_modules/socks/typings/common/constants.d.ts @@ -0,0 +1,152 @@ +/// +/// +/// +import { Duplex } from 'stream'; +import { Socket, SocketConnectOpts } from 'net'; +import { RequireOnlyOne } from './util'; +declare const DEFAULT_TIMEOUT = 30000; +declare type SocksProxyType = 4 | 5; +declare const ERRORS: { + InvalidSocksCommand: string; + InvalidSocksCommandForOperation: string; + InvalidSocksCommandChain: string; + InvalidSocksClientOptionsDestination: string; + InvalidSocksClientOptionsExistingSocket: string; + InvalidSocksClientOptionsProxy: string; + InvalidSocksClientOptionsTimeout: string; + InvalidSocksClientOptionsProxiesLength: string; + InvalidSocksClientOptionsCustomAuthRange: string; + InvalidSocksClientOptionsCustomAuthOptions: string; + NegotiationError: string; + SocketClosed: string; + ProxyConnectionTimedOut: string; + InternalError: string; + InvalidSocks4HandshakeResponse: string; + Socks4ProxyRejectedConnection: string; + InvalidSocks4IncomingConnectionResponse: string; + Socks4ProxyRejectedIncomingBoundConnection: string; + InvalidSocks5InitialHandshakeResponse: string; + InvalidSocks5IntiailHandshakeSocksVersion: string; + InvalidSocks5InitialHandshakeNoAcceptedAuthType: string; + InvalidSocks5InitialHandshakeUnknownAuthType: string; + Socks5AuthenticationFailed: string; + InvalidSocks5FinalHandshake: string; + InvalidSocks5FinalHandshakeRejected: string; + InvalidSocks5IncomingConnectionResponse: string; + Socks5ProxyRejectedIncomingBoundConnection: string; +}; +declare const SOCKS_INCOMING_PACKET_SIZES: { + Socks5InitialHandshakeResponse: number; + Socks5UserPassAuthenticationResponse: number; + Socks5ResponseHeader: number; + Socks5ResponseIPv4: number; + Socks5ResponseIPv6: number; + Socks5ResponseHostname: (hostNameLength: number) => number; + Socks4Response: number; +}; +declare type SocksCommandOption = 'connect' | 'bind' | 'associate'; +declare enum SocksCommand { + connect = 1, + bind = 2, + associate = 3 +} +declare enum Socks4Response { + Granted = 90, + Failed = 91, + Rejected = 92, + RejectedIdent = 93 +} +declare enum Socks5Auth { + NoAuth = 0, + GSSApi = 1, + UserPass = 2 +} +declare const SOCKS5_CUSTOM_AUTH_START = 128; +declare const SOCKS5_CUSTOM_AUTH_END = 254; +declare const SOCKS5_NO_ACCEPTABLE_AUTH = 255; +declare enum Socks5Response { + Granted = 0, + Failure = 1, + NotAllowed = 2, + NetworkUnreachable = 3, + HostUnreachable = 4, + ConnectionRefused = 5, + TTLExpired = 6, + CommandNotSupported = 7, + AddressNotSupported = 8 +} +declare enum Socks5HostType { + IPv4 = 1, + Hostname = 3, + IPv6 = 4 +} +declare enum SocksClientState { + Created = 0, + Connecting = 1, + Connected = 2, + SentInitialHandshake = 3, + ReceivedInitialHandshakeResponse = 4, + SentAuthentication = 5, + ReceivedAuthenticationResponse = 6, + SentFinalHandshake = 7, + ReceivedFinalResponse = 8, + BoundWaitingForConnection = 9, + Established = 10, + Disconnected = 11, + Error = 99 +} +/** + * Represents a SocksProxy + */ +declare type SocksProxy = RequireOnlyOne<{ + ipaddress?: string; + host?: string; + port: number; + type: SocksProxyType; + userId?: string; + password?: string; + custom_auth_method?: number; + custom_auth_request_handler?: () => Promise; + custom_auth_response_size?: number; + custom_auth_response_handler?: (data: Buffer) => Promise; +}, 'host' | 'ipaddress'>; +/** + * Represents a remote host + */ +interface SocksRemoteHost { + host: string; + port: number; +} +/** + * SocksClient connection options. + */ +interface SocksClientOptions { + command: SocksCommandOption; + destination: SocksRemoteHost; + proxy: SocksProxy; + timeout?: number; + existing_socket?: Duplex; + set_tcp_nodelay?: boolean; + socket_options?: SocketConnectOpts; +} +/** + * SocksClient chain connection options. + */ +interface SocksClientChainOptions { + command: 'connect'; + destination: SocksRemoteHost; + proxies: SocksProxy[]; + timeout?: number; + randomizeChain?: false; +} +interface SocksClientEstablishedEvent { + socket: Socket; + remoteHost?: SocksRemoteHost; +} +declare type SocksClientBoundEvent = SocksClientEstablishedEvent; +interface SocksUDPFrameDetails { + frameNumber?: number; + remoteHost: SocksRemoteHost; + data: Buffer; +} +export { DEFAULT_TIMEOUT, ERRORS, SocksProxyType, SocksCommand, Socks4Response, Socks5Auth, Socks5HostType, Socks5Response, SocksClientState, SocksProxy, SocksRemoteHost, SocksCommandOption, SocksClientOptions, SocksClientChainOptions, SocksClientEstablishedEvent, SocksClientBoundEvent, SocksUDPFrameDetails, SOCKS_INCOMING_PACKET_SIZES, SOCKS5_CUSTOM_AUTH_START, SOCKS5_CUSTOM_AUTH_END, SOCKS5_NO_ACCEPTABLE_AUTH, }; diff --git a/mybulma/node_modules/socks/typings/common/helpers.d.ts b/mybulma/node_modules/socks/typings/common/helpers.d.ts new file mode 100644 index 0000000..8c3a106 --- /dev/null +++ b/mybulma/node_modules/socks/typings/common/helpers.d.ts @@ -0,0 +1,13 @@ +import { SocksClientOptions, SocksClientChainOptions } from '../client/socksclient'; +/** + * Validates the provided SocksClientOptions + * @param options { SocksClientOptions } + * @param acceptedCommands { string[] } A list of accepted SocksProxy commands. + */ +declare function validateSocksClientOptions(options: SocksClientOptions, acceptedCommands?: string[]): void; +/** + * Validates the SocksClientChainOptions + * @param options { SocksClientChainOptions } + */ +declare function validateSocksClientChainOptions(options: SocksClientChainOptions): void; +export { validateSocksClientOptions, validateSocksClientChainOptions }; diff --git a/mybulma/node_modules/socks/typings/common/receivebuffer.d.ts b/mybulma/node_modules/socks/typings/common/receivebuffer.d.ts new file mode 100644 index 0000000..756e98b --- /dev/null +++ b/mybulma/node_modules/socks/typings/common/receivebuffer.d.ts @@ -0,0 +1,12 @@ +/// +declare class ReceiveBuffer { + private buffer; + private offset; + private originalSize; + constructor(size?: number); + get length(): number; + append(data: Buffer): number; + peek(length: number): Buffer; + get(length: number): Buffer; +} +export { ReceiveBuffer }; diff --git a/mybulma/node_modules/socks/typings/common/util.d.ts b/mybulma/node_modules/socks/typings/common/util.d.ts new file mode 100644 index 0000000..83f20e7 --- /dev/null +++ b/mybulma/node_modules/socks/typings/common/util.d.ts @@ -0,0 +1,17 @@ +import { SocksClientOptions, SocksClientChainOptions } from './constants'; +/** + * Error wrapper for SocksClient + */ +declare class SocksClientError extends Error { + options: SocksClientOptions | SocksClientChainOptions; + constructor(message: string, options: SocksClientOptions | SocksClientChainOptions); +} +/** + * Shuffles a given array. + * @param array The array to shuffle. + */ +declare function shuffleArray(array: unknown[]): void; +declare type RequireOnlyOne = Pick> & { + [K in Keys]?: Required> & Partial, undefined>>; +}[Keys]; +export { RequireOnlyOne, SocksClientError, shuffleArray }; diff --git a/mybulma/node_modules/socks/typings/index.d.ts b/mybulma/node_modules/socks/typings/index.d.ts new file mode 100644 index 0000000..fbf9006 --- /dev/null +++ b/mybulma/node_modules/socks/typings/index.d.ts @@ -0,0 +1 @@ +export * from './client/socksclient'; diff --git a/mybulma/node_modules/source-map/dist/source-map.js b/mybulma/node_modules/source-map/dist/source-map.js new file mode 100644 index 0000000..b75e98b --- /dev/null +++ b/mybulma/node_modules/source-map/dist/source-map.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("fs"),require("path")):"function"==typeof define&&define.amd?define(["fs","path"],n):"object"==typeof exports?exports.sourceMap=n(require("fs"),require("path")):e.sourceMap=n(e.fs,e.path)}(window,(function(e,n){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=5)}([function(e,n){n.getArg=function(e,n,t){if(n in e)return e[n];if(3===arguments.length)return t;throw new Error('"'+n+'" is a required argument.')};const t=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,r=/^data:.+\,.+$/;function o(e){const n=e.match(t);return n?{scheme:n[1],auth:n[2],host:n[3],port:n[4],path:n[5]}:null}function i(e){let n="";return e.scheme&&(n+=e.scheme+":"),n+="//",e.auth&&(n+=e.auth+"@"),e.host&&(n+=e.host),e.port&&(n+=":"+e.port),e.path&&(n+=e.path),n}n.urlParse=o,n.urlGenerate=i;const s=function(e){const n=[];return function(t){for(let e=0;e32&&n.pop(),r}}((function(e){let t=e;const r=o(e);if(r){if(!r.path)return e;t=r.path}const s=n.isAbsolute(t),l=[];let a=0,u=0;for(;;){if(a=u,u=t.indexOf("/",a),-1===u){l.push(t.slice(a));break}for(l.push(t.slice(a,u));u=0;u--){const e=l[u];"."===e?l.splice(u,1):".."===e?c++:c>0&&(""===e?(l.splice(u+1,c),c=0):(l.splice(u,2),c--))}return t=l.join("/"),""===t&&(t=s?"/":"."),r?(r.path=t,i(r)):t}));function l(e,n){""===e&&(e="."),""===n&&(n=".");const t=o(n),l=o(e);if(l&&(e=l.path||"/"),t&&!t.scheme)return l&&(t.scheme=l.scheme),i(t);if(t||n.match(r))return n;if(l&&!l.host&&!l.path)return l.host=n,i(l);const a="/"===n.charAt(0)?n:s(e.replace(/\/+$/,"")+"/"+n);return l?(l.path=a,i(l)):a}n.normalize=s,n.join=l,n.isAbsolute=function(e){return"/"===e.charAt(0)||t.test(e)},n.relative=function(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");let t=0;for(;0!==n.indexOf(e+"/");){const r=e.lastIndexOf("/");if(r<0)return n;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return n;++t}return Array(t+1).join("../")+n.substr(e.length+1)};const a=!("__proto__"in Object.create(null));function u(e){return e}function c(e){if(!e)return!1;const n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(let t=n-10;t>=0;t--)if(36!==e.charCodeAt(t))return!1;return!0}function g(e,n){return e===n?0:null===e?1:null===n?-1:e>n?1:-1}n.toSetString=a?u:function(e){return c(e)?"$"+e:e},n.fromSetString=a?u:function(e){return c(e)?e.slice(1):e},n.compareByOriginalPositions=function(e,n,t){let r=g(e.source,n.source);return 0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r||t?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=e.generatedLine-n.generatedLine,0!==r?r:g(e.name,n.name)))))},n.compareByGeneratedPositionsDeflated=function(e,n,t){let r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r||t?r:(r=g(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:g(e.name,n.name)))))},n.compareByGeneratedPositionsInflated=function(e,n){let t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=g(e.source,n.source),0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:g(e.name,n.name)))))},n.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},n.computeSourceURL=function(e,n,t){if(n=n||"",e&&("/"!==e[e.length-1]&&"/"!==n[0]&&(e+="/"),n=e+n),t){const e=o(t);if(!e)throw new Error("sourceMapURL could not be parsed");if(e.path){const n=e.path.lastIndexOf("/");n>=0&&(e.path=e.path.substring(0,n+1))}n=l(i(e),n)}return s(n)}},function(e,n,t){const r=t(2),o=t(0),i=t(3).ArraySet,s=t(7).MappingList;class l{constructor(e){e||(e={}),this._file=o.getArg(e,"file",null),this._sourceRoot=o.getArg(e,"sourceRoot",null),this._skipValidation=o.getArg(e,"skipValidation",!1),this._sources=new i,this._names=new i,this._mappings=new s,this._sourcesContents=null}static fromSourceMap(e){const n=e.sourceRoot,t=new l({file:e.file,sourceRoot:n});return e.eachMapping((function(e){const r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=n&&(r.source=o.relative(n,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),t.addMapping(r)})),e.sources.forEach((function(r){let i=r;null!==n&&(i=o.relative(n,r)),t._sources.has(i)||t._sources.add(i);const s=e.sourceContentFor(r);null!=s&&t.setSourceContent(r,s)})),t}addMapping(e){const n=o.getArg(e,"generated"),t=o.getArg(e,"original",null);let r=o.getArg(e,"source",null),i=o.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,t,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=t&&t.line,originalColumn:null!=t&&t.column,source:r,name:i})}setSourceContent(e,n){let t=e;null!=this._sourceRoot&&(t=o.relative(this._sourceRoot,t)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[o.toSetString(t)]=n):this._sourcesContents&&(delete this._sourcesContents[o.toSetString(t)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))}applySourceMap(e,n,t){let r=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');r=e.file}const s=this._sourceRoot;null!=s&&(r=o.relative(s,r));const l=this._mappings.toArray().length>0?new i:this._sources,a=new i;this._mappings.unsortedForEach((function(n){if(n.source===r&&null!=n.originalLine){const r=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=r.source&&(n.source=r.source,null!=t&&(n.source=o.join(t,n.source)),null!=s&&(n.source=o.relative(s,n.source)),n.originalLine=r.line,n.originalColumn=r.column,null!=r.name&&(n.name=r.name))}const i=n.source;null==i||l.has(i)||l.add(i);const u=n.name;null==u||a.has(u)||a.add(u)}),this),this._sources=l,this._names=a,e.sources.forEach((function(n){const r=e.sourceContentFor(n);null!=r&&(null!=t&&(n=o.join(t,n)),null!=s&&(n=o.relative(s,n)),this.setSourceContent(n,r))}),this)}_validateMapping(e,n,t,r){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0&&!n&&!t&&!r);else if(!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&t))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:t,original:n,name:r}))}_serializeMappings(){let e,n,t,i,s=0,l=1,a=0,u=0,c=0,g=0,p="";const h=this._mappings.toArray();for(let m=0,d=h.length;m0){if(!o.compareByGeneratedPositionsInflated(n,h[m-1]))continue;e+=","}e+=r.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(i=this._sources.indexOf(n.source),e+=r.encode(i-g),g=i,e+=r.encode(n.originalLine-1-u),u=n.originalLine-1,e+=r.encode(n.originalColumn-a),a=n.originalColumn,null!=n.name&&(t=this._names.indexOf(n.name),e+=r.encode(t-c),c=t)),p+=e}return p}_generateSourcesContent(e,n){return e.map((function(e){if(!this._sourcesContents)return null;null!=n&&(e=o.relative(n,e));const t=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,t)?this._sourcesContents[t]:null}),this)}toJSON(){const e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e}toString(){return JSON.stringify(this.toJSON())}}l.prototype._version=3,n.SourceMapGenerator=l},function(e,n,t){const r=t(6);n.encode=function(e){let n,t="",o=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{n=31&o,o>>>=5,o>0&&(n|=32),t+=r.encode(n)}while(o>0);return t}},function(e,n){class t{constructor(){this._array=[],this._set=new Map}static fromArray(e,n){const r=new t;for(let t=0,o=e.length;t=0)return n;throw new Error('"'+e+'" is not in the set.')}at(e){if(e>=0&&ee.arrayBuffer());if(n instanceof ArrayBuffer)return Promise.resolve(n);throw new Error("You must provide the string URL or ArrayBuffer contents of lib/mappings.wasm by calling SourceMapConsumer.initialize({ 'lib/mappings.wasm': ... }) before using SourceMapConsumer")},e.exports.initialize=e=>n=e}else{const r=t(10),o=t(11);e.exports=function(){return new Promise((e,t)=>{const i=o.join(n,"mappings.wasm");r.readFile(i,null,(n,r)=>{n?t(n):e(r.buffer)})})},e.exports.initialize=e=>{console.debug("SourceMapConsumer.initialize is a no-op when running in node.js")}}}).call(this,"/")},function(e,n,t){n.SourceMapGenerator=t(1).SourceMapGenerator,n.SourceMapConsumer=t(8).SourceMapConsumer,n.SourceNode=t(13).SourceNode},function(e,n){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&et||o==t&&s>=i||r.compareByGeneratedPositionsInflated(e,n)<=0}(this._last,e)?(this._sorted=!1,this._array.push(e)):(this._last=e,this._array.push(e))}toArray(){return this._sorted||(this._array.sort(r.compareByGeneratedPositionsInflated),this._sorted=!0),this._array}}},function(e,n,t){const r=t(0),o=t(9),i=t(3).ArraySet,s=(t(2),t(4)),l=t(12),a=Symbol("smcInternal");class u{constructor(e,n){return e==a?Promise.resolve(this):function(e,n){let t=e;"string"==typeof e&&(t=r.parseSourceMapInput(e));const o=null!=t.sections?new g(t,n):new c(t,n);return Promise.resolve(o)}(e,n)}static initialize(e){s.initialize(e["lib/mappings.wasm"])}static fromSourceMap(e,n){return function(e,n){return c.fromSourceMap(e,n)}(e,n)}static async with(e,n,t){const r=await new u(e,n);try{return await t(r)}finally{r.destroy()}}_parseMappings(e,n){throw new Error("Subclasses must implement _parseMappings")}eachMapping(e,n,t){throw new Error("Subclasses must implement eachMapping")}allGeneratedPositionsFor(e){throw new Error("Subclasses must implement allGeneratedPositionsFor")}destroy(){throw new Error("Subclasses must implement destroy")}}u.prototype._version=3,u.GENERATED_ORDER=1,u.ORIGINAL_ORDER=2,u.GREATEST_LOWER_BOUND=1,u.LEAST_UPPER_BOUND=2,n.SourceMapConsumer=u;class c extends u{constructor(e,n){return super(a).then(t=>{let o=e;"string"==typeof e&&(o=r.parseSourceMapInput(e));const s=r.getArg(o,"version");let a=r.getArg(o,"sources");const u=r.getArg(o,"names",[]);let c=r.getArg(o,"sourceRoot",null);const g=r.getArg(o,"sourcesContent",null),p=r.getArg(o,"mappings"),h=r.getArg(o,"file",null);if(s!=t._version)throw new Error("Unsupported version: "+s);return c&&(c=r.normalize(c)),a=a.map(String).map(r.normalize).map((function(e){return c&&r.isAbsolute(c)&&r.isAbsolute(e)?r.relative(c,e):e})),t._names=i.fromArray(u.map(String),!0),t._sources=i.fromArray(a,!0),t._absoluteSources=t._sources.toArray().map((function(e){return r.computeSourceURL(c,e,n)})),t.sourceRoot=c,t.sourcesContent=g,t._mappings=p,t._sourceMapURL=n,t.file=h,t._computedColumnSpans=!1,t._mappingsPtr=0,t._wasm=null,l().then(e=>(t._wasm=e,t))})}_findSourceIndex(e){let n=e;if(null!=this.sourceRoot&&(n=r.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);for(let n=0;n{null!==n.source&&(n.source=this._sources.at(n.source),n.source=r.computeSourceURL(s,n.source,this._sourceMapURL),null!==n.name&&(n.name=this._names.at(n.name))),e.call(o,n)},()=>{switch(i){case u.GENERATED_ORDER:this._wasm.exports.by_generated_location(this._getMappingsPtr());break;case u.ORIGINAL_ORDER:this._wasm.exports.by_original_location(this._getMappingsPtr());break;default:throw new Error("Unknown order of iteration.")}})}allGeneratedPositionsFor(e){let n=r.getArg(e,"source");const t=r.getArg(e,"line"),o=e.column||0;if(n=this._findSourceIndex(n),n<0)return[];if(t<1)throw new Error("Line numbers must be >= 1");if(o<0)throw new Error("Column numbers must be >= 0");const i=[];return this._wasm.withMappingCallback(e=>{let n=e.lastGeneratedColumn;this._computedColumnSpans&&null===n&&(n=1/0),i.push({line:e.generatedLine,column:e.generatedColumn,lastColumn:n})},()=>{this._wasm.exports.all_generated_locations_for(this._getMappingsPtr(),n,t-1,"column"in e,o)}),i}destroy(){0!==this._mappingsPtr&&(this._wasm.exports.free_mappings(this._mappingsPtr),this._mappingsPtr=0)}computeColumnSpans(){this._computedColumnSpans||(this._wasm.exports.compute_column_spans(this._getMappingsPtr()),this._computedColumnSpans=!0)}originalPositionFor(e){const n={generatedLine:r.getArg(e,"line"),generatedColumn:r.getArg(e,"column")};if(n.generatedLine<1)throw new Error("Line numbers must be >= 1");if(n.generatedColumn<0)throw new Error("Column numbers must be >= 0");let t,o=r.getArg(e,"bias",u.GREATEST_LOWER_BOUND);if(null==o&&(o=u.GREATEST_LOWER_BOUND),this._wasm.withMappingCallback(e=>t=e,()=>{this._wasm.exports.original_location_for(this._getMappingsPtr(),n.generatedLine-1,n.generatedColumn,o)}),t&&t.generatedLine===n.generatedLine){let e=r.getArg(t,"source",null);null!==e&&(e=this._sources.at(e),e=r.computeSourceURL(this.sourceRoot,e,this._sourceMapURL));let n=r.getArg(t,"name",null);return null!==n&&(n=this._names.at(n)),{source:e,line:r.getArg(t,"originalLine",null),column:r.getArg(t,"originalColumn",null),name:n}}return{source:null,line:null,column:null,name:null}}hasContentsOfAllSources(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e})))}sourceContentFor(e,n){if(!this.sourcesContent)return null;const t=this._findSourceIndex(e);if(t>=0)return this.sourcesContent[t];let o,i=e;if(null!=this.sourceRoot&&(i=r.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=r.urlParse(this.sourceRoot))){const e=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(n)return null;throw new Error('"'+i+'" is not in the SourceMap.')}generatedPositionFor(e){let n=r.getArg(e,"source");if(n=this._findSourceIndex(n),n<0)return{line:null,column:null,lastColumn:null};const t={source:n,originalLine:r.getArg(e,"line"),originalColumn:r.getArg(e,"column")};if(t.originalLine<1)throw new Error("Line numbers must be >= 1");if(t.originalColumn<0)throw new Error("Column numbers must be >= 0");let o,i=r.getArg(e,"bias",u.GREATEST_LOWER_BOUND);if(null==i&&(i=u.GREATEST_LOWER_BOUND),this._wasm.withMappingCallback(e=>o=e,()=>{this._wasm.exports.generated_location_for(this._getMappingsPtr(),t.source,t.originalLine-1,t.originalColumn,i)}),o&&o.source===t.source){let e=o.lastGeneratedColumn;return this._computedColumnSpans&&null===e&&(e=1/0),{line:r.getArg(o,"generatedLine",null),column:r.getArg(o,"generatedColumn",null),lastColumn:e}}return{line:null,column:null,lastColumn:null}}}c.prototype.consumer=u,n.BasicSourceMapConsumer=c;class g extends u{constructor(e,n){return super(a).then(t=>{let o=e;"string"==typeof e&&(o=r.parseSourceMapInput(e));const s=r.getArg(o,"version"),l=r.getArg(o,"sections");if(s!=t._version)throw new Error("Unsupported version: "+s);t._sources=new i,t._names=new i,t.__generatedMappings=null,t.__originalMappings=null,t.__generatedMappingsUnsorted=null,t.__originalMappingsUnsorted=null;let a={line:-1,column:0};return Promise.all(l.map(e=>{if(e.url)throw new Error("Support for url field in sections not implemented.");const t=r.getArg(e,"offset"),o=r.getArg(t,"line"),i=r.getArg(t,"column");if(o({generatedOffset:{generatedLine:o+1,generatedColumn:i+1},consumer:e}))})).then(e=>(t._sections=e,t))})}get _generatedMappings(){return this.__generatedMappings||this._sortGeneratedMappings(),this.__generatedMappings}get _originalMappings(){return this.__originalMappings||this._sortOriginalMappings(),this.__originalMappings}get _generatedMappingsUnsorted(){return this.__generatedMappingsUnsorted||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappingsUnsorted}get _originalMappingsUnsorted(){return this.__originalMappingsUnsorted||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappingsUnsorted}_sortGeneratedMappings(){const e=this._generatedMappingsUnsorted;e.sort(r.compareByGeneratedPositionsDeflated),this.__generatedMappings=e}_sortOriginalMappings(){const e=this._originalMappingsUnsorted;e.sort(r.compareByOriginalPositions),this.__originalMappings=e}get sources(){const e=[];for(let n=0;ni.push(e));for(let e=0;e= 1");if(t.originalColumn<0)throw new Error("Column numbers must be >= 0");const i=[];let s=this._findMapping(t,this._originalMappings,"originalLine","originalColumn",r.compareByOriginalPositions,o.LEAST_UPPER_BOUND);if(s>=0){let t=this._originalMappings[s];if(void 0===e.column){const e=t.originalLine;for(;t&&t.originalLine===e;){let e=t.lastGeneratedColumn;this._computedColumnSpans&&null===e&&(e=1/0),i.push({line:r.getArg(t,"generatedLine",null),column:r.getArg(t,"generatedColumn",null),lastColumn:e}),t=this._originalMappings[++s]}}else{const e=t.originalColumn;for(;t&&t.originalLine===n&&t.originalColumn==e;){let e=t.lastGeneratedColumn;this._computedColumnSpans&&null===e&&(e=1/0),i.push({line:r.getArg(t,"generatedLine",null),column:r.getArg(t,"generatedColumn",null),lastColumn:e}),t=this._originalMappings[++s]}}}return i}destroy(){for(let e=0;e0?r-a>1?e(a,r,o,i,s,l):l==n.LEAST_UPPER_BOUND?r1?e(t,a,o,i,s,l):l==n.LEAST_UPPER_BOUND?a:t<0?-1:t}(-1,t.length,e,t,r,o||n.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;i-1>=0&&0===r(t[i],t[i-1],!0);)--i;return i}},function(n,t){n.exports=e},function(e,t){e.exports=n},function(e,n,t){const r=t(4);function o(){this.generatedLine=0,this.generatedColumn=0,this.lastGeneratedColumn=null,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}let i=null;e.exports=function(){if(i)return i;const e=[];return i=r().then(n=>WebAssembly.instantiate(n,{env:{mapping_callback(n,t,r,i,s,l,a,u,c,g){const p=new o;p.generatedLine=n+1,p.generatedColumn=t,r&&(p.lastGeneratedColumn=i-1),s&&(p.source=l,p.originalLine=a+1,p.originalColumn=u,c&&(p.name=g)),e[e.length-1](p)},start_all_generated_locations_for(){console.time("all_generated_locations_for")},end_all_generated_locations_for(){console.timeEnd("all_generated_locations_for")},start_compute_column_spans(){console.time("compute_column_spans")},end_compute_column_spans(){console.timeEnd("compute_column_spans")},start_generated_location_for(){console.time("generated_location_for")},end_generated_location_for(){console.timeEnd("generated_location_for")},start_original_location_for(){console.time("original_location_for")},end_original_location_for(){console.timeEnd("original_location_for")},start_parse_mappings(){console.time("parse_mappings")},end_parse_mappings(){console.timeEnd("parse_mappings")},start_sort_by_generated_location(){console.time("sort_by_generated_location")},end_sort_by_generated_location(){console.timeEnd("sort_by_generated_location")},start_sort_by_original_location(){console.time("sort_by_original_location")},end_sort_by_original_location(){console.timeEnd("sort_by_original_location")}}})).then(n=>({exports:n.instance.exports,withMappingCallback:(n,t)=>{e.push(n);try{t()}finally{e.pop()}}})).then(null,e=>{throw i=null,e}),i}},function(e,n,t){const r=t(1).SourceMapGenerator,o=t(0),i=/(\r?\n)/,s="$$$isSourceNode$$$";class l{constructor(e,n,t,r,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==n?null:n,this.source=null==t?null:t,this.name=null==o?null:o,this[s]=!0,null!=r&&this.add(r)}static fromStringWithSourceMap(e,n,t){const r=new l,s=e.split(i);let a=0;const u=function(){return e()+(e()||"");function e(){return a=0;n--)this.prepend(e[n]);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this}walk(e){let n;for(let t=0,r=this.children.length;t0){for(n=[],t=0;t= 0) { + return idx; + } + throw new Error('"' + aStr + '" is not in the set.'); + } + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error("No element indexed by " + aIdx); + } + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + toArray() { + return this._array.slice(); + } +} +exports.ArraySet = ArraySet; diff --git a/mybulma/node_modules/source-map/lib/base64-vlq.js b/mybulma/node_modules/source-map/lib/base64-vlq.js new file mode 100644 index 0000000..fc1049c --- /dev/null +++ b/mybulma/node_modules/source-map/lib/base64-vlq.js @@ -0,0 +1,111 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. 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 Google Inc. nor the names of its + * 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 base64 = require("./base64"); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +const VLQ_BASE_SHIFT = 5; + +// binary: 100000 +const VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +const VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +const VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +// eslint-disable-next-line no-unused-vars +function fromVLQSigned(aValue) { + const isNegative = (aValue & 1) === 1; + const shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + let encoded = ""; + let digit; + + let vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; diff --git a/mybulma/node_modules/source-map/lib/base64.js b/mybulma/node_modules/source-map/lib/base64.js new file mode 100644 index 0000000..b9ca319 --- /dev/null +++ b/mybulma/node_modules/source-map/lib/base64.js @@ -0,0 +1,18 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +const intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function(number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; diff --git a/mybulma/node_modules/source-map/lib/binary-search.js b/mybulma/node_modules/source-map/lib/binary-search.js new file mode 100644 index 0000000..d6f898e --- /dev/null +++ b/mybulma/node_modules/source-map/lib/binary-search.js @@ -0,0 +1,107 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + const mid = Math.floor((aHigh - aLow) / 2) + aLow; + const cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } + return mid; + } + + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } + return aLow < 0 ? -1 : aLow; +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + let index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; diff --git a/mybulma/node_modules/source-map/lib/mapping-list.js b/mybulma/node_modules/source-map/lib/mapping-list.js new file mode 100644 index 0000000..7056861 --- /dev/null +++ b/mybulma/node_modules/source-map/lib/mapping-list.js @@ -0,0 +1,80 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +const util = require("./util"); + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + const lineA = mappingA.generatedLine; + const lineB = mappingB.generatedLine; + const columnA = mappingA.generatedColumn; + const columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a negligible overhead in general + * case for a large speedup in case of mappings being added in order. + */ +class MappingList { + constructor() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; + } + + /** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ + unsortedForEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + } + + /** + * Add the given source mapping. + * + * @param Object aMapping + */ + add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + } + + /** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ + toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + } +} + +exports.MappingList = MappingList; diff --git a/mybulma/node_modules/source-map/lib/mappings.wasm b/mybulma/node_modules/source-map/lib/mappings.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3515370723369347c024869dc4dbb3318c45a294 GIT binary patch literal 48693 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 L_t8J+(Zv4?U`;jz literal 0 HcmV?d00001 diff --git a/mybulma/node_modules/source-map/lib/read-wasm.js b/mybulma/node_modules/source-map/lib/read-wasm.js new file mode 100644 index 0000000..e81c177 --- /dev/null +++ b/mybulma/node_modules/source-map/lib/read-wasm.js @@ -0,0 +1,49 @@ +/* Determine browser vs node environment by testing the default top level context. Solution courtesy of: https://stackoverflow.com/questions/17575790/environment-detection-node-js-or-browser */ +const isBrowserEnvironment = (function() { + // eslint-disable-next-line no-undef + return (typeof window !== "undefined") && (this === window); +}).call(); + +if (isBrowserEnvironment) { + // Web version of reading a wasm file into an array buffer. + + let mappingsWasm = null; + + module.exports = function readWasm() { + if (typeof mappingsWasm === "string") { + return fetch(mappingsWasm) + .then(response => response.arrayBuffer()); + } + if (mappingsWasm instanceof ArrayBuffer) { + return Promise.resolve(mappingsWasm); + } + throw new Error("You must provide the string URL or ArrayBuffer contents " + + "of lib/mappings.wasm by calling " + + "SourceMapConsumer.initialize({ 'lib/mappings.wasm': ... }) " + + "before using SourceMapConsumer"); + }; + + module.exports.initialize = input => mappingsWasm = input; +} else { + // Node version of reading a wasm file into an array buffer. + const fs = require("fs"); + const path = require("path"); + + module.exports = function readWasm() { + return new Promise((resolve, reject) => { + const wasmPath = path.join(__dirname, "mappings.wasm"); + fs.readFile(wasmPath, null, (error, data) => { + if (error) { + reject(error); + return; + } + + resolve(data.buffer); + }); + }); + }; + + module.exports.initialize = _ => { + console.debug("SourceMapConsumer.initialize is a no-op when running in node.js"); + }; +} diff --git a/mybulma/node_modules/source-map/lib/source-map-consumer.js b/mybulma/node_modules/source-map/lib/source-map-consumer.js new file mode 100644 index 0000000..9aaf92f --- /dev/null +++ b/mybulma/node_modules/source-map/lib/source-map-consumer.js @@ -0,0 +1,1237 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +const util = require("./util"); +const binarySearch = require("./binary-search"); +const ArraySet = require("./array-set").ArraySet; +const base64VLQ = require("./base64-vlq"); // eslint-disable-line no-unused-vars +const readWasm = require("../lib/read-wasm"); +const wasm = require("./wasm"); + +const INTERNAL = Symbol("smcInternal"); + +class SourceMapConsumer { + constructor(aSourceMap, aSourceMapURL) { + // If the constructor was called by super(), just return Promise. + // Yes, this is a hack to retain the pre-existing API of the base-class + // constructor also being an async factory function. + if (aSourceMap == INTERNAL) { + return Promise.resolve(this); + } + + return _factory(aSourceMap, aSourceMapURL); + } + + static initialize(opts) { + readWasm.initialize(opts["lib/mappings.wasm"]); + } + + static fromSourceMap(aSourceMap, aSourceMapURL) { + return _factoryBSM(aSourceMap, aSourceMapURL); + } + + /** + * Construct a new `SourceMapConsumer` from `rawSourceMap` and `sourceMapUrl` + * (see the `SourceMapConsumer` constructor for details. Then, invoke the `async + * function f(SourceMapConsumer) -> T` with the newly constructed consumer, wait + * for `f` to complete, call `destroy` on the consumer, and return `f`'s return + * value. + * + * You must not use the consumer after `f` completes! + * + * By using `with`, you do not have to remember to manually call `destroy` on + * the consumer, since it will be called automatically once `f` completes. + * + * ```js + * const xSquared = await SourceMapConsumer.with( + * myRawSourceMap, + * null, + * async function (consumer) { + * // Use `consumer` inside here and don't worry about remembering + * // to call `destroy`. + * + * const x = await whatever(consumer); + * return x * x; + * } + * ); + * + * // You may not use that `consumer` anymore out here; it has + * // been destroyed. But you can use `xSquared`. + * console.log(xSquared); + * ``` + */ + static async with(rawSourceMap, sourceMapUrl, f) { + const consumer = await new SourceMapConsumer(rawSourceMap, sourceMapUrl); + try { + return await f(consumer); + } finally { + consumer.destroy(); + } + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + _parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + } + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + eachMapping(aCallback, aContext, aOrder) { + throw new Error("Subclasses must implement eachMapping"); + } + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + allGeneratedPositionsFor(aArgs) { + throw new Error("Subclasses must implement allGeneratedPositionsFor"); + } + + destroy() { + throw new Error("Subclasses must implement destroy"); + } +} + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +exports.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +class BasicSourceMapConsumer extends SourceMapConsumer { + constructor(aSourceMap, aSourceMapURL) { + return super(INTERNAL).then(that => { + let sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + const version = util.getArg(sourceMap, "version"); + let sources = util.getArg(sourceMap, "sources"); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + const names = util.getArg(sourceMap, "names", []); + let sourceRoot = util.getArg(sourceMap, "sourceRoot", null); + const sourcesContent = util.getArg(sourceMap, "sourcesContent", null); + const mappings = util.getArg(sourceMap, "mappings"); + const file = util.getArg(sourceMap, "file", null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != that._version) { + throw new Error("Unsupported version: " + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function(source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + that._names = ArraySet.fromArray(names.map(String), true); + that._sources = ArraySet.fromArray(sources, true); + + that._absoluteSources = that._sources.toArray().map(function(s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + that.sourceRoot = sourceRoot; + that.sourcesContent = sourcesContent; + that._mappings = mappings; + that._sourceMapURL = aSourceMapURL; + that.file = file; + + that._computedColumnSpans = false; + that._mappingsPtr = 0; + that._wasm = null; + + return wasm().then(w => { + that._wasm = w; + return that; + }); + }); + } + + /** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ + _findSourceIndex(aSource) { + let relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + for (let i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; + } + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ + static fromSourceMap(aSourceMap, aSourceMapURL) { + return new BasicSourceMapConsumer(aSourceMap.toString()); + } + + get sources() { + return this._absoluteSources.slice(); + } + + _getMappingsPtr() { + if (this._mappingsPtr === 0) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this._mappingsPtr; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + _parseMappings(aStr, aSourceRoot) { + const size = aStr.length; + + const mappingsBufPtr = this._wasm.exports.allocate_mappings(size); + const mappingsBuf = new Uint8Array(this._wasm.exports.memory.buffer, mappingsBufPtr, size); + for (let i = 0; i < size; i++) { + mappingsBuf[i] = aStr.charCodeAt(i); + } + + const mappingsPtr = this._wasm.exports.parse_mappings(mappingsBufPtr); + + if (!mappingsPtr) { + const error = this._wasm.exports.get_last_error(); + let msg = `Error parsing mappings (code ${error}): `; + + // XXX: keep these error codes in sync with `fitzgen/source-map-mappings`. + switch (error) { + case 1: + msg += "the mappings contained a negative line, column, source index, or name index"; + break; + case 2: + msg += "the mappings contained a number larger than 2**32"; + break; + case 3: + msg += "reached EOF while in the middle of parsing a VLQ"; + break; + case 4: + msg += "invalid base 64 character while parsing a VLQ"; + break; + default: + msg += "unknown error code"; + break; + } + + throw new Error(msg); + } + + this._mappingsPtr = mappingsPtr; + } + + eachMapping(aCallback, aContext, aOrder) { + const context = aContext || null; + const order = aOrder || SourceMapConsumer.GENERATED_ORDER; + const sourceRoot = this.sourceRoot; + + this._wasm.withMappingCallback( + mapping => { + if (mapping.source !== null) { + mapping.source = this._sources.at(mapping.source); + mapping.source = util.computeSourceURL(sourceRoot, mapping.source, this._sourceMapURL); + + if (mapping.name !== null) { + mapping.name = this._names.at(mapping.name); + } + } + + aCallback.call(context, mapping); + }, + () => { + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + this._wasm.exports.by_generated_location(this._getMappingsPtr()); + break; + case SourceMapConsumer.ORIGINAL_ORDER: + this._wasm.exports.by_original_location(this._getMappingsPtr()); + break; + default: + throw new Error("Unknown order of iteration."); + } + } + ); + } + + allGeneratedPositionsFor(aArgs) { + let source = util.getArg(aArgs, "source"); + const originalLine = util.getArg(aArgs, "line"); + const originalColumn = aArgs.column || 0; + + source = this._findSourceIndex(source); + if (source < 0) { + return []; + } + + if (originalLine < 1) { + throw new Error("Line numbers must be >= 1"); + } + + if (originalColumn < 0) { + throw new Error("Column numbers must be >= 0"); + } + + const mappings = []; + + this._wasm.withMappingCallback( + m => { + let lastColumn = m.lastGeneratedColumn; + if (this._computedColumnSpans && lastColumn === null) { + lastColumn = Infinity; + } + mappings.push({ + line: m.generatedLine, + column: m.generatedColumn, + lastColumn, + }); + }, () => { + this._wasm.exports.all_generated_locations_for( + this._getMappingsPtr(), + source, + originalLine - 1, + "column" in aArgs, + originalColumn + ); + } + ); + + return mappings; + } + + destroy() { + if (this._mappingsPtr !== 0) { + this._wasm.exports.free_mappings(this._mappingsPtr); + this._mappingsPtr = 0; + } + } + + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + computeColumnSpans() { + if (this._computedColumnSpans) { + return; + } + + this._wasm.exports.compute_column_spans(this._getMappingsPtr()); + this._computedColumnSpans = true; + } + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + originalPositionFor(aArgs) { + const needle = { + generatedLine: util.getArg(aArgs, "line"), + generatedColumn: util.getArg(aArgs, "column") + }; + + if (needle.generatedLine < 1) { + throw new Error("Line numbers must be >= 1"); + } + + if (needle.generatedColumn < 0) { + throw new Error("Column numbers must be >= 0"); + } + + let bias = util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND); + if (bias == null) { + bias = SourceMapConsumer.GREATEST_LOWER_BOUND; + } + + let mapping; + this._wasm.withMappingCallback(m => mapping = m, () => { + this._wasm.exports.original_location_for( + this._getMappingsPtr(), + needle.generatedLine - 1, + needle.generatedColumn, + bias + ); + }); + + if (mapping) { + if (mapping.generatedLine === needle.generatedLine) { + let source = util.getArg(mapping, "source", null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + + let name = util.getArg(mapping, "name", null); + if (name !== null) { + name = this._names.at(name); + } + + return { + source, + line: util.getArg(mapping, "originalLine", null), + column: util.getArg(mapping, "originalColumn", null), + name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + } + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function(sc) { return sc == null; }); + } + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + const index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + let relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + let url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + const fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]; + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + generatedPositionFor(aArgs) { + let source = util.getArg(aArgs, "source"); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + const needle = { + source, + originalLine: util.getArg(aArgs, "line"), + originalColumn: util.getArg(aArgs, "column") + }; + + if (needle.originalLine < 1) { + throw new Error("Line numbers must be >= 1"); + } + + if (needle.originalColumn < 0) { + throw new Error("Column numbers must be >= 0"); + } + + let bias = util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND); + if (bias == null) { + bias = SourceMapConsumer.GREATEST_LOWER_BOUND; + } + + let mapping; + this._wasm.withMappingCallback(m => mapping = m, () => { + this._wasm.exports.generated_location_for( + this._getMappingsPtr(), + needle.source, + needle.originalLine - 1, + needle.originalColumn, + bias + ); + }); + + if (mapping) { + if (mapping.source === needle.source) { + let lastColumn = mapping.lastGeneratedColumn; + if (this._computedColumnSpans && lastColumn === null) { + lastColumn = Infinity; + } + return { + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn, + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + } +} + +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; +exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +class IndexedSourceMapConsumer extends SourceMapConsumer { + constructor(aSourceMap, aSourceMapURL) { + return super(INTERNAL).then(that => { + let sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + const version = util.getArg(sourceMap, "version"); + const sections = util.getArg(sourceMap, "sections"); + + if (version != that._version) { + throw new Error("Unsupported version: " + version); + } + + that._sources = new ArraySet(); + that._names = new ArraySet(); + that.__generatedMappings = null; + that.__originalMappings = null; + that.__generatedMappingsUnsorted = null; + that.__originalMappingsUnsorted = null; + + let lastOffset = { + line: -1, + column: 0 + }; + return Promise.all(sections.map(s => { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error("Support for url field in sections not implemented."); + } + const offset = util.getArg(s, "offset"); + const offsetLine = util.getArg(offset, "line"); + const offsetColumn = util.getArg(offset, "column"); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error("Section offsets must be ordered and non-overlapping."); + } + lastOffset = offset; + + const cons = new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL); + return cons.then(consumer => { + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer + }; + }); + })).then(s => { + that._sections = s; + return that; + }); + }); + } + + // `__generatedMappings` and `__originalMappings` are arrays that hold the + // parsed mapping coordinates from the source map's "mappings" attribute. They + // are lazily instantiated, accessed via the `_generatedMappings` and + // `_originalMappings` getters respectively, and we only parse the mappings + // and create these arrays once queried for a source location. We jump through + // these hoops because there can be many thousands of mappings, and parsing + // them is expensive, so we only want to do it if we must. + // + // Each object in the arrays is of the form: + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `_generatedMappings` is ordered by the generated positions. + // + // `_originalMappings` is ordered by the original positions. + get _generatedMappings() { + if (!this.__generatedMappings) { + this._sortGeneratedMappings(); + } + + return this.__generatedMappings; + } + + get _originalMappings() { + if (!this.__originalMappings) { + this._sortOriginalMappings(); + } + + return this.__originalMappings; + } + + get _generatedMappingsUnsorted() { + if (!this.__generatedMappingsUnsorted) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappingsUnsorted; + } + + get _originalMappingsUnsorted() { + if (!this.__originalMappingsUnsorted) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappingsUnsorted; + } + + _sortGeneratedMappings() { + const mappings = this._generatedMappingsUnsorted; + mappings.sort(util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = mappings; + } + + _sortOriginalMappings() { + const mappings = this._originalMappingsUnsorted; + mappings.sort(util.compareByOriginalPositions); + this.__originalMappings = mappings; + } + + /** + * The list of original sources. + */ + get sources() { + const sources = []; + for (let i = 0; i < this._sections.length; i++) { + for (let j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + originalPositionFor(aArgs) { + const needle = { + generatedLine: util.getArg(aArgs, "line"), + generatedColumn: util.getArg(aArgs, "column") + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + const sectionIndex = binarySearch.search(needle, this._sections, + function(aNeedle, section) { + const cmp = aNeedle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (aNeedle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + const section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + } + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + hasContentsOfAllSources() { + return this._sections.every(function(s) { + return s.consumer.hasContentsOfAllSources(); + }); + } + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + sourceContentFor(aSource, nullOnMissing) { + for (let i = 0; i < this._sections.length; i++) { + const section = this._sections[i]; + + const content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + generatedPositionFor(aArgs) { + for (let i = 0; i < this._sections.length; i++) { + const section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) { + continue; + } + const generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + const ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + _parseMappings(aStr, aSourceRoot) { + const generatedMappings = this.__generatedMappingsUnsorted = []; + const originalMappings = this.__originalMappingsUnsorted = []; + for (let i = 0; i < this._sections.length; i++) { + const section = this._sections[i]; + + const sectionMappings = []; + section.consumer.eachMapping(m => sectionMappings.push(m)); + + for (let j = 0; j < sectionMappings.length; j++) { + const mapping = sectionMappings[j]; + + // TODO: test if null is correct here. The original code used + // `source`, which would actually have gotten used as null because + // var's get hoisted. + // See: https://github.com/mozilla/source-map/issues/333 + let source = util.computeSourceURL(section.consumer.sourceRoot, null, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + let name = null; + if (mapping.name) { + this._names.add(mapping.name); + name = this._names.indexOf(mapping.name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + const adjustedMapping = { + source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name + }; + + generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === "number") { + originalMappings.push(adjustedMapping); + } + } + } + } + + eachMapping(aCallback, aContext, aOrder) { + const context = aContext || null; + const order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + let mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + const sourceRoot = this.sourceRoot; + mappings.map(function(mapping) { + let source = null; + if (mapping.source !== null) { + source = this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + } + return { + source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + } + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + _findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError("Line must be greater than or equal to 1, got " + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError("Column must be greater than or equal to 0, got " + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + } + + allGeneratedPositionsFor(aArgs) { + const line = util.getArg(aArgs, "line"); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + const needle = { + source: util.getArg(aArgs, "source"), + originalLine: line, + originalColumn: util.getArg(aArgs, "column", 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + if (needle.originalLine < 1) { + throw new Error("Line numbers must be >= 1"); + } + + if (needle.originalColumn < 0) { + throw new Error("Column numbers must be >= 0"); + } + + const mappings = []; + + let index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + let mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + const originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + let lastColumn = mapping.lastGeneratedColumn; + if (this._computedColumnSpans && lastColumn === null) { + lastColumn = Infinity; + } + mappings.push({ + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn, + }); + + mapping = this._originalMappings[++index]; + } + } else { + const originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + let lastColumn = mapping.lastGeneratedColumn; + if (this._computedColumnSpans && lastColumn === null) { + lastColumn = Infinity; + } + mappings.push({ + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn, + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + } + + destroy() { + for (let i = 0; i < this._sections.length; i++) { + this._sections[i].consumer.destroy(); + } + } +} +exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + +/* + * Cheat to get around inter-twingled classes. `factory()` can be at the end + * where it has access to non-hoisted classes, but it gets hoisted itself. + */ +function _factory(aSourceMap, aSourceMapURL) { + let sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + const consumer = sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + return Promise.resolve(consumer); +} + +function _factoryBSM(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +} diff --git a/mybulma/node_modules/source-map/lib/source-map-generator.js b/mybulma/node_modules/source-map/lib/source-map-generator.js new file mode 100644 index 0000000..8111e06 --- /dev/null +++ b/mybulma/node_modules/source-map/lib/source-map-generator.js @@ -0,0 +1,413 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +const base64VLQ = require("./base64-vlq"); +const util = require("./util"); +const ArraySet = require("./array-set").ArraySet; +const MappingList = require("./mapping-list").MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +class SourceMapGenerator { + constructor(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, "file", null); + this._sourceRoot = util.getArg(aArgs, "sourceRoot", null); + this._skipValidation = util.getArg(aArgs, "skipValidation", false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + static fromSourceMap(aSourceMapConsumer) { + const sourceRoot = aSourceMapConsumer.sourceRoot; + const generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot + }); + aSourceMapConsumer.eachMapping(function(mapping) { + const newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function(sourceFile) { + let sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + const content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + } + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + addMapping(aArgs) { + const generated = util.getArg(aArgs, "generated"); + const original = util.getArg(aArgs, "original", null); + let source = util.getArg(aArgs, "source", null); + let name = util.getArg(aArgs, "name", null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source, + name + }); + } + + /** + * Set the source content for a source file. + */ + setSourceContent(aSourceFile, aSourceContent) { + let source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + } + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + let sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + "SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, " + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + const sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + const newSources = this._mappings.toArray().length > 0 + ? new ArraySet() + : this._sources; + const newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function(mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + const original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + const source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + const name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function(srcFile) { + const content = aSourceMapConsumer.sourceContentFor(srcFile); + if (content != null) { + if (aSourceMapPath != null) { + srcFile = util.join(aSourceMapPath, srcFile); + } + if (sourceRoot != null) { + srcFile = util.relative(sourceRoot, srcFile); + } + this.setSourceContent(srcFile, content); + } + }, this); + } + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + _validateMapping(aGenerated, aOriginal, aSource, aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") { + throw new Error( + "original.line and original.column are not numbers -- you probably meant to omit " + + "the original mapping entirely and only map the generated position. If so, pass " + + "null for the original mapping instead of an object with empty or null values." + ); + } + + if (aGenerated && "line" in aGenerated && "column" in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + + } else if (aGenerated && "line" in aGenerated && "column" in aGenerated + && aOriginal && "line" in aOriginal && "column" in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + + } else { + throw new Error("Invalid mapping: " + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + } + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + _serializeMappings() { + let previousGeneratedColumn = 0; + let previousGeneratedLine = 1; + let previousOriginalColumn = 0; + let previousOriginalLine = 0; + let previousName = 0; + let previousSource = 0; + let result = ""; + let next; + let mapping; + let nameIdx; + let sourceIdx; + + const mappings = this._mappings.toArray(); + for (let i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ""; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ";"; + previousGeneratedLine++; + } + } else if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ","; + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + } + + _generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function(source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + const key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + } + + /** + * Externalize the source map. + */ + toJSON() { + const map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + } + + /** + * Render the source map being generated to a string. + */ + toString() { + return JSON.stringify(this.toJSON()); + } +} + +SourceMapGenerator.prototype._version = 3; +exports.SourceMapGenerator = SourceMapGenerator; diff --git a/mybulma/node_modules/source-map/lib/source-node.js b/mybulma/node_modules/source-map/lib/source-node.js new file mode 100644 index 0000000..8a7a157 --- /dev/null +++ b/mybulma/node_modules/source-map/lib/source-node.js @@ -0,0 +1,404 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +const SourceMapGenerator = require("./source-map-generator").SourceMapGenerator; +const util = require("./util"); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +const REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +const NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +const isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +class SourceNode { + constructor(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ + static fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + const node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + const remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + let remainingLinesIndex = 0; + const shiftNextLine = function() { + const lineContents = getNextLine(); + // The last line of a file might not have a newline. + const newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + let lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + let lastMapping = null; + let nextLine; + + aSourceMapConsumer.eachMapping(function(mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + nextLine = remainingLines[remainingLinesIndex] || ""; + const code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + nextLine = remainingLines[remainingLinesIndex] || ""; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function(sourceFile) { + const content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + const source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + } + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function(chunk) { + this.add(chunk); + }, this); + } else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + } + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (let i = aChunk.length - 1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + } + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + walk(aFn) { + let chunk; + for (let i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } else if (chunk !== "") { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + join(aSep) { + let newChildren; + let i; + const len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len - 1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + } + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + replaceRight(aPattern, aReplacement) { + const lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } else if (typeof lastChild === "string") { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } else { + this.children.push("".replace(aPattern, aReplacement)); + } + return this; + } + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + } + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + walkSourceContents(aFn) { + for (let i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + const sources = Object.keys(this.sourceContents); + for (let i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + } + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + toString() { + let str = ""; + this.walk(function(chunk) { + str += chunk; + }); + return str; + } + + /** + * Returns the string representation of this source node along with a source + * map. + */ + toStringWithSourceMap(aArgs) { + const generated = { + code: "", + line: 1, + column: 0 + }; + const map = new SourceMapGenerator(aArgs); + let sourceMappingActive = false; + let lastOriginalSource = null; + let lastOriginalLine = null; + let lastOriginalColumn = null; + let lastOriginalName = null; + this.walk(function(chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if (lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (let idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function(sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map }; + } +} + +exports.SourceNode = SourceNode; diff --git a/mybulma/node_modules/source-map/lib/util.js b/mybulma/node_modules/source-map/lib/util.js new file mode 100644 index 0000000..35bd93d --- /dev/null +++ b/mybulma/node_modules/source-map/lib/util.js @@ -0,0 +1,546 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } + throw new Error('"' + aName + '" is a required argument.'); + +} +exports.getArg = getArg; + +const urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; +const dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + const match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + let url = ""; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ":"; + } + url += "//"; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + "@"; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +const MAX_CACHED_INPUTS = 32; + +/** + * Takes some function `f(input) -> result` and returns a memoized version of + * `f`. + * + * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The + * memoization is a dumb-simple, linear least-recently-used cache. + */ +function lruMemoize(f) { + const cache = []; + + return function(input) { + for (let i = 0; i < cache.length; i++) { + if (cache[i].input === input) { + const temp = cache[0]; + cache[0] = cache[i]; + cache[i] = temp; + return cache[0].result; + } + } + + const result = f(input); + + cache.unshift({ + input, + result, + }); + + if (cache.length > MAX_CACHED_INPUTS) { + cache.pop(); + } + + return result; + }; +} + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +const normalize = lruMemoize(function normalize(aPath) { + let path = aPath; + const url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + const isAbsolute = exports.isAbsolute(path); + + // Split the path into parts between `/` characters. This is much faster than + // using `.split(/\/+/g)`. + const parts = []; + let start = 0; + let i = 0; + while (true) { + start = i; + i = path.indexOf("/", start); + if (i === -1) { + parts.push(path.slice(start)); + break; + } else { + parts.push(path.slice(start, i)); + while (i < path.length && path[i] === "/") { + i++; + } + } + } + + let up = 0; + for (i = parts.length - 1; i >= 0; i--) { + const part = parts[i]; + if (part === ".") { + parts.splice(i, 1); + } else if (part === "..") { + up++; + } else if (up > 0) { + if (part === "") { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join("/"); + + if (path === "") { + path = isAbsolute ? "/" : "."; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +}); +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + const aPathUrl = urlParse(aPath); + const aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || "/"; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + const joined = aPath.charAt(0) === "/" + ? aPath + : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function(aPath) { + return aPath.charAt(0) === "/" || urlRegexp.test(aPath); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ""); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + let level = 0; + while (aPath.indexOf(aRoot + "/") !== 0) { + const index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +const supportsNullProto = (function() { + const obj = Object.create(null); + return !("__proto__" in obj); +}()); + +function identity(s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return "$" + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + const length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + /* eslint-disable no-multi-spaces */ + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + /* eslint-enable no-multi-spaces */ + + for (let i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + let cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + let cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + let cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + +/** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ +function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, "")); +} +exports.parseSourceMapInput = parseSourceMapInput; + +/** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ +function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ""; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") { + sourceRoot += "/"; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + const parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + const index = parsed.path.lastIndexOf("/"); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); +} +exports.computeSourceURL = computeSourceURL; diff --git a/mybulma/node_modules/source-map/lib/wasm.js b/mybulma/node_modules/source-map/lib/wasm.js new file mode 100644 index 0000000..88b18be --- /dev/null +++ b/mybulma/node_modules/source-map/lib/wasm.js @@ -0,0 +1,107 @@ +const readWasm = require("../lib/read-wasm"); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.lastGeneratedColumn = null; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +let cachedWasm = null; + +module.exports = function wasm() { + if (cachedWasm) { + return cachedWasm; + } + + const callbackStack = []; + + cachedWasm = readWasm().then(buffer => { + return WebAssembly.instantiate(buffer, { + env: { + mapping_callback( + generatedLine, + generatedColumn, + + hasLastGeneratedColumn, + lastGeneratedColumn, + + hasOriginal, + source, + originalLine, + originalColumn, + + hasName, + name + ) { + const mapping = new Mapping(); + // JS uses 1-based line numbers, wasm uses 0-based. + mapping.generatedLine = generatedLine + 1; + mapping.generatedColumn = generatedColumn; + + if (hasLastGeneratedColumn) { + // JS uses inclusive last generated column, wasm uses exclusive. + mapping.lastGeneratedColumn = lastGeneratedColumn - 1; + } + + if (hasOriginal) { + mapping.source = source; + // JS uses 1-based line numbers, wasm uses 0-based. + mapping.originalLine = originalLine + 1; + mapping.originalColumn = originalColumn; + + if (hasName) { + mapping.name = name; + } + } + + callbackStack[callbackStack.length - 1](mapping); + }, + + start_all_generated_locations_for() { console.time("all_generated_locations_for"); }, + end_all_generated_locations_for() { console.timeEnd("all_generated_locations_for"); }, + + start_compute_column_spans() { console.time("compute_column_spans"); }, + end_compute_column_spans() { console.timeEnd("compute_column_spans"); }, + + start_generated_location_for() { console.time("generated_location_for"); }, + end_generated_location_for() { console.timeEnd("generated_location_for"); }, + + start_original_location_for() { console.time("original_location_for"); }, + end_original_location_for() { console.timeEnd("original_location_for"); }, + + start_parse_mappings() { console.time("parse_mappings"); }, + end_parse_mappings() { console.timeEnd("parse_mappings"); }, + + start_sort_by_generated_location() { console.time("sort_by_generated_location"); }, + end_sort_by_generated_location() { console.timeEnd("sort_by_generated_location"); }, + + start_sort_by_original_location() { console.time("sort_by_original_location"); }, + end_sort_by_original_location() { console.timeEnd("sort_by_original_location"); }, + } + }); + }).then(Wasm => { + return { + exports: Wasm.instance.exports, + withMappingCallback: (mappingCallback, f) => { + callbackStack.push(mappingCallback); + try { + f(); + } finally { + callbackStack.pop(); + } + } + }; + }).then(null, e => { + cachedWasm = null; + throw e; + }); + + return cachedWasm; +}; diff --git a/mybulma/node_modules/spdx-exceptions/README.md b/mybulma/node_modules/spdx-exceptions/README.md new file mode 100644 index 0000000..6c927ec --- /dev/null +++ b/mybulma/node_modules/spdx-exceptions/README.md @@ -0,0 +1,36 @@ +The package exports an array of strings. Each string is an identifier +for a license exception under the [Software Package Data Exchange +(SPDX)][SPDX] software license metadata standard. + +[SPDX]: https://spdx.org + +## Copyright and Licensing + +### SPDX + +"SPDX" is a federally registered United States trademark of The Linux +Foundation Corporation. + +From version 2.0 of the [SPDX] specification: + +> Copyright © 2010-2015 Linux Foundation and its Contributors. Licensed +> under the Creative Commons Attribution License 3.0 Unported. All other +> rights are expressly reserved. + +The Linux Foundation and the SPDX working groups are good people. Only +they decide what "SPDX" means, as a standard and otherwise. I respect +their work and their rights. You should, too. + +### This Package + +> I created this package by copying exception identifiers out of the +> SPDX specification. That work was mechanical, routine, and required no +> creativity whatsoever. - Kyle Mitchell, package author + +United States users concerned about intellectual property may wish to +discuss the following Supreme Court decisions with their attorneys: + +- _Baker v. Selden_, 101 U.S. 99 (1879) + +- _Feist Publications, Inc., v. Rural Telephone Service Co._, + 499 U.S. 340 (1991) diff --git a/mybulma/node_modules/spdx-exceptions/index.json b/mybulma/node_modules/spdx-exceptions/index.json new file mode 100644 index 0000000..f88f088 --- /dev/null +++ b/mybulma/node_modules/spdx-exceptions/index.json @@ -0,0 +1,40 @@ +[ + "389-exception", + "Autoconf-exception-2.0", + "Autoconf-exception-3.0", + "Bison-exception-2.2", + "Bootloader-exception", + "Classpath-exception-2.0", + "CLISP-exception-2.0", + "DigiRule-FOSS-exception", + "eCos-exception-2.0", + "Fawkes-Runtime-exception", + "FLTK-exception", + "Font-exception-2.0", + "freertos-exception-2.0", + "GCC-exception-2.0", + "GCC-exception-3.1", + "gnu-javamail-exception", + "GPL-3.0-linking-exception", + "GPL-3.0-linking-source-exception", + "GPL-CC-1.0", + "i2p-gpl-java-exception", + "Libtool-exception", + "Linux-syscall-note", + "LLVM-exception", + "LZMA-exception", + "mif-exception", + "Nokia-Qt-exception-1.1", + "OCaml-LGPL-linking-exception", + "OCCT-exception-1.0", + "OpenJDK-assembly-exception-1.0", + "openvpn-openssl-exception", + "PS-or-PDF-font-exception-20170817", + "Qt-GPL-exception-1.0", + "Qt-LGPL-exception-1.1", + "Qwt-exception-1.0", + "Swift-exception", + "u-boot-exception-2.0", + "Universal-FOSS-exception-1.0", + "WxWindows-exception-3.1" +] diff --git a/mybulma/node_modules/spdx-exceptions/package.json b/mybulma/node_modules/spdx-exceptions/package.json new file mode 100644 index 0000000..2bafc6a --- /dev/null +++ b/mybulma/node_modules/spdx-exceptions/package.json @@ -0,0 +1,17 @@ +{ + "name": "spdx-exceptions", + "description": "list of SPDX standard license exceptions", + "version": "2.3.0", + "author": "The Linux Foundation", + "contributors": [ + "Kyle E. Mitchell (https://kemitchell.com/)" + ], + "license": "CC-BY-3.0", + "repository": "kemitchell/spdx-exceptions.json", + "files": [ + "index.json" + ], + "scripts": { + "build": "node build.js" + } +} diff --git a/mybulma/node_modules/spdx-license-ids/README.md b/mybulma/node_modules/spdx-license-ids/README.md new file mode 100644 index 0000000..500e32d --- /dev/null +++ b/mybulma/node_modules/spdx-license-ids/README.md @@ -0,0 +1,52 @@ +# spdx-license-ids + +[![npm version](https://img.shields.io/npm/v/spdx-license-ids.svg)](https://www.npmjs.com/package/spdx-license-ids) +[![Github Actions](https://action-badges.now.sh/jslicense/spdx-license-ids)](https://wdp9fww0r9.execute-api.us-west-2.amazonaws.com/production/results/jslicense/spdx-license-ids) + +A list of [SPDX license](https://spdx.org/licenses/) identifiers + +## Installation + +[Download JSON directly](https://raw.githubusercontent.com/jslicense/spdx-license-ids/main/index.json), or [use](https://docs.npmjs.com/cli/install) [npm](https://docs.npmjs.com/about-npm/): + +``` +npm install spdx-license-ids +``` + +## [Node.js](https://nodejs.org/) API + +### require('spdx-license-ids') + +Type: `string[]` + +All license IDs except for the currently deprecated ones. + +```javascript +const ids = require('spdx-license-ids'); +//=> ['0BSD', 'AAL', 'ADSL', 'AFL-1.1', 'AFL-1.2', 'AFL-2.0', 'AFL-2.1', 'AFL-3.0', 'AGPL-1.0-only', ...] + +ids.includes('BSD-3-Clause'); //=> true +ids.includes('CC-BY-1.0'); //=> true + +ids.includes('GPL-3.0'); //=> false +``` + +### require('spdx-license-ids/deprecated') + +Type: `string[]` + +Deprecated license IDs. + +```javascript +const deprecatedIds = require('spdx-license-ids/deprecated'); +//=> ['AGPL-1.0', 'AGPL-3.0', 'GFDL-1.1', 'GFDL-1.2', 'GFDL-1.3', 'GPL-1.0', 'GPL-2.0', ...] + +deprecatedIds.includes('BSD-3-Clause'); //=> false +deprecatedIds.includes('CC-BY-1.0'); //=> false + +deprecatedIds.includes('GPL-3.0'); //=> true +``` + +## License + +[Creative Commons Zero v1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/deed) diff --git a/mybulma/node_modules/spdx-license-ids/deprecated.json b/mybulma/node_modules/spdx-license-ids/deprecated.json new file mode 100644 index 0000000..278531e --- /dev/null +++ b/mybulma/node_modules/spdx-license-ids/deprecated.json @@ -0,0 +1,27 @@ +[ + "AGPL-1.0", + "AGPL-3.0", + "BSD-2-Clause-FreeBSD", + "BSD-2-Clause-NetBSD", + "GFDL-1.1", + "GFDL-1.2", + "GFDL-1.3", + "GPL-1.0", + "GPL-2.0", + "GPL-2.0-with-GCC-exception", + "GPL-2.0-with-autoconf-exception", + "GPL-2.0-with-bison-exception", + "GPL-2.0-with-classpath-exception", + "GPL-2.0-with-font-exception", + "GPL-3.0", + "GPL-3.0-with-GCC-exception", + "GPL-3.0-with-autoconf-exception", + "LGPL-2.0", + "LGPL-2.1", + "LGPL-3.0", + "Nunit", + "StandardML-NJ", + "bzip2-1.0.5", + "eCos-2.0", + "wxWindows" +] diff --git a/mybulma/node_modules/spdx-license-ids/index.json b/mybulma/node_modules/spdx-license-ids/index.json new file mode 100644 index 0000000..fdd78fa --- /dev/null +++ b/mybulma/node_modules/spdx-license-ids/index.json @@ -0,0 +1,467 @@ +[ + "0BSD", + "AAL", + "ADSL", + "AFL-1.1", + "AFL-1.2", + "AFL-2.0", + "AFL-2.1", + "AFL-3.0", + "AGPL-1.0-only", + "AGPL-1.0-or-later", + "AGPL-3.0-only", + "AGPL-3.0-or-later", + "AMDPLPA", + "AML", + "AMPAS", + "ANTLR-PD", + "ANTLR-PD-fallback", + "APAFML", + "APL-1.0", + "APSL-1.0", + "APSL-1.1", + "APSL-1.2", + "APSL-2.0", + "Abstyles", + "Adobe-2006", + "Adobe-Glyph", + "Afmparse", + "Aladdin", + "Apache-1.0", + "Apache-1.1", + "Apache-2.0", + "App-s2p", + "Arphic-1999", + "Artistic-1.0", + "Artistic-1.0-Perl", + "Artistic-1.0-cl8", + "Artistic-2.0", + "BSD-1-Clause", + "BSD-2-Clause", + "BSD-2-Clause-Patent", + "BSD-2-Clause-Views", + "BSD-3-Clause", + "BSD-3-Clause-Attribution", + "BSD-3-Clause-Clear", + "BSD-3-Clause-LBNL", + "BSD-3-Clause-Modification", + "BSD-3-Clause-No-Military-License", + "BSD-3-Clause-No-Nuclear-License", + "BSD-3-Clause-No-Nuclear-License-2014", + "BSD-3-Clause-No-Nuclear-Warranty", + "BSD-3-Clause-Open-MPI", + "BSD-4-Clause", + "BSD-4-Clause-Shortened", + "BSD-4-Clause-UC", + "BSD-Protection", + "BSD-Source-Code", + "BSL-1.0", + "BUSL-1.1", + "Baekmuk", + "Bahyph", + "Barr", + "Beerware", + "BitTorrent-1.0", + "BitTorrent-1.1", + "Bitstream-Vera", + "BlueOak-1.0.0", + "Borceux", + "C-UDA-1.0", + "CAL-1.0", + "CAL-1.0-Combined-Work-Exception", + "CATOSL-1.1", + "CC-BY-1.0", + "CC-BY-2.0", + "CC-BY-2.5", + "CC-BY-2.5-AU", + "CC-BY-3.0", + "CC-BY-3.0-AT", + "CC-BY-3.0-DE", + "CC-BY-3.0-IGO", + "CC-BY-3.0-NL", + "CC-BY-3.0-US", + "CC-BY-4.0", + "CC-BY-NC-1.0", + "CC-BY-NC-2.0", + "CC-BY-NC-2.5", + "CC-BY-NC-3.0", + "CC-BY-NC-3.0-DE", + "CC-BY-NC-4.0", + "CC-BY-NC-ND-1.0", + "CC-BY-NC-ND-2.0", + "CC-BY-NC-ND-2.5", + "CC-BY-NC-ND-3.0", + "CC-BY-NC-ND-3.0-DE", + "CC-BY-NC-ND-3.0-IGO", + "CC-BY-NC-ND-4.0", + "CC-BY-NC-SA-1.0", + "CC-BY-NC-SA-2.0", + "CC-BY-NC-SA-2.0-FR", + "CC-BY-NC-SA-2.0-UK", + "CC-BY-NC-SA-2.5", + "CC-BY-NC-SA-3.0", + "CC-BY-NC-SA-3.0-DE", + "CC-BY-NC-SA-3.0-IGO", + "CC-BY-NC-SA-4.0", + "CC-BY-ND-1.0", + "CC-BY-ND-2.0", + "CC-BY-ND-2.5", + "CC-BY-ND-3.0", + "CC-BY-ND-3.0-DE", + "CC-BY-ND-4.0", + "CC-BY-SA-1.0", + "CC-BY-SA-2.0", + "CC-BY-SA-2.0-UK", + "CC-BY-SA-2.1-JP", + "CC-BY-SA-2.5", + "CC-BY-SA-3.0", + "CC-BY-SA-3.0-AT", + "CC-BY-SA-3.0-DE", + "CC-BY-SA-4.0", + "CC-PDDC", + "CC0-1.0", + "CDDL-1.0", + "CDDL-1.1", + "CDL-1.0", + "CDLA-Permissive-1.0", + "CDLA-Permissive-2.0", + "CDLA-Sharing-1.0", + "CECILL-1.0", + "CECILL-1.1", + "CECILL-2.0", + "CECILL-2.1", + "CECILL-B", + "CECILL-C", + "CERN-OHL-1.1", + "CERN-OHL-1.2", + "CERN-OHL-P-2.0", + "CERN-OHL-S-2.0", + "CERN-OHL-W-2.0", + "CNRI-Jython", + "CNRI-Python", + "CNRI-Python-GPL-Compatible", + "COIL-1.0", + "CPAL-1.0", + "CPL-1.0", + "CPOL-1.02", + "CUA-OPL-1.0", + "Caldera", + "ClArtistic", + "Community-Spec-1.0", + "Condor-1.1", + "Crossword", + "CrystalStacker", + "Cube", + "D-FSL-1.0", + "DL-DE-BY-2.0", + "DOC", + "DRL-1.0", + "DSDP", + "Dotseqn", + "ECL-1.0", + "ECL-2.0", + "EFL-1.0", + "EFL-2.0", + "EPICS", + "EPL-1.0", + "EPL-2.0", + "EUDatagrid", + "EUPL-1.0", + "EUPL-1.1", + "EUPL-1.2", + "Elastic-2.0", + "Entessa", + "ErlPL-1.1", + "Eurosym", + "FDK-AAC", + "FSFAP", + "FSFUL", + "FSFULLR", + "FTL", + "Fair", + "Frameworx-1.0", + "FreeBSD-DOC", + "FreeImage", + "GD", + "GFDL-1.1-invariants-only", + "GFDL-1.1-invariants-or-later", + "GFDL-1.1-no-invariants-only", + "GFDL-1.1-no-invariants-or-later", + "GFDL-1.1-only", + "GFDL-1.1-or-later", + "GFDL-1.2-invariants-only", + "GFDL-1.2-invariants-or-later", + "GFDL-1.2-no-invariants-only", + "GFDL-1.2-no-invariants-or-later", + "GFDL-1.2-only", + "GFDL-1.2-or-later", + "GFDL-1.3-invariants-only", + "GFDL-1.3-invariants-or-later", + "GFDL-1.3-no-invariants-only", + "GFDL-1.3-no-invariants-or-later", + "GFDL-1.3-only", + "GFDL-1.3-or-later", + "GL2PS", + "GLWTPL", + "GPL-1.0-only", + "GPL-1.0-or-later", + "GPL-2.0-only", + "GPL-2.0-or-later", + "GPL-3.0-only", + "GPL-3.0-or-later", + "Giftware", + "Glide", + "Glulxe", + "HPND", + "HPND-sell-variant", + "HTMLTIDY", + "HaskellReport", + "Hippocratic-2.1", + "IBM-pibs", + "ICU", + "IJG", + "IPA", + "IPL-1.0", + "ISC", + "ImageMagick", + "Imlib2", + "Info-ZIP", + "Intel", + "Intel-ACPI", + "Interbase-1.0", + "JPNIC", + "JSON", + "Jam", + "JasPer-2.0", + "LAL-1.2", + "LAL-1.3", + "LGPL-2.0-only", + "LGPL-2.0-or-later", + "LGPL-2.1-only", + "LGPL-2.1-or-later", + "LGPL-3.0-only", + "LGPL-3.0-or-later", + "LGPLLR", + "LPL-1.0", + "LPL-1.02", + "LPPL-1.0", + "LPPL-1.1", + "LPPL-1.2", + "LPPL-1.3a", + "LPPL-1.3c", + "LZMA-SDK-9.11-to-9.20", + "LZMA-SDK-9.22", + "Latex2e", + "Leptonica", + "LiLiQ-P-1.1", + "LiLiQ-R-1.1", + "LiLiQ-Rplus-1.1", + "Libpng", + "Linux-OpenIB", + "Linux-man-pages-copyleft", + "MIT", + "MIT-0", + "MIT-CMU", + "MIT-Modern-Variant", + "MIT-advertising", + "MIT-enna", + "MIT-feh", + "MIT-open-group", + "MITNFA", + "MPL-1.0", + "MPL-1.1", + "MPL-2.0", + "MPL-2.0-no-copyleft-exception", + "MS-LPL", + "MS-PL", + "MS-RL", + "MTLL", + "MakeIndex", + "Minpack", + "MirOS", + "Motosoto", + "MulanPSL-1.0", + "MulanPSL-2.0", + "Multics", + "Mup", + "NAIST-2003", + "NASA-1.3", + "NBPL-1.0", + "NCGL-UK-2.0", + "NCSA", + "NGPL", + "NICTA-1.0", + "NIST-PD", + "NIST-PD-fallback", + "NLOD-1.0", + "NLOD-2.0", + "NLPL", + "NOSL", + "NPL-1.0", + "NPL-1.1", + "NPOSL-3.0", + "NRL", + "NTP", + "NTP-0", + "Naumen", + "Net-SNMP", + "NetCDF", + "Newsletr", + "Nokia", + "Noweb", + "O-UDA-1.0", + "OCCT-PL", + "OCLC-2.0", + "ODC-By-1.0", + "ODbL-1.0", + "OFL-1.0", + "OFL-1.0-RFN", + "OFL-1.0-no-RFN", + "OFL-1.1", + "OFL-1.1-RFN", + "OFL-1.1-no-RFN", + "OGC-1.0", + "OGDL-Taiwan-1.0", + "OGL-Canada-2.0", + "OGL-UK-1.0", + "OGL-UK-2.0", + "OGL-UK-3.0", + "OGTSL", + "OLDAP-1.1", + "OLDAP-1.2", + "OLDAP-1.3", + "OLDAP-1.4", + "OLDAP-2.0", + "OLDAP-2.0.1", + "OLDAP-2.1", + "OLDAP-2.2", + "OLDAP-2.2.1", + "OLDAP-2.2.2", + "OLDAP-2.3", + "OLDAP-2.4", + "OLDAP-2.5", + "OLDAP-2.6", + "OLDAP-2.7", + "OLDAP-2.8", + "OML", + "OPL-1.0", + "OPUBL-1.0", + "OSET-PL-2.1", + "OSL-1.0", + "OSL-1.1", + "OSL-2.0", + "OSL-2.1", + "OSL-3.0", + "OpenSSL", + "PDDL-1.0", + "PHP-3.0", + "PHP-3.01", + "PSF-2.0", + "Parity-6.0.0", + "Parity-7.0.0", + "Plexus", + "PolyForm-Noncommercial-1.0.0", + "PolyForm-Small-Business-1.0.0", + "PostgreSQL", + "Python-2.0", + "Python-2.0.1", + "QPL-1.0", + "Qhull", + "RHeCos-1.1", + "RPL-1.1", + "RPL-1.5", + "RPSL-1.0", + "RSA-MD", + "RSCPL", + "Rdisc", + "Ruby", + "SAX-PD", + "SCEA", + "SGI-B-1.0", + "SGI-B-1.1", + "SGI-B-2.0", + "SHL-0.5", + "SHL-0.51", + "SISSL", + "SISSL-1.2", + "SMLNJ", + "SMPPL", + "SNIA", + "SPL-1.0", + "SSH-OpenSSH", + "SSH-short", + "SSPL-1.0", + "SWL", + "Saxpath", + "SchemeReport", + "Sendmail", + "Sendmail-8.23", + "SimPL-2.0", + "Sleepycat", + "Spencer-86", + "Spencer-94", + "Spencer-99", + "SugarCRM-1.1.3", + "TAPR-OHL-1.0", + "TCL", + "TCP-wrappers", + "TMate", + "TORQUE-1.1", + "TOSL", + "TU-Berlin-1.0", + "TU-Berlin-2.0", + "UCL-1.0", + "UPL-1.0", + "Unicode-DFS-2015", + "Unicode-DFS-2016", + "Unicode-TOU", + "Unlicense", + "VOSTROM", + "VSL-1.0", + "Vim", + "W3C", + "W3C-19980720", + "W3C-20150513", + "WTFPL", + "Watcom-1.0", + "Wsuipa", + "X11", + "X11-distribute-modifications-variant", + "XFree86-1.1", + "XSkat", + "Xerox", + "Xnet", + "YPL-1.0", + "YPL-1.1", + "ZPL-1.1", + "ZPL-2.0", + "ZPL-2.1", + "Zed", + "Zend-2.0", + "Zimbra-1.3", + "Zimbra-1.4", + "Zlib", + "blessing", + "bzip2-1.0.6", + "copyleft-next-0.3.0", + "copyleft-next-0.3.1", + "curl", + "diffmark", + "dvipdfm", + "eGenix", + "etalab-2.0", + "gSOAP-1.3b", + "gnuplot", + "iMatix", + "libpng-2.0", + "libselinux-1.0", + "libtiff", + "mpi-permissive", + "mpich2", + "mplus", + "psfrag", + "psutils", + "xinetd", + "xpp", + "zlib-acknowledgement" +] diff --git a/mybulma/node_modules/spdx-license-ids/package.json b/mybulma/node_modules/spdx-license-ids/package.json new file mode 100644 index 0000000..e3622fc --- /dev/null +++ b/mybulma/node_modules/spdx-license-ids/package.json @@ -0,0 +1,39 @@ +{ + "name": "spdx-license-ids", + "version": "3.0.12", + "description": "A list of SPDX license identifiers", + "repository": "jslicense/spdx-license-ids", + "author": "Shinnosuke Watanabe (https://github.com/shinnn)", + "license": "CC0-1.0", + "scripts": { + "build": "node build.js", + "pretest": "eslint .", + "latest": "node latest.js", + "test": "node test.js" + }, + "files": [ + "deprecated.json", + "index.json" + ], + "keywords": [ + "spdx", + "license", + "licenses", + "id", + "identifier", + "identifiers", + "json", + "array", + "oss" + ], + "devDependencies": { + "@shinnn/eslint-config": "^7.0.0", + "eslint": "^8.2.0", + "eslint-formatter-codeframe": "^7.32.1", + "rmfr": "^2.0.0", + "tape": "^5.3.1" + }, + "eslintConfig": { + "extends": "@shinnn" + } +} diff --git a/mybulma/node_modules/ssri/LICENSE.md b/mybulma/node_modules/ssri/LICENSE.md new file mode 100644 index 0000000..e335388 --- /dev/null +++ b/mybulma/node_modules/ssri/LICENSE.md @@ -0,0 +1,16 @@ +ISC License + +Copyright 2021 (c) npm, Inc. + +Permission to use, copy, modify, and/or distribute this software for +any purpose with or without fee is hereby granted, provided that the +above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE COPYRIGHT HOLDER DISCLAIMS +ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE +USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/ssri/README.md b/mybulma/node_modules/ssri/README.md new file mode 100644 index 0000000..6f46aa5 --- /dev/null +++ b/mybulma/node_modules/ssri/README.md @@ -0,0 +1,528 @@ +# ssri [![npm version](https://img.shields.io/npm/v/ssri.svg)](https://npm.im/ssri) [![license](https://img.shields.io/npm/l/ssri.svg)](https://npm.im/ssri) [![Travis](https://img.shields.io/travis/npm/ssri.svg)](https://travis-ci.org/npm/ssri) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/npm/ssri?svg=true)](https://ci.appveyor.com/project/npm/ssri) [![Coverage Status](https://coveralls.io/repos/github/npm/ssri/badge.svg?branch=latest)](https://coveralls.io/github/npm/ssri?branch=latest) + +[`ssri`](https://github.com/npm/ssri), short for Standard Subresource +Integrity, is a Node.js utility for parsing, manipulating, serializing, +generating, and verifying [Subresource +Integrity](https://w3c.github.io/webappsec/specs/subresourceintegrity/) hashes. + +## Install + +`$ npm install --save ssri` + +## Table of Contents + +* [Example](#example) +* [Features](#features) +* [Contributing](#contributing) +* [API](#api) + * Parsing & Serializing + * [`parse`](#parse) + * [`stringify`](#stringify) + * [`Integrity#concat`](#integrity-concat) + * [`Integrity#merge`](#integrity-merge) + * [`Integrity#toString`](#integrity-to-string) + * [`Integrity#toJSON`](#integrity-to-json) + * [`Integrity#match`](#integrity-match) + * [`Integrity#pickAlgorithm`](#integrity-pick-algorithm) + * [`Integrity#hexDigest`](#integrity-hex-digest) + * Integrity Generation + * [`fromHex`](#from-hex) + * [`fromData`](#from-data) + * [`fromStream`](#from-stream) + * [`create`](#create) + * Integrity Verification + * [`checkData`](#check-data) + * [`checkStream`](#check-stream) + * [`integrityStream`](#integrity-stream) + +### Example + +```javascript +const ssri = require('ssri') + +const integrity = 'sha512-9KhgCRIx/AmzC8xqYJTZRrnO8OW2Pxyl2DIMZSBOr0oDvtEFyht3xpp71j/r/pAe1DM+JI/A+line3jUBgzQ7A==?foo' + +// Parsing and serializing +const parsed = ssri.parse(integrity) +ssri.stringify(parsed) // === integrity (works on non-Integrity objects) +parsed.toString() // === integrity + +// Async stream functions +ssri.checkStream(fs.createReadStream('./my-file'), integrity).then(...) +ssri.fromStream(fs.createReadStream('./my-file')).then(sri => { + sri.toString() === integrity +}) +fs.createReadStream('./my-file').pipe(ssri.createCheckerStream(sri)) + +// Sync data functions +ssri.fromData(fs.readFileSync('./my-file')) // === parsed +ssri.checkData(fs.readFileSync('./my-file'), integrity) // => 'sha512' +``` + +### Features + +* Parses and stringifies SRI strings. +* Generates SRI strings from raw data or Streams. +* Strict standard compliance. +* `?foo` metadata option support. +* Multiple entries for the same algorithm. +* Object-based integrity hash manipulation. +* Small footprint: no dependencies, concise implementation. +* Full test coverage. +* Customizable algorithm picker. + +### Contributing + +The ssri team enthusiastically welcomes contributions and project participation! +There's a bunch of things you can do if you want to contribute! The [Contributor +Guide](CONTRIBUTING.md) has all the information you need for everything from +reporting bugs to contributing entire new features. Please don't hesitate to +jump in if you'd like to, or even ask us questions if something isn't clear. + +### API + +#### `> ssri.parse(sri, [opts]) -> Integrity` + +Parses `sri` into an `Integrity` data structure. `sri` can be an integrity +string, an `Hash`-like with `digest` and `algorithm` fields and an optional +`options` field, or an `Integrity`-like object. The resulting object will be an +`Integrity` instance that has this shape: + +```javascript +{ + 'sha1': [{algorithm: 'sha1', digest: 'deadbeef', options: []}], + 'sha512': [ + {algorithm: 'sha512', digest: 'c0ffee', options: []}, + {algorithm: 'sha512', digest: 'bad1dea', options: ['foo']} + ], +} +``` + +If `opts.single` is truthy, a single `Hash` object will be returned. That is, a +single object that looks like `{algorithm, digest, options}`, as opposed to a +larger object with multiple of these. + +If `opts.strict` is truthy, the resulting object will be filtered such that +it strictly follows the Subresource Integrity spec, throwing away any entries +with any invalid components. This also means a restricted set of algorithms +will be used -- the spec limits them to `sha256`, `sha384`, and `sha512`. + +Strict mode is recommended if the integrity strings are intended for use in +browsers, or in other situations where strict adherence to the spec is needed. + +##### Example + +```javascript +ssri.parse('sha512-9KhgCRIx/AmzC8xqYJTZRrnO8OW2Pxyl2DIMZSBOr0oDvtEFyht3xpp71j/r/pAe1DM+JI/A+line3jUBgzQ7A==?foo') // -> Integrity object +``` + +#### `> ssri.stringify(sri, [opts]) -> String` + +This function is identical to [`Integrity#toString()`](#integrity-to-string), +except it can be used on _any_ object that [`parse`](#parse) can handle -- that +is, a string, an `Hash`-like, or an `Integrity`-like. + +The `opts.sep` option defines the string to use when joining multiple entries +together. To be spec-compliant, this _must_ be whitespace. The default is a +single space (`' '`). + +If `opts.strict` is true, the integrity string will be created using strict +parsing rules. See [`ssri.parse`](#parse). + +##### Example + +```javascript +// Useful for cleaning up input SRI strings: +ssri.stringify('\n\rsha512-foo\n\t\tsha384-bar') +// -> 'sha512-foo sha384-bar' + +// Hash-like: only a single entry. +ssri.stringify({ + algorithm: 'sha512', + digest:'9KhgCRIx/AmzC8xqYJTZRrnO8OW2Pxyl2DIMZSBOr0oDvtEFyht3xpp71j/r/pAe1DM+JI/A+line3jUBgzQ7A==', + options: ['foo'] +}) +// -> +// 'sha512-9KhgCRIx/AmzC8xqYJTZRrnO8OW2Pxyl2DIMZSBOr0oDvtEFyht3xpp71j/r/pAe1DM+JI/A+line3jUBgzQ7A==?foo' + +// Integrity-like: full multi-entry syntax. Similar to output of `ssri.parse` +ssri.stringify({ + 'sha512': [ + { + algorithm: 'sha512', + digest:'9KhgCRIx/AmzC8xqYJTZRrnO8OW2Pxyl2DIMZSBOr0oDvtEFyht3xpp71j/r/pAe1DM+JI/A+line3jUBgzQ7A==', + options: ['foo'] + } + ] +}) +// -> +// 'sha512-9KhgCRIx/AmzC8xqYJTZRrnO8OW2Pxyl2DIMZSBOr0oDvtEFyht3xpp71j/r/pAe1DM+JI/A+line3jUBgzQ7A==?foo' +``` + +#### `> Integrity#concat(otherIntegrity, [opts]) -> Integrity` + +Concatenates an `Integrity` object with another IntegrityLike, or an integrity +string. + +This is functionally equivalent to concatenating the string format of both +integrity arguments, and calling [`ssri.parse`](#ssri-parse) on the new string. + +If `opts.strict` is true, the new `Integrity` will be created using strict +parsing rules. See [`ssri.parse`](#parse). + +##### Example + +```javascript +// This will combine the integrity checks for two different versions of +// your index.js file so you can use a single integrity string and serve +// either of these to clients, from a single ` + +``` + +## API + +### parser(args, opts={}) + +Parses command line arguments returning a simple mapping of keys and values. + +**expects:** + +* `args`: a string or array of strings representing the options to parse. +* `opts`: provide a set of hints indicating how `args` should be parsed: + * `opts.alias`: an object representing the set of aliases for a key: `{alias: {foo: ['f']}}`. + * `opts.array`: indicate that keys should be parsed as an array: `{array: ['foo', 'bar']}`.
    + Indicate that keys should be parsed as an array and coerced to booleans / numbers:
    + `{array: [{ key: 'foo', boolean: true }, {key: 'bar', number: true}]}`. + * `opts.boolean`: arguments should be parsed as booleans: `{boolean: ['x', 'y']}`. + * `opts.coerce`: provide a custom synchronous function that returns a coerced value from the argument provided + (or throws an error). For arrays the function is called only once for the entire array:
    + `{coerce: {foo: function (arg) {return modifiedArg}}}`. + * `opts.config`: indicate a key that represents a path to a configuration file (this file will be loaded and parsed). + * `opts.configObjects`: configuration objects to parse, their properties will be set as arguments:
    + `{configObjects: [{'x': 5, 'y': 33}, {'z': 44}]}`. + * `opts.configuration`: provide configuration options to the yargs-parser (see: [configuration](#configuration)). + * `opts.count`: indicate a key that should be used as a counter, e.g., `-vvv` = `{v: 3}`. + * `opts.default`: provide default values for keys: `{default: {x: 33, y: 'hello world!'}}`. + * `opts.envPrefix`: environment variables (`process.env`) with the prefix provided should be parsed. + * `opts.narg`: specify that a key requires `n` arguments: `{narg: {x: 2}}`. + * `opts.normalize`: `path.normalize()` will be applied to values set to this key. + * `opts.number`: keys should be treated as numbers. + * `opts.string`: keys should be treated as strings (even if they resemble a number `-x 33`). + +**returns:** + +* `obj`: an object representing the parsed value of `args` + * `key/value`: key value pairs for each argument and their aliases. + * `_`: an array representing the positional arguments. + * [optional] `--`: an array with arguments after the end-of-options flag `--`. + +### require('yargs-parser').detailed(args, opts={}) + +Parses a command line string, returning detailed information required by the +yargs engine. + +**expects:** + +* `args`: a string or array of strings representing options to parse. +* `opts`: provide a set of hints indicating how `args`, inputs are identical to `require('yargs-parser')(args, opts={})`. + +**returns:** + +* `argv`: an object representing the parsed value of `args` + * `key/value`: key value pairs for each argument and their aliases. + * `_`: an array representing the positional arguments. + * [optional] `--`: an array with arguments after the end-of-options flag `--`. +* `error`: populated with an error object if an exception occurred during parsing. +* `aliases`: the inferred list of aliases built by combining lists in `opts.alias`. +* `newAliases`: any new aliases added via camel-case expansion: + * `boolean`: `{ fooBar: true }` +* `defaulted`: any new argument created by `opts.default`, no aliases included. + * `boolean`: `{ foo: true }` +* `configuration`: given by default settings and `opts.configuration`. + + + +### Configuration + +The yargs-parser applies several automated transformations on the keys provided +in `args`. These features can be turned on and off using the `configuration` field +of `opts`. + +```js +var parsed = parser(['--no-dice'], { + configuration: { + 'boolean-negation': false + } +}) +``` + +### short option groups + +* default: `true`. +* key: `short-option-groups`. + +Should a group of short-options be treated as boolean flags? + +```console +$ node example.js -abc +{ _: [], a: true, b: true, c: true } +``` + +_if disabled:_ + +```console +$ node example.js -abc +{ _: [], abc: true } +``` + +### camel-case expansion + +* default: `true`. +* key: `camel-case-expansion`. + +Should hyphenated arguments be expanded into camel-case aliases? + +```console +$ node example.js --foo-bar +{ _: [], 'foo-bar': true, fooBar: true } +``` + +_if disabled:_ + +```console +$ node example.js --foo-bar +{ _: [], 'foo-bar': true } +``` + +### dot-notation + +* default: `true` +* key: `dot-notation` + +Should keys that contain `.` be treated as objects? + +```console +$ node example.js --foo.bar +{ _: [], foo: { bar: true } } +``` + +_if disabled:_ + +```console +$ node example.js --foo.bar +{ _: [], "foo.bar": true } +``` + +### parse numbers + +* default: `true` +* key: `parse-numbers` + +Should keys that look like numbers be treated as such? + +```console +$ node example.js --foo=99.3 +{ _: [], foo: 99.3 } +``` + +_if disabled:_ + +```console +$ node example.js --foo=99.3 +{ _: [], foo: "99.3" } +``` + +### parse positional numbers + +* default: `true` +* key: `parse-positional-numbers` + +Should positional keys that look like numbers be treated as such. + +```console +$ node example.js 99.3 +{ _: [99.3] } +``` + +_if disabled:_ + +```console +$ node example.js 99.3 +{ _: ['99.3'] } +``` + +### boolean negation + +* default: `true` +* key: `boolean-negation` + +Should variables prefixed with `--no` be treated as negations? + +```console +$ node example.js --no-foo +{ _: [], foo: false } +``` + +_if disabled:_ + +```console +$ node example.js --no-foo +{ _: [], "no-foo": true } +``` + +### combine arrays + +* default: `false` +* key: `combine-arrays` + +Should arrays be combined when provided by both command line arguments and +a configuration file. + +### duplicate arguments array + +* default: `true` +* key: `duplicate-arguments-array` + +Should arguments be coerced into an array when duplicated: + +```console +$ node example.js -x 1 -x 2 +{ _: [], x: [1, 2] } +``` + +_if disabled:_ + +```console +$ node example.js -x 1 -x 2 +{ _: [], x: 2 } +``` + +### flatten duplicate arrays + +* default: `true` +* key: `flatten-duplicate-arrays` + +Should array arguments be coerced into a single array when duplicated: + +```console +$ node example.js -x 1 2 -x 3 4 +{ _: [], x: [1, 2, 3, 4] } +``` + +_if disabled:_ + +```console +$ node example.js -x 1 2 -x 3 4 +{ _: [], x: [[1, 2], [3, 4]] } +``` + +### greedy arrays + +* default: `true` +* key: `greedy-arrays` + +Should arrays consume more than one positional argument following their flag. + +```console +$ node example --arr 1 2 +{ _: [], arr: [1, 2] } +``` + +_if disabled:_ + +```console +$ node example --arr 1 2 +{ _: [2], arr: [1] } +``` + +**Note: in `v18.0.0` we are considering defaulting greedy arrays to `false`.** + +### nargs eats options + +* default: `false` +* key: `nargs-eats-options` + +Should nargs consume dash options as well as positional arguments. + +### negation prefix + +* default: `no-` +* key: `negation-prefix` + +The prefix to use for negated boolean variables. + +```console +$ node example.js --no-foo +{ _: [], foo: false } +``` + +_if set to `quux`:_ + +```console +$ node example.js --quuxfoo +{ _: [], foo: false } +``` + +### populate -- + +* default: `false`. +* key: `populate--` + +Should unparsed flags be stored in `--` or `_`. + +_If disabled:_ + +```console +$ node example.js a -b -- x y +{ _: [ 'a', 'x', 'y' ], b: true } +``` + +_If enabled:_ + +```console +$ node example.js a -b -- x y +{ _: [ 'a' ], '--': [ 'x', 'y' ], b: true } +``` + +### set placeholder key + +* default: `false`. +* key: `set-placeholder-key`. + +Should a placeholder be added for keys not set via the corresponding CLI argument? + +_If disabled:_ + +```console +$ node example.js -a 1 -c 2 +{ _: [], a: 1, c: 2 } +``` + +_If enabled:_ + +```console +$ node example.js -a 1 -c 2 +{ _: [], a: 1, b: undefined, c: 2 } +``` + +### halt at non-option + +* default: `false`. +* key: `halt-at-non-option`. + +Should parsing stop at the first positional argument? This is similar to how e.g. `ssh` parses its command line. + +_If disabled:_ + +```console +$ node example.js -a run b -x y +{ _: [ 'b' ], a: 'run', x: 'y' } +``` + +_If enabled:_ + +```console +$ node example.js -a run b -x y +{ _: [ 'b', '-x', 'y' ], a: 'run' } +``` + +### strip aliased + +* default: `false` +* key: `strip-aliased` + +Should aliases be removed before returning results? + +_If disabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1, 'test-alias': 1, testAlias: 1 } +``` + +_If enabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1 } +``` + +### strip dashed + +* default: `false` +* key: `strip-dashed` + +Should dashed keys be removed before returning results? This option has no effect if +`camel-case-expansion` is disabled. + +_If disabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1 } +``` + +_If enabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], testField: 1 } +``` + +### unknown options as args + +* default: `false` +* key: `unknown-options-as-args` + +Should unknown options be treated like regular arguments? An unknown option is one that is not +configured in `opts`. + +_If disabled_ + +```console +$ node example.js --unknown-option --known-option 2 --string-option --unknown-option2 +{ _: [], unknownOption: true, knownOption: 2, stringOption: '', unknownOption2: true } +``` + +_If enabled_ + +```console +$ node example.js --unknown-option --known-option 2 --string-option --unknown-option2 +{ _: ['--unknown-option'], knownOption: 2, stringOption: '--unknown-option2' } +``` + +## Supported Node.js Versions + +Libraries in this ecosystem make a best effort to track +[Node.js' release schedule](https://nodejs.org/en/about/releases/). Here's [a +post on why we think this is important](https://medium.com/the-node-js-collection/maintainers-should-consider-following-node-js-release-schedule-ab08ed4de71a). + +## Special Thanks + +The yargs project evolves from optimist and minimist. It owes its +existence to a lot of James Halliday's hard work. Thanks [substack](https://github.com/substack) **beep** **boop** \o/ + +## License + +ISC diff --git a/mybulma/node_modules/yargs-parser/browser.js b/mybulma/node_modules/yargs-parser/browser.js new file mode 100644 index 0000000..241202c --- /dev/null +++ b/mybulma/node_modules/yargs-parser/browser.js @@ -0,0 +1,29 @@ +// Main entrypoint for ESM web browser environments. Avoids using Node.js +// specific libraries, such as "path". +// +// TODO: figure out reasonable web equivalents for "resolve", "normalize", etc. +import { camelCase, decamelize, looksLikeNumber } from './build/lib/string-utils.js' +import { YargsParser } from './build/lib/yargs-parser.js' +const parser = new YargsParser({ + cwd: () => { return '' }, + format: (str, arg) => { return str.replace('%s', arg) }, + normalize: (str) => { return str }, + resolve: (str) => { return str }, + require: () => { + throw Error('loading config from files not currently supported in browser') + }, + env: () => {} +}) + +const yargsParser = function Parser (args, opts) { + const result = parser.parse(args.slice(), opts) + return result.argv +} +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts) +} +yargsParser.camelCase = camelCase +yargsParser.decamelize = decamelize +yargsParser.looksLikeNumber = looksLikeNumber + +export default yargsParser diff --git a/mybulma/node_modules/yargs-parser/build/index.cjs b/mybulma/node_modules/yargs-parser/build/index.cjs new file mode 100644 index 0000000..33b5ebd --- /dev/null +++ b/mybulma/node_modules/yargs-parser/build/index.cjs @@ -0,0 +1,1042 @@ +'use strict'; + +var util = require('util'); +var fs = require('fs'); +var path = require('path'); + +function camelCase(str) { + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf('-') === -1 && str.indexOf('_') === -1) { + return str; + } + else { + let camelcase = ''; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === '-' || chr === '_')) { + nextChrUpper = true; + } + else if (chr !== '-' && chr !== '_') { + camelcase += chr; + } + } + return camelcase; + } +} +function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || '-'; + let notCamelcase = ''; + for (let i = 0; i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } + else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + if (typeof x === 'number') + return true; + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map(e => typeof e !== 'string' ? e + '' : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + if (c === ' ' && !opening) { + if (!(prevC === ' ')) { + i++; + } + continue; + } + if (c === opening) { + opening = null; + } + else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ''; + args[i] += c; + } + return args; +} + +var DefaultValuesForTypeKey; +(function (DefaultValuesForTypeKey) { + DefaultValuesForTypeKey["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey["STRING"] = "string"; + DefaultValuesForTypeKey["NUMBER"] = "number"; + DefaultValuesForTypeKey["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); + +let mixin; +class YargsParser { + constructor(_mixin) { + mixin = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + const args = tokenizeArgString(argsInput); + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + 'boolean-negation': true, + 'camel-case-expansion': true, + 'combine-arrays': false, + 'dot-notation': true, + 'duplicate-arguments-array': true, + 'flatten-duplicate-arrays': true, + 'greedy-arrays': true, + 'halt-at-non-option': false, + 'nargs-eats-options': false, + 'negation-prefix': 'no-', + 'parse-numbers': true, + 'parse-positional-numbers': true, + 'populate--': false, + 'set-placeholder-key': false, + 'short-option-groups': true, + 'strip-aliased': false, + 'strip-dashed': false, + 'unknown-options-as-args': false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration['populate--']; + const notFlagsArgv = notFlagsOption ? '--' : '_'; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + const __ = opts.__ || mixin.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)'); + [].concat(opts.array || []).filter(Boolean).forEach(function (opt) { + const key = typeof opt === 'object' ? opt.key : opt; + const assignment = Object.keys(opt).map(function (key) { + const arrayFlagKeys = { + boolean: 'bools', + string: 'strings', + number: 'numbers' + }; + return arrayFlagKeys[key]; + }).filter(Boolean).pop(); + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function (key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function (key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === 'object') { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === 'number') { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === 'object') { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === 'function') { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== 'undefined') { + if (Array.isArray(opts.config) || typeof opts.config === 'string') { + [].concat(opts.config).filter(Boolean).forEach(function (key) { + flags.configs[key] = true; + }); + } + else if (typeof opts.config === 'object') { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === 'boolean' || typeof value === 'function') { + flags.configs[key] = value; + } + }); + } + } + extendAliases(opts.key, aliases, opts.default, flags.arrays); + Object.keys(defaults).forEach(function (key) { + (flags.aliases[key] || []).forEach(function (alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, '---'); + let broken; + let key; + let letters; + let m; + let next; + let value; + if (arg !== '--' && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + } + else if (truncatedArg.match(/---+(=|$)/)) { + pushPositional(arg); + continue; + } + else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) { + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } + else if (checkAllAliases(m[1], flags.nargs) !== false) { + i = eatNargs(i, m[1], args, m[2]); + } + else { + setArg(m[1], m[2]); + } + } + } + else if (arg.match(negatedBoolean) && configuration['boolean-negation']) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + } + else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + } + else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(''); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === '=') { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args, value); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args, value); + } + else { + setArg(key, value); + } + broken = true; + break; + } + if (next === '-') { + setArg(letters[j], next); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && + /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && + checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } + else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-[0-9]$/) && + arg.match(negative) && + checkAllAliases(arg.slice(1), flags.bools)) { + key = arg.slice(1); + setArg(key, defaultValue(key)); + } + else if (arg === '--') { + notFlags = args.slice(i + 1); + break; + } + else if (configuration['halt-at-non-option']) { + notFlags = args.slice(i); + break; + } + else { + pushPositional(arg); + } + } + applyEnvVars(argv, true); + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration['set-placeholder-key']) + setPlaceholderKeys(argv); + Object.keys(flags.counts).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) + setArg(key, 0); + }); + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function (key) { + argv[notFlagsArgv].push(key); + }); + if (configuration['camel-case-expansion'] && configuration['strip-dashed']) { + Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => { + delete argv[key]; + }); + } + if (configuration['strip-aliased']) { + [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => { + if (configuration['camel-case-expansion'] && alias.includes('-')) { + delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]; + } + delete argv[alias]; + }); + } + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber('_', arg); + if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') { + argv._.push(maybeCoercedNumber); + } + } + function eatNargs(i, key, args, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__('Argument unexpected for: %s', key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration['nargs-eats-options']) { + if (args.length - (i + 1) + available < toEat) { + error = Error(__('Not enough arguments following: %s', key)); + } + available = toEat; + } + else { + for (ii = i + 1; ii < args.length; ii++) { + if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__('Not enough arguments following: %s', key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < (consumed + i + 1); ii++) { + setArg(key, args[ii]); + } + return (i + consumed); + } + function eatArray(i, key, args, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args[i + 1]; + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) { + argsToSet.push(true); + } + else if (isUndefined(next) || + (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) { + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } + else { + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign)); + } + for (let ii = i + 1; ii < args.length; ii++) { + if ((!configuration['greedy-arrays'] && argsToSet.length > 0) || + (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount)) + break; + next = args[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next)); + } + } + if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) || + (isNaN(nargsCount) && argsToSet.length === 0))) { + error = Error(__('Not enough arguments following: %s', key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val) { + if (/-/.test(key) && configuration['camel-case-expansion']) { + const alias = key.split('.').map(function (prop) { + return camelCase(prop); + }).join('.'); + addNewAlias(key, alias); + } + const value = processValue(key, val); + const splitKey = key.split('.'); + setKey(argv, splitKey, value); + if (flags.aliases[key]) { + flags.aliases[key].forEach(function (x) { + const keyProperties = x.split('.'); + setKey(argv, keyProperties, value); + }); + } + if (splitKey.length > 1 && configuration['dot-notation']) { + (flags.aliases[splitKey[0]] || []).forEach(function (x) { + let keyProperties = x.split('.'); + const a = [].concat(splitKey); + a.shift(); + keyProperties = keyProperties.concat(a); + if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) { + setKey(argv, keyProperties, value); + } + }); + } + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function (key) { + Object.defineProperty(argvReturn, key, { + enumerable: true, + get() { + return val; + }, + set(value) { + val = typeof value === 'string' ? mixin.normalize(value) : value; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val) { + if (typeof val === 'string' && + (val[0] === "'" || val[0] === '"') && + val[val.length - 1] === val[0]) { + val = val.substring(1, val.length - 1); + } + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === 'string') + val = val === 'true'; + } + let value = Array.isArray(val) + ? val.map(function (v) { return maybeCoerceNumber(key, v); }) + : maybeCoerceNumber(key, val); + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) { + value = increment(); + } + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val) => { return mixin.normalize(val); }); + else + value = mixin.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration['parse-positional-numbers'] && key === '_') + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`)))); + if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) { + value = Number(value); + } + } + return value; + } + function setConfig(argv) { + const configLookup = Object.create(null); + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function (configKey) { + const configPath = argv[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === 'function') { + try { + config = resolveConfig(resolvedConfigPath); + } + catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } + else { + config = mixin.require(resolvedConfigPath); + } + setConfigObject(config); + } + catch (ex) { + if (ex.name === 'PermissionDenied') + error = ex; + else if (argv[configKey]) + error = Error(__('Invalid JSON config file: %s', configPath)); + } + } + }); + } + function setConfigObject(config, prev) { + Object.keys(config).forEach(function (key) { + const value = config[key]; + const fullKey = prev ? prev + '.' + key : key; + if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) { + setConfigObject(value, fullKey); + } + else { + if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) { + setArg(fullKey, value); + } + } + }); + } + function setConfigObjects() { + if (typeof configObjects !== 'undefined') { + configObjects.forEach(function (configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv, configOnly) { + if (typeof envPrefix === 'undefined') + return; + const prefix = typeof envPrefix === 'string' ? envPrefix : ''; + const env = mixin.env(); + Object.keys(env).forEach(function (envVar) { + if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) { + const keys = envVar.split('__').map(function (key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) { + setArg(keys.join('.'), env[envVar]); + } + } + }); + } + function applyCoercions(argv) { + let coerce; + const applied = new Set(); + Object.keys(argv).forEach(function (key) { + if (!applied.has(key)) { + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === 'function') { + try { + const value = maybeCoerceNumber(key, coerce(argv[key])); + ([].concat(flags.aliases[key] || [], key)).forEach(ali => { + applied.add(ali); + argv[ali] = value; + }); + } + catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv) { + flags.keys.forEach((key) => { + if (~key.indexOf('.')) + return; + if (typeof argv[key] === 'undefined') + argv[key] = undefined; + }); + return argv; + } + function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) { + Object.keys(defaults).forEach(function (key) { + if (!hasKey(obj, key.split('.'))) { + setKey(obj, key.split('.'), defaults[key]); + if (canLog) + defaulted[key] = true; + (aliases[key] || []).forEach(function (x) { + if (hasKey(obj, x.split('.'))) + return; + setKey(obj, x.split('.'), defaults[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + o = (o[key] || {}); + }); + const key = keys[keys.length - 1]; + if (typeof o !== 'object') + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + key = sanitizeKey(key); + if (typeof o === 'object' && o[key] === undefined) { + o[key] = {}; + } + if (typeof o[key] !== 'object' || Array.isArray(o[key])) { + if (Array.isArray(o[key])) { + o[key].push({}); + } + else { + o[key] = [o[key], {}]; + } + o = o[key][o[key].length - 1]; + } + else { + o = o[key]; + } + }); + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration['duplicate-arguments-array']; + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } + else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } + else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } + else { + o[key] = o[key].concat([value]); + } + } + else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } + else if (duplicate && !(o[key] === undefined || + checkAllAliases(key, flags.counts) || + checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } + else { + o[key] = value; + } + } + function extendAliases(...args) { + args.forEach(function (obj) { + Object.keys(obj || {}).forEach(function (key) { + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + flags.aliases[key].concat(key).forEach(function (x) { + if (/-/.test(x) && configuration['camel-case-expansion']) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].concat(key).forEach(function (x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) { + const c = decamelize(x, '-'); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function (x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find(key => keys.includes(key)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map(k => flags[k])); + return toCheck.some(function (flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function (pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + function hasAllShortFlags(arg) { + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(''); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if ((letters[j + 1] && letters[j + 1] === '=') || + next === '-' || + (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) || + (letters[j + 1] && letters[j + 1].match(/\W/))) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration['unknown-options-as-args'] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, '--'); + if (arg.match(negative)) { + return false; + } + if (hasAllShortFlags(arg)) { + return false; + } + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + const normalFlag = /^-+([^=]+?)$/; + const flagEndingInHyphen = /^-+([^=]+?)-$/; + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts) && + `${key}` in defaults) { + return defaults[key]; + } + else { + return defaultForType(guessType(key)); + } + } + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: '', + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + function checkConfiguration() { + Object.keys(flags.counts).find(key => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key)); + return true; + } + else if (checkAllAliases(key, flags.nargs)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration: configuration, + defaulted: Object.assign({}, defaulted), + error: error, + newAliases: Object.assign({}, newAliases) + }; + } +} +function combineAliases(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + Object.keys(aliases).forEach(function (key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function (v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + aliasArrays.forEach(function (aliasArray) { + aliasArray = aliasArray.filter(function (v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === 'string') { + combined[lastAlias] = aliasArray; + } + }); + return combined; +} +function increment(orig) { + return orig !== undefined ? orig + 1 : 1; +} +function sanitizeKey(key) { + if (key === '__proto__') + return '___proto___'; + return key; +} + +const minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION) + ? Number(process.env.YARGS_MIN_NODE_VERSION) + : 10; +if (process && process.version) { + const major = Number(process.version.match(/v([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +const env = process ? process.env : {}; +const parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format: util.format, + normalize: path.normalize, + resolve: path.resolve, + require: (path) => { + if (typeof require !== 'undefined') { + return require(path); + } + else if (path.match(/\.json$/)) { + return fs.readFileSync(path, 'utf8'); + } + else { + throw Error('only .json config files are supported in ESM'); + } + } +}); +const yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; + +module.exports = yargsParser; diff --git a/mybulma/node_modules/yargs-parser/build/lib/index.js b/mybulma/node_modules/yargs-parser/build/lib/index.js new file mode 100644 index 0000000..cc50788 --- /dev/null +++ b/mybulma/node_modules/yargs-parser/build/lib/index.js @@ -0,0 +1,59 @@ +/** + * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js + * CJS and ESM environments. + * + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +import { format } from 'util'; +import { readFileSync } from 'fs'; +import { normalize, resolve } from 'path'; +import { camelCase, decamelize, looksLikeNumber } from './string-utils.js'; +import { YargsParser } from './yargs-parser.js'; +// See https://github.com/yargs/yargs-parser#supported-nodejs-versions for our +// version support policy. The YARGS_MIN_NODE_VERSION is used for testing only. +const minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION) + ? Number(process.env.YARGS_MIN_NODE_VERSION) + : 10; +if (process && process.version) { + const major = Number(process.version.match(/v([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +// Creates a yargs-parser instance using Node.js standard libraries: +const env = process ? process.env : {}; +const parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format, + normalize, + resolve, + // TODO: figure out a way to combine ESM and CJS coverage, such that + // we can exercise all the lines below: + require: (path) => { + if (typeof require !== 'undefined') { + return require(path); + } + else if (path.match(/\.json$/)) { + return readFileSync(path, 'utf8'); + } + else { + throw Error('only .json config files are supported in ESM'); + } + } +}); +const yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; +export default yargsParser; diff --git a/mybulma/node_modules/yargs-parser/build/lib/string-utils.js b/mybulma/node_modules/yargs-parser/build/lib/string-utils.js new file mode 100644 index 0000000..4e8bd99 --- /dev/null +++ b/mybulma/node_modules/yargs-parser/build/lib/string-utils.js @@ -0,0 +1,65 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +export function camelCase(str) { + // Handle the case where an argument is provided as camel case, e.g., fooBar. + // by ensuring that the string isn't already mixed case: + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf('-') === -1 && str.indexOf('_') === -1) { + return str; + } + else { + let camelcase = ''; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === '-' || chr === '_')) { + nextChrUpper = true; + } + else if (chr !== '-' && chr !== '_') { + camelcase += chr; + } + } + return camelcase; + } +} +export function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || '-'; + let notCamelcase = ''; + for (let i = 0; i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } + else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +export function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + // if loaded from config, may already be a number. + if (typeof x === 'number') + return true; + // hexadecimal. + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + // don't treat 0123 as a number; as it drops the leading '0'. + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} diff --git a/mybulma/node_modules/yargs-parser/build/lib/tokenize-arg-string.js b/mybulma/node_modules/yargs-parser/build/lib/tokenize-arg-string.js new file mode 100644 index 0000000..5e732ef --- /dev/null +++ b/mybulma/node_modules/yargs-parser/build/lib/tokenize-arg-string.js @@ -0,0 +1,40 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +// take an un-split argv string and tokenize it. +export function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map(e => typeof e !== 'string' ? e + '' : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + // split on spaces unless we're in quotes. + if (c === ' ' && !opening) { + if (!(prevC === ' ')) { + i++; + } + continue; + } + // don't split the string if we're in matching + // opening or closing single and double quotes. + if (c === opening) { + opening = null; + } + else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ''; + args[i] += c; + } + return args; +} diff --git a/mybulma/node_modules/yargs-parser/build/lib/yargs-parser-types.js b/mybulma/node_modules/yargs-parser/build/lib/yargs-parser-types.js new file mode 100644 index 0000000..63b7c31 --- /dev/null +++ b/mybulma/node_modules/yargs-parser/build/lib/yargs-parser-types.js @@ -0,0 +1,12 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +export var DefaultValuesForTypeKey; +(function (DefaultValuesForTypeKey) { + DefaultValuesForTypeKey["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey["STRING"] = "string"; + DefaultValuesForTypeKey["NUMBER"] = "number"; + DefaultValuesForTypeKey["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); diff --git a/mybulma/node_modules/yargs-parser/build/lib/yargs-parser.js b/mybulma/node_modules/yargs-parser/build/lib/yargs-parser.js new file mode 100644 index 0000000..828a440 --- /dev/null +++ b/mybulma/node_modules/yargs-parser/build/lib/yargs-parser.js @@ -0,0 +1,1037 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +import { tokenizeArgString } from './tokenize-arg-string.js'; +import { DefaultValuesForTypeKey } from './yargs-parser-types.js'; +import { camelCase, decamelize, looksLikeNumber } from './string-utils.js'; +let mixin; +export class YargsParser { + constructor(_mixin) { + mixin = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + // allow a string argument to be passed in rather + // than an argv array. + const args = tokenizeArgString(argsInput); + // aliases might have transitive relationships, normalize this. + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + 'boolean-negation': true, + 'camel-case-expansion': true, + 'combine-arrays': false, + 'dot-notation': true, + 'duplicate-arguments-array': true, + 'flatten-duplicate-arrays': true, + 'greedy-arrays': true, + 'halt-at-non-option': false, + 'nargs-eats-options': false, + 'negation-prefix': 'no-', + 'parse-numbers': true, + 'parse-positional-numbers': true, + 'populate--': false, + 'set-placeholder-key': false, + 'short-option-groups': true, + 'strip-aliased': false, + 'strip-dashed': false, + 'unknown-options-as-args': false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration['populate--']; + const notFlagsArgv = notFlagsOption ? '--' : '_'; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + // allow a i18n handler to be passed in, default to a fake one (util.format). + const __ = opts.__ || mixin.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)'); + [].concat(opts.array || []).filter(Boolean).forEach(function (opt) { + const key = typeof opt === 'object' ? opt.key : opt; + // assign to flags[bools|strings|numbers] + const assignment = Object.keys(opt).map(function (key) { + const arrayFlagKeys = { + boolean: 'bools', + string: 'strings', + number: 'numbers' + }; + return arrayFlagKeys[key]; + }).filter(Boolean).pop(); + // assign key to be coerced + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function (key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function (key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === 'object') { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === 'number') { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === 'object') { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === 'function') { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== 'undefined') { + if (Array.isArray(opts.config) || typeof opts.config === 'string') { + ; + [].concat(opts.config).filter(Boolean).forEach(function (key) { + flags.configs[key] = true; + }); + } + else if (typeof opts.config === 'object') { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === 'boolean' || typeof value === 'function') { + flags.configs[key] = value; + } + }); + } + } + // create a lookup table that takes into account all + // combinations of aliases: {f: ['foo'], foo: ['f']} + extendAliases(opts.key, aliases, opts.default, flags.arrays); + // apply default values to all aliases. + Object.keys(defaults).forEach(function (key) { + (flags.aliases[key] || []).forEach(function (alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + // TODO(bcoe): for the first pass at removing object prototype we didn't + // remove all prototypes from objects returned by this API, we might want + // to gradually move towards doing so. + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, '---'); + let broken; + let key; + let letters; + let m; + let next; + let value; + // any unknown option (except for end-of-options, "--") + if (arg !== '--' && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + // ---, ---=, ----, etc, + } + else if (truncatedArg.match(/---+(=|$)/)) { + // options without key name are invalid. + pushPositional(arg); + continue; + // -- separated by = + } + else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + // arrays format = '--f=a b c' + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } + else if (checkAllAliases(m[1], flags.nargs) !== false) { + // nargs format = '--f=monkey washing cat' + i = eatNargs(i, m[1], args, m[2]); + } + else { + setArg(m[1], m[2]); + } + } + } + else if (arg.match(negatedBoolean) && configuration['boolean-negation']) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + // -- separated by space. + } + else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + // array format = '--foo a b c' + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '--foo a b c' + // should be truthy even if: flags.nargs[key] === 0 + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + // dot-notation flag separated by '='. + } + else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + // dot-notation flag separated by space. + } + else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(''); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === '=') { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + // array format = '-f=a b c' + i = eatArray(i, key, args, value); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '-f=monkey washing cat' + i = eatNargs(i, key, args, value); + } + else { + setArg(key, value); + } + broken = true; + break; + } + if (next === '-') { + setArg(letters[j], next); + continue; + } + // current letter is an alphabetic character and next value is a number + if (/[A-Za-z]/.test(letters[j]) && + /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && + checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } + else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (checkAllAliases(key, flags.arrays)) { + // array format = '-f a b c' + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '-f a b c' + // should be truthy even if: flags.nargs[key] === 0 + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-[0-9]$/) && + arg.match(negative) && + checkAllAliases(arg.slice(1), flags.bools)) { + // single-digit boolean alias, e.g: xargs -0 + key = arg.slice(1); + setArg(key, defaultValue(key)); + } + else if (arg === '--') { + notFlags = args.slice(i + 1); + break; + } + else if (configuration['halt-at-non-option']) { + notFlags = args.slice(i); + break; + } + else { + pushPositional(arg); + } + } + // order of precedence: + // 1. command line arg + // 2. value from env var + // 3. value from config file + // 4. value from config objects + // 5. configured default value + applyEnvVars(argv, true); // special case: check env vars that point to config file + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration['set-placeholder-key']) + setPlaceholderKeys(argv); + // for any counts either not in args or without an explicit default, set to 0 + Object.keys(flags.counts).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) + setArg(key, 0); + }); + // '--' defaults to undefined. + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function (key) { + argv[notFlagsArgv].push(key); + }); + if (configuration['camel-case-expansion'] && configuration['strip-dashed']) { + Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => { + delete argv[key]; + }); + } + if (configuration['strip-aliased']) { + ; + [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => { + if (configuration['camel-case-expansion'] && alias.includes('-')) { + delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]; + } + delete argv[alias]; + }); + } + // Push argument into positional array, applying numeric coercion: + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber('_', arg); + if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') { + argv._.push(maybeCoercedNumber); + } + } + // how many arguments should we consume, based + // on the nargs option? + function eatNargs(i, key, args, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + // NaN has a special meaning for the array type, indicating that one or + // more values are expected. + toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__('Argument unexpected for: %s', key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration['nargs-eats-options']) { + // classic behavior, yargs eats positional and dash arguments. + if (args.length - (i + 1) + available < toEat) { + error = Error(__('Not enough arguments following: %s', key)); + } + available = toEat; + } + else { + // nargs will not consume flag arguments, e.g., -abc, --foo, + // and terminates when one is observed. + for (ii = i + 1; ii < args.length; ii++) { + if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__('Not enough arguments following: %s', key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < (consumed + i + 1); ii++) { + setArg(key, args[ii]); + } + return (i + consumed); + } + // if an option is an array, eat all non-hyphenated arguments + // following it... YUM! + // e.g., --foo apple banana cat becomes ["apple", "banana", "cat"] + function eatArray(i, key, args, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args[i + 1]; + // If both array and nargs are configured, enforce the nargs count: + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) { + argsToSet.push(true); + } + else if (isUndefined(next) || + (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) { + // for keys without value ==> argsToSet remains an empty [] + // set user default value, if available + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } + else { + // value in --option=value is eaten as is + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign)); + } + for (let ii = i + 1; ii < args.length; ii++) { + if ((!configuration['greedy-arrays'] && argsToSet.length > 0) || + (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount)) + break; + next = args[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next)); + } + } + // If both array and nargs are configured, create an error if less than + // nargs positionals were found. NaN has special meaning, indicating + // that at least one value is required (more are okay). + if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) || + (isNaN(nargsCount) && argsToSet.length === 0))) { + error = Error(__('Not enough arguments following: %s', key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val) { + if (/-/.test(key) && configuration['camel-case-expansion']) { + const alias = key.split('.').map(function (prop) { + return camelCase(prop); + }).join('.'); + addNewAlias(key, alias); + } + const value = processValue(key, val); + const splitKey = key.split('.'); + setKey(argv, splitKey, value); + // handle populating aliases of the full key + if (flags.aliases[key]) { + flags.aliases[key].forEach(function (x) { + const keyProperties = x.split('.'); + setKey(argv, keyProperties, value); + }); + } + // handle populating aliases of the first element of the dot-notation key + if (splitKey.length > 1 && configuration['dot-notation']) { + ; + (flags.aliases[splitKey[0]] || []).forEach(function (x) { + let keyProperties = x.split('.'); + // expand alias with nested objects in key + const a = [].concat(splitKey); + a.shift(); // nuke the old key. + keyProperties = keyProperties.concat(a); + // populate alias only if is not already an alias of the full key + // (already populated above) + if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) { + setKey(argv, keyProperties, value); + } + }); + } + // Set normalize getter and setter when key is in 'normalize' but isn't an array + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function (key) { + Object.defineProperty(argvReturn, key, { + enumerable: true, + get() { + return val; + }, + set(value) { + val = typeof value === 'string' ? mixin.normalize(value) : value; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val) { + // strings may be quoted, clean this up as we assign values. + if (typeof val === 'string' && + (val[0] === "'" || val[0] === '"') && + val[val.length - 1] === val[0]) { + val = val.substring(1, val.length - 1); + } + // handle parsing boolean arguments --foo=true --bar false. + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === 'string') + val = val === 'true'; + } + let value = Array.isArray(val) + ? val.map(function (v) { return maybeCoerceNumber(key, v); }) + : maybeCoerceNumber(key, val); + // increment a count given as arg (either no value or value parsed as boolean) + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) { + value = increment(); + } + // Set normalized value when key is in 'normalize' and in 'arrays' + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val) => { return mixin.normalize(val); }); + else + value = mixin.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration['parse-positional-numbers'] && key === '_') + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`)))); + if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) { + value = Number(value); + } + } + return value; + } + // set args from config.json file, this should be + // applied last so that defaults can be applied. + function setConfig(argv) { + const configLookup = Object.create(null); + // expand defaults/aliases, in-case any happen to reference + // the config.json file. + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function (configKey) { + const configPath = argv[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === 'function') { + try { + config = resolveConfig(resolvedConfigPath); + } + catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } + else { + config = mixin.require(resolvedConfigPath); + } + setConfigObject(config); + } + catch (ex) { + // Deno will receive a PermissionDenied error if an attempt is + // made to load config without the --allow-read flag: + if (ex.name === 'PermissionDenied') + error = ex; + else if (argv[configKey]) + error = Error(__('Invalid JSON config file: %s', configPath)); + } + } + }); + } + // set args from config object. + // it recursively checks nested objects. + function setConfigObject(config, prev) { + Object.keys(config).forEach(function (key) { + const value = config[key]; + const fullKey = prev ? prev + '.' + key : key; + // if the value is an inner object and we have dot-notation + // enabled, treat inner objects in config the same as + // heavily nested dot notations (foo.bar.apple). + if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) { + // if the value is an object but not an array, check nested object + setConfigObject(value, fullKey); + } + else { + // setting arguments via CLI takes precedence over + // values within the config file. + if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) { + setArg(fullKey, value); + } + } + }); + } + // set all config objects passed in opts + function setConfigObjects() { + if (typeof configObjects !== 'undefined') { + configObjects.forEach(function (configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv, configOnly) { + if (typeof envPrefix === 'undefined') + return; + const prefix = typeof envPrefix === 'string' ? envPrefix : ''; + const env = mixin.env(); + Object.keys(env).forEach(function (envVar) { + if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) { + // get array of nested keys and convert them to camel case + const keys = envVar.split('__').map(function (key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) { + setArg(keys.join('.'), env[envVar]); + } + } + }); + } + function applyCoercions(argv) { + let coerce; + const applied = new Set(); + Object.keys(argv).forEach(function (key) { + if (!applied.has(key)) { // If we haven't already coerced this option via one of its aliases + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === 'function') { + try { + const value = maybeCoerceNumber(key, coerce(argv[key])); + ([].concat(flags.aliases[key] || [], key)).forEach(ali => { + applied.add(ali); + argv[ali] = value; + }); + } + catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv) { + flags.keys.forEach((key) => { + // don't set placeholder keys for dot notation options 'foo.bar'. + if (~key.indexOf('.')) + return; + if (typeof argv[key] === 'undefined') + argv[key] = undefined; + }); + return argv; + } + function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) { + Object.keys(defaults).forEach(function (key) { + if (!hasKey(obj, key.split('.'))) { + setKey(obj, key.split('.'), defaults[key]); + if (canLog) + defaulted[key] = true; + (aliases[key] || []).forEach(function (x) { + if (hasKey(obj, x.split('.'))) + return; + setKey(obj, x.split('.'), defaults[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + o = (o[key] || {}); + }); + const key = keys[keys.length - 1]; + if (typeof o !== 'object') + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + // TODO(bcoe): in the next major version of yargs, switch to + // Object.create(null) for dot notation: + key = sanitizeKey(key); + if (typeof o === 'object' && o[key] === undefined) { + o[key] = {}; + } + if (typeof o[key] !== 'object' || Array.isArray(o[key])) { + // ensure that o[key] is an array, and that the last item is an empty object. + if (Array.isArray(o[key])) { + o[key].push({}); + } + else { + o[key] = [o[key], {}]; + } + // we want to update the empty object at the end of the o[key] array, so set o to that object + o = o[key][o[key].length - 1]; + } + else { + o = o[key]; + } + }); + // TODO(bcoe): in the next major version of yargs, switch to + // Object.create(null) for dot notation: + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration['duplicate-arguments-array']; + // nargs has higher priority than duplicate + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } + else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } + else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } + else { + o[key] = o[key].concat([value]); + } + } + else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } + else if (duplicate && !(o[key] === undefined || + checkAllAliases(key, flags.counts) || + checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } + else { + o[key] = value; + } + } + // extend the aliases list with inferred aliases. + function extendAliases(...args) { + args.forEach(function (obj) { + Object.keys(obj || {}).forEach(function (key) { + // short-circuit if we've already added a key + // to the aliases array, for example it might + // exist in both 'opts.default' and 'opts.key'. + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + // For "--option-name", also set argv.optionName + flags.aliases[key].concat(key).forEach(function (x) { + if (/-/.test(x) && configuration['camel-case-expansion']) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + // For "--optionName", also set argv['option-name'] + flags.aliases[key].concat(key).forEach(function (x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) { + const c = decamelize(x, '-'); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function (x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find(key => keys.includes(key)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map(k => flags[k])); + return toCheck.some(function (flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function (pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + // based on a simplified version of the short flag group parsing logic + function hasAllShortFlags(arg) { + // if this is a negative number, or doesn't start with a single hyphen, it's not a short flag group + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(''); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if ((letters[j + 1] && letters[j + 1] === '=') || + next === '-' || + (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) || + (letters[j + 1] && letters[j + 1].match(/\W/))) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration['unknown-options-as-args'] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, '--'); + // ignore negative numbers + if (arg.match(negative)) { + return false; + } + // if this is a short option group and all of them are configured, it isn't unknown + if (hasAllShortFlags(arg)) { + return false; + } + // e.g. '--count=2' + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + // e.g. '-a' or '--arg' + const normalFlag = /^-+([^=]+?)$/; + // e.g. '-a-' + const flagEndingInHyphen = /^-+([^=]+?)-$/; + // e.g. '-abc123' + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + // e.g. '-a/usr/local' + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + // check the different types of flag styles, including negatedBoolean, a pattern defined near the start of the parse method + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + // make a best effort to pick a default value + // for an option based on name and type. + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts) && + `${key}` in defaults) { + return defaults[key]; + } + else { + return defaultForType(guessType(key)); + } + } + // return a default value, given the type of a flag., + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: '', + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + // given a flag, enforce a default type. + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + // check user configuration settings for inconsistencies + function checkConfiguration() { + // count keys should not be set as array/narg + Object.keys(flags.counts).find(key => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key)); + return true; + } + else if (checkAllAliases(key, flags.nargs)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration: configuration, + defaulted: Object.assign({}, defaulted), + error: error, + newAliases: Object.assign({}, newAliases) + }; + } +} +// if any aliases reference each other, we should +// merge them together. +function combineAliases(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + // turn alias lookup hash {key: ['alias1', 'alias2']} into + // a simple array ['key', 'alias1', 'alias2'] + Object.keys(aliases).forEach(function (key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + // combine arrays until zero changes are + // made in an iteration. + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function (v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + // map arrays back to the hash-lookup (de-dupe while + // we're at it). + aliasArrays.forEach(function (aliasArray) { + aliasArray = aliasArray.filter(function (v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === 'string') { + combined[lastAlias] = aliasArray; + } + }); + return combined; +} +// this function should only be called when a count is given as an arg +// it is NOT called to set a default value +// thus we can start the count at 1 instead of 0 +function increment(orig) { + return orig !== undefined ? orig + 1 : 1; +} +// TODO(bcoe): in the next major version of yargs, switch to +// Object.create(null) for dot notation: +function sanitizeKey(key) { + if (key === '__proto__') + return '___proto___'; + return key; +} diff --git a/mybulma/node_modules/yargs-parser/package.json b/mybulma/node_modules/yargs-parser/package.json new file mode 100644 index 0000000..f97aa9e --- /dev/null +++ b/mybulma/node_modules/yargs-parser/package.json @@ -0,0 +1,87 @@ +{ + "name": "yargs-parser", + "version": "20.2.9", + "description": "the mighty option parser used by yargs", + "main": "build/index.cjs", + "exports": { + ".": [ + { + "import": "./build/lib/index.js", + "require": "./build/index.cjs" + }, + "./build/index.cjs" + ] + }, + "type": "module", + "module": "./build/lib/index.js", + "scripts": { + "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'", + "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'", + "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", + "test": "c8 --reporter=text --reporter=html mocha test/*.cjs", + "test:browser": "start-server-and-test 'serve ./ -p 8080' http://127.0.0.1:8080/package.json 'node ./test/browser/yargs-test.cjs'", + "pretest:typescript": "npm run pretest", + "test:typescript": "c8 mocha ./build/test/typescript/*.js", + "coverage": "c8 report --check-coverage", + "precompile": "rimraf build", + "compile": "tsc", + "postcompile": "npm run build:cjs", + "build:cjs": "rollup -c", + "prepare": "npm run compile" + }, + "repository": { + "type": "git", + "url": "https://github.com/yargs/yargs-parser.git" + }, + "keywords": [ + "argument", + "parser", + "yargs", + "command", + "cli", + "parsing", + "option", + "args", + "argument" + ], + "author": "Ben Coe ", + "license": "ISC", + "devDependencies": { + "@types/chai": "^4.2.11", + "@types/mocha": "^8.0.0", + "@types/node": "^14.0.0", + "@typescript-eslint/eslint-plugin": "^3.10.1", + "@typescript-eslint/parser": "^3.10.1", + "@wessberg/rollup-plugin-ts": "^1.2.28", + "c8": "^7.3.0", + "chai": "^4.2.0", + "cross-env": "^7.0.2", + "eslint": "^7.0.0", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "gts": "^3.0.0", + "mocha": "^9.0.0", + "puppeteer": "^10.0.0", + "rimraf": "^3.0.2", + "rollup": "^2.22.1", + "rollup-plugin-cleanup": "^3.1.1", + "serve": "^12.0.0", + "standardx": "^7.0.0", + "start-server-and-test": "^1.11.2", + "ts-transform-default-export": "^1.0.2", + "typescript": "^4.0.0" + }, + "files": [ + "browser.js", + "build", + "!*.d.ts" + ], + "engines": { + "node": ">=10" + }, + "standardx": { + "ignore": [ + "build" + ] + } +} diff --git a/mybulma/node_modules/yargs/build/index.cjs b/mybulma/node_modules/yargs/build/index.cjs new file mode 100644 index 0000000..9641ad8 --- /dev/null +++ b/mybulma/node_modules/yargs/build/index.cjs @@ -0,0 +1 @@ +"use strict";var t=require("assert");class e extends Error{constructor(t){super(t||"yargs error"),this.name="YError",Error.captureStackTrace&&Error.captureStackTrace(this,e)}}let s,i=[];function n(t,o,a,h){s=h;let l={};if(Object.prototype.hasOwnProperty.call(t,"extends")){if("string"!=typeof t.extends)return l;const r=/\.json|\..*rc$/.test(t.extends);let h=null;if(r)h=function(t,e){return s.path.resolve(t,e)}(o,t.extends);else try{h=require.resolve(t.extends)}catch(e){return t}!function(t){if(i.indexOf(t)>-1)throw new e(`Circular extended configurations: '${t}'.`)}(h),i.push(h),l=r?JSON.parse(s.readFileSync(h,"utf8")):require(t.extends),delete t.extends,l=n(l,s.path.dirname(h),a,s)}return i=[],a?r(l,t):Object.assign({},l,t)}function r(t,e){const s={};function i(t){return t&&"object"==typeof t&&!Array.isArray(t)}Object.assign(s,t);for(const n of Object.keys(e))i(e[n])&&i(s[n])?s[n]=r(t[n],e[n]):s[n]=e[n];return s}function o(t){const e=t.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),s=/\.*[\][<>]/g,i=e.shift();if(!i)throw new Error(`No command found in: ${t}`);const n={cmd:i.replace(s,""),demanded:[],optional:[]};return e.forEach(((t,i)=>{let r=!1;t=t.replace(/\s/g,""),/\.+[\]>]/.test(t)&&i===e.length-1&&(r=!0),/^\[/.test(t)?n.optional.push({cmd:t.replace(s,"").split("|"),variadic:r}):n.demanded.push({cmd:t.replace(s,"").split("|"),variadic:r})})),n}const a=["first","second","third","fourth","fifth","sixth"];function h(t,s,i){try{let n=0;const[r,a,h]="object"==typeof t?[{demanded:[],optional:[]},t,s]:[o(`cmd ${t}`),s,i],f=[].slice.call(a);for(;f.length&&void 0===f[f.length-1];)f.pop();const d=h||f.length;if(du)throw new e(`Too many arguments provided. Expected max ${u} but received ${d}.`);r.demanded.forEach((t=>{const e=l(f.shift());0===t.cmd.filter((t=>t===e||"*"===t)).length&&c(e,t.cmd,n),n+=1})),r.optional.forEach((t=>{if(0===f.length)return;const e=l(f.shift());0===t.cmd.filter((t=>t===e||"*"===t)).length&&c(e,t.cmd,n),n+=1}))}catch(t){console.warn(t.stack)}}function l(t){return Array.isArray(t)?"array":null===t?"null":typeof t}function c(t,s,i){throw new e(`Invalid ${a[i]||"manyith"} argument. Expected ${s.join(" or ")} but received ${t}.`)}function f(t){return!!t&&!!t.then&&"function"==typeof t.then}function d(t,e,s,i){s.assert.notStrictEqual(t,e,i)}function u(t,e){e.assert.strictEqual(typeof t,"string")}function p(t){return Object.keys(t)}function g(t={},e=(()=>!0)){const s={};return p(t).forEach((i=>{e(i,t[i])&&(s[i]=t[i])})),s}function m(){return process.versions.electron&&!process.defaultApp?0:1}function y(){return process.argv[m()]}var b=Object.freeze({__proto__:null,hideBin:function(t){return t.slice(m()+1)},getProcessArgvBin:y});function v(t,e,s,i){if("a"===s&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?i:"a"===s?i.call(t):i?i.value:e.get(t)}function O(t,e,s,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(t,s):n?n.value=s:e.set(t,s),s}class w{constructor(t){this.globalMiddleware=[],this.frozens=[],this.yargs=t}addMiddleware(t,e,s=!0,i=!1){if(h(" [boolean] [boolean] [boolean]",[t,e,s],arguments.length),Array.isArray(t)){for(let i=0;i{const i=[...s[e]||[],e];return!t.option||!i.includes(t.option)})),t.option=e,this.addMiddleware(t,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){const t=this.frozens.pop();void 0!==t&&(this.globalMiddleware=t)}reset(){this.globalMiddleware=this.globalMiddleware.filter((t=>t.global))}}function C(t,e,s,i){return s.reduce(((t,s)=>{if(s.applyBeforeValidation!==i)return t;if(s.mutates){if(s.applied)return t;s.applied=!0}if(f(t))return t.then((t=>Promise.all([t,s(t,e)]))).then((([t,e])=>Object.assign(t,e)));{const i=s(t,e);return f(i)?i.then((e=>Object.assign(t,e))):Object.assign(t,i)}}),t)}function j(t,e,s=(t=>{throw t})){try{const s="function"==typeof t?t():t;return f(s)?s.then((t=>e(t))):e(s)}catch(t){return s(t)}}const _=/(^\*)|(^\$0)/;class M{constructor(t,e,s,i){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=i,this.usage=t,this.globalMiddleware=s,this.validation=e}addDirectory(t,e,s,i){"boolean"!=typeof(i=i||{}).recurse&&(i.recurse=!1),Array.isArray(i.extensions)||(i.extensions=["js"]);const n="function"==typeof i.visit?i.visit:t=>t;i.visit=(t,e,s)=>{const i=n(t,e,s);if(i){if(this.requireCache.has(e))return i;this.requireCache.add(e),this.addHandler(i)}return i},this.shim.requireDirectory({require:e,filename:s},t,i)}addHandler(t,e,s,i,n,r){let a=[];const h=function(t){return t?t.map((t=>(t.applyBeforeValidation=!1,t))):[]}(n);if(i=i||(()=>{}),Array.isArray(t))if(function(t){return t.every((t=>"string"==typeof t))}(t))[t,...a]=t;else for(const e of t)this.addHandler(e);else{if(function(t){return"object"==typeof t&&!Array.isArray(t)}(t)){let e=Array.isArray(t.command)||"string"==typeof t.command?t.command:this.moduleName(t);return t.aliases&&(e=[].concat(e).concat(t.aliases)),void this.addHandler(e,this.extractDesc(t),t.builder,t.handler,t.middlewares,t.deprecated)}if(k(s))return void this.addHandler([t].concat(a),e,s.builder,s.handler,s.middlewares,s.deprecated)}if("string"==typeof t){const n=o(t);a=a.map((t=>o(t).cmd));let l=!1;const c=[n.cmd].concat(a).filter((t=>!_.test(t)||(l=!0,!1)));0===c.length&&l&&c.push("$0"),l&&(n.cmd=c[0],a=c.slice(1),t=t.replace(_,n.cmd)),a.forEach((t=>{this.aliasMap[t]=n.cmd})),!1!==e&&this.usage.command(t,e,l,a,r),this.handlers[n.cmd]={original:t,description:e,handler:i,builder:s||{},middlewares:h,deprecated:r,demanded:n.demanded,optional:n.optional},l&&(this.defaultCommand=this.handlers[n.cmd])}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(t,e,s,i,n,r){const o=this.handlers[t]||this.handlers[this.aliasMap[t]]||this.defaultCommand,a=e.getInternalMethods().getContext(),h=a.commands.slice(),l=!t;t&&(a.commands.push(t),a.fullCommands.push(o.original));const c=this.applyBuilderUpdateUsageAndParse(l,o,e,s.aliases,h,i,n,r);return f(c)?c.then((t=>this.applyMiddlewareAndGetResult(l,o,t.innerArgv,a,n,t.aliases,e))):this.applyMiddlewareAndGetResult(l,o,c.innerArgv,a,n,c.aliases,e)}applyBuilderUpdateUsageAndParse(t,e,s,i,n,r,o,a){const h=e.builder;let l=s;if(x(h)){const c=h(s.getInternalMethods().reset(i),a);if(f(c))return c.then((i=>{var a;return l=(a=i)&&"function"==typeof a.getInternalMethods?i:s,this.parseAndUpdateUsage(t,e,l,n,r,o)}))}else(function(t){return"object"==typeof t})(h)&&(l=s.getInternalMethods().reset(i),Object.keys(e.builder).forEach((t=>{l.option(t,h[t])})));return this.parseAndUpdateUsage(t,e,l,n,r,o)}parseAndUpdateUsage(t,e,s,i,n,r){t&&s.getInternalMethods().getUsageInstance().unfreeze(!0),this.shouldUpdateUsage(s)&&s.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(i,e),e.description);const o=s.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,n,r);return f(o)?o.then((t=>({aliases:s.parsed.aliases,innerArgv:t}))):{aliases:s.parsed.aliases,innerArgv:o}}shouldUpdateUsage(t){return!t.getInternalMethods().getUsageInstance().getUsageDisabled()&&0===t.getInternalMethods().getUsageInstance().getUsage().length}usageFromParentCommandsCommandHandler(t,e){const s=_.test(e.original)?e.original.replace(_,"").trim():e.original,i=t.filter((t=>!_.test(t)));return i.push(s),`$0 ${i.join(" ")}`}handleValidationAndGetResult(t,e,s,i,n,r,o,a){if(!r.getInternalMethods().getHasOutput()){const e=r.getInternalMethods().runValidation(n,a,r.parsed.error,t);s=j(s,(t=>(e(t),t)))}if(e.handler&&!r.getInternalMethods().getHasOutput()){r.getInternalMethods().setHasOutput();const i=!!r.getOptions().configuration["populate--"];r.getInternalMethods().postProcess(s,i,!1,!1),s=j(s=C(s,r,o,!1),(t=>{const s=e.handler(t);return f(s)?s.then((()=>t)):t})),t||r.getInternalMethods().getUsageInstance().cacheHelpMessage(),f(s)&&!r.getInternalMethods().hasParseCallback()&&s.catch((t=>{try{r.getInternalMethods().getUsageInstance().fail(null,t)}catch(t){}}))}return t||(i.commands.pop(),i.fullCommands.pop()),s}applyMiddlewareAndGetResult(t,e,s,i,n,r,o){let a={};if(n)return s;o.getInternalMethods().getHasOutput()||(a=this.populatePositionals(e,s,i,o));const h=this.globalMiddleware.getMiddleware().slice(0).concat(e.middlewares),l=C(s,o,h,!0);return f(l)?l.then((s=>this.handleValidationAndGetResult(t,e,s,i,r,o,h,a))):this.handleValidationAndGetResult(t,e,l,i,r,o,h,a)}populatePositionals(t,e,s,i){e._=e._.slice(s.commands.length);const n=t.demanded.slice(0),r=t.optional.slice(0),o={};for(this.validation.positionalCount(n.length,e._.length);n.length;){const t=n.shift();this.populatePositional(t,e,o)}for(;r.length;){const t=r.shift();this.populatePositional(t,e,o)}return e._=s.commands.concat(e._.map((t=>""+t))),this.postProcessPositionals(e,o,this.cmdToParseOptions(t.original),i),o}populatePositional(t,e,s){const i=t.cmd[0];t.variadic?s[i]=e._.splice(0).map(String):e._.length&&(s[i]=[String(e._.shift())])}cmdToParseOptions(t){const e={array:[],default:{},alias:{},demand:{}},s=o(t);return s.demanded.forEach((t=>{const[s,...i]=t.cmd;t.variadic&&(e.array.push(s),e.default[s]=[]),e.alias[s]=i,e.demand[s]=!0})),s.optional.forEach((t=>{const[s,...i]=t.cmd;t.variadic&&(e.array.push(s),e.default[s]=[]),e.alias[s]=i})),e}postProcessPositionals(t,e,s,i){const n=Object.assign({},i.getOptions());n.default=Object.assign(s.default,n.default);for(const t of Object.keys(s.alias))n.alias[t]=(n.alias[t]||[]).concat(s.alias[t]);n.array=n.array.concat(s.array),n.config={};const r=[];if(Object.keys(e).forEach((t=>{e[t].map((e=>{n.configuration["unknown-options-as-args"]&&(n.key[t]=!0),r.push(`--${t}`),r.push(e)}))})),!r.length)return;const o=Object.assign({},n.configuration,{"populate--":!1}),a=this.shim.Parser.detailed(r,Object.assign({},n,{configuration:o}));if(a.error)i.getInternalMethods().getUsageInstance().fail(a.error.message,a.error);else{const s=Object.keys(e);Object.keys(e).forEach((t=>{s.push(...a.aliases[t])})),Object.keys(a.argv).forEach((n=>{s.includes(n)&&(e[n]||(e[n]=a.argv[n]),!this.isInConfigs(i,n)&&!this.isDefaulted(i,n)&&Object.prototype.hasOwnProperty.call(t,n)&&Object.prototype.hasOwnProperty.call(a.argv,n)&&(Array.isArray(t[n])||Array.isArray(a.argv[n]))?t[n]=[].concat(t[n],a.argv[n]):t[n]=a.argv[n])}))}}isDefaulted(t,e){const{default:s}=t.getOptions();return Object.prototype.hasOwnProperty.call(s,e)||Object.prototype.hasOwnProperty.call(s,this.shim.Parser.camelCase(e))}isInConfigs(t,e){const{configObjects:s}=t.getOptions();return s.some((t=>Object.prototype.hasOwnProperty.call(t,e)))||s.some((t=>Object.prototype.hasOwnProperty.call(t,this.shim.Parser.camelCase(e))))}runDefaultBuilderOn(t){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(t)){const e=_.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");t.getInternalMethods().getUsageInstance().usage(e,this.defaultCommand.description)}const e=this.defaultCommand.builder;if(x(e))return e(t,!0);k(e)||Object.keys(e).forEach((s=>{t.option(s,e[s])}))}moduleName(t){const e=function(t){if("undefined"==typeof require)return null;for(let e,s=0,i=Object.keys(require.cache);s{const s=e;s._handle&&s.isTTY&&"function"==typeof s._handle.setBlocking&&s._handle.setBlocking(t)}))}function A(t){return"boolean"==typeof t}function P(t,s){const i=s.y18n.__,n={},r=[];n.failFn=function(t){r.push(t)};let o=null,a=null,h=!0;n.showHelpOnFail=function(e=!0,s){const[i,r]="string"==typeof e?[!0,e]:[e,s];return t.getInternalMethods().isGlobalContext()&&(a=r),o=r,h=i,n};let l=!1;n.fail=function(s,i){const c=t.getInternalMethods().getLoggerInstance();if(!r.length){if(t.getExitProcess()&&E(!0),!l){l=!0,h&&(t.showHelp("error"),c.error()),(s||i)&&c.error(s||i);const e=o||a;e&&((s||i)&&c.error(""),c.error(e))}if(i=i||new e(s),t.getExitProcess())return t.exit(1);if(t.getInternalMethods().hasParseCallback())return t.exit(1,i);throw i}for(let t=r.length-1;t>=0;--t){const e=r[t];if(A(e)){if(i)throw i;if(s)throw Error(s)}else e(s,i,n)}};let c=[],f=!1;n.usage=(t,e)=>null===t?(f=!0,c=[],n):(f=!1,c.push([t,e||""]),n),n.getUsage=()=>c,n.getUsageDisabled=()=>f,n.getPositionalGroupName=()=>i("Positionals:");let d=[];n.example=(t,e)=>{d.push([t,e||""])};let u=[];n.command=function(t,e,s,i,n=!1){s&&(u=u.map((t=>(t[2]=!1,t)))),u.push([t,e||"",s,i,n])},n.getCommands=()=>u;let p={};n.describe=function(t,e){Array.isArray(t)?t.forEach((t=>{n.describe(t,e)})):"object"==typeof t?Object.keys(t).forEach((e=>{n.describe(e,t[e])})):p[t]=e},n.getDescriptions=()=>p;let m=[];n.epilog=t=>{m.push(t)};let y,b=!1;n.wrap=t=>{b=!0,y=t},n.getWrap=()=>s.getEnv("YARGS_DISABLE_WRAP")?null:(b||(y=function(){const t=80;return s.process.stdColumns?Math.min(t,s.process.stdColumns):t}(),b=!0),y);const v="__yargsString__:";function O(t,e,i){let n=0;return Array.isArray(t)||(t=Object.values(t).map((t=>[t]))),t.forEach((t=>{n=Math.max(s.stringWidth(i?`${i} ${I(t[0])}`:I(t[0]))+$(t[0]),n)})),e&&(n=Math.min(n,parseInt((.5*e).toString(),10))),n}let w;function C(e){return t.getOptions().hiddenOptions.indexOf(e)<0||t.parsed.argv[t.getOptions().showHiddenOpt]}function j(t,e){let s=`[${i("default:")} `;if(void 0===t&&!e)return null;if(e)s+=e;else switch(typeof t){case"string":s+=`"${t}"`;break;case"object":s+=JSON.stringify(t);break;default:s+=t}return`${s}]`}n.deferY18nLookup=t=>v+t,n.help=function(){if(w)return w;!function(){const e=t.getDemandedOptions(),s=t.getOptions();(Object.keys(s.alias)||[]).forEach((i=>{s.alias[i].forEach((r=>{p[r]&&n.describe(i,p[r]),r in e&&t.demandOption(i,e[r]),s.boolean.includes(r)&&t.boolean(i),s.count.includes(r)&&t.count(i),s.string.includes(r)&&t.string(i),s.normalize.includes(r)&&t.normalize(i),s.array.includes(r)&&t.array(i),s.number.includes(r)&&t.number(i)}))}))}();const e=t.customScriptName?t.$0:s.path.basename(t.$0),r=t.getDemandedOptions(),o=t.getDemandedCommands(),a=t.getDeprecatedOptions(),h=t.getGroups(),l=t.getOptions();let g=[];g=g.concat(Object.keys(p)),g=g.concat(Object.keys(r)),g=g.concat(Object.keys(o)),g=g.concat(Object.keys(l.default)),g=g.filter(C),g=Object.keys(g.reduce(((t,e)=>("_"!==e&&(t[e]=!0),t)),{}));const y=n.getWrap(),b=s.cliui({width:y,wrap:!!y});if(!f)if(c.length)c.forEach((t=>{b.div({text:`${t[0].replace(/\$0/g,e)}`}),t[1]&&b.div({text:`${t[1]}`,padding:[1,0,0,0]})})),b.div();else if(u.length){let t=null;t=o._?`${e} <${i("command")}>\n`:`${e} [${i("command")}]\n`,b.div(`${t}`)}if(u.length>1||1===u.length&&!u[0][2]){b.div(i("Commands:"));const s=t.getInternalMethods().getContext(),n=s.commands.length?`${s.commands.join(" ")} `:"";!0===t.getInternalMethods().getParserConfiguration()["sort-commands"]&&(u=u.sort(((t,e)=>t[0].localeCompare(e[0]))));const r=e?`${e} `:"";u.forEach((t=>{const s=`${r}${n}${t[0].replace(/^\$0 ?/,"")}`;b.span({text:s,padding:[0,2,0,2],width:O(u,y,`${e}${n}`)+4},{text:t[1]});const o=[];t[2]&&o.push(`[${i("default")}]`),t[3]&&t[3].length&&o.push(`[${i("aliases:")} ${t[3].join(", ")}]`),t[4]&&("string"==typeof t[4]?o.push(`[${i("deprecated: %s",t[4])}]`):o.push(`[${i("deprecated")}]`)),o.length?b.div({text:o.join(" "),padding:[0,0,0,2],align:"right"}):b.div()})),b.div()}const _=(Object.keys(l.alias)||[]).concat(Object.keys(t.parsed.newAliases)||[]);g=g.filter((e=>!t.parsed.newAliases[e]&&_.every((t=>-1===(l.alias[t]||[]).indexOf(e)))));const M=i("Options:");h[M]||(h[M]=[]),function(t,e,s,i){let n=[],r=null;Object.keys(s).forEach((t=>{n=n.concat(s[t])})),t.forEach((t=>{r=[t].concat(e[t]),r.some((t=>-1!==n.indexOf(t)))||s[i].push(t)}))}(g,l.alias,h,M);const k=t=>/^--/.test(I(t)),x=Object.keys(h).filter((t=>h[t].length>0)).map((t=>({groupName:t,normalizedKeys:h[t].filter(C).map((t=>{if(_.includes(t))return t;for(let e,s=0;void 0!==(e=_[s]);s++)if((l.alias[e]||[]).includes(t))return e;return t}))}))).filter((({normalizedKeys:t})=>t.length>0)).map((({groupName:t,normalizedKeys:e})=>{const s=e.reduce(((e,s)=>(e[s]=[s].concat(l.alias[s]||[]).map((e=>t===n.getPositionalGroupName()?e:(/^[0-9]$/.test(e)?l.boolean.includes(s)?"-":"--":e.length>1?"--":"-")+e)).sort(((t,e)=>k(t)===k(e)?0:k(t)?1:-1)).join(", "),e)),{});return{groupName:t,normalizedKeys:e,switches:s}}));if(x.filter((({groupName:t})=>t!==n.getPositionalGroupName())).some((({normalizedKeys:t,switches:e})=>!t.every((t=>k(e[t])))))&&x.filter((({groupName:t})=>t!==n.getPositionalGroupName())).forEach((({normalizedKeys:t,switches:e})=>{t.forEach((t=>{var s,i;k(e[t])&&(e[t]=(s=e[t],i="-x, ".length,S(s)?{text:s.text,indentation:s.indentation+i}:{text:s,indentation:i}))}))})),x.forEach((({groupName:t,normalizedKeys:e,switches:s})=>{b.div(t),e.forEach((t=>{const e=s[t];let o=p[t]||"",h=null;o.includes(v)&&(o=i(o.substring(v.length))),l.boolean.includes(t)&&(h=`[${i("boolean")}]`),l.count.includes(t)&&(h=`[${i("count")}]`),l.string.includes(t)&&(h=`[${i("string")}]`),l.normalize.includes(t)&&(h=`[${i("string")}]`),l.array.includes(t)&&(h=`[${i("array")}]`),l.number.includes(t)&&(h=`[${i("number")}]`);const c=[t in a?(f=a[t],"string"==typeof f?`[${i("deprecated: %s",f)}]`:`[${i("deprecated")}]`):null,h,t in r?`[${i("required")}]`:null,l.choices&&l.choices[t]?`[${i("choices:")} ${n.stringifiedValues(l.choices[t])}]`:null,j(l.default[t],l.defaultDescription[t])].filter(Boolean).join(" ");var f;b.span({text:I(e),padding:[0,2,0,2+$(e)],width:O(s,y)+4},o),c?b.div({text:c,padding:[0,0,0,2],align:"right"}):b.div()})),b.div()})),d.length&&(b.div(i("Examples:")),d.forEach((t=>{t[0]=t[0].replace(/\$0/g,e)})),d.forEach((t=>{""===t[1]?b.div({text:t[0],padding:[0,2,0,2]}):b.div({text:t[0],padding:[0,2,0,2],width:O(d,y)+4},{text:t[1]})})),b.div()),m.length>0){const t=m.map((t=>t.replace(/\$0/g,e))).join("\n");b.div(`${t}\n`)}return b.toString().replace(/\s*$/,"")},n.cacheHelpMessage=function(){w=this.help()},n.clearCachedHelpMessage=function(){w=void 0},n.hasCachedHelpMessage=function(){return!!w},n.showHelp=e=>{const s=t.getInternalMethods().getLoggerInstance();e||(e="error");("function"==typeof e?e:s[e])(n.help())},n.functionDescription=t=>["(",t.name?s.Parser.decamelize(t.name,"-"):i("generated-value"),")"].join(""),n.stringifiedValues=function(t,e){let s="";const i=e||", ",n=[].concat(t);return t&&n.length?(n.forEach((t=>{s.length&&(s+=i),s+=JSON.stringify(t)})),s):s};let _=null;n.version=t=>{_=t},n.showVersion=e=>{const s=t.getInternalMethods().getLoggerInstance();e||(e="error");("function"==typeof e?e:s[e])(_)},n.reset=function(t){return o=null,l=!1,c=[],f=!1,m=[],d=[],u=[],p=g(p,(e=>!t[e])),n};const M=[];return n.freeze=function(){M.push({failMessage:o,failureOutput:l,usages:c,usageDisabled:f,epilogs:m,examples:d,commands:u,descriptions:p})},n.unfreeze=function(t=!1){const e=M.pop();e&&(t?(p={...e.descriptions,...p},u=[...e.commands,...u],c=[...e.usages,...c],d=[...e.examples,...d],m=[...e.epilogs,...m]):({failMessage:o,failureOutput:l,usages:c,usageDisabled:f,epilogs:m,examples:d,commands:u,descriptions:p}=e))},n}function S(t){return"object"==typeof t}function $(t){return S(t)?t.indentation:0}function I(t){return S(t)?t.text:t}class D{constructor(t,e,s,i){var n,r,o;this.yargs=t,this.usage=e,this.command=s,this.shim=i,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=null!==(o=(null===(n=this.shim.getEnv("SHELL"))||void 0===n?void 0:n.includes("zsh"))||(null===(r=this.shim.getEnv("ZSH_NAME"))||void 0===r?void 0:r.includes("zsh")))&&void 0!==o&&o}defaultCompletion(t,e,s,i){const n=this.command.getCommandHandlers();for(let e=0,s=t.length;e{const i=o(s[0]).cmd;if(-1===e.indexOf(i))if(this.zshShell){const e=s[1]||"";t.push(i.replace(/:/g,"\\:")+":"+e)}else t.push(i)}))}optionCompletions(t,e,s,i){if((i.match(/^-/)||""===i&&0===t.length)&&!this.previousArgHasChoices(e)){const s=this.yargs.getOptions(),n=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(s.key).forEach((r=>{const o=!!s.configuration["boolean-negation"]&&s.boolean.includes(r);n.includes(r)||s.hiddenOptions.includes(r)||this.argsContainKey(e,r,o)||(this.completeOptionKey(r,t,i),o&&s.default[r]&&this.completeOptionKey(`no-${r}`,t,i))}))}}choicesFromOptionsCompletions(t,e,s,i){if(this.previousArgHasChoices(e)){const s=this.getPreviousArgChoices(e);s&&s.length>0&&t.push(...s.map((t=>t.replace(/:/g,"\\:"))))}}choicesFromPositionalsCompletions(t,e,s,i){if(""===i&&t.length>0&&this.previousArgHasChoices(e))return;const n=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],r=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),o=n[s._.length-r-1];if(!o)return;const a=this.yargs.getOptions().choices[o]||[];for(const e of a)e.startsWith(i)&&t.push(e.replace(/:/g,"\\:"))}getPreviousArgChoices(t){if(t.length<1)return;let e=t[t.length-1],s="";if(!e.startsWith("-")&&t.length>1&&(s=e,e=t[t.length-2]),!e.startsWith("-"))return;const i=e.replace(/^-+/,""),n=this.yargs.getOptions(),r=[i,...this.yargs.getAliases()[i]||[]];let o;for(const t of r)if(Object.prototype.hasOwnProperty.call(n.key,t)&&Array.isArray(n.choices[t])){o=n.choices[t];break}return o?o.filter((t=>!s||t.startsWith(s))):void 0}previousArgHasChoices(t){const e=this.getPreviousArgChoices(t);return void 0!==e&&e.length>0}argsContainKey(t,e,s){const i=e=>-1!==t.indexOf((/^[^0-9]$/.test(e)?"-":"--")+e);if(i(e))return!0;if(s&&i(`no-${e}`))return!0;if(this.aliases)for(const t of this.aliases[e])if(i(t))return!0;return!1}completeOptionKey(t,e,s){const i=this.usage.getDescriptions(),n=!/^--/.test(s)&&(t=>/^[^0-9]$/.test(t))(t)?"-":"--";if(this.zshShell){const s=i[t]||"";e.push(n+`${t.replace(/:/g,"\\:")}:${s.replace("__yargsString__:","")}`)}else e.push(n+t)}customCompletion(t,e,s,i){if(d(this.customCompletionFunction,null,this.shim),this.customCompletionFunction.length<3){const t=this.customCompletionFunction(s,e);return f(t)?t.then((t=>{this.shim.process.nextTick((()=>{i(null,t)}))})).catch((t=>{this.shim.process.nextTick((()=>{i(t,void 0)}))})):i(null,t)}return function(t){return t.length>3}(this.customCompletionFunction)?this.customCompletionFunction(s,e,((n=i)=>this.defaultCompletion(t,e,s,n)),(t=>{i(null,t)})):this.customCompletionFunction(s,e,(t=>{i(null,t)}))}getCompletion(t,e){const s=t.length?t[t.length-1]:"",i=this.yargs.parse(t,!0),n=this.customCompletionFunction?i=>this.customCompletion(t,i,s,e):i=>this.defaultCompletion(t,i,s,e);return f(i)?i.then(n):n(i)}generateCompletionScript(t,e){let s=this.zshShell?'#compdef {{app_name}}\n###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc\n# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n local reply\n local si=$IFS\n IFS=$\'\n\' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "${words[@]}"))\n IFS=$si\n _describe \'values\' reply\n}\ncompdef _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n':'###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc\n# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n local cur_word args type_list\n\n cur_word="${COMP_WORDS[COMP_CWORD]}"\n args=("${COMP_WORDS[@]}")\n\n # ask yargs to generate completions.\n type_list=$({{app_path}} --get-yargs-completions "${args[@]}")\n\n COMPREPLY=( $(compgen -W "${type_list}" -- ${cur_word}) )\n\n # if no match was found, fall back to filename completion\n if [ ${#COMPREPLY[@]} -eq 0 ]; then\n COMPREPLY=()\n fi\n\n return 0\n}\ncomplete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n';const i=this.shim.path.basename(t);return t.match(/\.js$/)&&(t=`./${t}`),s=s.replace(/{{app_name}}/g,i),s=s.replace(/{{completion_command}}/g,e),s.replace(/{{app_path}}/g,t)}registerFunction(t){this.customCompletionFunction=t}setParsed(t){this.aliases=t.aliases}}function N(t,e){if(0===t.length)return e.length;if(0===e.length)return t.length;const s=[];let i,n;for(i=0;i<=e.length;i++)s[i]=[i];for(n=0;n<=t.length;n++)s[0][n]=n;for(i=1;i<=e.length;i++)for(n=1;n<=t.length;n++)e.charAt(i-1)===t.charAt(n-1)?s[i][n]=s[i-1][n-1]:i>1&&n>1&&e.charAt(i-2)===t.charAt(n-1)&&e.charAt(i-1)===t.charAt(n-2)?s[i][n]=s[i-2][n-2]+1:s[i][n]=Math.min(s[i-1][n-1]+1,Math.min(s[i][n-1]+1,s[i-1][n]+1));return s[e.length][t.length]}const H=["$0","--","_"];var W,z,q,F,U,L,V,G,R,T,B,K,Y,J,Z,X,Q,tt,et,st,it,nt,rt,ot,at,ht,lt,ct,ft,dt,ut,pt,gt,mt;const yt=Symbol("copyDoubleDash"),bt=Symbol("copyDoubleDash"),vt=Symbol("deleteFromParserHintObject"),Ot=Symbol("emitWarning"),wt=Symbol("freeze"),Ct=Symbol("getDollarZero"),jt=Symbol("getParserConfiguration"),_t=Symbol("guessLocale"),Mt=Symbol("guessVersion"),kt=Symbol("parsePositionalNumbers"),xt=Symbol("pkgUp"),Et=Symbol("populateParserHintArray"),At=Symbol("populateParserHintSingleValueDictionary"),Pt=Symbol("populateParserHintArrayDictionary"),St=Symbol("populateParserHintDictionary"),$t=Symbol("sanitizeKey"),It=Symbol("setKey"),Dt=Symbol("unfreeze"),Nt=Symbol("validateAsync"),Ht=Symbol("getCommandInstance"),Wt=Symbol("getContext"),zt=Symbol("getHasOutput"),qt=Symbol("getLoggerInstance"),Ft=Symbol("getParseContext"),Ut=Symbol("getUsageInstance"),Lt=Symbol("getValidationInstance"),Vt=Symbol("hasParseCallback"),Gt=Symbol("isGlobalContext"),Rt=Symbol("postProcess"),Tt=Symbol("rebase"),Bt=Symbol("reset"),Kt=Symbol("runYargsParserAndExecuteCommands"),Yt=Symbol("runValidation"),Jt=Symbol("setHasOutput"),Zt=Symbol("kTrackManuallySetKeys");class Xt{constructor(t=[],e,s,i){this.customScriptName=!1,this.parsed=!1,W.set(this,void 0),z.set(this,void 0),q.set(this,{commands:[],fullCommands:[]}),F.set(this,null),U.set(this,null),L.set(this,"show-hidden"),V.set(this,null),G.set(this,!0),R.set(this,{}),T.set(this,!0),B.set(this,[]),K.set(this,void 0),Y.set(this,{}),J.set(this,!1),Z.set(this,null),X.set(this,!0),Q.set(this,void 0),tt.set(this,""),et.set(this,void 0),st.set(this,void 0),it.set(this,{}),nt.set(this,null),rt.set(this,null),ot.set(this,{}),at.set(this,{}),ht.set(this,void 0),lt.set(this,!1),ct.set(this,void 0),ft.set(this,!1),dt.set(this,!1),ut.set(this,!1),pt.set(this,void 0),gt.set(this,null),mt.set(this,void 0),O(this,ct,i,"f"),O(this,ht,t,"f"),O(this,z,e,"f"),O(this,st,s,"f"),O(this,K,new w(this),"f"),this.$0=this[Ct](),this[Bt](),O(this,W,v(this,W,"f"),"f"),O(this,pt,v(this,pt,"f"),"f"),O(this,mt,v(this,mt,"f"),"f"),O(this,et,v(this,et,"f"),"f"),v(this,et,"f").showHiddenOpt=v(this,L,"f"),O(this,Q,this[bt](),"f")}addHelpOpt(t,e){return h("[string|boolean] [string]",[t,e],arguments.length),v(this,Z,"f")&&(this[vt](v(this,Z,"f")),O(this,Z,null,"f")),!1===t&&void 0===e||(O(this,Z,"string"==typeof t?t:"help","f"),this.boolean(v(this,Z,"f")),this.describe(v(this,Z,"f"),e||v(this,pt,"f").deferY18nLookup("Show help"))),this}help(t,e){return this.addHelpOpt(t,e)}addShowHiddenOpt(t,e){if(h("[string|boolean] [string]",[t,e],arguments.length),!1===t&&void 0===e)return this;const s="string"==typeof t?t:v(this,L,"f");return this.boolean(s),this.describe(s,e||v(this,pt,"f").deferY18nLookup("Show hidden options")),v(this,et,"f").showHiddenOpt=s,this}showHidden(t,e){return this.addShowHiddenOpt(t,e)}alias(t,e){return h(" [string|array]",[t,e],arguments.length),this[Pt](this.alias.bind(this),"alias",t,e),this}array(t){return h("",[t],arguments.length),this[Et]("array",t),this[Zt](t),this}boolean(t){return h("",[t],arguments.length),this[Et]("boolean",t),this[Zt](t),this}check(t,e){return h(" [boolean]",[t,e],arguments.length),this.middleware(((e,s)=>j((()=>t(e,s.getOptions())),(s=>(s?("string"==typeof s||s instanceof Error)&&v(this,pt,"f").fail(s.toString(),s):v(this,pt,"f").fail(v(this,ct,"f").y18n.__("Argument check failed: %s",t.toString())),e)),(t=>(v(this,pt,"f").fail(t.message?t.message:t.toString(),t),e)))),!1,e),this}choices(t,e){return h(" [string|array]",[t,e],arguments.length),this[Pt](this.choices.bind(this),"choices",t,e),this}coerce(t,s){if(h(" [function]",[t,s],arguments.length),Array.isArray(t)){if(!s)throw new e("coerce callback must be provided");for(const e of t)this.coerce(e,s);return this}if("object"==typeof t){for(const e of Object.keys(t))this.coerce(e,t[e]);return this}if(!s)throw new e("coerce callback must be provided");return v(this,et,"f").key[t]=!0,v(this,K,"f").addCoerceMiddleware(((i,n)=>{let r;return Object.prototype.hasOwnProperty.call(i,t)?j((()=>(r=n.getAliases(),s(i[t]))),(e=>{i[t]=e;const s=n.getInternalMethods().getParserConfiguration()["strip-aliased"];if(r[t]&&!0!==s)for(const s of r[t])i[s]=e;return i}),(t=>{throw new e(t.message)})):i}),t),this}conflicts(t,e){return h(" [string|array]",[t,e],arguments.length),v(this,mt,"f").conflicts(t,e),this}config(t="config",e,s){return h("[object|string] [string|function] [function]",[t,e,s],arguments.length),"object"!=typeof t||Array.isArray(t)?("function"==typeof e&&(s=e,e=void 0),this.describe(t,e||v(this,pt,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(t)?t:[t]).forEach((t=>{v(this,et,"f").config[t]=s||!0})),this):(t=n(t,v(this,z,"f"),this[jt]()["deep-merge-config"]||!1,v(this,ct,"f")),v(this,et,"f").configObjects=(v(this,et,"f").configObjects||[]).concat(t),this)}completion(t,e,s){return h("[string] [string|boolean|function] [function]",[t,e,s],arguments.length),"function"==typeof e&&(s=e,e=void 0),O(this,U,t||v(this,U,"f")||"completion","f"),e||!1===e||(e="generate completion script"),this.command(v(this,U,"f"),e),s&&v(this,F,"f").registerFunction(s),this}command(t,e,s,i,n,r){return h(" [string|boolean] [function|object] [function] [array] [boolean|string]",[t,e,s,i,n,r],arguments.length),v(this,W,"f").addHandler(t,e,s,i,n,r),this}commands(t,e,s,i,n,r){return this.command(t,e,s,i,n,r)}commandDir(t,e){h(" [object]",[t,e],arguments.length);const s=v(this,st,"f")||v(this,ct,"f").require;return v(this,W,"f").addDirectory(t,s,v(this,ct,"f").getCallerFile(),e),this}count(t){return h("",[t],arguments.length),this[Et]("count",t),this[Zt](t),this}default(t,e,s){return h(" [*] [string]",[t,e,s],arguments.length),s&&(u(t,v(this,ct,"f")),v(this,et,"f").defaultDescription[t]=s),"function"==typeof e&&(u(t,v(this,ct,"f")),v(this,et,"f").defaultDescription[t]||(v(this,et,"f").defaultDescription[t]=v(this,pt,"f").functionDescription(e)),e=e.call()),this[At](this.default.bind(this),"default",t,e),this}defaults(t,e,s){return this.default(t,e,s)}demandCommand(t=1,e,s,i){return h("[number] [number|string] [string|null|undefined] [string|null|undefined]",[t,e,s,i],arguments.length),"number"!=typeof e&&(s=e,e=1/0),this.global("_",!1),v(this,et,"f").demandedCommands._={min:t,max:e,minMsg:s,maxMsg:i},this}demand(t,e,s){return Array.isArray(e)?(e.forEach((t=>{d(s,!0,v(this,ct,"f")),this.demandOption(t,s)})),e=1/0):"number"!=typeof e&&(s=e,e=1/0),"number"==typeof t?(d(s,!0,v(this,ct,"f")),this.demandCommand(t,e,s,s)):Array.isArray(t)?t.forEach((t=>{d(s,!0,v(this,ct,"f")),this.demandOption(t,s)})):"string"==typeof s?this.demandOption(t,s):!0!==s&&void 0!==s||this.demandOption(t),this}demandOption(t,e){return h(" [string]",[t,e],arguments.length),this[At](this.demandOption.bind(this),"demandedOptions",t,e),this}deprecateOption(t,e){return h(" [string|boolean]",[t,e],arguments.length),v(this,et,"f").deprecatedOptions[t]=e,this}describe(t,e){return h(" [string]",[t,e],arguments.length),this[It](t,!0),v(this,pt,"f").describe(t,e),this}detectLocale(t){return h("",[t],arguments.length),O(this,G,t,"f"),this}env(t){return h("[string|boolean]",[t],arguments.length),!1===t?delete v(this,et,"f").envPrefix:v(this,et,"f").envPrefix=t||"",this}epilogue(t){return h("",[t],arguments.length),v(this,pt,"f").epilog(t),this}epilog(t){return this.epilogue(t)}example(t,e){return h(" [string]",[t,e],arguments.length),Array.isArray(t)?t.forEach((t=>this.example(...t))):v(this,pt,"f").example(t,e),this}exit(t,e){O(this,J,!0,"f"),O(this,V,e,"f"),v(this,T,"f")&&v(this,ct,"f").process.exit(t)}exitProcess(t=!0){return h("[boolean]",[t],arguments.length),O(this,T,t,"f"),this}fail(t){if(h("",[t],arguments.length),"boolean"==typeof t&&!1!==t)throw new e("Invalid first argument. Expected function or boolean 'false'");return v(this,pt,"f").failFn(t),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(t,e){return h(" [function]",[t,e],arguments.length),e?v(this,F,"f").getCompletion(t,e):new Promise(((e,s)=>{v(this,F,"f").getCompletion(t,((t,i)=>{t?s(t):e(i)}))}))}getDemandedOptions(){return h([],0),v(this,et,"f").demandedOptions}getDemandedCommands(){return h([],0),v(this,et,"f").demandedCommands}getDeprecatedOptions(){return h([],0),v(this,et,"f").deprecatedOptions}getDetectLocale(){return v(this,G,"f")}getExitProcess(){return v(this,T,"f")}getGroups(){return Object.assign({},v(this,Y,"f"),v(this,at,"f"))}getHelp(){if(O(this,J,!0,"f"),!v(this,pt,"f").hasCachedHelpMessage()){if(!this.parsed){const t=this[Kt](v(this,ht,"f"),void 0,void 0,0,!0);if(f(t))return t.then((()=>v(this,pt,"f").help()))}const t=v(this,W,"f").runDefaultBuilderOn(this);if(f(t))return t.then((()=>v(this,pt,"f").help()))}return Promise.resolve(v(this,pt,"f").help())}getOptions(){return v(this,et,"f")}getStrict(){return v(this,ft,"f")}getStrictCommands(){return v(this,dt,"f")}getStrictOptions(){return v(this,ut,"f")}global(t,e){return h(" [boolean]",[t,e],arguments.length),t=[].concat(t),!1!==e?v(this,et,"f").local=v(this,et,"f").local.filter((e=>-1===t.indexOf(e))):t.forEach((t=>{v(this,et,"f").local.includes(t)||v(this,et,"f").local.push(t)})),this}group(t,e){h(" ",[t,e],arguments.length);const s=v(this,at,"f")[e]||v(this,Y,"f")[e];v(this,at,"f")[e]&&delete v(this,at,"f")[e];const i={};return v(this,Y,"f")[e]=(s||[]).concat(t).filter((t=>!i[t]&&(i[t]=!0))),this}hide(t){return h("",[t],arguments.length),v(this,et,"f").hiddenOptions.push(t),this}implies(t,e){return h(" [number|string|array]",[t,e],arguments.length),v(this,mt,"f").implies(t,e),this}locale(t){return h("[string]",[t],arguments.length),void 0===t?(this[_t](),v(this,ct,"f").y18n.getLocale()):(O(this,G,!1,"f"),v(this,ct,"f").y18n.setLocale(t),this)}middleware(t,e,s){return v(this,K,"f").addMiddleware(t,!!e,s)}nargs(t,e){return h(" [number]",[t,e],arguments.length),this[At](this.nargs.bind(this),"narg",t,e),this}normalize(t){return h("",[t],arguments.length),this[Et]("normalize",t),this}number(t){return h("",[t],arguments.length),this[Et]("number",t),this[Zt](t),this}option(t,e){if(h(" [object]",[t,e],arguments.length),"object"==typeof t)Object.keys(t).forEach((e=>{this.options(e,t[e])}));else{"object"!=typeof e&&(e={}),this[Zt](t),!v(this,gt,"f")||"version"!==t&&"version"!==(null==e?void 0:e.alias)||this[Ot](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join("\n"),void 0,"versionWarning"),v(this,et,"f").key[t]=!0,e.alias&&this.alias(t,e.alias);const s=e.deprecate||e.deprecated;s&&this.deprecateOption(t,s);const i=e.demand||e.required||e.require;i&&this.demand(t,i),e.demandOption&&this.demandOption(t,"string"==typeof e.demandOption?e.demandOption:void 0),e.conflicts&&this.conflicts(t,e.conflicts),"default"in e&&this.default(t,e.default),void 0!==e.implies&&this.implies(t,e.implies),void 0!==e.nargs&&this.nargs(t,e.nargs),e.config&&this.config(t,e.configParser),e.normalize&&this.normalize(t),e.choices&&this.choices(t,e.choices),e.coerce&&this.coerce(t,e.coerce),e.group&&this.group(t,e.group),(e.boolean||"boolean"===e.type)&&(this.boolean(t),e.alias&&this.boolean(e.alias)),(e.array||"array"===e.type)&&(this.array(t),e.alias&&this.array(e.alias)),(e.number||"number"===e.type)&&(this.number(t),e.alias&&this.number(e.alias)),(e.string||"string"===e.type)&&(this.string(t),e.alias&&this.string(e.alias)),(e.count||"count"===e.type)&&this.count(t),"boolean"==typeof e.global&&this.global(t,e.global),e.defaultDescription&&(v(this,et,"f").defaultDescription[t]=e.defaultDescription),e.skipValidation&&this.skipValidation(t);const n=e.describe||e.description||e.desc,r=v(this,pt,"f").getDescriptions();Object.prototype.hasOwnProperty.call(r,t)&&"string"!=typeof n||this.describe(t,n),e.hidden&&this.hide(t),e.requiresArg&&this.requiresArg(t)}return this}options(t,e){return this.option(t,e)}parse(t,e,s){h("[string|array] [function|boolean|object] [function]",[t,e,s],arguments.length),this[wt](),void 0===t&&(t=v(this,ht,"f")),"object"==typeof e&&(O(this,rt,e,"f"),e=s),"function"==typeof e&&(O(this,nt,e,"f"),e=!1),e||O(this,ht,t,"f"),v(this,nt,"f")&&O(this,T,!1,"f");const i=this[Kt](t,!!e),n=this.parsed;return v(this,F,"f").setParsed(this.parsed),f(i)?i.then((t=>(v(this,nt,"f")&&v(this,nt,"f").call(this,v(this,V,"f"),t,v(this,tt,"f")),t))).catch((t=>{throw v(this,nt,"f")&&v(this,nt,"f")(t,this.parsed.argv,v(this,tt,"f")),t})).finally((()=>{this[Dt](),this.parsed=n})):(v(this,nt,"f")&&v(this,nt,"f").call(this,v(this,V,"f"),i,v(this,tt,"f")),this[Dt](),this.parsed=n,i)}parseAsync(t,e,s){const i=this.parse(t,e,s);return f(i)?i:Promise.resolve(i)}parseSync(t,s,i){const n=this.parse(t,s,i);if(f(n))throw new e(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return n}parserConfiguration(t){return h("",[t],arguments.length),O(this,it,t,"f"),this}pkgConf(t,e){h(" [string]",[t,e],arguments.length);let s=null;const i=this[xt](e||v(this,z,"f"));return i[t]&&"object"==typeof i[t]&&(s=n(i[t],e||v(this,z,"f"),this[jt]()["deep-merge-config"]||!1,v(this,ct,"f")),v(this,et,"f").configObjects=(v(this,et,"f").configObjects||[]).concat(s)),this}positional(t,e){h(" ",[t,e],arguments.length);const s=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];e=g(e,((t,e)=>!("type"===t&&!["string","number","boolean"].includes(e))&&s.includes(t)));const i=v(this,q,"f").fullCommands[v(this,q,"f").fullCommands.length-1],n=i?v(this,W,"f").cmdToParseOptions(i):{array:[],alias:{},default:{},demand:{}};return p(n).forEach((s=>{const i=n[s];Array.isArray(i)?-1!==i.indexOf(t)&&(e[s]=!0):i[t]&&!(s in e)&&(e[s]=i[t])})),this.group(t,v(this,pt,"f").getPositionalGroupName()),this.option(t,e)}recommendCommands(t=!0){return h("[boolean]",[t],arguments.length),O(this,lt,t,"f"),this}required(t,e,s){return this.demand(t,e,s)}require(t,e,s){return this.demand(t,e,s)}requiresArg(t){return h(" [number]",[t],arguments.length),"string"==typeof t&&v(this,et,"f").narg[t]||this[At](this.requiresArg.bind(this),"narg",t,NaN),this}showCompletionScript(t,e){return h("[string] [string]",[t,e],arguments.length),t=t||this.$0,v(this,Q,"f").log(v(this,F,"f").generateCompletionScript(t,e||v(this,U,"f")||"completion")),this}showHelp(t){if(h("[string|function]",[t],arguments.length),O(this,J,!0,"f"),!v(this,pt,"f").hasCachedHelpMessage()){if(!this.parsed){const e=this[Kt](v(this,ht,"f"),void 0,void 0,0,!0);if(f(e))return e.then((()=>{v(this,pt,"f").showHelp(t)})),this}const e=v(this,W,"f").runDefaultBuilderOn(this);if(f(e))return e.then((()=>{v(this,pt,"f").showHelp(t)})),this}return v(this,pt,"f").showHelp(t),this}scriptName(t){return this.customScriptName=!0,this.$0=t,this}showHelpOnFail(t,e){return h("[boolean|string] [string]",[t,e],arguments.length),v(this,pt,"f").showHelpOnFail(t,e),this}showVersion(t){return h("[string|function]",[t],arguments.length),v(this,pt,"f").showVersion(t),this}skipValidation(t){return h("",[t],arguments.length),this[Et]("skipValidation",t),this}strict(t){return h("[boolean]",[t],arguments.length),O(this,ft,!1!==t,"f"),this}strictCommands(t){return h("[boolean]",[t],arguments.length),O(this,dt,!1!==t,"f"),this}strictOptions(t){return h("[boolean]",[t],arguments.length),O(this,ut,!1!==t,"f"),this}string(t){return h("",[t],arguments.length),this[Et]("string",t),this[Zt](t),this}terminalWidth(){return h([],0),v(this,ct,"f").process.stdColumns}updateLocale(t){return this.updateStrings(t)}updateStrings(t){return h("",[t],arguments.length),O(this,G,!1,"f"),v(this,ct,"f").y18n.updateLocale(t),this}usage(t,s,i,n){if(h(" [string|boolean] [function|object] [function]",[t,s,i,n],arguments.length),void 0!==s){if(d(t,null,v(this,ct,"f")),(t||"").match(/^\$0( |$)/))return this.command(t,s,i,n);throw new e(".usage() description must start with $0 if being used as alias for .command()")}return v(this,pt,"f").usage(t),this}version(t,e,s){const i="version";if(h("[boolean|string] [string] [string]",[t,e,s],arguments.length),v(this,gt,"f")&&(this[vt](v(this,gt,"f")),v(this,pt,"f").version(void 0),O(this,gt,null,"f")),0===arguments.length)s=this[Mt](),t=i;else if(1===arguments.length){if(!1===t)return this;s=t,t=i}else 2===arguments.length&&(s=e,e=void 0);return O(this,gt,"string"==typeof t?t:i,"f"),e=e||v(this,pt,"f").deferY18nLookup("Show version number"),v(this,pt,"f").version(s||void 0),this.boolean(v(this,gt,"f")),this.describe(v(this,gt,"f"),e),this}wrap(t){return h("",[t],arguments.length),v(this,pt,"f").wrap(t),this}[(W=new WeakMap,z=new WeakMap,q=new WeakMap,F=new WeakMap,U=new WeakMap,L=new WeakMap,V=new WeakMap,G=new WeakMap,R=new WeakMap,T=new WeakMap,B=new WeakMap,K=new WeakMap,Y=new WeakMap,J=new WeakMap,Z=new WeakMap,X=new WeakMap,Q=new WeakMap,tt=new WeakMap,et=new WeakMap,st=new WeakMap,it=new WeakMap,nt=new WeakMap,rt=new WeakMap,ot=new WeakMap,at=new WeakMap,ht=new WeakMap,lt=new WeakMap,ct=new WeakMap,ft=new WeakMap,dt=new WeakMap,ut=new WeakMap,pt=new WeakMap,gt=new WeakMap,mt=new WeakMap,yt)](t){if(!t._||!t["--"])return t;t._.push.apply(t._,t["--"]);try{delete t["--"]}catch(t){}return t}[bt](){return{log:(...t)=>{this[Vt]()||console.log(...t),O(this,J,!0,"f"),v(this,tt,"f").length&&O(this,tt,v(this,tt,"f")+"\n","f"),O(this,tt,v(this,tt,"f")+t.join(" "),"f")},error:(...t)=>{this[Vt]()||console.error(...t),O(this,J,!0,"f"),v(this,tt,"f").length&&O(this,tt,v(this,tt,"f")+"\n","f"),O(this,tt,v(this,tt,"f")+t.join(" "),"f")}}}[vt](t){p(v(this,et,"f")).forEach((e=>{if("configObjects"===e)return;const s=v(this,et,"f")[e];Array.isArray(s)?s.includes(t)&&s.splice(s.indexOf(t),1):"object"==typeof s&&delete s[t]})),delete v(this,pt,"f").getDescriptions()[t]}[Ot](t,e,s){v(this,R,"f")[s]||(v(this,ct,"f").process.emitWarning(t,e),v(this,R,"f")[s]=!0)}[wt](){v(this,B,"f").push({options:v(this,et,"f"),configObjects:v(this,et,"f").configObjects.slice(0),exitProcess:v(this,T,"f"),groups:v(this,Y,"f"),strict:v(this,ft,"f"),strictCommands:v(this,dt,"f"),strictOptions:v(this,ut,"f"),completionCommand:v(this,U,"f"),output:v(this,tt,"f"),exitError:v(this,V,"f"),hasOutput:v(this,J,"f"),parsed:this.parsed,parseFn:v(this,nt,"f"),parseContext:v(this,rt,"f")}),v(this,pt,"f").freeze(),v(this,mt,"f").freeze(),v(this,W,"f").freeze(),v(this,K,"f").freeze()}[Ct](){let t,e="";return t=/\b(node|iojs|electron)(\.exe)?$/.test(v(this,ct,"f").process.argv()[0])?v(this,ct,"f").process.argv().slice(1,2):v(this,ct,"f").process.argv().slice(0,1),e=t.map((t=>{const e=this[Tt](v(this,z,"f"),t);return t.match(/^(\/|([a-zA-Z]:)?\\)/)&&e.lengthe.includes("package.json")?"package.json":void 0));d(i,void 0,v(this,ct,"f")),s=JSON.parse(v(this,ct,"f").readFileSync(i,"utf8"))}catch(t){}return v(this,ot,"f")[e]=s||{},v(this,ot,"f")[e]}[Et](t,e){(e=[].concat(e)).forEach((e=>{e=this[$t](e),v(this,et,"f")[t].push(e)}))}[At](t,e,s,i){this[St](t,e,s,i,((t,e,s)=>{v(this,et,"f")[t][e]=s}))}[Pt](t,e,s,i){this[St](t,e,s,i,((t,e,s)=>{v(this,et,"f")[t][e]=(v(this,et,"f")[t][e]||[]).concat(s)}))}[St](t,e,s,i,n){if(Array.isArray(s))s.forEach((e=>{t(e,i)}));else if((t=>"object"==typeof t)(s))for(const e of p(s))t(e,s[e]);else n(e,this[$t](s),i)}[$t](t){return"__proto__"===t?"___proto___":t}[It](t,e){return this[At](this[It].bind(this),"key",t,e),this}[Dt](){var t,e,s,i,n,r,o,a,h,l,c,f;const u=v(this,B,"f").pop();let p;d(u,void 0,v(this,ct,"f")),t=this,e=this,s=this,i=this,n=this,r=this,o=this,a=this,h=this,l=this,c=this,f=this,({options:{set value(e){O(t,et,e,"f")}}.value,configObjects:p,exitProcess:{set value(t){O(e,T,t,"f")}}.value,groups:{set value(t){O(s,Y,t,"f")}}.value,output:{set value(t){O(i,tt,t,"f")}}.value,exitError:{set value(t){O(n,V,t,"f")}}.value,hasOutput:{set value(t){O(r,J,t,"f")}}.value,parsed:this.parsed,strict:{set value(t){O(o,ft,t,"f")}}.value,strictCommands:{set value(t){O(a,dt,t,"f")}}.value,strictOptions:{set value(t){O(h,ut,t,"f")}}.value,completionCommand:{set value(t){O(l,U,t,"f")}}.value,parseFn:{set value(t){O(c,nt,t,"f")}}.value,parseContext:{set value(t){O(f,rt,t,"f")}}.value}=u),v(this,et,"f").configObjects=p,v(this,pt,"f").unfreeze(),v(this,mt,"f").unfreeze(),v(this,W,"f").unfreeze(),v(this,K,"f").unfreeze()}[Nt](t,e){return j(e,(e=>(t(e),e)))}getInternalMethods(){return{getCommandInstance:this[Ht].bind(this),getContext:this[Wt].bind(this),getHasOutput:this[zt].bind(this),getLoggerInstance:this[qt].bind(this),getParseContext:this[Ft].bind(this),getParserConfiguration:this[jt].bind(this),getUsageInstance:this[Ut].bind(this),getValidationInstance:this[Lt].bind(this),hasParseCallback:this[Vt].bind(this),isGlobalContext:this[Gt].bind(this),postProcess:this[Rt].bind(this),reset:this[Bt].bind(this),runValidation:this[Yt].bind(this),runYargsParserAndExecuteCommands:this[Kt].bind(this),setHasOutput:this[Jt].bind(this)}}[Ht](){return v(this,W,"f")}[Wt](){return v(this,q,"f")}[zt](){return v(this,J,"f")}[qt](){return v(this,Q,"f")}[Ft](){return v(this,rt,"f")||{}}[Ut](){return v(this,pt,"f")}[Lt](){return v(this,mt,"f")}[Vt](){return!!v(this,nt,"f")}[Gt](){return v(this,X,"f")}[Rt](t,e,s,i){if(s)return t;if(f(t))return t;e||(t=this[yt](t));return(this[jt]()["parse-positional-numbers"]||void 0===this[jt]()["parse-positional-numbers"])&&(t=this[kt](t)),i&&(t=C(t,this,v(this,K,"f").getMiddleware(),!1)),t}[Bt](t={}){O(this,et,v(this,et,"f")||{},"f");const e={};e.local=v(this,et,"f").local||[],e.configObjects=v(this,et,"f").configObjects||[];const s={};e.local.forEach((e=>{s[e]=!0,(t[e]||[]).forEach((t=>{s[t]=!0}))})),Object.assign(v(this,at,"f"),Object.keys(v(this,Y,"f")).reduce(((t,e)=>{const i=v(this,Y,"f")[e].filter((t=>!(t in s)));return i.length>0&&(t[e]=i),t}),{})),O(this,Y,{},"f");return["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"].forEach((t=>{e[t]=(v(this,et,"f")[t]||[]).filter((t=>!s[t]))})),["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"].forEach((t=>{e[t]=g(v(this,et,"f")[t],(t=>!s[t]))})),e.envPrefix=v(this,et,"f").envPrefix,O(this,et,e,"f"),O(this,pt,v(this,pt,"f")?v(this,pt,"f").reset(s):P(this,v(this,ct,"f")),"f"),O(this,mt,v(this,mt,"f")?v(this,mt,"f").reset(s):function(t,e,s){const i=s.y18n.__,n=s.y18n.__n,r={nonOptionCount:function(s){const i=t.getDemandedCommands(),r=s._.length+(s["--"]?s["--"].length:0)-t.getInternalMethods().getContext().commands.length;i._&&(ri._.max)&&(ri._.max&&(void 0!==i._.maxMsg?e.fail(i._.maxMsg?i._.maxMsg.replace(/\$0/g,r.toString()).replace(/\$1/,i._.max.toString()):null):e.fail(n("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",r,r.toString(),i._.max.toString()))))},positionalCount:function(t,s){s{H.includes(e)||Object.prototype.hasOwnProperty.call(o,e)||Object.prototype.hasOwnProperty.call(t.getInternalMethods().getParseContext(),e)||r.isValidAndSomeAliasIsNotNew(e,i)||f.push(e)})),h&&(d.commands.length>0||c.length>0||a)&&s._.slice(d.commands.length).forEach((t=>{c.includes(""+t)||f.push(""+t)})),h){const e=(null===(l=t.getDemandedCommands()._)||void 0===l?void 0:l.max)||0,i=d.commands.length+e;i{t=String(t),d.commands.includes(t)||f.includes(t)||f.push(t)}))}f.length&&e.fail(n("Unknown argument: %s","Unknown arguments: %s",f.length,f.map((t=>t.trim()?t:`"${t}"`)).join(", ")))},unknownCommands:function(s){const i=t.getInternalMethods().getCommandInstance().getCommands(),r=[],o=t.getInternalMethods().getContext();return(o.commands.length>0||i.length>0)&&s._.slice(o.commands.length).forEach((t=>{i.includes(""+t)||r.push(""+t)})),r.length>0&&(e.fail(n("Unknown command: %s","Unknown commands: %s",r.length,r.join(", "))),!0)},isValidAndSomeAliasIsNotNew:function(e,s){if(!Object.prototype.hasOwnProperty.call(s,e))return!1;const i=t.parsed.newAliases;return[e,...s[e]].some((t=>!Object.prototype.hasOwnProperty.call(i,t)||!i[e]))},limitedChoices:function(s){const n=t.getOptions(),r={};if(!Object.keys(n.choices).length)return;Object.keys(s).forEach((t=>{-1===H.indexOf(t)&&Object.prototype.hasOwnProperty.call(n.choices,t)&&[].concat(s[t]).forEach((e=>{-1===n.choices[t].indexOf(e)&&void 0!==e&&(r[t]=(r[t]||[]).concat(e))}))}));const o=Object.keys(r);if(!o.length)return;let a=i("Invalid values:");o.forEach((t=>{a+=`\n ${i("Argument: %s, Given: %s, Choices: %s",t,e.stringifiedValues(r[t]),e.stringifiedValues(n.choices[t]))}`})),e.fail(a)}};let o={};function a(t,e){const s=Number(e);return"number"==typeof(e=isNaN(s)?e:s)?e=t._.length>=e:e.match(/^--no-.+/)?(e=e.match(/^--no-(.+)/)[1],e=!Object.prototype.hasOwnProperty.call(t,e)):e=Object.prototype.hasOwnProperty.call(t,e),e}r.implies=function(e,i){h(" [array|number|string]",[e,i],arguments.length),"object"==typeof e?Object.keys(e).forEach((t=>{r.implies(t,e[t])})):(t.global(e),o[e]||(o[e]=[]),Array.isArray(i)?i.forEach((t=>r.implies(e,t))):(d(i,void 0,s),o[e].push(i)))},r.getImplied=function(){return o},r.implications=function(t){const s=[];if(Object.keys(o).forEach((e=>{const i=e;(o[e]||[]).forEach((e=>{let n=i;const r=e;n=a(t,n),e=a(t,e),n&&!e&&s.push(` ${i} -> ${r}`)}))})),s.length){let t=`${i("Implications failed:")}\n`;s.forEach((e=>{t+=e})),e.fail(t)}};let l={};r.conflicts=function(e,s){h(" [array|string]",[e,s],arguments.length),"object"==typeof e?Object.keys(e).forEach((t=>{r.conflicts(t,e[t])})):(t.global(e),l[e]||(l[e]=[]),Array.isArray(s)?s.forEach((t=>r.conflicts(e,t))):l[e].push(s))},r.getConflicting=()=>l,r.conflicting=function(n){Object.keys(n).forEach((t=>{l[t]&&l[t].forEach((s=>{s&&void 0!==n[t]&&void 0!==n[s]&&e.fail(i("Arguments %s and %s are mutually exclusive",t,s))}))})),t.getInternalMethods().getParserConfiguration()["strip-dashed"]&&Object.keys(l).forEach((t=>{l[t].forEach((r=>{r&&void 0!==n[s.Parser.camelCase(t)]&&void 0!==n[s.Parser.camelCase(r)]&&e.fail(i("Arguments %s and %s are mutually exclusive",t,r))}))}))},r.recommendCommands=function(t,s){s=s.sort(((t,e)=>e.length-t.length));let n=null,r=1/0;for(let e,i=0;void 0!==(e=s[i]);i++){const s=N(t,e);s<=3&&s!t[e])),l=g(l,(e=>!t[e])),r};const c=[];return r.freeze=function(){c.push({implied:o,conflicting:l})},r.unfreeze=function(){const t=c.pop();d(t,void 0,s),({implied:o,conflicting:l}=t)},r}(this,v(this,pt,"f"),v(this,ct,"f")),"f"),O(this,W,v(this,W,"f")?v(this,W,"f").reset():function(t,e,s,i){return new M(t,e,s,i)}(v(this,pt,"f"),v(this,mt,"f"),v(this,K,"f"),v(this,ct,"f")),"f"),v(this,F,"f")||O(this,F,function(t,e,s,i){return new D(t,e,s,i)}(this,v(this,pt,"f"),v(this,W,"f"),v(this,ct,"f")),"f"),v(this,K,"f").reset(),O(this,U,null,"f"),O(this,tt,"","f"),O(this,V,null,"f"),O(this,J,!1,"f"),this.parsed=!1,this}[Tt](t,e){return v(this,ct,"f").path.relative(t,e)}[Kt](t,s,i,n=0,r=!1){let o=!!i||r;t=t||v(this,ht,"f"),v(this,et,"f").__=v(this,ct,"f").y18n.__,v(this,et,"f").configuration=this[jt]();const a=!!v(this,et,"f").configuration["populate--"],h=Object.assign({},v(this,et,"f").configuration,{"populate--":!0}),l=v(this,ct,"f").Parser.detailed(t,Object.assign({},v(this,et,"f"),{configuration:{"parse-positional-numbers":!1,...h}})),c=Object.assign(l.argv,v(this,rt,"f"));let d;const u=l.aliases;let p=!1,g=!1;Object.keys(c).forEach((t=>{t===v(this,Z,"f")&&c[t]?p=!0:t===v(this,gt,"f")&&c[t]&&(g=!0)})),c.$0=this.$0,this.parsed=l,0===n&&v(this,pt,"f").clearCachedHelpMessage();try{if(this[_t](),s)return this[Rt](c,a,!!i,!1);if(v(this,Z,"f")){[v(this,Z,"f")].concat(u[v(this,Z,"f")]||[]).filter((t=>t.length>1)).includes(""+c._[c._.length-1])&&(c._.pop(),p=!0)}O(this,X,!1,"f");const h=v(this,W,"f").getCommands(),m=v(this,F,"f").completionKey in c,y=p||m||r;if(c._.length){if(h.length){let t;for(let e,s=n||0;void 0!==c._[s];s++){if(e=String(c._[s]),h.includes(e)&&e!==v(this,U,"f")){const t=v(this,W,"f").runCommand(e,this,l,s+1,r,p||g||r);return this[Rt](t,a,!!i,!1)}if(!t&&e!==v(this,U,"f")){t=e;break}}!v(this,W,"f").hasDefaultCommand()&&v(this,lt,"f")&&t&&!y&&v(this,mt,"f").recommendCommands(t,h)}v(this,U,"f")&&c._.includes(v(this,U,"f"))&&!m&&(v(this,T,"f")&&E(!0),this.showCompletionScript(),this.exit(0))}if(v(this,W,"f").hasDefaultCommand()&&!y){const t=v(this,W,"f").runCommand(null,this,l,0,r,p||g||r);return this[Rt](t,a,!!i,!1)}if(m){v(this,T,"f")&&E(!0);const s=(t=[].concat(t)).slice(t.indexOf(`--${v(this,F,"f").completionKey}`)+1);return v(this,F,"f").getCompletion(s,((t,s)=>{if(t)throw new e(t.message);(s||[]).forEach((t=>{v(this,Q,"f").log(t)})),this.exit(0)})),this[Rt](c,!a,!!i,!1)}if(v(this,J,"f")||(p?(v(this,T,"f")&&E(!0),o=!0,this.showHelp("log"),this.exit(0)):g&&(v(this,T,"f")&&E(!0),o=!0,v(this,pt,"f").showVersion("log"),this.exit(0))),!o&&v(this,et,"f").skipValidation.length>0&&(o=Object.keys(c).some((t=>v(this,et,"f").skipValidation.indexOf(t)>=0&&!0===c[t]))),!o){if(l.error)throw new e(l.error.message);if(!m){const t=this[Yt](u,{},l.error);i||(d=C(c,this,v(this,K,"f").getMiddleware(),!0)),d=this[Nt](t,null!=d?d:c),f(d)&&!i&&(d=d.then((()=>C(c,this,v(this,K,"f").getMiddleware(),!1))))}}}catch(t){if(!(t instanceof e))throw t;v(this,pt,"f").fail(t.message,t)}return this[Rt](null!=d?d:c,a,!!i,!0)}[Yt](t,s,i,n){const r={...this.getDemandedOptions()};return o=>{if(i)throw new e(i.message);v(this,mt,"f").nonOptionCount(o),v(this,mt,"f").requiredArguments(o,r);let a=!1;v(this,dt,"f")&&(a=v(this,mt,"f").unknownCommands(o)),v(this,ft,"f")&&!a?v(this,mt,"f").unknownArguments(o,t,s,!!n):v(this,ut,"f")&&v(this,mt,"f").unknownArguments(o,t,{},!1,!1),v(this,mt,"f").limitedChoices(o),v(this,mt,"f").implications(o),v(this,mt,"f").conflicting(o)}}[Jt](){O(this,J,!0,"f")}[Zt](t){if("string"==typeof t)v(this,et,"f").key[t]=!0;else for(const e of t)v(this,et,"f").key[e]=!0}}var Qt,te;const{readFileSync:ee}=require("fs"),{inspect:se}=require("util"),{resolve:ie}=require("path"),ne=require("y18n"),re=require("yargs-parser");var oe,ae={assert:{notStrictEqual:t.notStrictEqual,strictEqual:t.strictEqual},cliui:require("cliui"),findUp:require("escalade/sync"),getEnv:t=>process.env[t],getCallerFile:require("get-caller-file"),getProcessArgvBin:y,inspect:se,mainFilename:null!==(te=null===(Qt=null===require||void 0===require?void 0:require.main)||void 0===Qt?void 0:Qt.filename)&&void 0!==te?te:process.cwd(),Parser:re,path:require("path"),process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(t,e)=>process.emitWarning(t,e),execPath:()=>process.execPath,exit:t=>{process.exit(t)},nextTick:process.nextTick,stdColumns:void 0!==process.stdout.columns?process.stdout.columns:null},readFileSync:ee,require:require,requireDirectory:require("require-directory"),stringWidth:require("string-width"),y18n:ne({directory:ie(__dirname,"../locales"),updateFiles:!1})};const he=(null===(oe=null===process||void 0===process?void 0:process.env)||void 0===oe?void 0:oe.YARGS_MIN_NODE_VERSION)?Number(process.env.YARGS_MIN_NODE_VERSION):12;if(process&&process.version){if(Number(process.version.match(/v([^.]+)/)[1]){const i=new Xt(t,e,s,ce);return Object.defineProperty(i,"argv",{get:()=>i.parse(),enumerable:!0}),i.help(),i.version(),i}),argsert:h,isPromise:f,objFilter:g,parseCommand:o,Parser:le,processArgv:b,YError:e};module.exports=fe; diff --git a/mybulma/node_modules/yargs/build/lib/argsert.js b/mybulma/node_modules/yargs/build/lib/argsert.js new file mode 100644 index 0000000..be5b3aa --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/argsert.js @@ -0,0 +1,62 @@ +import { YError } from './yerror.js'; +import { parseCommand } from './parse-command.js'; +const positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']; +export function argsert(arg1, arg2, arg3) { + function parseArgs() { + return typeof arg1 === 'object' + ? [{ demanded: [], optional: [] }, arg1, arg2] + : [ + parseCommand(`cmd ${arg1}`), + arg2, + arg3, + ]; + } + try { + let position = 0; + const [parsed, callerArguments, _length] = parseArgs(); + const args = [].slice.call(callerArguments); + while (args.length && args[args.length - 1] === undefined) + args.pop(); + const length = _length || args.length; + if (length < parsed.demanded.length) { + throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); + } + const totalCommands = parsed.demanded.length + parsed.optional.length; + if (length > totalCommands) { + throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); + } + parsed.demanded.forEach(demanded => { + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*'); + if (matchingTypes.length === 0) + argumentTypeError(observedType, demanded.cmd, position); + position += 1; + }); + parsed.optional.forEach(optional => { + if (args.length === 0) + return; + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*'); + if (matchingTypes.length === 0) + argumentTypeError(observedType, optional.cmd, position); + position += 1; + }); + } + catch (err) { + console.warn(err.stack); + } +} +function guessType(arg) { + if (Array.isArray(arg)) { + return 'array'; + } + else if (arg === null) { + return 'null'; + } + return typeof arg; +} +function argumentTypeError(observedType, allowedTypes, position) { + throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`); +} diff --git a/mybulma/node_modules/yargs/build/lib/command.js b/mybulma/node_modules/yargs/build/lib/command.js new file mode 100644 index 0000000..89b150c --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/command.js @@ -0,0 +1,447 @@ +import { assertNotStrictEqual, } from './typings/common-types.js'; +import { isPromise } from './utils/is-promise.js'; +import { applyMiddleware, commandMiddlewareFactory, } from './middleware.js'; +import { parseCommand } from './parse-command.js'; +import { isYargsInstance, } from './yargs-factory.js'; +import { maybeAsyncResult } from './utils/maybe-async-result.js'; +import whichModule from './utils/which-module.js'; +const DEFAULT_MARKER = /(^\*)|(^\$0)/; +export class CommandInstance { + constructor(usage, validation, globalMiddleware, shim) { + this.requireCache = new Set(); + this.handlers = {}; + this.aliasMap = {}; + this.frozens = []; + this.shim = shim; + this.usage = usage; + this.globalMiddleware = globalMiddleware; + this.validation = validation; + } + addDirectory(dir, req, callerFile, opts) { + opts = opts || {}; + if (typeof opts.recurse !== 'boolean') + opts.recurse = false; + if (!Array.isArray(opts.extensions)) + opts.extensions = ['js']; + const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o; + opts.visit = (obj, joined, filename) => { + const visited = parentVisit(obj, joined, filename); + if (visited) { + if (this.requireCache.has(joined)) + return visited; + else + this.requireCache.add(joined); + this.addHandler(visited); + } + return visited; + }; + this.shim.requireDirectory({ require: req, filename: callerFile }, dir, opts); + } + addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { + let aliases = []; + const middlewares = commandMiddlewareFactory(commandMiddleware); + handler = handler || (() => { }); + if (Array.isArray(cmd)) { + if (isCommandAndAliases(cmd)) { + [cmd, ...aliases] = cmd; + } + else { + for (const command of cmd) { + this.addHandler(command); + } + } + } + else if (isCommandHandlerDefinition(cmd)) { + let command = Array.isArray(cmd.command) || typeof cmd.command === 'string' + ? cmd.command + : this.moduleName(cmd); + if (cmd.aliases) + command = [].concat(command).concat(cmd.aliases); + this.addHandler(command, this.extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); + return; + } + else if (isCommandBuilderDefinition(builder)) { + this.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); + return; + } + if (typeof cmd === 'string') { + const parsedCommand = parseCommand(cmd); + aliases = aliases.map(alias => parseCommand(alias).cmd); + let isDefault = false; + const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => { + if (DEFAULT_MARKER.test(c)) { + isDefault = true; + return false; + } + return true; + }); + if (parsedAliases.length === 0 && isDefault) + parsedAliases.push('$0'); + if (isDefault) { + parsedCommand.cmd = parsedAliases[0]; + aliases = parsedAliases.slice(1); + cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); + } + aliases.forEach(alias => { + this.aliasMap[alias] = parsedCommand.cmd; + }); + if (description !== false) { + this.usage.command(cmd, description, isDefault, aliases, deprecated); + } + this.handlers[parsedCommand.cmd] = { + original: cmd, + description, + handler, + builder: builder || {}, + middlewares, + deprecated, + demanded: parsedCommand.demanded, + optional: parsedCommand.optional, + }; + if (isDefault) + this.defaultCommand = this.handlers[parsedCommand.cmd]; + } + } + getCommandHandlers() { + return this.handlers; + } + getCommands() { + return Object.keys(this.handlers).concat(Object.keys(this.aliasMap)); + } + hasDefaultCommand() { + return !!this.defaultCommand; + } + runCommand(command, yargs, parsed, commandIndex, helpOnly, helpOrVersionSet) { + const commandHandler = this.handlers[command] || + this.handlers[this.aliasMap[command]] || + this.defaultCommand; + const currentContext = yargs.getInternalMethods().getContext(); + const parentCommands = currentContext.commands.slice(); + const isDefaultCommand = !command; + if (command) { + currentContext.commands.push(command); + currentContext.fullCommands.push(commandHandler.original); + } + const builderResult = this.applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, parsed.aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet); + return isPromise(builderResult) + ? builderResult.then(result => this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, result.innerArgv, currentContext, helpOnly, result.aliases, yargs)) + : this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, builderResult.innerArgv, currentContext, helpOnly, builderResult.aliases, yargs); + } + applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet) { + const builder = commandHandler.builder; + let innerYargs = yargs; + if (isCommandBuilderCallback(builder)) { + const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet); + if (isPromise(builderOutput)) { + return builderOutput.then(output => { + innerYargs = isYargsInstance(output) ? output : yargs; + return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); + }); + } + } + else if (isCommandBuilderOptionDefinitions(builder)) { + innerYargs = yargs.getInternalMethods().reset(aliases); + Object.keys(commandHandler.builder).forEach(key => { + innerYargs.option(key, builder[key]); + }); + } + return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); + } + parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly) { + if (isDefaultCommand) + innerYargs.getInternalMethods().getUsageInstance().unfreeze(true); + if (this.shouldUpdateUsage(innerYargs)) { + innerYargs + .getInternalMethods() + .getUsageInstance() + .usage(this.usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + const innerArgv = innerYargs + .getInternalMethods() + .runYargsParserAndExecuteCommands(null, undefined, true, commandIndex, helpOnly); + return isPromise(innerArgv) + ? innerArgv.then(argv => ({ + aliases: innerYargs.parsed.aliases, + innerArgv: argv, + })) + : { + aliases: innerYargs.parsed.aliases, + innerArgv: innerArgv, + }; + } + shouldUpdateUsage(yargs) { + return (!yargs.getInternalMethods().getUsageInstance().getUsageDisabled() && + yargs.getInternalMethods().getUsageInstance().getUsage().length === 0); + } + usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { + const c = DEFAULT_MARKER.test(commandHandler.original) + ? commandHandler.original.replace(DEFAULT_MARKER, '').trim() + : commandHandler.original; + const pc = parentCommands.filter(c => { + return !DEFAULT_MARKER.test(c); + }); + pc.push(c); + return `$0 ${pc.join(' ')}`; + } + handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) { + if (!yargs.getInternalMethods().getHasOutput()) { + const validation = yargs + .getInternalMethods() + .runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand); + innerArgv = maybeAsyncResult(innerArgv, result => { + validation(result); + return result; + }); + } + if (commandHandler.handler && !yargs.getInternalMethods().getHasOutput()) { + yargs.getInternalMethods().setHasOutput(); + const populateDoubleDash = !!yargs.getOptions().configuration['populate--']; + yargs + .getInternalMethods() + .postProcess(innerArgv, populateDoubleDash, false, false); + innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); + innerArgv = maybeAsyncResult(innerArgv, result => { + const handlerResult = commandHandler.handler(result); + return isPromise(handlerResult) + ? handlerResult.then(() => result) + : result; + }); + if (!isDefaultCommand) { + yargs.getInternalMethods().getUsageInstance().cacheHelpMessage(); + } + if (isPromise(innerArgv) && + !yargs.getInternalMethods().hasParseCallback()) { + innerArgv.catch(error => { + try { + yargs.getInternalMethods().getUsageInstance().fail(null, error); + } + catch (_err) { + } + }); + } + } + if (!isDefaultCommand) { + currentContext.commands.pop(); + currentContext.fullCommands.pop(); + } + return innerArgv; + } + applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) { + let positionalMap = {}; + if (helpOnly) + return innerArgv; + if (!yargs.getInternalMethods().getHasOutput()) { + positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs); + } + const middlewares = this.globalMiddleware + .getMiddleware() + .slice(0) + .concat(commandHandler.middlewares); + const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true); + return isPromise(maybePromiseArgv) + ? maybePromiseArgv.then(resolvedInnerArgv => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap)) + : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap); + } + populatePositionals(commandHandler, argv, context, yargs) { + argv._ = argv._.slice(context.commands.length); + const demanded = commandHandler.demanded.slice(0); + const optional = commandHandler.optional.slice(0); + const positionalMap = {}; + this.validation.positionalCount(demanded.length, argv._.length); + while (demanded.length) { + const demand = demanded.shift(); + this.populatePositional(demand, argv, positionalMap); + } + while (optional.length) { + const maybe = optional.shift(); + this.populatePositional(maybe, argv, positionalMap); + } + argv._ = context.commands.concat(argv._.map(a => '' + a)); + this.postProcessPositionals(argv, positionalMap, this.cmdToParseOptions(commandHandler.original), yargs); + return positionalMap; + } + populatePositional(positional, argv, positionalMap) { + const cmd = positional.cmd[0]; + if (positional.variadic) { + positionalMap[cmd] = argv._.splice(0).map(String); + } + else { + if (argv._.length) + positionalMap[cmd] = [String(argv._.shift())]; + } + } + cmdToParseOptions(cmdString) { + const parseOptions = { + array: [], + default: {}, + alias: {}, + demand: {}, + }; + const parsed = parseCommand(cmdString); + parsed.demanded.forEach(d => { + const [cmd, ...aliases] = d.cmd; + if (d.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + parseOptions.demand[cmd] = true; + }); + parsed.optional.forEach(o => { + const [cmd, ...aliases] = o.cmd; + if (o.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + }); + return parseOptions; + } + postProcessPositionals(argv, positionalMap, parseOptions, yargs) { + const options = Object.assign({}, yargs.getOptions()); + options.default = Object.assign(parseOptions.default, options.default); + for (const key of Object.keys(parseOptions.alias)) { + options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); + } + options.array = options.array.concat(parseOptions.array); + options.config = {}; + const unparsed = []; + Object.keys(positionalMap).forEach(key => { + positionalMap[key].map(value => { + if (options.configuration['unknown-options-as-args']) + options.key[key] = true; + unparsed.push(`--${key}`); + unparsed.push(value); + }); + }); + if (!unparsed.length) + return; + const config = Object.assign({}, options.configuration, { + 'populate--': false, + }); + const parsed = this.shim.Parser.detailed(unparsed, Object.assign({}, options, { + configuration: config, + })); + if (parsed.error) { + yargs + .getInternalMethods() + .getUsageInstance() + .fail(parsed.error.message, parsed.error); + } + else { + const positionalKeys = Object.keys(positionalMap); + Object.keys(positionalMap).forEach(key => { + positionalKeys.push(...parsed.aliases[key]); + }); + Object.keys(parsed.argv).forEach(key => { + if (positionalKeys.includes(key)) { + if (!positionalMap[key]) + positionalMap[key] = parsed.argv[key]; + if (!this.isInConfigs(yargs, key) && + !this.isDefaulted(yargs, key) && + Object.prototype.hasOwnProperty.call(argv, key) && + Object.prototype.hasOwnProperty.call(parsed.argv, key) && + (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) { + argv[key] = [].concat(argv[key], parsed.argv[key]); + } + else { + argv[key] = parsed.argv[key]; + } + } + }); + } + } + isDefaulted(yargs, key) { + const { default: defaults } = yargs.getOptions(); + return (Object.prototype.hasOwnProperty.call(defaults, key) || + Object.prototype.hasOwnProperty.call(defaults, this.shim.Parser.camelCase(key))); + } + isInConfigs(yargs, key) { + const { configObjects } = yargs.getOptions(); + return (configObjects.some(c => Object.prototype.hasOwnProperty.call(c, key)) || + configObjects.some(c => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key)))); + } + runDefaultBuilderOn(yargs) { + if (!this.defaultCommand) + return; + if (this.shouldUpdateUsage(yargs)) { + const commandString = DEFAULT_MARKER.test(this.defaultCommand.original) + ? this.defaultCommand.original + : this.defaultCommand.original.replace(/^[^[\]<>]*/, '$0 '); + yargs + .getInternalMethods() + .getUsageInstance() + .usage(commandString, this.defaultCommand.description); + } + const builder = this.defaultCommand.builder; + if (isCommandBuilderCallback(builder)) { + return builder(yargs, true); + } + else if (!isCommandBuilderDefinition(builder)) { + Object.keys(builder).forEach(key => { + yargs.option(key, builder[key]); + }); + } + return undefined; + } + moduleName(obj) { + const mod = whichModule(obj); + if (!mod) + throw new Error(`No command name given for module: ${this.shim.inspect(obj)}`); + return this.commandFromFilename(mod.filename); + } + commandFromFilename(filename) { + return this.shim.path.basename(filename, this.shim.path.extname(filename)); + } + extractDesc({ describe, description, desc }) { + for (const test of [describe, description, desc]) { + if (typeof test === 'string' || test === false) + return test; + assertNotStrictEqual(test, true, this.shim); + } + return false; + } + freeze() { + this.frozens.push({ + handlers: this.handlers, + aliasMap: this.aliasMap, + defaultCommand: this.defaultCommand, + }); + } + unfreeze() { + const frozen = this.frozens.pop(); + assertNotStrictEqual(frozen, undefined, this.shim); + ({ + handlers: this.handlers, + aliasMap: this.aliasMap, + defaultCommand: this.defaultCommand, + } = frozen); + } + reset() { + this.handlers = {}; + this.aliasMap = {}; + this.defaultCommand = undefined; + this.requireCache = new Set(); + return this; + } +} +export function command(usage, validation, globalMiddleware, shim) { + return new CommandInstance(usage, validation, globalMiddleware, shim); +} +export function isCommandBuilderDefinition(builder) { + return (typeof builder === 'object' && + !!builder.builder && + typeof builder.handler === 'function'); +} +function isCommandAndAliases(cmd) { + return cmd.every(c => typeof c === 'string'); +} +export function isCommandBuilderCallback(builder) { + return typeof builder === 'function'; +} +function isCommandBuilderOptionDefinitions(builder) { + return typeof builder === 'object'; +} +export function isCommandHandlerDefinition(cmd) { + return typeof cmd === 'object' && !Array.isArray(cmd); +} diff --git a/mybulma/node_modules/yargs/build/lib/completion-templates.js b/mybulma/node_modules/yargs/build/lib/completion-templates.js new file mode 100644 index 0000000..2c4dcb5 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/completion-templates.js @@ -0,0 +1,48 @@ +export const completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local cur_word args type_list + + cur_word="\${COMP_WORDS[COMP_CWORD]}" + args=("\${COMP_WORDS[@]}") + + # ask yargs to generate completions. + type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") + + COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) + + # if no match was found, fall back to filename completion + if [ \${#COMPREPLY[@]} -eq 0 ]; then + COMPREPLY=() + fi + + return 0 +} +complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +export const completionZshTemplate = `#compdef {{app_name}} +###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local reply + local si=$IFS + IFS=$'\n' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) + IFS=$si + _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; diff --git a/mybulma/node_modules/yargs/build/lib/completion.js b/mybulma/node_modules/yargs/build/lib/completion.js new file mode 100644 index 0000000..1c59212 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/completion.js @@ -0,0 +1,236 @@ +import { isCommandBuilderCallback } from './command.js'; +import { assertNotStrictEqual } from './typings/common-types.js'; +import * as templates from './completion-templates.js'; +import { isPromise } from './utils/is-promise.js'; +import { parseCommand } from './parse-command.js'; +export class Completion { + constructor(yargs, usage, command, shim) { + var _a, _b, _c; + this.yargs = yargs; + this.usage = usage; + this.command = command; + this.shim = shim; + this.completionKey = 'get-yargs-completions'; + this.aliases = null; + this.customCompletionFunction = null; + this.indexAfterLastReset = 0; + this.zshShell = + (_c = (((_a = this.shim.getEnv('SHELL')) === null || _a === void 0 ? void 0 : _a.includes('zsh')) || + ((_b = this.shim.getEnv('ZSH_NAME')) === null || _b === void 0 ? void 0 : _b.includes('zsh')))) !== null && _c !== void 0 ? _c : false; + } + defaultCompletion(args, argv, current, done) { + const handlers = this.command.getCommandHandlers(); + for (let i = 0, ii = args.length; i < ii; ++i) { + if (handlers[args[i]] && handlers[args[i]].builder) { + const builder = handlers[args[i]].builder; + if (isCommandBuilderCallback(builder)) { + this.indexAfterLastReset = i + 1; + const y = this.yargs.getInternalMethods().reset(); + builder(y, true); + return y.argv; + } + } + } + const completions = []; + this.commandCompletions(completions, args, current); + this.optionCompletions(completions, args, argv, current); + this.choicesFromOptionsCompletions(completions, args, argv, current); + this.choicesFromPositionalsCompletions(completions, args, argv, current); + done(null, completions); + } + commandCompletions(completions, args, current) { + const parentCommands = this.yargs + .getInternalMethods() + .getContext().commands; + if (!current.match(/^-/) && + parentCommands[parentCommands.length - 1] !== current && + !this.previousArgHasChoices(args)) { + this.usage.getCommands().forEach(usageCommand => { + const commandName = parseCommand(usageCommand[0]).cmd; + if (args.indexOf(commandName) === -1) { + if (!this.zshShell) { + completions.push(commandName); + } + else { + const desc = usageCommand[1] || ''; + completions.push(commandName.replace(/:/g, '\\:') + ':' + desc); + } + } + }); + } + } + optionCompletions(completions, args, argv, current) { + if ((current.match(/^-/) || (current === '' && completions.length === 0)) && + !this.previousArgHasChoices(args)) { + const options = this.yargs.getOptions(); + const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; + Object.keys(options.key).forEach(key => { + const negable = !!options.configuration['boolean-negation'] && + options.boolean.includes(key); + const isPositionalKey = positionalKeys.includes(key); + if (!isPositionalKey && + !options.hiddenOptions.includes(key) && + !this.argsContainKey(args, key, negable)) { + this.completeOptionKey(key, completions, current); + if (negable && !!options.default[key]) + this.completeOptionKey(`no-${key}`, completions, current); + } + }); + } + } + choicesFromOptionsCompletions(completions, args, argv, current) { + if (this.previousArgHasChoices(args)) { + const choices = this.getPreviousArgChoices(args); + if (choices && choices.length > 0) { + completions.push(...choices.map(c => c.replace(/:/g, '\\:'))); + } + } + } + choicesFromPositionalsCompletions(completions, args, argv, current) { + if (current === '' && + completions.length > 0 && + this.previousArgHasChoices(args)) { + return; + } + const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; + const offset = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length + + 1); + const positionalKey = positionalKeys[argv._.length - offset - 1]; + if (!positionalKey) { + return; + } + const choices = this.yargs.getOptions().choices[positionalKey] || []; + for (const choice of choices) { + if (choice.startsWith(current)) { + completions.push(choice.replace(/:/g, '\\:')); + } + } + } + getPreviousArgChoices(args) { + if (args.length < 1) + return; + let previousArg = args[args.length - 1]; + let filter = ''; + if (!previousArg.startsWith('-') && args.length > 1) { + filter = previousArg; + previousArg = args[args.length - 2]; + } + if (!previousArg.startsWith('-')) + return; + const previousArgKey = previousArg.replace(/^-+/, ''); + const options = this.yargs.getOptions(); + const possibleAliases = [ + previousArgKey, + ...(this.yargs.getAliases()[previousArgKey] || []), + ]; + let choices; + for (const possibleAlias of possibleAliases) { + if (Object.prototype.hasOwnProperty.call(options.key, possibleAlias) && + Array.isArray(options.choices[possibleAlias])) { + choices = options.choices[possibleAlias]; + break; + } + } + if (choices) { + return choices.filter(choice => !filter || choice.startsWith(filter)); + } + } + previousArgHasChoices(args) { + const choices = this.getPreviousArgChoices(args); + return choices !== undefined && choices.length > 0; + } + argsContainKey(args, key, negable) { + const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? '-' : '--') + s) !== -1; + if (argsContains(key)) + return true; + if (negable && argsContains(`no-${key}`)) + return true; + if (this.aliases) { + for (const alias of this.aliases[key]) { + if (argsContains(alias)) + return true; + } + } + return false; + } + completeOptionKey(key, completions, current) { + const descs = this.usage.getDescriptions(); + const startsByTwoDashes = (s) => /^--/.test(s); + const isShortOption = (s) => /^[^0-9]$/.test(s); + const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--'; + if (!this.zshShell) { + completions.push(dashes + key); + } + else { + const desc = descs[key] || ''; + completions.push(dashes + + `${key.replace(/:/g, '\\:')}:${desc.replace('__yargsString__:', '')}`); + } + } + customCompletion(args, argv, current, done) { + assertNotStrictEqual(this.customCompletionFunction, null, this.shim); + if (isSyncCompletionFunction(this.customCompletionFunction)) { + const result = this.customCompletionFunction(current, argv); + if (isPromise(result)) { + return result + .then(list => { + this.shim.process.nextTick(() => { + done(null, list); + }); + }) + .catch(err => { + this.shim.process.nextTick(() => { + done(err, undefined); + }); + }); + } + return done(null, result); + } + else if (isFallbackCompletionFunction(this.customCompletionFunction)) { + return this.customCompletionFunction(current, argv, (onCompleted = done) => this.defaultCompletion(args, argv, current, onCompleted), completions => { + done(null, completions); + }); + } + else { + return this.customCompletionFunction(current, argv, completions => { + done(null, completions); + }); + } + } + getCompletion(args, done) { + const current = args.length ? args[args.length - 1] : ''; + const argv = this.yargs.parse(args, true); + const completionFunction = this.customCompletionFunction + ? (argv) => this.customCompletion(args, argv, current, done) + : (argv) => this.defaultCompletion(args, argv, current, done); + return isPromise(argv) + ? argv.then(completionFunction) + : completionFunction(argv); + } + generateCompletionScript($0, cmd) { + let script = this.zshShell + ? templates.completionZshTemplate + : templates.completionShTemplate; + const name = this.shim.path.basename($0); + if ($0.match(/\.js$/)) + $0 = `./${$0}`; + script = script.replace(/{{app_name}}/g, name); + script = script.replace(/{{completion_command}}/g, cmd); + return script.replace(/{{app_path}}/g, $0); + } + registerFunction(fn) { + this.customCompletionFunction = fn; + } + setParsed(parsed) { + this.aliases = parsed.aliases; + } +} +export function completion(yargs, usage, command, shim) { + return new Completion(yargs, usage, command, shim); +} +function isSyncCompletionFunction(completionFunction) { + return completionFunction.length < 3; +} +function isFallbackCompletionFunction(completionFunction) { + return completionFunction.length > 3; +} diff --git a/mybulma/node_modules/yargs/build/lib/middleware.js b/mybulma/node_modules/yargs/build/lib/middleware.js new file mode 100644 index 0000000..4e561a7 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/middleware.js @@ -0,0 +1,88 @@ +import { argsert } from './argsert.js'; +import { isPromise } from './utils/is-promise.js'; +export class GlobalMiddleware { + constructor(yargs) { + this.globalMiddleware = []; + this.frozens = []; + this.yargs = yargs; + } + addMiddleware(callback, applyBeforeValidation, global = true, mutates = false) { + argsert(' [boolean] [boolean] [boolean]', [callback, applyBeforeValidation, global], arguments.length); + if (Array.isArray(callback)) { + for (let i = 0; i < callback.length; i++) { + if (typeof callback[i] !== 'function') { + throw Error('middleware must be a function'); + } + const m = callback[i]; + m.applyBeforeValidation = applyBeforeValidation; + m.global = global; + } + Array.prototype.push.apply(this.globalMiddleware, callback); + } + else if (typeof callback === 'function') { + const m = callback; + m.applyBeforeValidation = applyBeforeValidation; + m.global = global; + m.mutates = mutates; + this.globalMiddleware.push(callback); + } + return this.yargs; + } + addCoerceMiddleware(callback, option) { + const aliases = this.yargs.getAliases(); + this.globalMiddleware = this.globalMiddleware.filter(m => { + const toCheck = [...(aliases[option] || []), option]; + if (!m.option) + return true; + else + return !toCheck.includes(m.option); + }); + callback.option = option; + return this.addMiddleware(callback, true, true, true); + } + getMiddleware() { + return this.globalMiddleware; + } + freeze() { + this.frozens.push([...this.globalMiddleware]); + } + unfreeze() { + const frozen = this.frozens.pop(); + if (frozen !== undefined) + this.globalMiddleware = frozen; + } + reset() { + this.globalMiddleware = this.globalMiddleware.filter(m => m.global); + } +} +export function commandMiddlewareFactory(commandMiddleware) { + if (!commandMiddleware) + return []; + return commandMiddleware.map(middleware => { + middleware.applyBeforeValidation = false; + return middleware; + }); +} +export function applyMiddleware(argv, yargs, middlewares, beforeValidation) { + return middlewares.reduce((acc, middleware) => { + if (middleware.applyBeforeValidation !== beforeValidation) { + return acc; + } + if (middleware.mutates) { + if (middleware.applied) + return acc; + middleware.applied = true; + } + if (isPromise(acc)) { + return acc + .then(initialObj => Promise.all([initialObj, middleware(initialObj, yargs)])) + .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); + } + else { + const result = middleware(acc, yargs); + return isPromise(result) + ? result.then(middlewareObj => Object.assign(acc, middlewareObj)) + : Object.assign(acc, result); + } + }, argv); +} diff --git a/mybulma/node_modules/yargs/build/lib/parse-command.js b/mybulma/node_modules/yargs/build/lib/parse-command.js new file mode 100644 index 0000000..4989f53 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/parse-command.js @@ -0,0 +1,32 @@ +export function parseCommand(cmd) { + const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' '); + const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); + const bregex = /\.*[\][<>]/g; + const firstCommand = splitCommand.shift(); + if (!firstCommand) + throw new Error(`No command found in: ${cmd}`); + const parsedCommand = { + cmd: firstCommand.replace(bregex, ''), + demanded: [], + optional: [], + }; + splitCommand.forEach((cmd, i) => { + let variadic = false; + cmd = cmd.replace(/\s/g, ''); + if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) + variadic = true; + if (/^\[/.test(cmd)) { + parsedCommand.optional.push({ + cmd: cmd.replace(bregex, '').split('|'), + variadic, + }); + } + else { + parsedCommand.demanded.push({ + cmd: cmd.replace(bregex, '').split('|'), + variadic, + }); + } + }); + return parsedCommand; +} diff --git a/mybulma/node_modules/yargs/build/lib/typings/common-types.js b/mybulma/node_modules/yargs/build/lib/typings/common-types.js new file mode 100644 index 0000000..73e1773 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/typings/common-types.js @@ -0,0 +1,9 @@ +export function assertNotStrictEqual(actual, expected, shim, message) { + shim.assert.notStrictEqual(actual, expected, message); +} +export function assertSingleKey(actual, shim) { + shim.assert.strictEqual(typeof actual, 'string'); +} +export function objectKeys(object) { + return Object.keys(object); +} diff --git a/mybulma/node_modules/yargs/build/lib/typings/yargs-parser-types.js b/mybulma/node_modules/yargs/build/lib/typings/yargs-parser-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/typings/yargs-parser-types.js @@ -0,0 +1 @@ +export {}; diff --git a/mybulma/node_modules/yargs/build/lib/usage.js b/mybulma/node_modules/yargs/build/lib/usage.js new file mode 100644 index 0000000..2e14073 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/usage.js @@ -0,0 +1,582 @@ +import { objFilter } from './utils/obj-filter.js'; +import { YError } from './yerror.js'; +import setBlocking from './utils/set-blocking.js'; +function isBoolean(fail) { + return typeof fail === 'boolean'; +} +export function usage(yargs, shim) { + const __ = shim.y18n.__; + const self = {}; + const fails = []; + self.failFn = function failFn(f) { + fails.push(f); + }; + let failMessage = null; + let globalFailMessage = null; + let showHelpOnFail = true; + self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { + const [enabled, message] = typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2]; + if (yargs.getInternalMethods().isGlobalContext()) { + globalFailMessage = message; + } + failMessage = message; + showHelpOnFail = enabled; + return self; + }; + let failureOutput = false; + self.fail = function fail(msg, err) { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (fails.length) { + for (let i = fails.length - 1; i >= 0; --i) { + const fail = fails[i]; + if (isBoolean(fail)) { + if (err) + throw err; + else if (msg) + throw Error(msg); + } + else { + fail(msg, err, self); + } + } + } + else { + if (yargs.getExitProcess()) + setBlocking(true); + if (!failureOutput) { + failureOutput = true; + if (showHelpOnFail) { + yargs.showHelp('error'); + logger.error(); + } + if (msg || err) + logger.error(msg || err); + const globalOrCommandFailMessage = failMessage || globalFailMessage; + if (globalOrCommandFailMessage) { + if (msg || err) + logger.error(''); + logger.error(globalOrCommandFailMessage); + } + } + err = err || new YError(msg); + if (yargs.getExitProcess()) { + return yargs.exit(1); + } + else if (yargs.getInternalMethods().hasParseCallback()) { + return yargs.exit(1, err); + } + else { + throw err; + } + } + }; + let usages = []; + let usageDisabled = false; + self.usage = (msg, description) => { + if (msg === null) { + usageDisabled = true; + usages = []; + return self; + } + usageDisabled = false; + usages.push([msg, description || '']); + return self; + }; + self.getUsage = () => { + return usages; + }; + self.getUsageDisabled = () => { + return usageDisabled; + }; + self.getPositionalGroupName = () => { + return __('Positionals:'); + }; + let examples = []; + self.example = (cmd, description) => { + examples.push([cmd, description || '']); + }; + let commands = []; + self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { + if (isDefault) { + commands = commands.map(cmdArray => { + cmdArray[2] = false; + return cmdArray; + }); + } + commands.push([cmd, description || '', isDefault, aliases, deprecated]); + }; + self.getCommands = () => commands; + let descriptions = {}; + self.describe = function describe(keyOrKeys, desc) { + if (Array.isArray(keyOrKeys)) { + keyOrKeys.forEach(k => { + self.describe(k, desc); + }); + } + else if (typeof keyOrKeys === 'object') { + Object.keys(keyOrKeys).forEach(k => { + self.describe(k, keyOrKeys[k]); + }); + } + else { + descriptions[keyOrKeys] = desc; + } + }; + self.getDescriptions = () => descriptions; + let epilogs = []; + self.epilog = msg => { + epilogs.push(msg); + }; + let wrapSet = false; + let wrap; + self.wrap = cols => { + wrapSet = true; + wrap = cols; + }; + self.getWrap = () => { + if (shim.getEnv('YARGS_DISABLE_WRAP')) { + return null; + } + if (!wrapSet) { + wrap = windowWidth(); + wrapSet = true; + } + return wrap; + }; + const deferY18nLookupPrefix = '__yargsString__:'; + self.deferY18nLookup = str => deferY18nLookupPrefix + str; + self.help = function help() { + if (cachedHelpMessage) + return cachedHelpMessage; + normalizeAliases(); + const base$0 = yargs.customScriptName + ? yargs.$0 + : shim.path.basename(yargs.$0); + const demandedOptions = yargs.getDemandedOptions(); + const demandedCommands = yargs.getDemandedCommands(); + const deprecatedOptions = yargs.getDeprecatedOptions(); + const groups = yargs.getGroups(); + const options = yargs.getOptions(); + let keys = []; + keys = keys.concat(Object.keys(descriptions)); + keys = keys.concat(Object.keys(demandedOptions)); + keys = keys.concat(Object.keys(demandedCommands)); + keys = keys.concat(Object.keys(options.default)); + keys = keys.filter(filterHiddenOptions); + keys = Object.keys(keys.reduce((acc, key) => { + if (key !== '_') + acc[key] = true; + return acc; + }, {})); + const theWrap = self.getWrap(); + const ui = shim.cliui({ + width: theWrap, + wrap: !!theWrap, + }); + if (!usageDisabled) { + if (usages.length) { + usages.forEach(usage => { + ui.div({ text: `${usage[0].replace(/\$0/g, base$0)}` }); + if (usage[1]) { + ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] }); + } + }); + ui.div(); + } + else if (commands.length) { + let u = null; + if (demandedCommands._) { + u = `${base$0} <${__('command')}>\n`; + } + else { + u = `${base$0} [${__('command')}]\n`; + } + ui.div(`${u}`); + } + } + if (commands.length > 1 || (commands.length === 1 && !commands[0][2])) { + ui.div(__('Commands:')); + const context = yargs.getInternalMethods().getContext(); + const parentCommands = context.commands.length + ? `${context.commands.join(' ')} ` + : ''; + if (yargs.getInternalMethods().getParserConfiguration()['sort-commands'] === + true) { + commands = commands.sort((a, b) => a[0].localeCompare(b[0])); + } + const prefix = base$0 ? `${base$0} ` : ''; + commands.forEach(command => { + const commandString = `${prefix}${parentCommands}${command[0].replace(/^\$0 ?/, '')}`; + ui.span({ + text: commandString, + padding: [0, 2, 0, 2], + width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4, + }, { text: command[1] }); + const hints = []; + if (command[2]) + hints.push(`[${__('default')}]`); + if (command[3] && command[3].length) { + hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`); + } + if (command[4]) { + if (typeof command[4] === 'string') { + hints.push(`[${__('deprecated: %s', command[4])}]`); + } + else { + hints.push(`[${__('deprecated')}]`); + } + } + if (hints.length) { + ui.div({ + text: hints.join(' '), + padding: [0, 0, 0, 2], + align: 'right', + }); + } + else { + ui.div(); + } + }); + ui.div(); + } + const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); + keys = keys.filter(key => !yargs.parsed.newAliases[key] && + aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1)); + const defaultGroup = __('Options:'); + if (!groups[defaultGroup]) + groups[defaultGroup] = []; + addUngroupedKeys(keys, options.alias, groups, defaultGroup); + const isLongSwitch = (sw) => /^--/.test(getText(sw)); + const displayedGroups = Object.keys(groups) + .filter(groupName => groups[groupName].length > 0) + .map(groupName => { + const normalizedKeys = groups[groupName] + .filter(filterHiddenOptions) + .map(key => { + if (aliasKeys.includes(key)) + return key; + for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) { + if ((options.alias[aliasKey] || []).includes(key)) + return aliasKey; + } + return key; + }); + return { groupName, normalizedKeys }; + }) + .filter(({ normalizedKeys }) => normalizedKeys.length > 0) + .map(({ groupName, normalizedKeys }) => { + const switches = normalizedKeys.reduce((acc, key) => { + acc[key] = [key] + .concat(options.alias[key] || []) + .map(sw => { + if (groupName === self.getPositionalGroupName()) + return sw; + else { + return ((/^[0-9]$/.test(sw) + ? options.boolean.includes(key) + ? '-' + : '--' + : sw.length > 1 + ? '--' + : '-') + sw); + } + }) + .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) + ? 0 + : isLongSwitch(sw1) + ? 1 + : -1) + .join(', '); + return acc; + }, {}); + return { groupName, normalizedKeys, switches }; + }); + const shortSwitchesUsed = displayedGroups + .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) + .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key]))); + if (shortSwitchesUsed) { + displayedGroups + .filter(({ groupName }) => groupName !== self.getPositionalGroupName()) + .forEach(({ normalizedKeys, switches }) => { + normalizedKeys.forEach(key => { + if (isLongSwitch(switches[key])) { + switches[key] = addIndentation(switches[key], '-x, '.length); + } + }); + }); + } + displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { + ui.div(groupName); + normalizedKeys.forEach(key => { + const kswitch = switches[key]; + let desc = descriptions[key] || ''; + let type = null; + if (desc.includes(deferY18nLookupPrefix)) + desc = __(desc.substring(deferY18nLookupPrefix.length)); + if (options.boolean.includes(key)) + type = `[${__('boolean')}]`; + if (options.count.includes(key)) + type = `[${__('count')}]`; + if (options.string.includes(key)) + type = `[${__('string')}]`; + if (options.normalize.includes(key)) + type = `[${__('string')}]`; + if (options.array.includes(key)) + type = `[${__('array')}]`; + if (options.number.includes(key)) + type = `[${__('number')}]`; + const deprecatedExtra = (deprecated) => typeof deprecated === 'string' + ? `[${__('deprecated: %s', deprecated)}]` + : `[${__('deprecated')}]`; + const extra = [ + key in deprecatedOptions + ? deprecatedExtra(deprecatedOptions[key]) + : null, + type, + key in demandedOptions ? `[${__('required')}]` : null, + options.choices && options.choices[key] + ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]` + : null, + defaultString(options.default[key], options.defaultDescription[key]), + ] + .filter(Boolean) + .join(' '); + ui.span({ + text: getText(kswitch), + padding: [0, 2, 0, 2 + getIndentation(kswitch)], + width: maxWidth(switches, theWrap) + 4, + }, desc); + if (extra) + ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' }); + else + ui.div(); + }); + ui.div(); + }); + if (examples.length) { + ui.div(__('Examples:')); + examples.forEach(example => { + example[0] = example[0].replace(/\$0/g, base$0); + }); + examples.forEach(example => { + if (example[1] === '') { + ui.div({ + text: example[0], + padding: [0, 2, 0, 2], + }); + } + else { + ui.div({ + text: example[0], + padding: [0, 2, 0, 2], + width: maxWidth(examples, theWrap) + 4, + }, { + text: example[1], + }); + } + }); + ui.div(); + } + if (epilogs.length > 0) { + const e = epilogs + .map(epilog => epilog.replace(/\$0/g, base$0)) + .join('\n'); + ui.div(`${e}\n`); + } + return ui.toString().replace(/\s*$/, ''); + }; + function maxWidth(table, theWrap, modifier) { + let width = 0; + if (!Array.isArray(table)) { + table = Object.values(table).map(v => [v]); + } + table.forEach(v => { + width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); + }); + if (theWrap) + width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); + return width; + } + function normalizeAliases() { + const demandedOptions = yargs.getDemandedOptions(); + const options = yargs.getOptions(); + (Object.keys(options.alias) || []).forEach(key => { + options.alias[key].forEach(alias => { + if (descriptions[alias]) + self.describe(key, descriptions[alias]); + if (alias in demandedOptions) + yargs.demandOption(key, demandedOptions[alias]); + if (options.boolean.includes(alias)) + yargs.boolean(key); + if (options.count.includes(alias)) + yargs.count(key); + if (options.string.includes(alias)) + yargs.string(key); + if (options.normalize.includes(alias)) + yargs.normalize(key); + if (options.array.includes(alias)) + yargs.array(key); + if (options.number.includes(alias)) + yargs.number(key); + }); + }); + } + let cachedHelpMessage; + self.cacheHelpMessage = function () { + cachedHelpMessage = this.help(); + }; + self.clearCachedHelpMessage = function () { + cachedHelpMessage = undefined; + }; + self.hasCachedHelpMessage = function () { + return !!cachedHelpMessage; + }; + function addUngroupedKeys(keys, aliases, groups, defaultGroup) { + let groupedKeys = []; + let toCheck = null; + Object.keys(groups).forEach(group => { + groupedKeys = groupedKeys.concat(groups[group]); + }); + keys.forEach(key => { + toCheck = [key].concat(aliases[key]); + if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) { + groups[defaultGroup].push(key); + } + }); + return groupedKeys; + } + function filterHiddenOptions(key) { + return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 || + yargs.parsed.argv[yargs.getOptions().showHiddenOpt]); + } + self.showHelp = (level) => { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (!level) + level = 'error'; + const emit = typeof level === 'function' ? level : logger[level]; + emit(self.help()); + }; + self.functionDescription = fn => { + const description = fn.name + ? shim.Parser.decamelize(fn.name, '-') + : __('generated-value'); + return ['(', description, ')'].join(''); + }; + self.stringifiedValues = function stringifiedValues(values, separator) { + let string = ''; + const sep = separator || ', '; + const array = [].concat(values); + if (!values || !array.length) + return string; + array.forEach(value => { + if (string.length) + string += sep; + string += JSON.stringify(value); + }); + return string; + }; + function defaultString(value, defaultDescription) { + let string = `[${__('default:')} `; + if (value === undefined && !defaultDescription) + return null; + if (defaultDescription) { + string += defaultDescription; + } + else { + switch (typeof value) { + case 'string': + string += `"${value}"`; + break; + case 'object': + string += JSON.stringify(value); + break; + default: + string += value; + } + } + return `${string}]`; + } + function windowWidth() { + const maxWidth = 80; + if (shim.process.stdColumns) { + return Math.min(maxWidth, shim.process.stdColumns); + } + else { + return maxWidth; + } + } + let version = null; + self.version = ver => { + version = ver; + }; + self.showVersion = level => { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (!level) + level = 'error'; + const emit = typeof level === 'function' ? level : logger[level]; + emit(version); + }; + self.reset = function reset(localLookup) { + failMessage = null; + failureOutput = false; + usages = []; + usageDisabled = false; + epilogs = []; + examples = []; + commands = []; + descriptions = objFilter(descriptions, k => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions, + }); + }; + self.unfreeze = function unfreeze(defaultCommand = false) { + const frozen = frozens.pop(); + if (!frozen) + return; + if (defaultCommand) { + descriptions = { ...frozen.descriptions, ...descriptions }; + commands = [...frozen.commands, ...commands]; + usages = [...frozen.usages, ...usages]; + examples = [...frozen.examples, ...examples]; + epilogs = [...frozen.epilogs, ...epilogs]; + } + else { + ({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions, + } = frozen); + } + }; + return self; +} +function isIndentedText(text) { + return typeof text === 'object'; +} +function addIndentation(text, indent) { + return isIndentedText(text) + ? { text: text.text, indentation: text.indentation + indent } + : { text, indentation: indent }; +} +function getIndentation(text) { + return isIndentedText(text) ? text.indentation : 0; +} +function getText(text) { + return isIndentedText(text) ? text.text : text; +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/apply-extends.js b/mybulma/node_modules/yargs/build/lib/utils/apply-extends.js new file mode 100644 index 0000000..0e593b4 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/apply-extends.js @@ -0,0 +1,59 @@ +import { YError } from '../yerror.js'; +let previouslyVisitedConfigs = []; +let shim; +export function applyExtends(config, cwd, mergeExtends, _shim) { + shim = _shim; + let defaultConfig = {}; + if (Object.prototype.hasOwnProperty.call(config, 'extends')) { + if (typeof config.extends !== 'string') + return defaultConfig; + const isPath = /\.json|\..*rc$/.test(config.extends); + let pathToDefault = null; + if (!isPath) { + try { + pathToDefault = require.resolve(config.extends); + } + catch (_err) { + return config; + } + } + else { + pathToDefault = getPathToDefaultConfig(cwd, config.extends); + } + checkForCircularExtends(pathToDefault); + previouslyVisitedConfigs.push(pathToDefault); + defaultConfig = isPath + ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8')) + : require(config.extends); + delete config.extends; + defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim); + } + previouslyVisitedConfigs = []; + return mergeExtends + ? mergeDeep(defaultConfig, config) + : Object.assign({}, defaultConfig, config); +} +function checkForCircularExtends(cfgPath) { + if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { + throw new YError(`Circular extended configurations: '${cfgPath}'.`); + } +} +function getPathToDefaultConfig(cwd, pathToExtend) { + return shim.path.resolve(cwd, pathToExtend); +} +function mergeDeep(config1, config2) { + const target = {}; + function isObject(obj) { + return obj && typeof obj === 'object' && !Array.isArray(obj); + } + Object.assign(target, config1); + for (const key of Object.keys(config2)) { + if (isObject(config2[key]) && isObject(target[key])) { + target[key] = mergeDeep(config1[key], config2[key]); + } + else { + target[key] = config2[key]; + } + } + return target; +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/is-promise.js b/mybulma/node_modules/yargs/build/lib/utils/is-promise.js new file mode 100644 index 0000000..d250c08 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/is-promise.js @@ -0,0 +1,5 @@ +export function isPromise(maybePromise) { + return (!!maybePromise && + !!maybePromise.then && + typeof maybePromise.then === 'function'); +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/levenshtein.js b/mybulma/node_modules/yargs/build/lib/utils/levenshtein.js new file mode 100644 index 0000000..60575ef --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/levenshtein.js @@ -0,0 +1,34 @@ +export function levenshtein(a, b) { + if (a.length === 0) + return b.length; + if (b.length === 0) + return a.length; + const matrix = []; + let i; + for (i = 0; i <= b.length; i++) { + matrix[i] = [i]; + } + let j; + for (j = 0; j <= a.length; j++) { + matrix[0][j] = j; + } + for (i = 1; i <= b.length; i++) { + for (j = 1; j <= a.length; j++) { + if (b.charAt(i - 1) === a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } + else { + if (i > 1 && + j > 1 && + b.charAt(i - 2) === a.charAt(j - 1) && + b.charAt(i - 1) === a.charAt(j - 2)) { + matrix[i][j] = matrix[i - 2][j - 2] + 1; + } + else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); + } + } + } + } + return matrix[b.length][a.length]; +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/maybe-async-result.js b/mybulma/node_modules/yargs/build/lib/utils/maybe-async-result.js new file mode 100644 index 0000000..8c6a40c --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/maybe-async-result.js @@ -0,0 +1,17 @@ +import { isPromise } from './is-promise.js'; +export function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => { + throw err; +}) { + try { + const result = isFunction(getResult) ? getResult() : getResult; + return isPromise(result) + ? result.then((result) => resultHandler(result)) + : resultHandler(result); + } + catch (err) { + return errorHandler(err); + } +} +function isFunction(arg) { + return typeof arg === 'function'; +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/obj-filter.js b/mybulma/node_modules/yargs/build/lib/utils/obj-filter.js new file mode 100644 index 0000000..cd68ad2 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/obj-filter.js @@ -0,0 +1,10 @@ +import { objectKeys } from '../typings/common-types.js'; +export function objFilter(original = {}, filter = () => true) { + const obj = {}; + objectKeys(original).forEach(key => { + if (filter(key, original[key])) { + obj[key] = original[key]; + } + }); + return obj; +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/process-argv.js b/mybulma/node_modules/yargs/build/lib/utils/process-argv.js new file mode 100644 index 0000000..74dc9e4 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/process-argv.js @@ -0,0 +1,17 @@ +function getProcessArgvBinIndex() { + if (isBundledElectronApp()) + return 0; + return 1; +} +function isBundledElectronApp() { + return isElectronApp() && !process.defaultApp; +} +function isElectronApp() { + return !!process.versions.electron; +} +export function hideBin(argv) { + return argv.slice(getProcessArgvBinIndex() + 1); +} +export function getProcessArgvBin() { + return process.argv[getProcessArgvBinIndex()]; +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/set-blocking.js b/mybulma/node_modules/yargs/build/lib/utils/set-blocking.js new file mode 100644 index 0000000..88fb806 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/set-blocking.js @@ -0,0 +1,12 @@ +export default function setBlocking(blocking) { + if (typeof process === 'undefined') + return; + [process.stdout, process.stderr].forEach(_stream => { + const stream = _stream; + if (stream._handle && + stream.isTTY && + typeof stream._handle.setBlocking === 'function') { + stream._handle.setBlocking(blocking); + } + }); +} diff --git a/mybulma/node_modules/yargs/build/lib/utils/which-module.js b/mybulma/node_modules/yargs/build/lib/utils/which-module.js new file mode 100644 index 0000000..5974e22 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/utils/which-module.js @@ -0,0 +1,10 @@ +export default function whichModule(exported) { + if (typeof require === 'undefined') + return null; + for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) { + mod = require.cache[files[i]]; + if (mod.exports === exported) + return mod; + } + return null; +} diff --git a/mybulma/node_modules/yargs/build/lib/validation.js b/mybulma/node_modules/yargs/build/lib/validation.js new file mode 100644 index 0000000..bd2e1b8 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/validation.js @@ -0,0 +1,305 @@ +import { argsert } from './argsert.js'; +import { assertNotStrictEqual, } from './typings/common-types.js'; +import { levenshtein as distance } from './utils/levenshtein.js'; +import { objFilter } from './utils/obj-filter.js'; +const specialKeys = ['$0', '--', '_']; +export function validation(yargs, usage, shim) { + const __ = shim.y18n.__; + const __n = shim.y18n.__n; + const self = {}; + self.nonOptionCount = function nonOptionCount(argv) { + const demandedCommands = yargs.getDemandedCommands(); + const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0); + const _s = positionalCount - yargs.getInternalMethods().getContext().commands.length; + if (demandedCommands._ && + (_s < demandedCommands._.min || _s > demandedCommands._.max)) { + if (_s < demandedCommands._.min) { + if (demandedCommands._.minMsg !== undefined) { + usage.fail(demandedCommands._.minMsg + ? demandedCommands._.minMsg + .replace(/\$0/g, _s.toString()) + .replace(/\$1/, demandedCommands._.min.toString()) + : null); + } + else { + usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString())); + } + } + else if (_s > demandedCommands._.max) { + if (demandedCommands._.maxMsg !== undefined) { + usage.fail(demandedCommands._.maxMsg + ? demandedCommands._.maxMsg + .replace(/\$0/g, _s.toString()) + .replace(/\$1/, demandedCommands._.max.toString()) + : null); + } + else { + usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString())); + } + } + } + }; + self.positionalCount = function positionalCount(required, observed) { + if (observed < required) { + usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + '')); + } + }; + self.requiredArguments = function requiredArguments(argv, demandedOptions) { + let missing = null; + for (const key of Object.keys(demandedOptions)) { + if (!Object.prototype.hasOwnProperty.call(argv, key) || + typeof argv[key] === 'undefined') { + missing = missing || {}; + missing[key] = demandedOptions[key]; + } + } + if (missing) { + const customMsgs = []; + for (const key of Object.keys(missing)) { + const msg = missing[key]; + if (msg && customMsgs.indexOf(msg) < 0) { + customMsgs.push(msg); + } + } + const customMsg = customMsgs.length ? `\n${customMsgs.join('\n')}` : ''; + usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg)); + } + }; + self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { + var _a; + const commandKeys = yargs + .getInternalMethods() + .getCommandInstance() + .getCommands(); + const unknown = []; + const currentContext = yargs.getInternalMethods().getContext(); + Object.keys(argv).forEach(key => { + if (!specialKeys.includes(key) && + !Object.prototype.hasOwnProperty.call(positionalMap, key) && + !Object.prototype.hasOwnProperty.call(yargs.getInternalMethods().getParseContext(), key) && + !self.isValidAndSomeAliasIsNotNew(key, aliases)) { + unknown.push(key); + } + }); + if (checkPositionals && + (currentContext.commands.length > 0 || + commandKeys.length > 0 || + isDefaultCommand)) { + argv._.slice(currentContext.commands.length).forEach(key => { + if (!commandKeys.includes('' + key)) { + unknown.push('' + key); + } + }); + } + if (checkPositionals) { + const demandedCommands = yargs.getDemandedCommands(); + const maxNonOptDemanded = ((_a = demandedCommands._) === null || _a === void 0 ? void 0 : _a.max) || 0; + const expected = currentContext.commands.length + maxNonOptDemanded; + if (expected < argv._.length) { + argv._.slice(expected).forEach(key => { + key = String(key); + if (!currentContext.commands.includes(key) && + !unknown.includes(key)) { + unknown.push(key); + } + }); + } + } + if (unknown.length) { + usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.map(s => (s.trim() ? s : `"${s}"`)).join(', '))); + } + }; + self.unknownCommands = function unknownCommands(argv) { + const commandKeys = yargs + .getInternalMethods() + .getCommandInstance() + .getCommands(); + const unknown = []; + const currentContext = yargs.getInternalMethods().getContext(); + if (currentContext.commands.length > 0 || commandKeys.length > 0) { + argv._.slice(currentContext.commands.length).forEach(key => { + if (!commandKeys.includes('' + key)) { + unknown.push('' + key); + } + }); + } + if (unknown.length > 0) { + usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', '))); + return true; + } + else { + return false; + } + }; + self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { + if (!Object.prototype.hasOwnProperty.call(aliases, key)) { + return false; + } + const newAliases = yargs.parsed.newAliases; + return [key, ...aliases[key]].some(a => !Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]); + }; + self.limitedChoices = function limitedChoices(argv) { + const options = yargs.getOptions(); + const invalid = {}; + if (!Object.keys(options.choices).length) + return; + Object.keys(argv).forEach(key => { + if (specialKeys.indexOf(key) === -1 && + Object.prototype.hasOwnProperty.call(options.choices, key)) { + [].concat(argv[key]).forEach(value => { + if (options.choices[key].indexOf(value) === -1 && + value !== undefined) { + invalid[key] = (invalid[key] || []).concat(value); + } + }); + } + }); + const invalidKeys = Object.keys(invalid); + if (!invalidKeys.length) + return; + let msg = __('Invalid values:'); + invalidKeys.forEach(key => { + msg += `\n ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`; + }); + usage.fail(msg); + }; + let implied = {}; + self.implies = function implies(key, value) { + argsert(' [array|number|string]', [key, value], arguments.length); + if (typeof key === 'object') { + Object.keys(key).forEach(k => { + self.implies(k, key[k]); + }); + } + else { + yargs.global(key); + if (!implied[key]) { + implied[key] = []; + } + if (Array.isArray(value)) { + value.forEach(i => self.implies(key, i)); + } + else { + assertNotStrictEqual(value, undefined, shim); + implied[key].push(value); + } + } + }; + self.getImplied = function getImplied() { + return implied; + }; + function keyExists(argv, val) { + const num = Number(val); + val = isNaN(num) ? val : num; + if (typeof val === 'number') { + val = argv._.length >= val; + } + else if (val.match(/^--no-.+/)) { + val = val.match(/^--no-(.+)/)[1]; + val = !Object.prototype.hasOwnProperty.call(argv, val); + } + else { + val = Object.prototype.hasOwnProperty.call(argv, val); + } + return val; + } + self.implications = function implications(argv) { + const implyFail = []; + Object.keys(implied).forEach(key => { + const origKey = key; + (implied[key] || []).forEach(value => { + let key = origKey; + const origValue = value; + key = keyExists(argv, key); + value = keyExists(argv, value); + if (key && !value) { + implyFail.push(` ${origKey} -> ${origValue}`); + } + }); + }); + if (implyFail.length) { + let msg = `${__('Implications failed:')}\n`; + implyFail.forEach(value => { + msg += value; + }); + usage.fail(msg); + } + }; + let conflicting = {}; + self.conflicts = function conflicts(key, value) { + argsert(' [array|string]', [key, value], arguments.length); + if (typeof key === 'object') { + Object.keys(key).forEach(k => { + self.conflicts(k, key[k]); + }); + } + else { + yargs.global(key); + if (!conflicting[key]) { + conflicting[key] = []; + } + if (Array.isArray(value)) { + value.forEach(i => self.conflicts(key, i)); + } + else { + conflicting[key].push(value); + } + } + }; + self.getConflicting = () => conflicting; + self.conflicting = function conflictingFn(argv) { + Object.keys(argv).forEach(key => { + if (conflicting[key]) { + conflicting[key].forEach(value => { + if (value && argv[key] !== undefined && argv[value] !== undefined) { + usage.fail(__('Arguments %s and %s are mutually exclusive', key, value)); + } + }); + } + }); + if (yargs.getInternalMethods().getParserConfiguration()['strip-dashed']) { + Object.keys(conflicting).forEach(key => { + conflicting[key].forEach(value => { + if (value && + argv[shim.Parser.camelCase(key)] !== undefined && + argv[shim.Parser.camelCase(value)] !== undefined) { + usage.fail(__('Arguments %s and %s are mutually exclusive', key, value)); + } + }); + }); + } + }; + self.recommendCommands = function recommendCommands(cmd, potentialCommands) { + const threshold = 3; + potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); + let recommended = null; + let bestDistance = Infinity; + for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) { + const d = distance(cmd, candidate); + if (d <= threshold && d < bestDistance) { + bestDistance = d; + recommended = candidate; + } + } + if (recommended) + usage.fail(__('Did you mean %s?', recommended)); + }; + self.reset = function reset(localLookup) { + implied = objFilter(implied, k => !localLookup[k]); + conflicting = objFilter(conflicting, k => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + implied, + conflicting, + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim); + ({ implied, conflicting } = frozen); + }; + return self; +} diff --git a/mybulma/node_modules/yargs/build/lib/yargs-factory.js b/mybulma/node_modules/yargs/build/lib/yargs-factory.js new file mode 100644 index 0000000..db8a96d --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/yargs-factory.js @@ -0,0 +1,1501 @@ +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _YargsInstance_command, _YargsInstance_cwd, _YargsInstance_context, _YargsInstance_completion, _YargsInstance_completionCommand, _YargsInstance_defaultShowHiddenOpt, _YargsInstance_exitError, _YargsInstance_detectLocale, _YargsInstance_emittedWarnings, _YargsInstance_exitProcess, _YargsInstance_frozens, _YargsInstance_globalMiddleware, _YargsInstance_groups, _YargsInstance_hasOutput, _YargsInstance_helpOpt, _YargsInstance_isGlobalContext, _YargsInstance_logger, _YargsInstance_output, _YargsInstance_options, _YargsInstance_parentRequire, _YargsInstance_parserConfig, _YargsInstance_parseFn, _YargsInstance_parseContext, _YargsInstance_pkgs, _YargsInstance_preservedGroups, _YargsInstance_processArgs, _YargsInstance_recommendCommands, _YargsInstance_shim, _YargsInstance_strict, _YargsInstance_strictCommands, _YargsInstance_strictOptions, _YargsInstance_usage, _YargsInstance_versionOpt, _YargsInstance_validation; +import { command as Command, } from './command.js'; +import { assertNotStrictEqual, assertSingleKey, objectKeys, } from './typings/common-types.js'; +import { YError } from './yerror.js'; +import { usage as Usage } from './usage.js'; +import { argsert } from './argsert.js'; +import { completion as Completion, } from './completion.js'; +import { validation as Validation, } from './validation.js'; +import { objFilter } from './utils/obj-filter.js'; +import { applyExtends } from './utils/apply-extends.js'; +import { applyMiddleware, GlobalMiddleware, } from './middleware.js'; +import { isPromise } from './utils/is-promise.js'; +import { maybeAsyncResult } from './utils/maybe-async-result.js'; +import setBlocking from './utils/set-blocking.js'; +export function YargsFactory(_shim) { + return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => { + const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim); + Object.defineProperty(yargs, 'argv', { + get: () => { + return yargs.parse(); + }, + enumerable: true, + }); + yargs.help(); + yargs.version(); + return yargs; + }; +} +const kCopyDoubleDash = Symbol('copyDoubleDash'); +const kCreateLogger = Symbol('copyDoubleDash'); +const kDeleteFromParserHintObject = Symbol('deleteFromParserHintObject'); +const kEmitWarning = Symbol('emitWarning'); +const kFreeze = Symbol('freeze'); +const kGetDollarZero = Symbol('getDollarZero'); +const kGetParserConfiguration = Symbol('getParserConfiguration'); +const kGuessLocale = Symbol('guessLocale'); +const kGuessVersion = Symbol('guessVersion'); +const kParsePositionalNumbers = Symbol('parsePositionalNumbers'); +const kPkgUp = Symbol('pkgUp'); +const kPopulateParserHintArray = Symbol('populateParserHintArray'); +const kPopulateParserHintSingleValueDictionary = Symbol('populateParserHintSingleValueDictionary'); +const kPopulateParserHintArrayDictionary = Symbol('populateParserHintArrayDictionary'); +const kPopulateParserHintDictionary = Symbol('populateParserHintDictionary'); +const kSanitizeKey = Symbol('sanitizeKey'); +const kSetKey = Symbol('setKey'); +const kUnfreeze = Symbol('unfreeze'); +const kValidateAsync = Symbol('validateAsync'); +const kGetCommandInstance = Symbol('getCommandInstance'); +const kGetContext = Symbol('getContext'); +const kGetHasOutput = Symbol('getHasOutput'); +const kGetLoggerInstance = Symbol('getLoggerInstance'); +const kGetParseContext = Symbol('getParseContext'); +const kGetUsageInstance = Symbol('getUsageInstance'); +const kGetValidationInstance = Symbol('getValidationInstance'); +const kHasParseCallback = Symbol('hasParseCallback'); +const kIsGlobalContext = Symbol('isGlobalContext'); +const kPostProcess = Symbol('postProcess'); +const kRebase = Symbol('rebase'); +const kReset = Symbol('reset'); +const kRunYargsParserAndExecuteCommands = Symbol('runYargsParserAndExecuteCommands'); +const kRunValidation = Symbol('runValidation'); +const kSetHasOutput = Symbol('setHasOutput'); +const kTrackManuallySetKeys = Symbol('kTrackManuallySetKeys'); +export class YargsInstance { + constructor(processArgs = [], cwd, parentRequire, shim) { + this.customScriptName = false; + this.parsed = false; + _YargsInstance_command.set(this, void 0); + _YargsInstance_cwd.set(this, void 0); + _YargsInstance_context.set(this, { commands: [], fullCommands: [] }); + _YargsInstance_completion.set(this, null); + _YargsInstance_completionCommand.set(this, null); + _YargsInstance_defaultShowHiddenOpt.set(this, 'show-hidden'); + _YargsInstance_exitError.set(this, null); + _YargsInstance_detectLocale.set(this, true); + _YargsInstance_emittedWarnings.set(this, {}); + _YargsInstance_exitProcess.set(this, true); + _YargsInstance_frozens.set(this, []); + _YargsInstance_globalMiddleware.set(this, void 0); + _YargsInstance_groups.set(this, {}); + _YargsInstance_hasOutput.set(this, false); + _YargsInstance_helpOpt.set(this, null); + _YargsInstance_isGlobalContext.set(this, true); + _YargsInstance_logger.set(this, void 0); + _YargsInstance_output.set(this, ''); + _YargsInstance_options.set(this, void 0); + _YargsInstance_parentRequire.set(this, void 0); + _YargsInstance_parserConfig.set(this, {}); + _YargsInstance_parseFn.set(this, null); + _YargsInstance_parseContext.set(this, null); + _YargsInstance_pkgs.set(this, {}); + _YargsInstance_preservedGroups.set(this, {}); + _YargsInstance_processArgs.set(this, void 0); + _YargsInstance_recommendCommands.set(this, false); + _YargsInstance_shim.set(this, void 0); + _YargsInstance_strict.set(this, false); + _YargsInstance_strictCommands.set(this, false); + _YargsInstance_strictOptions.set(this, false); + _YargsInstance_usage.set(this, void 0); + _YargsInstance_versionOpt.set(this, null); + _YargsInstance_validation.set(this, void 0); + __classPrivateFieldSet(this, _YargsInstance_shim, shim, "f"); + __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, "f"); + __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, "f"); + __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, "f"); + __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), "f"); + this.$0 = this[kGetDollarZero](); + this[kReset](); + __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f"), "f"); + __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); + __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), "f"); + } + addHelpOpt(opt, msg) { + const defaultHelpOpt = 'help'; + argsert('[string|boolean] [string]', [opt, msg], arguments.length); + if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { + this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); + __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, "f"); + } + if (opt === false && msg === undefined) + return this; + __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === 'string' ? opt : defaultHelpOpt, "f"); + this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); + this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Show help')); + return this; + } + help(opt, msg) { + return this.addHelpOpt(opt, msg); + } + addShowHiddenOpt(opt, msg) { + argsert('[string|boolean] [string]', [opt, msg], arguments.length); + if (opt === false && msg === undefined) + return this; + const showHiddenOpt = typeof opt === 'string' ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); + this.boolean(showHiddenOpt); + this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Show hidden options')); + __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = showHiddenOpt; + return this; + } + showHidden(opt, msg) { + return this.addShowHiddenOpt(opt, msg); + } + alias(key, value) { + argsert(' [string|array]', [key, value], arguments.length); + this[kPopulateParserHintArrayDictionary](this.alias.bind(this), 'alias', key, value); + return this; + } + array(keys) { + argsert('', [keys], arguments.length); + this[kPopulateParserHintArray]('array', keys); + this[kTrackManuallySetKeys](keys); + return this; + } + boolean(keys) { + argsert('', [keys], arguments.length); + this[kPopulateParserHintArray]('boolean', keys); + this[kTrackManuallySetKeys](keys); + return this; + } + check(f, global) { + argsert(' [boolean]', [f, global], arguments.length); + this.middleware((argv, _yargs) => { + return maybeAsyncResult(() => { + return f(argv, _yargs.getOptions()); + }, (result) => { + if (!result) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(__classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__('Argument check failed: %s', f.toString())); + } + else if (typeof result === 'string' || result instanceof Error) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(result.toString(), result); + } + return argv; + }, (err) => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message ? err.message : err.toString(), err); + return argv; + }); + }, false, global); + return this; + } + choices(key, value) { + argsert(' [string|array]', [key, value], arguments.length); + this[kPopulateParserHintArrayDictionary](this.choices.bind(this), 'choices', key, value); + return this; + } + coerce(keys, value) { + argsert(' [function]', [keys, value], arguments.length); + if (Array.isArray(keys)) { + if (!value) { + throw new YError('coerce callback must be provided'); + } + for (const key of keys) { + this.coerce(key, value); + } + return this; + } + else if (typeof keys === 'object') { + for (const key of Object.keys(keys)) { + this.coerce(key, keys[key]); + } + return this; + } + if (!value) { + throw new YError('coerce callback must be provided'); + } + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true; + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addCoerceMiddleware((argv, yargs) => { + let aliases; + const shouldCoerce = Object.prototype.hasOwnProperty.call(argv, keys); + if (!shouldCoerce) { + return argv; + } + return maybeAsyncResult(() => { + aliases = yargs.getAliases(); + return value(argv[keys]); + }, (result) => { + argv[keys] = result; + const stripAliased = yargs + .getInternalMethods() + .getParserConfiguration()['strip-aliased']; + if (aliases[keys] && stripAliased !== true) { + for (const alias of aliases[keys]) { + argv[alias] = result; + } + } + return argv; + }, (err) => { + throw new YError(err.message); + }); + }, keys); + return this; + } + conflicts(key1, key2) { + argsert(' [string|array]', [key1, key2], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicts(key1, key2); + return this; + } + config(key = 'config', msg, parseFn) { + argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length); + if (typeof key === 'object' && !Array.isArray(key)) { + key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(key); + return this; + } + if (typeof msg === 'function') { + parseFn = msg; + msg = undefined; + } + this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Path to JSON config file')); + (Array.isArray(key) ? key : [key]).forEach(k => { + __classPrivateFieldGet(this, _YargsInstance_options, "f").config[k] = parseFn || true; + }); + return this; + } + completion(cmd, desc, fn) { + argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length); + if (typeof desc === 'function') { + fn = desc; + desc = undefined; + } + __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || 'completion', "f"); + if (!desc && desc !== false) { + desc = 'generate completion script'; + } + this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), desc); + if (fn) + __classPrivateFieldGet(this, _YargsInstance_completion, "f").registerFunction(fn); + return this; + } + command(cmd, description, builder, handler, middlewares, deprecated) { + argsert(' [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_command, "f").addHandler(cmd, description, builder, handler, middlewares, deprecated); + return this; + } + commands(cmd, description, builder, handler, middlewares, deprecated) { + return this.command(cmd, description, builder, handler, middlewares, deprecated); + } + commandDir(dir, opts) { + argsert(' [object]', [dir, opts], arguments.length); + const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, "f") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").require; + __classPrivateFieldGet(this, _YargsInstance_command, "f").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, "f").getCallerFile(), opts); + return this; + } + count(keys) { + argsert('', [keys], arguments.length); + this[kPopulateParserHintArray]('count', keys); + this[kTrackManuallySetKeys](keys); + return this; + } + default(key, value, defaultDescription) { + argsert(' [*] [string]', [key, value, defaultDescription], arguments.length); + if (defaultDescription) { + assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = defaultDescription; + } + if (typeof value === 'function') { + assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key]) + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = + __classPrivateFieldGet(this, _YargsInstance_usage, "f").functionDescription(value); + value = value.call(); + } + this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), 'default', key, value); + return this; + } + defaults(key, value, defaultDescription) { + return this.default(key, value, defaultDescription); + } + demandCommand(min = 1, max, minMsg, maxMsg) { + argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length); + if (typeof max !== 'number') { + minMsg = max; + max = Infinity; + } + this.global('_', false); + __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands._ = { + min, + max, + minMsg, + maxMsg, + }; + return this; + } + demand(keys, max, msg) { + if (Array.isArray(max)) { + max.forEach(key => { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandOption(key, msg); + }); + max = Infinity; + } + else if (typeof max !== 'number') { + msg = max; + max = Infinity; + } + if (typeof keys === 'number') { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandCommand(keys, max, msg, msg); + } + else if (Array.isArray(keys)) { + keys.forEach(key => { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandOption(key, msg); + }); + } + else { + if (typeof msg === 'string') { + this.demandOption(keys, msg); + } + else if (msg === true || typeof msg === 'undefined') { + this.demandOption(keys); + } + } + return this; + } + demandOption(keys, msg) { + argsert(' [string]', [keys, msg], arguments.length); + this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), 'demandedOptions', keys, msg); + return this; + } + deprecateOption(option, message) { + argsert(' [string|boolean]', [option, message], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions[option] = message; + return this; + } + describe(keys, description) { + argsert(' [string]', [keys, description], arguments.length); + this[kSetKey](keys, true); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").describe(keys, description); + return this; + } + detectLocale(detect) { + argsert('', [detect], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect, "f"); + return this; + } + env(prefix) { + argsert('[string|boolean]', [prefix], arguments.length); + if (prefix === false) + delete __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; + else + __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix = prefix || ''; + return this; + } + epilogue(msg) { + argsert('', [msg], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").epilog(msg); + return this; + } + epilog(msg) { + return this.epilogue(msg); + } + example(cmd, description) { + argsert(' [string]', [cmd, description], arguments.length); + if (Array.isArray(cmd)) { + cmd.forEach(exampleParams => this.example(...exampleParams)); + } + else { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").example(cmd, description); + } + return this; + } + exit(code, err) { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + __classPrivateFieldSet(this, _YargsInstance_exitError, err, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.exit(code); + } + exitProcess(enabled = true) { + argsert('[boolean]', [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, "f"); + return this; + } + fail(f) { + argsert('', [f], arguments.length); + if (typeof f === 'boolean' && f !== false) { + throw new YError("Invalid first argument. Expected function or boolean 'false'"); + } + __classPrivateFieldGet(this, _YargsInstance_usage, "f").failFn(f); + return this; + } + getAliases() { + return this.parsed ? this.parsed.aliases : {}; + } + async getCompletion(args, done) { + argsert(' [function]', [args, done], arguments.length); + if (!done) { + return new Promise((resolve, reject) => { + __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, (err, completions) => { + if (err) + reject(err); + else + resolve(completions); + }); + }); + } + else { + return __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, done); + } + } + getDemandedOptions() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedOptions; + } + getDemandedCommands() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands; + } + getDeprecatedOptions() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions; + } + getDetectLocale() { + return __classPrivateFieldGet(this, _YargsInstance_detectLocale, "f"); + } + getExitProcess() { + return __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"); + } + getGroups() { + return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, "f"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")); + } + getHelp() { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true); + if (isPromise(parse)) { + return parse.then(() => { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); + }); + } + } + const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); + if (isPromise(builderResponse)) { + return builderResponse.then(() => { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); + }); + } + } + return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, "f").help()); + } + getOptions() { + return __classPrivateFieldGet(this, _YargsInstance_options, "f"); + } + getStrict() { + return __classPrivateFieldGet(this, _YargsInstance_strict, "f"); + } + getStrictCommands() { + return __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"); + } + getStrictOptions() { + return __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"); + } + global(globals, global) { + argsert(' [boolean]', [globals, global], arguments.length); + globals = [].concat(globals); + if (global !== false) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local.filter(l => globals.indexOf(l) === -1); + } + else { + globals.forEach(g => { + if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").local.includes(g)) + __classPrivateFieldGet(this, _YargsInstance_options, "f").local.push(g); + }); + } + return this; + } + group(opts, groupName) { + argsert(' ', [opts, groupName], arguments.length); + const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName]; + if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]) { + delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]; + } + const seen = {}; + __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName] = (existing || []).concat(opts).filter(key => { + if (seen[key]) + return false; + return (seen[key] = true); + }); + return this; + } + hide(key) { + argsert('', [key], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_options, "f").hiddenOptions.push(key); + return this; + } + implies(key, value) { + argsert(' [number|string|array]', [key, value], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").implies(key, value); + return this; + } + locale(locale) { + argsert('[string]', [locale], arguments.length); + if (locale === undefined) { + this[kGuessLocale](); + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.getLocale(); + } + __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); + __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.setLocale(locale); + return this; + } + middleware(callback, applyBeforeValidation, global) { + return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addMiddleware(callback, !!applyBeforeValidation, global); + } + nargs(key, value) { + argsert(' [number]', [key, value], arguments.length); + this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), 'narg', key, value); + return this; + } + normalize(keys) { + argsert('', [keys], arguments.length); + this[kPopulateParserHintArray]('normalize', keys); + return this; + } + number(keys) { + argsert('', [keys], arguments.length); + this[kPopulateParserHintArray]('number', keys); + this[kTrackManuallySetKeys](keys); + return this; + } + option(key, opt) { + argsert(' [object]', [key, opt], arguments.length); + if (typeof key === 'object') { + Object.keys(key).forEach(k => { + this.options(k, key[k]); + }); + } + else { + if (typeof opt !== 'object') { + opt = {}; + } + this[kTrackManuallySetKeys](key); + if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && (key === 'version' || (opt === null || opt === void 0 ? void 0 : opt.alias) === 'version')) { + this[kEmitWarning]([ + '"version" is a reserved word.', + 'Please do one of the following:', + '- Disable version with `yargs.version(false)` if using "version" as an option', + '- Use the built-in `yargs.version` method instead (if applicable)', + '- Use a different option key', + 'https://yargs.js.org/docs/#api-reference-version', + ].join('\n'), undefined, 'versionWarning'); + } + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[key] = true; + if (opt.alias) + this.alias(key, opt.alias); + const deprecate = opt.deprecate || opt.deprecated; + if (deprecate) { + this.deprecateOption(key, deprecate); + } + const demand = opt.demand || opt.required || opt.require; + if (demand) { + this.demand(key, demand); + } + if (opt.demandOption) { + this.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined); + } + if (opt.conflicts) { + this.conflicts(key, opt.conflicts); + } + if ('default' in opt) { + this.default(key, opt.default); + } + if (opt.implies !== undefined) { + this.implies(key, opt.implies); + } + if (opt.nargs !== undefined) { + this.nargs(key, opt.nargs); + } + if (opt.config) { + this.config(key, opt.configParser); + } + if (opt.normalize) { + this.normalize(key); + } + if (opt.choices) { + this.choices(key, opt.choices); + } + if (opt.coerce) { + this.coerce(key, opt.coerce); + } + if (opt.group) { + this.group(key, opt.group); + } + if (opt.boolean || opt.type === 'boolean') { + this.boolean(key); + if (opt.alias) + this.boolean(opt.alias); + } + if (opt.array || opt.type === 'array') { + this.array(key); + if (opt.alias) + this.array(opt.alias); + } + if (opt.number || opt.type === 'number') { + this.number(key); + if (opt.alias) + this.number(opt.alias); + } + if (opt.string || opt.type === 'string') { + this.string(key); + if (opt.alias) + this.string(opt.alias); + } + if (opt.count || opt.type === 'count') { + this.count(key); + } + if (typeof opt.global === 'boolean') { + this.global(key, opt.global); + } + if (opt.defaultDescription) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = opt.defaultDescription; + } + if (opt.skipValidation) { + this.skipValidation(key); + } + const desc = opt.describe || opt.description || opt.desc; + const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions(); + if (!Object.prototype.hasOwnProperty.call(descriptions, key) || + typeof desc === 'string') { + this.describe(key, desc); + } + if (opt.hidden) { + this.hide(key); + } + if (opt.requiresArg) { + this.requiresArg(key); + } + } + return this; + } + options(key, opt) { + return this.option(key, opt); + } + parse(args, shortCircuit, _parseFn) { + argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length); + this[kFreeze](); + if (typeof args === 'undefined') { + args = __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); + } + if (typeof shortCircuit === 'object') { + __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, "f"); + shortCircuit = _parseFn; + } + if (typeof shortCircuit === 'function') { + __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, "f"); + shortCircuit = false; + } + if (!shortCircuit) + __classPrivateFieldSet(this, _YargsInstance_processArgs, args, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, "f"); + const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit); + const tmpParsed = this.parsed; + __classPrivateFieldGet(this, _YargsInstance_completion, "f").setParsed(this.parsed); + if (isPromise(parsed)) { + return parsed + .then(argv => { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + return argv; + }) + .catch(err => { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) { + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + } + throw err; + }) + .finally(() => { + this[kUnfreeze](); + this.parsed = tmpParsed; + }); + } + else { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + this[kUnfreeze](); + this.parsed = tmpParsed; + } + return parsed; + } + parseAsync(args, shortCircuit, _parseFn) { + const maybePromise = this.parse(args, shortCircuit, _parseFn); + return !isPromise(maybePromise) + ? Promise.resolve(maybePromise) + : maybePromise; + } + parseSync(args, shortCircuit, _parseFn) { + const maybePromise = this.parse(args, shortCircuit, _parseFn); + if (isPromise(maybePromise)) { + throw new YError('.parseSync() must not be used with asynchronous builders, handlers, or middleware'); + } + return maybePromise; + } + parserConfiguration(config) { + argsert('', [config], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, "f"); + return this; + } + pkgConf(key, rootPath) { + argsert(' [string]', [key, rootPath], arguments.length); + let conf = null; + const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f")); + if (obj[key] && typeof obj[key] === 'object') { + conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(conf); + } + return this; + } + positional(key, opts) { + argsert(' ', [key, opts], arguments.length); + const supportedOpts = [ + 'default', + 'defaultDescription', + 'implies', + 'normalize', + 'choices', + 'conflicts', + 'coerce', + 'type', + 'describe', + 'desc', + 'description', + 'alias', + ]; + opts = objFilter(opts, (k, v) => { + if (k === 'type' && !['string', 'number', 'boolean'].includes(v)) + return false; + return supportedOpts.includes(k); + }); + const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands.length - 1]; + const parseOptions = fullCommand + ? __classPrivateFieldGet(this, _YargsInstance_command, "f").cmdToParseOptions(fullCommand) + : { + array: [], + alias: {}, + default: {}, + demand: {}, + }; + objectKeys(parseOptions).forEach(pk => { + const parseOption = parseOptions[pk]; + if (Array.isArray(parseOption)) { + if (parseOption.indexOf(key) !== -1) + opts[pk] = true; + } + else { + if (parseOption[key] && !(pk in opts)) + opts[pk] = parseOption[key]; + } + }); + this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, "f").getPositionalGroupName()); + return this.option(key, opts); + } + recommendCommands(recommend = true) { + argsert('[boolean]', [recommend], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, "f"); + return this; + } + required(keys, max, msg) { + return this.demand(keys, max, msg); + } + require(keys, max, msg) { + return this.demand(keys, max, msg); + } + requiresArg(keys) { + argsert(' [number]', [keys], arguments.length); + if (typeof keys === 'string' && __classPrivateFieldGet(this, _YargsInstance_options, "f").narg[keys]) { + return this; + } + else { + this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), 'narg', keys, NaN); + } + return this; + } + showCompletionScript($0, cmd) { + argsert('[string] [string]', [$0, cmd], arguments.length); + $0 = $0 || this.$0; + __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(__classPrivateFieldGet(this, _YargsInstance_completion, "f").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || 'completion')); + return this; + } + showHelp(level) { + argsert('[string|function]', [level], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true); + if (isPromise(parse)) { + parse.then(() => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + }); + return this; + } + } + const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); + if (isPromise(builderResponse)) { + builderResponse.then(() => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + }); + return this; + } + } + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + return this; + } + scriptName(scriptName) { + this.customScriptName = true; + this.$0 = scriptName; + return this; + } + showHelpOnFail(enabled, message) { + argsert('[boolean|string] [string]', [enabled, message], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelpOnFail(enabled, message); + return this; + } + showVersion(level) { + argsert('[string|function]', [level], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion(level); + return this; + } + skipValidation(keys) { + argsert('', [keys], arguments.length); + this[kPopulateParserHintArray]('skipValidation', keys); + return this; + } + strict(enabled) { + argsert('[boolean]', [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, "f"); + return this; + } + strictCommands(enabled) { + argsert('[boolean]', [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, "f"); + return this; + } + strictOptions(enabled) { + argsert('[boolean]', [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, "f"); + return this; + } + string(keys) { + argsert('', [keys], arguments.length); + this[kPopulateParserHintArray]('string', keys); + this[kTrackManuallySetKeys](keys); + return this; + } + terminalWidth() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.stdColumns; + } + updateLocale(obj) { + return this.updateStrings(obj); + } + updateStrings(obj) { + argsert('', [obj], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); + __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.updateLocale(obj); + return this; + } + usage(msg, description, builder, handler) { + argsert(' [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length); + if (description !== undefined) { + assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + if ((msg || '').match(/^\$0( |$)/)) { + return this.command(msg, description, builder, handler); + } + else { + throw new YError('.usage() description must start with $0 if being used as alias for .command()'); + } + } + else { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").usage(msg); + return this; + } + } + version(opt, msg, ver) { + const defaultVersionOpt = 'version'; + argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length); + if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")) { + this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(undefined); + __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, "f"); + } + if (arguments.length === 0) { + ver = this[kGuessVersion](); + opt = defaultVersionOpt; + } + else if (arguments.length === 1) { + if (opt === false) { + return this; + } + ver = opt; + opt = defaultVersionOpt; + } + else if (arguments.length === 2) { + ver = msg; + msg = undefined; + } + __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === 'string' ? opt : defaultVersionOpt, "f"); + msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup('Show version number'); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(ver || undefined); + this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); + this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f"), msg); + return this; + } + wrap(cols) { + argsert('', [cols], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").wrap(cols); + return this; + } + [(_YargsInstance_command = new WeakMap(), _YargsInstance_cwd = new WeakMap(), _YargsInstance_context = new WeakMap(), _YargsInstance_completion = new WeakMap(), _YargsInstance_completionCommand = new WeakMap(), _YargsInstance_defaultShowHiddenOpt = new WeakMap(), _YargsInstance_exitError = new WeakMap(), _YargsInstance_detectLocale = new WeakMap(), _YargsInstance_emittedWarnings = new WeakMap(), _YargsInstance_exitProcess = new WeakMap(), _YargsInstance_frozens = new WeakMap(), _YargsInstance_globalMiddleware = new WeakMap(), _YargsInstance_groups = new WeakMap(), _YargsInstance_hasOutput = new WeakMap(), _YargsInstance_helpOpt = new WeakMap(), _YargsInstance_isGlobalContext = new WeakMap(), _YargsInstance_logger = new WeakMap(), _YargsInstance_output = new WeakMap(), _YargsInstance_options = new WeakMap(), _YargsInstance_parentRequire = new WeakMap(), _YargsInstance_parserConfig = new WeakMap(), _YargsInstance_parseFn = new WeakMap(), _YargsInstance_parseContext = new WeakMap(), _YargsInstance_pkgs = new WeakMap(), _YargsInstance_preservedGroups = new WeakMap(), _YargsInstance_processArgs = new WeakMap(), _YargsInstance_recommendCommands = new WeakMap(), _YargsInstance_shim = new WeakMap(), _YargsInstance_strict = new WeakMap(), _YargsInstance_strictCommands = new WeakMap(), _YargsInstance_strictOptions = new WeakMap(), _YargsInstance_usage = new WeakMap(), _YargsInstance_versionOpt = new WeakMap(), _YargsInstance_validation = new WeakMap(), kCopyDoubleDash)](argv) { + if (!argv._ || !argv['--']) + return argv; + argv._.push.apply(argv._, argv['--']); + try { + delete argv['--']; + } + catch (_err) { } + return argv; + } + [kCreateLogger]() { + return { + log: (...args) => { + if (!this[kHasParseCallback]()) + console.log(...args); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + '\n', "f"); + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(' '), "f"); + }, + error: (...args) => { + if (!this[kHasParseCallback]()) + console.error(...args); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + '\n', "f"); + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(' '), "f"); + }, + }; + } + [kDeleteFromParserHintObject](optionKey) { + objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, "f")).forEach((hintKey) => { + if (((key) => key === 'configObjects')(hintKey)) + return; + const hint = __classPrivateFieldGet(this, _YargsInstance_options, "f")[hintKey]; + if (Array.isArray(hint)) { + if (hint.includes(optionKey)) + hint.splice(hint.indexOf(optionKey), 1); + } + else if (typeof hint === 'object') { + delete hint[optionKey]; + } + }); + delete __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions()[optionKey]; + } + [kEmitWarning](warning, type, deduplicationId) { + if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId]) { + __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.emitWarning(warning, type); + __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId] = true; + } + } + [kFreeze]() { + __classPrivateFieldGet(this, _YargsInstance_frozens, "f").push({ + options: __classPrivateFieldGet(this, _YargsInstance_options, "f"), + configObjects: __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects.slice(0), + exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"), + groups: __classPrivateFieldGet(this, _YargsInstance_groups, "f"), + strict: __classPrivateFieldGet(this, _YargsInstance_strict, "f"), + strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"), + strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"), + completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), + output: __classPrivateFieldGet(this, _YargsInstance_output, "f"), + exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), + hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"), + parsed: this.parsed, + parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, "f"), + parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, "f"), + }); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_command, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").freeze(); + } + [kGetDollarZero]() { + let $0 = ''; + let default$0; + if (/\b(node|iojs|electron)(\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv()[0])) { + default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(1, 2); + } + else { + default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(0, 1); + } + $0 = default$0 + .map(x => { + const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, "f"), x); + return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x; + }) + .join(' ') + .trim(); + if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('_') && + __classPrivateFieldGet(this, _YargsInstance_shim, "f").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('_')) { + $0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f") + .getEnv('_') + .replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.execPath())}/`, ''); + } + return $0; + } + [kGetParserConfiguration]() { + return __classPrivateFieldGet(this, _YargsInstance_parserConfig, "f"); + } + [kGuessLocale]() { + if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, "f")) + return; + const locale = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LC_ALL') || + __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LC_MESSAGES') || + __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LANG') || + __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv('LANGUAGE') || + 'en_US'; + this.locale(locale.replace(/[.:].*/, '')); + } + [kGuessVersion]() { + const obj = this[kPkgUp](); + return obj.version || 'unknown'; + } + [kParsePositionalNumbers](argv) { + const args = argv['--'] ? argv['--'] : argv._; + for (let i = 0, arg; (arg = args[i]) !== undefined; i++) { + if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.looksLikeNumber(arg) && + Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { + args[i] = Number(arg); + } + } + return argv; + } + [kPkgUp](rootPath) { + const npath = rootPath || '*'; + if (__classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]) + return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; + let obj = {}; + try { + let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, "f").mainFilename; + if (!rootPath && __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.extname(startDir)) { + startDir = __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(startDir); + } + const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, "f").findUp(startDir, (dir, names) => { + if (names.includes('package.json')) { + return 'package.json'; + } + else { + return undefined; + } + }); + assertNotStrictEqual(pkgJsonPath, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, "f").readFileSync(pkgJsonPath, 'utf8')); + } + catch (_noop) { } + __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath] = obj || {}; + return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; + } + [kPopulateParserHintArray](type, keys) { + keys = [].concat(keys); + keys.forEach(key => { + key = this[kSanitizeKey](key); + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type].push(key); + }); + } + [kPopulateParserHintSingleValueDictionary](builder, type, key, value) { + this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type][key] = value; + }); + } + [kPopulateParserHintArrayDictionary](builder, type, key, value) { + this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type][key] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[type][key] || []).concat(value); + }); + } + [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) { + if (Array.isArray(key)) { + key.forEach(k => { + builder(k, value); + }); + } + else if (((key) => typeof key === 'object')(key)) { + for (const k of objectKeys(key)) { + builder(k, key[k]); + } + } + else { + singleKeyHandler(type, this[kSanitizeKey](key), value); + } + } + [kSanitizeKey](key) { + if (key === '__proto__') + return '___proto___'; + return key; + } + [kSetKey](key, set) { + this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), 'key', key, set); + return this; + } + [kUnfreeze]() { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; + const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, "f").pop(); + assertNotStrictEqual(frozen, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + let configObjects; + (_a = this, _b = this, _c = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, { + options: ({ set value(_o) { __classPrivateFieldSet(_a, _YargsInstance_options, _o, "f"); } }).value, + configObjects, + exitProcess: ({ set value(_o) { __classPrivateFieldSet(_b, _YargsInstance_exitProcess, _o, "f"); } }).value, + groups: ({ set value(_o) { __classPrivateFieldSet(_c, _YargsInstance_groups, _o, "f"); } }).value, + output: ({ set value(_o) { __classPrivateFieldSet(_d, _YargsInstance_output, _o, "f"); } }).value, + exitError: ({ set value(_o) { __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, "f"); } }).value, + hasOutput: ({ set value(_o) { __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, "f"); } }).value, + parsed: this.parsed, + strict: ({ set value(_o) { __classPrivateFieldSet(_g, _YargsInstance_strict, _o, "f"); } }).value, + strictCommands: ({ set value(_o) { __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, "f"); } }).value, + strictOptions: ({ set value(_o) { __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, "f"); } }).value, + completionCommand: ({ set value(_o) { __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, "f"); } }).value, + parseFn: ({ set value(_o) { __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, "f"); } }).value, + parseContext: ({ set value(_o) { __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, "f"); } }).value, + } = frozen); + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = configObjects; + __classPrivateFieldGet(this, _YargsInstance_usage, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_command, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").unfreeze(); + } + [kValidateAsync](validation, argv) { + return maybeAsyncResult(argv, result => { + validation(result); + return result; + }); + } + getInternalMethods() { + return { + getCommandInstance: this[kGetCommandInstance].bind(this), + getContext: this[kGetContext].bind(this), + getHasOutput: this[kGetHasOutput].bind(this), + getLoggerInstance: this[kGetLoggerInstance].bind(this), + getParseContext: this[kGetParseContext].bind(this), + getParserConfiguration: this[kGetParserConfiguration].bind(this), + getUsageInstance: this[kGetUsageInstance].bind(this), + getValidationInstance: this[kGetValidationInstance].bind(this), + hasParseCallback: this[kHasParseCallback].bind(this), + isGlobalContext: this[kIsGlobalContext].bind(this), + postProcess: this[kPostProcess].bind(this), + reset: this[kReset].bind(this), + runValidation: this[kRunValidation].bind(this), + runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this), + setHasOutput: this[kSetHasOutput].bind(this), + }; + } + [kGetCommandInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_command, "f"); + } + [kGetContext]() { + return __classPrivateFieldGet(this, _YargsInstance_context, "f"); + } + [kGetHasOutput]() { + return __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"); + } + [kGetLoggerInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_logger, "f"); + } + [kGetParseContext]() { + return __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") || {}; + } + [kGetUsageInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f"); + } + [kGetValidationInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_validation, "f"); + } + [kHasParseCallback]() { + return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, "f"); + } + [kIsGlobalContext]() { + return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, "f"); + } + [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) { + if (calledFromCommand) + return argv; + if (isPromise(argv)) + return argv; + if (!populateDoubleDash) { + argv = this[kCopyDoubleDash](argv); + } + const parsePositionalNumbers = this[kGetParserConfiguration]()['parse-positional-numbers'] || + this[kGetParserConfiguration]()['parse-positional-numbers'] === undefined; + if (parsePositionalNumbers) { + argv = this[kParsePositionalNumbers](argv); + } + if (runGlobalMiddleware) { + argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); + } + return argv; + } + [kReset](aliases = {}) { + __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f") || {}, "f"); + const tmpOptions = {}; + tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local || []; + tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []; + const localLookup = {}; + tmpOptions.local.forEach(l => { + localLookup[l] = true; + (aliases[l] || []).forEach(a => { + localLookup[a] = true; + }); + }); + Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, "f")).reduce((acc, groupName) => { + const keys = __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName].filter(key => !(key in localLookup)); + if (keys.length > 0) { + acc[groupName] = keys; + } + return acc; + }, {})); + __classPrivateFieldSet(this, _YargsInstance_groups, {}, "f"); + const arrayOptions = [ + 'array', + 'boolean', + 'string', + 'skipValidation', + 'count', + 'normalize', + 'number', + 'hiddenOptions', + ]; + const objectOptions = [ + 'narg', + 'key', + 'alias', + 'default', + 'defaultDescription', + 'config', + 'choices', + 'demandedOptions', + 'demandedCommands', + 'deprecatedOptions', + ]; + arrayOptions.forEach(k => { + tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[k] || []).filter((k) => !localLookup[k]); + }); + objectOptions.forEach((k) => { + tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, "f")[k], k => !localLookup[k]); + }); + tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; + __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, "f"); + __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f") + ? __classPrivateFieldGet(this, _YargsInstance_usage, "f").reset(localLookup) + : Usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f") + ? __classPrivateFieldGet(this, _YargsInstance_validation, "f").reset(localLookup) + : Validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f") + ? __classPrivateFieldGet(this, _YargsInstance_command, "f").reset() + : Command(__classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_validation, "f"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_completion, "f")) + __classPrivateFieldSet(this, _YargsInstance_completion, Completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_command, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").reset(); + __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, "f"); + __classPrivateFieldSet(this, _YargsInstance_output, '', "f"); + __classPrivateFieldSet(this, _YargsInstance_exitError, null, "f"); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, "f"); + this.parsed = false; + return this; + } + [kRebase](base, dir) { + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.relative(base, dir); + } + [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) { + let skipValidation = !!calledFromCommand || helpOnly; + args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); + __classPrivateFieldGet(this, _YargsInstance_options, "f").__ = __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__; + __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration = this[kGetParserConfiguration](); + const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, "f").configuration['populate--']; + const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration, { + 'populate--': true, + }); + const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f"), { + configuration: { 'parse-positional-numbers': false, ...config }, + })); + const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, "f")); + let argvPromise = undefined; + const aliases = parsed.aliases; + let helpOptSet = false; + let versionOptSet = false; + Object.keys(argv).forEach(key => { + if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, "f") && argv[key]) { + helpOptSet = true; + } + else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && argv[key]) { + versionOptSet = true; + } + }); + argv.$0 = this.$0; + this.parsed = parsed; + if (commandIndex === 0) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").clearCachedHelpMessage(); + } + try { + this[kGuessLocale](); + if (shortCircuit) { + return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false); + } + if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { + const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")] + .concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")] || []) + .filter(k => k.length > 1); + if (helpCmds.includes('' + argv._[argv._.length - 1])) { + argv._.pop(); + helpOptSet = true; + } + } + __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, "f"); + const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, "f").getCommands(); + const requestCompletions = __classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey in argv; + const skipRecommendation = helpOptSet || requestCompletions || helpOnly; + if (argv._.length) { + if (handlerKeys.length) { + let firstUnknownCommand; + for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) { + cmd = String(argv._[i]); + if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { + const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly); + return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); + } + else if (!firstUnknownCommand && + cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { + firstUnknownCommand = cmd; + break; + } + } + if (!__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && + __classPrivateFieldGet(this, _YargsInstance_recommendCommands, "f") && + firstUnknownCommand && + !skipRecommendation) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").recommendCommands(firstUnknownCommand, handlerKeys); + } + } + if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") && + argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) && + !requestCompletions) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + this.showCompletionScript(); + this.exit(0); + } + } + if (__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && !skipRecommendation) { + const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly); + return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); + } + if (requestCompletions) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + args = [].concat(args); + const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey}`) + 1); + __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(completionArgs, (err, completions) => { + if (err) + throw new YError(err.message); + (completions || []).forEach(completion => { + __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(completion); + }); + this.exit(0); + }); + return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false); + } + if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, "f")) { + if (helpOptSet) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + skipValidation = true; + this.showHelp('log'); + this.exit(0); + } + else if (versionOptSet) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + skipValidation = true; + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion('log'); + this.exit(0); + } + } + if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.length > 0) { + skipValidation = Object.keys(argv).some(key => __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.indexOf(key) >= 0 && argv[key] === true); + } + if (!skipValidation) { + if (parsed.error) + throw new YError(parsed.error.message); + if (!requestCompletions) { + const validation = this[kRunValidation](aliases, {}, parsed.error); + if (!calledFromCommand) { + argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), true); + } + argvPromise = this[kValidateAsync](validation, argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv); + if (isPromise(argvPromise) && !calledFromCommand) { + argvPromise = argvPromise.then(() => { + return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); + }); + } + } + } + } + catch (err) { + if (err instanceof YError) + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message, err); + else + throw err; + } + return this[kPostProcess](argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true); + } + [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) { + const demandedOptions = { ...this.getDemandedOptions() }; + return (argv) => { + if (parseErrors) + throw new YError(parseErrors.message); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").nonOptionCount(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").requiredArguments(argv, demandedOptions); + let failedStrictCommands = false; + if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, "f")) { + failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownCommands(argv); + } + if (__classPrivateFieldGet(this, _YargsInstance_strict, "f") && !failedStrictCommands) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand); + } + else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, "f")) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, {}, false, false); + } + __classPrivateFieldGet(this, _YargsInstance_validation, "f").limitedChoices(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").implications(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicting(argv); + }; + } + [kSetHasOutput]() { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + } + [kTrackManuallySetKeys](keys) { + if (typeof keys === 'string') { + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true; + } + else { + for (const k of keys) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[k] = true; + } + } + } +} +export function isYargsInstance(y) { + return !!y && typeof y.getInternalMethods === 'function'; +} diff --git a/mybulma/node_modules/yargs/build/lib/yerror.js b/mybulma/node_modules/yargs/build/lib/yerror.js new file mode 100644 index 0000000..7a36684 --- /dev/null +++ b/mybulma/node_modules/yargs/build/lib/yerror.js @@ -0,0 +1,9 @@ +export class YError extends Error { + constructor(msg) { + super(msg || 'yargs error'); + this.name = 'YError'; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, YError); + } + } +} diff --git a/mybulma/node_modules/yargs/helpers/helpers.mjs b/mybulma/node_modules/yargs/helpers/helpers.mjs new file mode 100644 index 0000000..3f96b3d --- /dev/null +++ b/mybulma/node_modules/yargs/helpers/helpers.mjs @@ -0,0 +1,10 @@ +import {applyExtends as _applyExtends} from '../build/lib/utils/apply-extends.js'; +import {hideBin} from '../build/lib/utils/process-argv.js'; +import Parser from 'yargs-parser'; +import shim from '../lib/platform-shims/esm.mjs'; + +const applyExtends = (config, cwd, mergeExtends) => { + return _applyExtends(config, cwd, mergeExtends, shim); +}; + +export {applyExtends, hideBin, Parser}; diff --git a/mybulma/node_modules/yargs/helpers/index.js b/mybulma/node_modules/yargs/helpers/index.js new file mode 100644 index 0000000..8ab79a3 --- /dev/null +++ b/mybulma/node_modules/yargs/helpers/index.js @@ -0,0 +1,14 @@ +const { + applyExtends, + cjsPlatformShim, + Parser, + processArgv, +} = require('../build/index.cjs'); + +module.exports = { + applyExtends: (config, cwd, mergeExtends) => { + return applyExtends(config, cwd, mergeExtends, cjsPlatformShim); + }, + hideBin: processArgv.hideBin, + Parser, +}; diff --git a/mybulma/node_modules/yargs/helpers/package.json b/mybulma/node_modules/yargs/helpers/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/mybulma/node_modules/yargs/helpers/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/mybulma/node_modules/yargs/lib/platform-shims/browser.mjs b/mybulma/node_modules/yargs/lib/platform-shims/browser.mjs new file mode 100644 index 0000000..5f8ec61 --- /dev/null +++ b/mybulma/node_modules/yargs/lib/platform-shims/browser.mjs @@ -0,0 +1,95 @@ +/* eslint-disable no-unused-vars */ +'use strict'; + +import cliui from 'https://unpkg.com/cliui@7.0.1/index.mjs'; // eslint-disable-line +import Parser from 'https://unpkg.com/yargs-parser@19.0.0/browser.js'; // eslint-disable-line +import {getProcessArgvBin} from '../../build/lib/utils/process-argv.js'; +import {YError} from '../../build/lib/yerror.js'; + +const REQUIRE_ERROR = 'require is not supported in browser'; +const REQUIRE_DIRECTORY_ERROR = + 'loading a directory of commands is not supported in browser'; + +export default { + assert: { + notStrictEqual: (a, b) => { + // noop. + }, + strictEqual: (a, b) => { + // noop. + }, + }, + cliui, + findUp: () => undefined, + getEnv: key => { + // There is no environment in browser: + return undefined; + }, + inspect: console.log, + getCallerFile: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR); + }, + getProcessArgvBin, + mainFilename: 'yargs', + Parser, + path: { + basename: str => str, + dirname: str => str, + extname: str => str, + relative: str => str, + }, + process: { + argv: () => [], + cwd: () => '', + emitWarning: (warning, name) => {}, + execPath: () => '', + // exit is noop browser: + exit: () => {}, + nextTick: cb => { + // eslint-disable-next-line no-undef + window.setTimeout(cb, 1); + }, + stdColumns: 80, + }, + readFileSync: () => { + return ''; + }, + require: () => { + throw new YError(REQUIRE_ERROR); + }, + requireDirectory: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR); + }, + stringWidth: str => { + return [...str].length; + }, + // TODO: replace this with y18n once it's ported to ESM: + y18n: { + __: (...str) => { + if (str.length === 0) return ''; + const args = str.slice(1); + return sprintf(str[0], ...args); + }, + __n: (str1, str2, count, ...args) => { + if (count === 1) { + return sprintf(str1, ...args); + } else { + return sprintf(str2, ...args); + } + }, + getLocale: () => { + return 'en_US'; + }, + setLocale: () => {}, + updateLocale: () => {}, + }, +}; + +function sprintf(_str, ...args) { + let str = ''; + const split = _str.split('%s'); + split.forEach((token, i) => { + str += `${token}${split[i + 1] !== undefined && args[i] ? args[i] : ''}`; + }); + return str; +} diff --git a/mybulma/node_modules/yargs/lib/platform-shims/esm.mjs b/mybulma/node_modules/yargs/lib/platform-shims/esm.mjs new file mode 100644 index 0000000..c25baa5 --- /dev/null +++ b/mybulma/node_modules/yargs/lib/platform-shims/esm.mjs @@ -0,0 +1,73 @@ +'use strict' + +import { notStrictEqual, strictEqual } from 'assert' +import cliui from 'cliui' +import escalade from 'escalade/sync' +import { inspect } from 'util' +import { readFileSync } from 'fs' +import { fileURLToPath } from 'url'; +import Parser from 'yargs-parser' +import { basename, dirname, extname, relative, resolve } from 'path' +import { getProcessArgvBin } from '../../build/lib/utils/process-argv.js' +import { YError } from '../../build/lib/yerror.js' +import y18n from 'y18n' + +const REQUIRE_ERROR = 'require is not supported by ESM' +const REQUIRE_DIRECTORY_ERROR = 'loading a directory of commands is not supported yet for ESM' + +let __dirname; +try { + __dirname = fileURLToPath(import.meta.url); +} catch (e) { + __dirname = process.cwd(); +} +const mainFilename = __dirname.substring(0, __dirname.lastIndexOf('node_modules')); + +export default { + assert: { + notStrictEqual, + strictEqual + }, + cliui, + findUp: escalade, + getEnv: (key) => { + return process.env[key] + }, + inspect, + getCallerFile: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR) + }, + getProcessArgvBin, + mainFilename: mainFilename || process.cwd(), + Parser, + path: { + basename, + dirname, + extname, + relative, + resolve + }, + process: { + argv: () => process.argv, + cwd: process.cwd, + emitWarning: (warning, type) => process.emitWarning(warning, type), + execPath: () => process.execPath, + exit: process.exit, + nextTick: process.nextTick, + stdColumns: typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null + }, + readFileSync, + require: () => { + throw new YError(REQUIRE_ERROR) + }, + requireDirectory: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR) + }, + stringWidth: (str) => { + return [...str].length + }, + y18n: y18n({ + directory: resolve(__dirname, '../../../locales'), + updateFiles: false + }) +} diff --git a/mybulma/node_modules/yargs/locales/be.json b/mybulma/node_modules/yargs/locales/be.json new file mode 100644 index 0000000..e28fa30 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/be.json @@ -0,0 +1,46 @@ +{ + "Commands:": "Каманды:", + "Options:": "Опцыі:", + "Examples:": "Прыклады:", + "boolean": "булевы тып", + "count": "падлік", + "string": "радковы тып", + "number": "лік", + "array": "масіў", + "required": "неабходна", + "default": "па змаўчанні", + "default:": "па змаўчанні:", + "choices:": "магчымасці:", + "aliases:": "аліасы:", + "generated-value": "згенераванае значэнне", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Недастаткова неапцыйных аргументаў: ёсць %s, трэба як мінімум %s", + "other": "Недастаткова неапцыйных аргументаў: ёсць %s, трэба як мінімум %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Занадта шмат неапцыйных аргументаў: ёсць %s, максімум дапушчальна %s", + "other": "Занадта шмат неапцыйных аргументаў: ёсць %s, максімум дапушчальна %s" + }, + "Missing argument value: %s": { + "one": "Не хапае значэння аргументу: %s", + "other": "Не хапае значэнняў аргументаў: %s" + }, + "Missing required argument: %s": { + "one": "Не хапае неабходнага аргументу: %s", + "other": "Не хапае неабходных аргументаў: %s" + }, + "Unknown argument: %s": { + "one": "Невядомы аргумент: %s", + "other": "Невядомыя аргументы: %s" + }, + "Invalid values:": "Несапраўдныя значэння:", + "Argument: %s, Given: %s, Choices: %s": "Аргумент: %s, Дадзенае значэнне: %s, Магчымасці: %s", + "Argument check failed: %s": "Праверка аргументаў не ўдалася: %s", + "Implications failed:": "Дадзены аргумент патрабуе наступны дадатковы аргумент:", + "Not enough arguments following: %s": "Недастаткова наступных аргументаў: %s", + "Invalid JSON config file: %s": "Несапраўдны файл канфігурацыі JSON: %s", + "Path to JSON config file": "Шлях да файла канфігурацыі JSON", + "Show help": "Паказаць дапамогу", + "Show version number": "Паказаць нумар версіі", + "Did you mean %s?": "Вы мелі на ўвазе %s?" +} diff --git a/mybulma/node_modules/yargs/locales/cs.json b/mybulma/node_modules/yargs/locales/cs.json new file mode 100644 index 0000000..6394875 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/cs.json @@ -0,0 +1,51 @@ +{ + "Commands:": "Příkazy:", + "Options:": "Možnosti:", + "Examples:": "Příklady:", + "boolean": "logická hodnota", + "count": "počet", + "string": "řetězec", + "number": "číslo", + "array": "pole", + "required": "povinné", + "default": "výchozí", + "default:": "výchozí:", + "choices:": "volby:", + "aliases:": "aliasy:", + "generated-value": "generovaná-hodnota", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Nedostatek argumentů: zadáno %s, je potřeba alespoň %s", + "other": "Nedostatek argumentů: zadáno %s, je potřeba alespoň %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Příliš mnoho argumentů: zadáno %s, maximálně %s", + "other": "Příliš mnoho argumentů: zadáno %s, maximálně %s" + }, + "Missing argument value: %s": { + "one": "Chybí hodnota argumentu: %s", + "other": "Chybí hodnoty argumentů: %s" + }, + "Missing required argument: %s": { + "one": "Chybí požadovaný argument: %s", + "other": "Chybí požadované argumenty: %s" + }, + "Unknown argument: %s": { + "one": "Neznámý argument: %s", + "other": "Neznámé argumenty: %s" + }, + "Invalid values:": "Neplatné hodnoty:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Zadáno: %s, Možnosti: %s", + "Argument check failed: %s": "Kontrola argumentů se nezdařila: %s", + "Implications failed:": "Chybí závislé argumenty:", + "Not enough arguments following: %s": "Následuje nedostatek argumentů: %s", + "Invalid JSON config file: %s": "Neplatný konfigurační soubor JSON: %s", + "Path to JSON config file": "Cesta ke konfiguračnímu souboru JSON", + "Show help": "Zobrazit nápovědu", + "Show version number": "Zobrazit číslo verze", + "Did you mean %s?": "Měl jste na mysli %s?", + "Arguments %s and %s are mutually exclusive" : "Argumenty %s a %s se vzájemně vylučují", + "Positionals:": "Poziční:", + "command": "příkaz", + "deprecated": "zastaralé", + "deprecated: %s": "zastaralé: %s" +} diff --git a/mybulma/node_modules/yargs/locales/de.json b/mybulma/node_modules/yargs/locales/de.json new file mode 100644 index 0000000..dc73ec3 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/de.json @@ -0,0 +1,46 @@ +{ + "Commands:": "Kommandos:", + "Options:": "Optionen:", + "Examples:": "Beispiele:", + "boolean": "boolean", + "count": "Zähler", + "string": "string", + "number": "Zahl", + "array": "array", + "required": "erforderlich", + "default": "Standard", + "default:": "Standard:", + "choices:": "Möglichkeiten:", + "aliases:": "Aliase:", + "generated-value": "Generierter-Wert", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Nicht genügend Argumente ohne Optionen: %s vorhanden, mindestens %s benötigt", + "other": "Nicht genügend Argumente ohne Optionen: %s vorhanden, mindestens %s benötigt" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Zu viele Argumente ohne Optionen: %s vorhanden, maximal %s erlaubt", + "other": "Zu viele Argumente ohne Optionen: %s vorhanden, maximal %s erlaubt" + }, + "Missing argument value: %s": { + "one": "Fehlender Argumentwert: %s", + "other": "Fehlende Argumentwerte: %s" + }, + "Missing required argument: %s": { + "one": "Fehlendes Argument: %s", + "other": "Fehlende Argumente: %s" + }, + "Unknown argument: %s": { + "one": "Unbekanntes Argument: %s", + "other": "Unbekannte Argumente: %s" + }, + "Invalid values:": "Unzulässige Werte:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeben: %s, Möglichkeiten: %s", + "Argument check failed: %s": "Argumente-Check fehlgeschlagen: %s", + "Implications failed:": "Fehlende abhängige Argumente:", + "Not enough arguments following: %s": "Nicht genügend Argumente nach: %s", + "Invalid JSON config file: %s": "Fehlerhafte JSON-Config Datei: %s", + "Path to JSON config file": "Pfad zur JSON-Config Datei", + "Show help": "Hilfe anzeigen", + "Show version number": "Version anzeigen", + "Did you mean %s?": "Meintest du %s?" +} diff --git a/mybulma/node_modules/yargs/locales/en.json b/mybulma/node_modules/yargs/locales/en.json new file mode 100644 index 0000000..d794947 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/en.json @@ -0,0 +1,51 @@ +{ + "Commands:": "Commands:", + "Options:": "Options:", + "Examples:": "Examples:", + "boolean": "boolean", + "count": "count", + "string": "string", + "number": "number", + "array": "array", + "required": "required", + "default": "default", + "default:": "default:", + "choices:": "choices:", + "aliases:": "aliases:", + "generated-value": "generated-value", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Not enough non-option arguments: got %s, need at least %s", + "other": "Not enough non-option arguments: got %s, need at least %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Too many non-option arguments: got %s, maximum of %s", + "other": "Too many non-option arguments: got %s, maximum of %s" + }, + "Missing argument value: %s": { + "one": "Missing argument value: %s", + "other": "Missing argument values: %s" + }, + "Missing required argument: %s": { + "one": "Missing required argument: %s", + "other": "Missing required arguments: %s" + }, + "Unknown argument: %s": { + "one": "Unknown argument: %s", + "other": "Unknown arguments: %s" + }, + "Invalid values:": "Invalid values:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Given: %s, Choices: %s", + "Argument check failed: %s": "Argument check failed: %s", + "Implications failed:": "Missing dependent arguments:", + "Not enough arguments following: %s": "Not enough arguments following: %s", + "Invalid JSON config file: %s": "Invalid JSON config file: %s", + "Path to JSON config file": "Path to JSON config file", + "Show help": "Show help", + "Show version number": "Show version number", + "Did you mean %s?": "Did you mean %s?", + "Arguments %s and %s are mutually exclusive" : "Arguments %s and %s are mutually exclusive", + "Positionals:": "Positionals:", + "command": "command", + "deprecated": "deprecated", + "deprecated: %s": "deprecated: %s" +} diff --git a/mybulma/node_modules/yargs/locales/es.json b/mybulma/node_modules/yargs/locales/es.json new file mode 100644 index 0000000..d77b461 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/es.json @@ -0,0 +1,46 @@ +{ + "Commands:": "Comandos:", + "Options:": "Opciones:", + "Examples:": "Ejemplos:", + "boolean": "booleano", + "count": "cuenta", + "string": "cadena de caracteres", + "number": "número", + "array": "tabla", + "required": "requerido", + "default": "defecto", + "default:": "defecto:", + "choices:": "selección:", + "aliases:": "alias:", + "generated-value": "valor-generado", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Hacen falta argumentos no-opcionales: Número recibido %s, necesita por lo menos %s", + "other": "Hacen falta argumentos no-opcionales: Número recibido %s, necesita por lo menos %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Demasiados argumentos no-opcionales: Número recibido %s, máximo es %s", + "other": "Demasiados argumentos no-opcionales: Número recibido %s, máximo es %s" + }, + "Missing argument value: %s": { + "one": "Falta argumento: %s", + "other": "Faltan argumentos: %s" + }, + "Missing required argument: %s": { + "one": "Falta argumento requerido: %s", + "other": "Faltan argumentos requeridos: %s" + }, + "Unknown argument: %s": { + "one": "Argumento desconocido: %s", + "other": "Argumentos desconocidos: %s" + }, + "Invalid values:": "Valores inválidos:", + "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Recibido: %s, Seleccionados: %s", + "Argument check failed: %s": "Verificación de argumento ha fallado: %s", + "Implications failed:": "Implicaciones fallidas:", + "Not enough arguments following: %s": "No hay suficientes argumentos después de: %s", + "Invalid JSON config file: %s": "Archivo de configuración JSON inválido: %s", + "Path to JSON config file": "Ruta al archivo de configuración JSON", + "Show help": "Muestra ayuda", + "Show version number": "Muestra número de versión", + "Did you mean %s?": "Quisiste decir %s?" +} diff --git a/mybulma/node_modules/yargs/locales/fi.json b/mybulma/node_modules/yargs/locales/fi.json new file mode 100644 index 0000000..481feb7 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/fi.json @@ -0,0 +1,49 @@ +{ + "Commands:": "Komennot:", + "Options:": "Valinnat:", + "Examples:": "Esimerkkejä:", + "boolean": "totuusarvo", + "count": "lukumäärä", + "string": "merkkijono", + "number": "numero", + "array": "taulukko", + "required": "pakollinen", + "default": "oletusarvo", + "default:": "oletusarvo:", + "choices:": "vaihtoehdot:", + "aliases:": "aliakset:", + "generated-value": "generoitu-arvo", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Liian vähän argumentteja, jotka eivät ole valintoja: annettu %s, vaaditaan vähintään %s", + "other": "Liian vähän argumentteja, jotka eivät ole valintoja: annettu %s, vaaditaan vähintään %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Liikaa argumentteja, jotka eivät ole valintoja: annettu %s, sallitaan enintään %s", + "other": "Liikaa argumentteja, jotka eivät ole valintoja: annettu %s, sallitaan enintään %s" + }, + "Missing argument value: %s": { + "one": "Argumentin arvo puuttuu: %s", + "other": "Argumentin arvot puuttuvat: %s" + }, + "Missing required argument: %s": { + "one": "Pakollinen argumentti puuttuu: %s", + "other": "Pakollisia argumentteja puuttuu: %s" + }, + "Unknown argument: %s": { + "one": "Tuntematon argumentti: %s", + "other": "Tuntemattomia argumentteja: %s" + }, + "Invalid values:": "Virheelliset arvot:", + "Argument: %s, Given: %s, Choices: %s": "Argumentti: %s, Annettu: %s, Vaihtoehdot: %s", + "Argument check failed: %s": "Argumentin tarkistus epäonnistui: %s", + "Implications failed:": "Riippuvia argumentteja puuttuu:", + "Not enough arguments following: %s": "Argumentin perässä ei ole tarpeeksi argumentteja: %s", + "Invalid JSON config file: %s": "Epävalidi JSON-asetustiedosto: %s", + "Path to JSON config file": "JSON-asetustiedoston polku", + "Show help": "Näytä ohje", + "Show version number": "Näytä versionumero", + "Did you mean %s?": "Tarkoititko %s?", + "Arguments %s and %s are mutually exclusive" : "Argumentit %s ja %s eivät ole yhteensopivat", + "Positionals:": "Sijaintiparametrit:", + "command": "komento" +} diff --git a/mybulma/node_modules/yargs/locales/fr.json b/mybulma/node_modules/yargs/locales/fr.json new file mode 100644 index 0000000..edd743f --- /dev/null +++ b/mybulma/node_modules/yargs/locales/fr.json @@ -0,0 +1,53 @@ +{ + "Commands:": "Commandes :", + "Options:": "Options :", + "Examples:": "Exemples :", + "boolean": "booléen", + "count": "compteur", + "string": "chaîne de caractères", + "number": "nombre", + "array": "tableau", + "required": "requis", + "default": "défaut", + "default:": "défaut :", + "choices:": "choix :", + "aliases:": "alias :", + "generated-value": "valeur générée", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Pas assez d'arguments (hors options) : reçu %s, besoin d'au moins %s", + "other": "Pas assez d'arguments (hors options) : reçus %s, besoin d'au moins %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Trop d'arguments (hors options) : reçu %s, maximum de %s", + "other": "Trop d'arguments (hors options) : reçus %s, maximum de %s" + }, + "Missing argument value: %s": { + "one": "Argument manquant : %s", + "other": "Arguments manquants : %s" + }, + "Missing required argument: %s": { + "one": "Argument requis manquant : %s", + "other": "Arguments requis manquants : %s" + }, + "Unknown argument: %s": { + "one": "Argument inconnu : %s", + "other": "Arguments inconnus : %s" + }, + "Unknown command: %s": { + "one": "Commande inconnue : %s", + "other": "Commandes inconnues : %s" + }, + "Invalid values:": "Valeurs invalides :", + "Argument: %s, Given: %s, Choices: %s": "Argument : %s, donné : %s, choix : %s", + "Argument check failed: %s": "Echec de la vérification de l'argument : %s", + "Implications failed:": "Arguments dépendants manquants :", + "Not enough arguments following: %s": "Pas assez d'arguments après : %s", + "Invalid JSON config file: %s": "Fichier de configuration JSON invalide : %s", + "Path to JSON config file": "Chemin du fichier de configuration JSON", + "Show help": "Affiche l'aide", + "Show version number": "Affiche le numéro de version", + "Did you mean %s?": "Vouliez-vous dire %s ?", + "Arguments %s and %s are mutually exclusive" : "Les arguments %s et %s sont mutuellement exclusifs", + "Positionals:": "Arguments positionnels :", + "command": "commande" +} diff --git a/mybulma/node_modules/yargs/locales/hi.json b/mybulma/node_modules/yargs/locales/hi.json new file mode 100644 index 0000000..a9de77c --- /dev/null +++ b/mybulma/node_modules/yargs/locales/hi.json @@ -0,0 +1,49 @@ +{ + "Commands:": "आदेश:", + "Options:": "विकल्प:", + "Examples:": "उदाहरण:", + "boolean": "सत्यता", + "count": "संख्या", + "string": "वर्णों का तार ", + "number": "अंक", + "array": "सरणी", + "required": "आवश्यक", + "default": "डिफॉल्ट", + "default:": "डिफॉल्ट:", + "choices:": "विकल्प:", + "aliases:": "उपनाम:", + "generated-value": "उत्पन्न-मूल्य", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "पर्याप्त गैर-विकल्प तर्क प्राप्त नहीं: %s प्राप्त, कम से कम %s की आवश्यकता है", + "other": "पर्याप्त गैर-विकल्प तर्क प्राप्त नहीं: %s प्राप्त, कम से कम %s की आवश्यकता है" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "बहुत सारे गैर-विकल्प तर्क: %s प्राप्त, अधिकतम %s मान्य", + "other": "बहुत सारे गैर-विकल्प तर्क: %s प्राप्त, अधिकतम %s मान्य" + }, + "Missing argument value: %s": { + "one": "कुछ तर्को के मूल्य गुम हैं: %s", + "other": "कुछ तर्को के मूल्य गुम हैं: %s" + }, + "Missing required argument: %s": { + "one": "आवश्यक तर्क गुम हैं: %s", + "other": "आवश्यक तर्क गुम हैं: %s" + }, + "Unknown argument: %s": { + "one": "अज्ञात तर्क प्राप्त: %s", + "other": "अज्ञात तर्क प्राप्त: %s" + }, + "Invalid values:": "अमान्य मूल्य:", + "Argument: %s, Given: %s, Choices: %s": "तर्क: %s, प्राप्त: %s, विकल्प: %s", + "Argument check failed: %s": "तर्क जांच विफल: %s", + "Implications failed:": "दिए गए तर्क के लिए अतिरिक्त तर्क की अपेक्षा है:", + "Not enough arguments following: %s": "निम्नलिखित के बाद पर्याप्त तर्क नहीं प्राप्त: %s", + "Invalid JSON config file: %s": "अमान्य JSON config फाइल: %s", + "Path to JSON config file": "JSON config फाइल का पथ", + "Show help": "सहायता दिखाएँ", + "Show version number": "Version संख्या दिखाएँ", + "Did you mean %s?": "क्या आपका मतलब है %s?", + "Arguments %s and %s are mutually exclusive" : "तर्क %s और %s परस्पर अनन्य हैं", + "Positionals:": "स्थानीय:", + "command": "आदेश" +} diff --git a/mybulma/node_modules/yargs/locales/hu.json b/mybulma/node_modules/yargs/locales/hu.json new file mode 100644 index 0000000..21492d0 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/hu.json @@ -0,0 +1,46 @@ +{ + "Commands:": "Parancsok:", + "Options:": "Opciók:", + "Examples:": "Példák:", + "boolean": "boolean", + "count": "számláló", + "string": "szöveg", + "number": "szám", + "array": "tömb", + "required": "kötelező", + "default": "alapértelmezett", + "default:": "alapértelmezett:", + "choices:": "lehetőségek:", + "aliases:": "aliaszok:", + "generated-value": "generált-érték", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Nincs elég nem opcionális argumentum: %s van, legalább %s kell", + "other": "Nincs elég nem opcionális argumentum: %s van, legalább %s kell" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Túl sok nem opciánlis argumentum van: %s van, maximum %s lehet", + "other": "Túl sok nem opciánlis argumentum van: %s van, maximum %s lehet" + }, + "Missing argument value: %s": { + "one": "Hiányzó argumentum érték: %s", + "other": "Hiányzó argumentum értékek: %s" + }, + "Missing required argument: %s": { + "one": "Hiányzó kötelező argumentum: %s", + "other": "Hiányzó kötelező argumentumok: %s" + }, + "Unknown argument: %s": { + "one": "Ismeretlen argumentum: %s", + "other": "Ismeretlen argumentumok: %s" + }, + "Invalid values:": "Érvénytelen érték:", + "Argument: %s, Given: %s, Choices: %s": "Argumentum: %s, Megadott: %s, Lehetőségek: %s", + "Argument check failed: %s": "Argumentum ellenőrzés sikertelen: %s", + "Implications failed:": "Implikációk sikertelenek:", + "Not enough arguments following: %s": "Nem elég argumentum követi: %s", + "Invalid JSON config file: %s": "Érvénytelen JSON konfigurációs file: %s", + "Path to JSON config file": "JSON konfigurációs file helye", + "Show help": "Súgo megjelenítése", + "Show version number": "Verziószám megjelenítése", + "Did you mean %s?": "Erre gondoltál %s?" +} diff --git a/mybulma/node_modules/yargs/locales/id.json b/mybulma/node_modules/yargs/locales/id.json new file mode 100644 index 0000000..125867c --- /dev/null +++ b/mybulma/node_modules/yargs/locales/id.json @@ -0,0 +1,50 @@ + +{ + "Commands:": "Perintah:", + "Options:": "Pilihan:", + "Examples:": "Contoh:", + "boolean": "boolean", + "count": "jumlah", + "number": "nomor", + "string": "string", + "array": "larik", + "required": "diperlukan", + "default": "bawaan", + "default:": "bawaan:", + "aliases:": "istilah lain:", + "choices:": "pilihan:", + "generated-value": "nilai-yang-dihasilkan", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Argumen wajib kurang: hanya %s, minimal %s", + "other": "Argumen wajib kurang: hanya %s, minimal %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Terlalu banyak argumen wajib: ada %s, maksimal %s", + "other": "Terlalu banyak argumen wajib: ada %s, maksimal %s" + }, + "Missing argument value: %s": { + "one": "Kurang argumen: %s", + "other": "Kurang argumen: %s" + }, + "Missing required argument: %s": { + "one": "Kurang argumen wajib: %s", + "other": "Kurang argumen wajib: %s" + }, + "Unknown argument: %s": { + "one": "Argumen tak diketahui: %s", + "other": "Argumen tak diketahui: %s" + }, + "Invalid values:": "Nilai-nilai tidak valid:", + "Argument: %s, Given: %s, Choices: %s": "Argumen: %s, Diberikan: %s, Pilihan: %s", + "Argument check failed: %s": "Pemeriksaan argument gagal: %s", + "Implications failed:": "Implikasi gagal:", + "Not enough arguments following: %s": "Kurang argumen untuk: %s", + "Invalid JSON config file: %s": "Berkas konfigurasi JSON tidak valid: %s", + "Path to JSON config file": "Alamat berkas konfigurasi JSON", + "Show help": "Lihat bantuan", + "Show version number": "Lihat nomor versi", + "Did you mean %s?": "Maksud Anda: %s?", + "Arguments %s and %s are mutually exclusive" : "Argumen %s dan %s saling eksklusif", + "Positionals:": "Posisional-posisional:", + "command": "perintah" +} diff --git a/mybulma/node_modules/yargs/locales/it.json b/mybulma/node_modules/yargs/locales/it.json new file mode 100644 index 0000000..fde5756 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/it.json @@ -0,0 +1,46 @@ +{ + "Commands:": "Comandi:", + "Options:": "Opzioni:", + "Examples:": "Esempi:", + "boolean": "booleano", + "count": "contatore", + "string": "stringa", + "number": "numero", + "array": "vettore", + "required": "richiesto", + "default": "predefinito", + "default:": "predefinito:", + "choices:": "scelte:", + "aliases:": "alias:", + "generated-value": "valore generato", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Numero insufficiente di argomenti non opzione: inseriti %s, richiesti almeno %s", + "other": "Numero insufficiente di argomenti non opzione: inseriti %s, richiesti almeno %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Troppi argomenti non opzione: inseriti %s, massimo possibile %s", + "other": "Troppi argomenti non opzione: inseriti %s, massimo possibile %s" + }, + "Missing argument value: %s": { + "one": "Argomento mancante: %s", + "other": "Argomenti mancanti: %s" + }, + "Missing required argument: %s": { + "one": "Argomento richiesto mancante: %s", + "other": "Argomenti richiesti mancanti: %s" + }, + "Unknown argument: %s": { + "one": "Argomento sconosciuto: %s", + "other": "Argomenti sconosciuti: %s" + }, + "Invalid values:": "Valori non validi:", + "Argument: %s, Given: %s, Choices: %s": "Argomento: %s, Richiesto: %s, Scelte: %s", + "Argument check failed: %s": "Controllo dell'argomento fallito: %s", + "Implications failed:": "Argomenti dipendenti mancanti:", + "Not enough arguments following: %s": "Argomenti insufficienti dopo: %s", + "Invalid JSON config file: %s": "File di configurazione JSON non valido: %s", + "Path to JSON config file": "Percorso del file di configurazione JSON", + "Show help": "Mostra la schermata di aiuto", + "Show version number": "Mostra il numero di versione", + "Did you mean %s?": "Intendi forse %s?" +} diff --git a/mybulma/node_modules/yargs/locales/ja.json b/mybulma/node_modules/yargs/locales/ja.json new file mode 100644 index 0000000..3954ae6 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/ja.json @@ -0,0 +1,51 @@ +{ + "Commands:": "コマンド:", + "Options:": "オプション:", + "Examples:": "例:", + "boolean": "真偽", + "count": "カウント", + "string": "文字列", + "number": "数値", + "array": "配列", + "required": "必須", + "default": "デフォルト", + "default:": "デフォルト:", + "choices:": "選択してください:", + "aliases:": "エイリアス:", + "generated-value": "生成された値", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "オプションではない引数が %s 個では不足しています。少なくとも %s 個の引数が必要です:", + "other": "オプションではない引数が %s 個では不足しています。少なくとも %s 個の引数が必要です:" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "オプションではない引数が %s 個では多すぎます。最大で %s 個までです:", + "other": "オプションではない引数が %s 個では多すぎます。最大で %s 個までです:" + }, + "Missing argument value: %s": { + "one": "引数の値が見つかりません: %s", + "other": "引数の値が見つかりません: %s" + }, + "Missing required argument: %s": { + "one": "必須の引数が見つかりません: %s", + "other": "必須の引数が見つかりません: %s" + }, + "Unknown argument: %s": { + "one": "未知の引数です: %s", + "other": "未知の引数です: %s" + }, + "Invalid values:": "不正な値です:", + "Argument: %s, Given: %s, Choices: %s": "引数は %s です。与えられた値: %s, 選択してください: %s", + "Argument check failed: %s": "引数のチェックに失敗しました: %s", + "Implications failed:": "オプションの組み合わせで不正が生じました:", + "Not enough arguments following: %s": "次の引数が不足しています。: %s", + "Invalid JSON config file: %s": "JSONの設定ファイルが不正です: %s", + "Path to JSON config file": "JSONの設定ファイルまでのpath", + "Show help": "ヘルプを表示", + "Show version number": "バージョンを表示", + "Did you mean %s?": "もしかして %s?", + "Arguments %s and %s are mutually exclusive" : "引数 %s と %s は同時に指定できません", + "Positionals:": "位置:", + "command": "コマンド", + "deprecated": "非推奨", + "deprecated: %s": "非推奨: %s" +} diff --git a/mybulma/node_modules/yargs/locales/ko.json b/mybulma/node_modules/yargs/locales/ko.json new file mode 100644 index 0000000..746bc89 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/ko.json @@ -0,0 +1,49 @@ +{ + "Commands:": "명령:", + "Options:": "옵션:", + "Examples:": "예시:", + "boolean": "불리언", + "count": "개수", + "string": "문자열", + "number": "숫자", + "array": "배열", + "required": "필수", + "default": "기본값", + "default:": "기본값:", + "choices:": "선택지:", + "aliases:": "별칭:", + "generated-value": "생성된 값", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "옵션이 아닌 인수가 충분하지 않습니다: %s개 입력받음, 최소 %s개 입력 필요", + "other": "옵션이 아닌 인수가 충분하지 않습니다: %s개 입력받음, 최소 %s개 입력 필요" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "옵션이 아닌 인수가 너무 많습니다: %s개 입력받음, 최대 %s개 입력 가능", + "other": "옵션이 아닌 인수가 너무 많습니다: %s개 입력받음, 최대 %s개 입력 가능" + }, + "Missing argument value: %s": { + "one": "인수가 주어지지 않았습니다: %s", + "other": "인수가 주어지지 않았습니다: %s" + }, + "Missing required argument: %s": { + "one": "필수 인수가 주어지지 않았습니다: %s", + "other": "필수 인수가 주어지지 않았습니다: %s" + }, + "Unknown argument: %s": { + "one": "알 수 없는 인수입니다: %s", + "other": "알 수 없는 인수입니다: %s" + }, + "Invalid values:": "유효하지 않은 값:", + "Argument: %s, Given: %s, Choices: %s": "인수: %s, 주어진 값: %s, 선택지: %s", + "Argument check failed: %s": "인수 체크에 실패했습니다: %s", + "Implications failed:": "주어진 인수에 필요한 추가 인수가 주어지지 않았습니다:", + "Not enough arguments following: %s": "다음 인수가 주어지지 않았습니다: %s", + "Invalid JSON config file: %s": "유효하지 않은 JSON 설정 파일: %s", + "Path to JSON config file": "JSON 설정 파일 경로", + "Show help": "도움말 표시", + "Show version number": "버전 표시", + "Did you mean %s?": "%s을(를) 찾으시나요?", + "Arguments %s and %s are mutually exclusive" : "인수 %s과(와) %s은(는) 동시에 지정할 수 없습니다", + "Positionals:": "위치:", + "command": "명령" +} diff --git a/mybulma/node_modules/yargs/locales/nb.json b/mybulma/node_modules/yargs/locales/nb.json new file mode 100644 index 0000000..6f410ed --- /dev/null +++ b/mybulma/node_modules/yargs/locales/nb.json @@ -0,0 +1,44 @@ +{ + "Commands:": "Kommandoer:", + "Options:": "Alternativer:", + "Examples:": "Eksempler:", + "boolean": "boolsk", + "count": "antall", + "string": "streng", + "number": "nummer", + "array": "matrise", + "required": "obligatorisk", + "default": "standard", + "default:": "standard:", + "choices:": "valg:", + "generated-value": "generert-verdi", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Ikke nok ikke-alternativ argumenter: fikk %s, trenger minst %s", + "other": "Ikke nok ikke-alternativ argumenter: fikk %s, trenger minst %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "For mange ikke-alternativ argumenter: fikk %s, maksimum %s", + "other": "For mange ikke-alternativ argumenter: fikk %s, maksimum %s" + }, + "Missing argument value: %s": { + "one": "Mangler argument verdi: %s", + "other": "Mangler argument verdier: %s" + }, + "Missing required argument: %s": { + "one": "Mangler obligatorisk argument: %s", + "other": "Mangler obligatoriske argumenter: %s" + }, + "Unknown argument: %s": { + "one": "Ukjent argument: %s", + "other": "Ukjente argumenter: %s" + }, + "Invalid values:": "Ugyldige verdier:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gitt: %s, Valg: %s", + "Argument check failed: %s": "Argumentsjekk mislyktes: %s", + "Implications failed:": "Konsekvensene mislyktes:", + "Not enough arguments following: %s": "Ikke nok følgende argumenter: %s", + "Invalid JSON config file: %s": "Ugyldig JSON konfigurasjonsfil: %s", + "Path to JSON config file": "Bane til JSON konfigurasjonsfil", + "Show help": "Vis hjelp", + "Show version number": "Vis versjonsnummer" +} diff --git a/mybulma/node_modules/yargs/locales/nl.json b/mybulma/node_modules/yargs/locales/nl.json new file mode 100644 index 0000000..9ff95c5 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/nl.json @@ -0,0 +1,49 @@ +{ + "Commands:": "Commando's:", + "Options:": "Opties:", + "Examples:": "Voorbeelden:", + "boolean": "booleaans", + "count": "aantal", + "string": "string", + "number": "getal", + "array": "lijst", + "required": "verplicht", + "default": "standaard", + "default:": "standaard:", + "choices:": "keuzes:", + "aliases:": "aliassen:", + "generated-value": "gegenereerde waarde", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Niet genoeg niet-optie-argumenten: %s gekregen, minstens %s nodig", + "other": "Niet genoeg niet-optie-argumenten: %s gekregen, minstens %s nodig" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Te veel niet-optie-argumenten: %s gekregen, maximum is %s", + "other": "Te veel niet-optie-argumenten: %s gekregen, maximum is %s" + }, + "Missing argument value: %s": { + "one": "Missende argumentwaarde: %s", + "other": "Missende argumentwaarden: %s" + }, + "Missing required argument: %s": { + "one": "Missend verplicht argument: %s", + "other": "Missende verplichte argumenten: %s" + }, + "Unknown argument: %s": { + "one": "Onbekend argument: %s", + "other": "Onbekende argumenten: %s" + }, + "Invalid values:": "Ongeldige waarden:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gegeven: %s, Keuzes: %s", + "Argument check failed: %s": "Argumentcontrole mislukt: %s", + "Implications failed:": "Ontbrekende afhankelijke argumenten:", + "Not enough arguments following: %s": "Niet genoeg argumenten na: %s", + "Invalid JSON config file: %s": "Ongeldig JSON-config-bestand: %s", + "Path to JSON config file": "Pad naar JSON-config-bestand", + "Show help": "Toon help", + "Show version number": "Toon versienummer", + "Did you mean %s?": "Bedoelde u misschien %s?", + "Arguments %s and %s are mutually exclusive": "Argumenten %s en %s kunnen niet tegelijk gebruikt worden", + "Positionals:": "Positie-afhankelijke argumenten", + "command": "commando" +} diff --git a/mybulma/node_modules/yargs/locales/nn.json b/mybulma/node_modules/yargs/locales/nn.json new file mode 100644 index 0000000..24479ac --- /dev/null +++ b/mybulma/node_modules/yargs/locales/nn.json @@ -0,0 +1,44 @@ +{ + "Commands:": "Kommandoar:", + "Options:": "Alternativ:", + "Examples:": "Døme:", + "boolean": "boolsk", + "count": "mengd", + "string": "streng", + "number": "nummer", + "array": "matrise", + "required": "obligatorisk", + "default": "standard", + "default:": "standard:", + "choices:": "val:", + "generated-value": "generert-verdi", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Ikkje nok ikkje-alternativ argument: fekk %s, treng minst %s", + "other": "Ikkje nok ikkje-alternativ argument: fekk %s, treng minst %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "For mange ikkje-alternativ argument: fekk %s, maksimum %s", + "other": "For mange ikkje-alternativ argument: fekk %s, maksimum %s" + }, + "Missing argument value: %s": { + "one": "Manglar argumentverdi: %s", + "other": "Manglar argumentverdiar: %s" + }, + "Missing required argument: %s": { + "one": "Manglar obligatorisk argument: %s", + "other": "Manglar obligatoriske argument: %s" + }, + "Unknown argument: %s": { + "one": "Ukjent argument: %s", + "other": "Ukjende argument: %s" + }, + "Invalid values:": "Ugyldige verdiar:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Gjeve: %s, Val: %s", + "Argument check failed: %s": "Argumentsjekk mislukkast: %s", + "Implications failed:": "Konsekvensane mislukkast:", + "Not enough arguments following: %s": "Ikkje nok fylgjande argument: %s", + "Invalid JSON config file: %s": "Ugyldig JSON konfigurasjonsfil: %s", + "Path to JSON config file": "Bane til JSON konfigurasjonsfil", + "Show help": "Vis hjelp", + "Show version number": "Vis versjonsnummer" +} diff --git a/mybulma/node_modules/yargs/locales/pirate.json b/mybulma/node_modules/yargs/locales/pirate.json new file mode 100644 index 0000000..dcb5cb7 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/pirate.json @@ -0,0 +1,13 @@ +{ + "Commands:": "Choose yer command:", + "Options:": "Options for me hearties!", + "Examples:": "Ex. marks the spot:", + "required": "requi-yar-ed", + "Missing required argument: %s": { + "one": "Ye be havin' to set the followin' argument land lubber: %s", + "other": "Ye be havin' to set the followin' arguments land lubber: %s" + }, + "Show help": "Parlay this here code of conduct", + "Show version number": "'Tis the version ye be askin' fer", + "Arguments %s and %s are mutually exclusive" : "Yon scurvy dogs %s and %s be as bad as rum and a prudish wench" +} diff --git a/mybulma/node_modules/yargs/locales/pl.json b/mybulma/node_modules/yargs/locales/pl.json new file mode 100644 index 0000000..a41d4bd --- /dev/null +++ b/mybulma/node_modules/yargs/locales/pl.json @@ -0,0 +1,49 @@ +{ + "Commands:": "Polecenia:", + "Options:": "Opcje:", + "Examples:": "Przykłady:", + "boolean": "boolean", + "count": "ilość", + "string": "ciąg znaków", + "number": "liczba", + "array": "tablica", + "required": "wymagany", + "default": "domyślny", + "default:": "domyślny:", + "choices:": "dostępne:", + "aliases:": "aliasy:", + "generated-value": "wygenerowana-wartość", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Niewystarczająca ilość argumentów: otrzymano %s, wymagane co najmniej %s", + "other": "Niewystarczająca ilość argumentów: otrzymano %s, wymagane co najmniej %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Zbyt duża ilość argumentów: otrzymano %s, wymagane co najwyżej %s", + "other": "Zbyt duża ilość argumentów: otrzymano %s, wymagane co najwyżej %s" + }, + "Missing argument value: %s": { + "one": "Brak wartości dla argumentu: %s", + "other": "Brak wartości dla argumentów: %s" + }, + "Missing required argument: %s": { + "one": "Brak wymaganego argumentu: %s", + "other": "Brak wymaganych argumentów: %s" + }, + "Unknown argument: %s": { + "one": "Nieznany argument: %s", + "other": "Nieznane argumenty: %s" + }, + "Invalid values:": "Nieprawidłowe wartości:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Otrzymano: %s, Dostępne: %s", + "Argument check failed: %s": "Weryfikacja argumentów nie powiodła się: %s", + "Implications failed:": "Założenia nie zostały spełnione:", + "Not enough arguments following: %s": "Niewystarczająca ilość argumentów następujących po: %s", + "Invalid JSON config file: %s": "Nieprawidłowy plik konfiguracyjny JSON: %s", + "Path to JSON config file": "Ścieżka do pliku konfiguracyjnego JSON", + "Show help": "Pokaż pomoc", + "Show version number": "Pokaż numer wersji", + "Did you mean %s?": "Czy chodziło Ci o %s?", + "Arguments %s and %s are mutually exclusive": "Argumenty %s i %s wzajemnie się wykluczają", + "Positionals:": "Pozycyjne:", + "command": "polecenie" +} diff --git a/mybulma/node_modules/yargs/locales/pt.json b/mybulma/node_modules/yargs/locales/pt.json new file mode 100644 index 0000000..0c8ac99 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/pt.json @@ -0,0 +1,45 @@ +{ + "Commands:": "Comandos:", + "Options:": "Opções:", + "Examples:": "Exemplos:", + "boolean": "boolean", + "count": "contagem", + "string": "cadeia de caracteres", + "number": "número", + "array": "arranjo", + "required": "requerido", + "default": "padrão", + "default:": "padrão:", + "choices:": "escolhas:", + "generated-value": "valor-gerado", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Argumentos insuficientes não opcionais: Argumento %s, necessário pelo menos %s", + "other": "Argumentos insuficientes não opcionais: Argumento %s, necessário pelo menos %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Excesso de argumentos não opcionais: recebido %s, máximo de %s", + "other": "Excesso de argumentos não opcionais: recebido %s, máximo de %s" + }, + "Missing argument value: %s": { + "one": "Falta valor de argumento: %s", + "other": "Falta valores de argumento: %s" + }, + "Missing required argument: %s": { + "one": "Falta argumento obrigatório: %s", + "other": "Faltando argumentos obrigatórios: %s" + }, + "Unknown argument: %s": { + "one": "Argumento desconhecido: %s", + "other": "Argumentos desconhecidos: %s" + }, + "Invalid values:": "Valores inválidos:", + "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Dado: %s, Escolhas: %s", + "Argument check failed: %s": "Verificação de argumento falhou: %s", + "Implications failed:": "Implicações falharam:", + "Not enough arguments following: %s": "Insuficientes argumentos a seguir: %s", + "Invalid JSON config file: %s": "Arquivo de configuração em JSON esta inválido: %s", + "Path to JSON config file": "Caminho para o arquivo de configuração em JSON", + "Show help": "Mostra ajuda", + "Show version number": "Mostra número de versão", + "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos" +} diff --git a/mybulma/node_modules/yargs/locales/pt_BR.json b/mybulma/node_modules/yargs/locales/pt_BR.json new file mode 100644 index 0000000..eae1ec6 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/pt_BR.json @@ -0,0 +1,48 @@ +{ + "Commands:": "Comandos:", + "Options:": "Opções:", + "Examples:": "Exemplos:", + "boolean": "booleano", + "count": "contagem", + "string": "string", + "number": "número", + "array": "array", + "required": "obrigatório", + "default:": "padrão:", + "choices:": "opções:", + "aliases:": "sinônimos:", + "generated-value": "valor-gerado", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Argumentos insuficientes: Argumento %s, necessário pelo menos %s", + "other": "Argumentos insuficientes: Argumento %s, necessário pelo menos %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Excesso de argumentos: recebido %s, máximo de %s", + "other": "Excesso de argumentos: recebido %s, máximo de %s" + }, + "Missing argument value: %s": { + "one": "Falta valor de argumento: %s", + "other": "Falta valores de argumento: %s" + }, + "Missing required argument: %s": { + "one": "Falta argumento obrigatório: %s", + "other": "Faltando argumentos obrigatórios: %s" + }, + "Unknown argument: %s": { + "one": "Argumento desconhecido: %s", + "other": "Argumentos desconhecidos: %s" + }, + "Invalid values:": "Valores inválidos:", + "Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Dado: %s, Opções: %s", + "Argument check failed: %s": "Verificação de argumento falhou: %s", + "Implications failed:": "Implicações falharam:", + "Not enough arguments following: %s": "Argumentos insuficientes a seguir: %s", + "Invalid JSON config file: %s": "Arquivo JSON de configuração inválido: %s", + "Path to JSON config file": "Caminho para o arquivo JSON de configuração", + "Show help": "Exibe ajuda", + "Show version number": "Exibe a versão", + "Did you mean %s?": "Você quis dizer %s?", + "Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos", + "Positionals:": "Posicionais:", + "command": "comando" +} diff --git a/mybulma/node_modules/yargs/locales/ru.json b/mybulma/node_modules/yargs/locales/ru.json new file mode 100644 index 0000000..d5c9e32 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/ru.json @@ -0,0 +1,51 @@ +{ + "Commands:": "Команды:", + "Options:": "Опции:", + "Examples:": "Примеры:", + "boolean": "булевый тип", + "count": "подсчет", + "string": "строковой тип", + "number": "число", + "array": "массив", + "required": "необходимо", + "default": "по умолчанию", + "default:": "по умолчанию:", + "choices:": "возможности:", + "aliases:": "алиасы:", + "generated-value": "генерированное значение", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Недостаточно неопционных аргументов: есть %s, нужно как минимум %s", + "other": "Недостаточно неопционных аргументов: есть %s, нужно как минимум %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Слишком много неопционных аргументов: есть %s, максимум допустимо %s", + "other": "Слишком много неопционных аргументов: есть %s, максимум допустимо %s" + }, + "Missing argument value: %s": { + "one": "Не хватает значения аргумента: %s", + "other": "Не хватает значений аргументов: %s" + }, + "Missing required argument: %s": { + "one": "Не хватает необходимого аргумента: %s", + "other": "Не хватает необходимых аргументов: %s" + }, + "Unknown argument: %s": { + "one": "Неизвестный аргумент: %s", + "other": "Неизвестные аргументы: %s" + }, + "Invalid values:": "Недействительные значения:", + "Argument: %s, Given: %s, Choices: %s": "Аргумент: %s, Данное значение: %s, Возможности: %s", + "Argument check failed: %s": "Проверка аргументов не удалась: %s", + "Implications failed:": "Данный аргумент требует следующий дополнительный аргумент:", + "Not enough arguments following: %s": "Недостаточно следующих аргументов: %s", + "Invalid JSON config file: %s": "Недействительный файл конфигурации JSON: %s", + "Path to JSON config file": "Путь к файлу конфигурации JSON", + "Show help": "Показать помощь", + "Show version number": "Показать номер версии", + "Did you mean %s?": "Вы имели в виду %s?", + "Arguments %s and %s are mutually exclusive": "Аргументы %s и %s являются взаимоисключающими", + "Positionals:": "Позиционные аргументы:", + "command": "команда", + "deprecated": "устар.", + "deprecated: %s": "устар.: %s" +} diff --git a/mybulma/node_modules/yargs/locales/th.json b/mybulma/node_modules/yargs/locales/th.json new file mode 100644 index 0000000..33b048e --- /dev/null +++ b/mybulma/node_modules/yargs/locales/th.json @@ -0,0 +1,46 @@ +{ + "Commands:": "คอมมาน", + "Options:": "ออฟชั่น", + "Examples:": "ตัวอย่าง", + "boolean": "บูลีน", + "count": "นับ", + "string": "สตริง", + "number": "ตัวเลข", + "array": "อาเรย์", + "required": "จำเป็น", + "default": "ค่าเริ่มต้", + "default:": "ค่าเริ่มต้น", + "choices:": "ตัวเลือก", + "aliases:": "เอเลียส", + "generated-value": "ค่าที่ถูกสร้างขึ้น", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "ใส่อาร์กิวเมนต์ไม่ครบตามจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการอย่างน้อย %s ค่า", + "other": "ใส่อาร์กิวเมนต์ไม่ครบตามจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการอย่างน้อย %s ค่า" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "ใส่อาร์กิวเมนต์เกินจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการมากที่สุด %s ค่า", + "other": "ใส่อาร์กิวเมนต์เกินจำนวนที่กำหนด: ใส่ค่ามาจำนวน %s ค่า, แต่ต้องการมากที่สุด %s ค่า" + }, + "Missing argument value: %s": { + "one": "ค่าอาร์กิวเมนต์ที่ขาดไป: %s", + "other": "ค่าอาร์กิวเมนต์ที่ขาดไป: %s" + }, + "Missing required argument: %s": { + "one": "อาร์กิวเมนต์จำเป็นที่ขาดไป: %s", + "other": "อาร์กิวเมนต์จำเป็นที่ขาดไป: %s" + }, + "Unknown argument: %s": { + "one": "อาร์กิวเมนต์ที่ไม่รู้จัก: %s", + "other": "อาร์กิวเมนต์ที่ไม่รู้จัก: %s" + }, + "Invalid values:": "ค่าไม่ถูกต้อง:", + "Argument: %s, Given: %s, Choices: %s": "อาร์กิวเมนต์: %s, ได้รับ: %s, ตัวเลือก: %s", + "Argument check failed: %s": "ตรวจสอบพบอาร์กิวเมนต์ที่ไม่ถูกต้อง: %s", + "Implications failed:": "Implications ไม่สำเร็จ:", + "Not enough arguments following: %s": "ใส่อาร์กิวเมนต์ไม่ครบ: %s", + "Invalid JSON config file: %s": "ไฟล์คอนฟิค JSON ไม่ถูกต้อง: %s", + "Path to JSON config file": "พาทไฟล์คอนฟิค JSON", + "Show help": "ขอความช่วยเหลือ", + "Show version number": "แสดงตัวเลขเวอร์ชั่น", + "Did you mean %s?": "คุณหมายถึง %s?" +} diff --git a/mybulma/node_modules/yargs/locales/tr.json b/mybulma/node_modules/yargs/locales/tr.json new file mode 100644 index 0000000..0d0d2cc --- /dev/null +++ b/mybulma/node_modules/yargs/locales/tr.json @@ -0,0 +1,48 @@ +{ + "Commands:": "Komutlar:", + "Options:": "Seçenekler:", + "Examples:": "Örnekler:", + "boolean": "boolean", + "count": "sayı", + "string": "string", + "number": "numara", + "array": "array", + "required": "zorunlu", + "default": "varsayılan", + "default:": "varsayılan:", + "choices:": "seçimler:", + "aliases:": "takma adlar:", + "generated-value": "oluşturulan-değer", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Seçenek dışı argümanlar yetersiz: %s bulundu, %s gerekli", + "other": "Seçenek dışı argümanlar yetersiz: %s bulundu, %s gerekli" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Seçenek dışı argümanlar gereğinden fazla: %s bulundu, azami %s", + "other": "Seçenek dışı argümanlar gereğinden fazla: %s bulundu, azami %s" + }, + "Missing argument value: %s": { + "one": "Eksik argüman değeri: %s", + "other": "Eksik argüman değerleri: %s" + }, + "Missing required argument: %s": { + "one": "Eksik zorunlu argüman: %s", + "other": "Eksik zorunlu argümanlar: %s" + }, + "Unknown argument: %s": { + "one": "Bilinmeyen argüman: %s", + "other": "Bilinmeyen argümanlar: %s" + }, + "Invalid values:": "Geçersiz değerler:", + "Argument: %s, Given: %s, Choices: %s": "Argüman: %s, Verilen: %s, Seçimler: %s", + "Argument check failed: %s": "Argüman kontrolü başarısız oldu: %s", + "Implications failed:": "Sonuçlar başarısız oldu:", + "Not enough arguments following: %s": "%s için yeterli argüman bulunamadı", + "Invalid JSON config file: %s": "Geçersiz JSON yapılandırma dosyası: %s", + "Path to JSON config file": "JSON yapılandırma dosya konumu", + "Show help": "Yardım detaylarını göster", + "Show version number": "Versiyon detaylarını göster", + "Did you mean %s?": "Bunu mu demek istediniz: %s?", + "Positionals:": "Sıralılar:", + "command": "komut" +} diff --git a/mybulma/node_modules/yargs/locales/uk_UA.json b/mybulma/node_modules/yargs/locales/uk_UA.json new file mode 100644 index 0000000..0af0e99 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/uk_UA.json @@ -0,0 +1,51 @@ +{ + "Commands:": "Команди:", + "Options:": "Опції:", + "Examples:": "Приклади:", + "boolean": "boolean", + "count": "кількість", + "string": "строка", + "number": "число", + "array": "масива", + "required": "обов'язково", + "default": "за замовчуванням", + "default:": "за замовчуванням:", + "choices:": "доступні варіанти:", + "aliases:": "псевдоніми:", + "generated-value": "згенероване значення", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "Недостатньо аргументів: наразі %s, потрібно %s або більше", + "other": "Недостатньо аргументів: наразі %s, потрібно %s або більше" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "Забагато аргументів: наразі %s, максимум %s", + "other": "Too many non-option arguments: наразі %s, максимум of %s" + }, + "Missing argument value: %s": { + "one": "Відсутнє значення для аргументу: %s", + "other": "Відсутні значення для аргументу: %s" + }, + "Missing required argument: %s": { + "one": "Відсутній обов'язковий аргумент: %s", + "other": "Відсутні обов'язкові аргументи: %s" + }, + "Unknown argument: %s": { + "one": "Аргумент %s не підтримується", + "other": "Аргументи %s не підтримуються" + }, + "Invalid values:": "Некоректні значення:", + "Argument: %s, Given: %s, Choices: %s": "Аргумент: %s, Введено: %s, Доступні варіанти: %s", + "Argument check failed: %s": "Аргумент не пройшов перевірку: %s", + "Implications failed:": "Відсутні залежні аргументи:", + "Not enough arguments following: %s": "Не достатньо аргументів після: %s", + "Invalid JSON config file: %s": "Некоректний JSON-файл конфігурації: %s", + "Path to JSON config file": "Шлях до JSON-файлу конфігурації", + "Show help": "Показати довідку", + "Show version number": "Показати версію", + "Did you mean %s?": "Можливо, ви мали на увазі %s?", + "Arguments %s and %s are mutually exclusive" : "Аргументи %s та %s взаємовиключні", + "Positionals:": "Позиційні:", + "command": "команда", + "deprecated": "застарілий", + "deprecated: %s": "застарілий: %s" +} diff --git a/mybulma/node_modules/yargs/locales/uz.json b/mybulma/node_modules/yargs/locales/uz.json new file mode 100644 index 0000000..0d07168 --- /dev/null +++ b/mybulma/node_modules/yargs/locales/uz.json @@ -0,0 +1,52 @@ +{ + "Commands:": "Buyruqlar:", + "Options:": "Imkoniyatlar:", + "Examples:": "Misollar:", + "boolean": "boolean", + "count": "sanoq", + "string": "satr", + "number": "raqam", + "array": "massiv", + "required": "majburiy", + "default": "boshlang'ich", + "default:": "boshlang'ich:", + "choices:": "tanlovlar:", + "aliases:": "taxalluslar:", + "generated-value": "yaratilgan-qiymat", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "No-imkoniyat argumentlar yetarli emas: berilgan %s, minimum %s", + "other": "No-imkoniyat argumentlar yetarli emas: berilgan %s, minimum %s" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "No-imkoniyat argumentlar juda ko'p: berilgan %s, maksimum %s", + "other": "No-imkoniyat argumentlar juda ko'p: got %s, maksimum %s" + }, + "Missing argument value: %s": { + "one": "Argument qiymati berilmagan: %s", + "other": "Argument qiymatlari berilmagan: %s" + }, + "Missing required argument: %s": { + "one": "Majburiy argument berilmagan: %s", + "other": "Majburiy argumentlar berilmagan: %s" + }, + "Unknown argument: %s": { + "one": "Noma'lum argument berilmagan: %s", + "other": "Noma'lum argumentlar berilmagan: %s" + }, + "Invalid values:": "Nosoz qiymatlar:", + "Argument: %s, Given: %s, Choices: %s": "Argument: %s, Berilgan: %s, Tanlovlar: %s", + "Argument check failed: %s": "Muvaffaqiyatsiz argument tekshiruvi: %s", + "Implications failed:": "Bog'liq argumentlar berilmagan:", + "Not enough arguments following: %s": "Quyidagi argumentlar yetarli emas: %s", + "Invalid JSON config file: %s": "Nosoz JSON konfiguratsiya fayli: %s", + "Path to JSON config file": "JSON konfiguratsiya fayli joylashuvi", + "Show help": "Yordam ko'rsatish", + "Show version number": "Versiyani ko'rsatish", + "Did you mean %s?": "%s ni nazarda tutyapsizmi?", + "Arguments %s and %s are mutually exclusive" : "%s va %s argumentlari alohida", + "Positionals:": "Positsionallar:", + "command": "buyruq", + "deprecated": "eskirgan", + "deprecated: %s": "eskirgan: %s" + } + \ No newline at end of file diff --git a/mybulma/node_modules/yargs/locales/zh_CN.json b/mybulma/node_modules/yargs/locales/zh_CN.json new file mode 100644 index 0000000..257d26b --- /dev/null +++ b/mybulma/node_modules/yargs/locales/zh_CN.json @@ -0,0 +1,48 @@ +{ + "Commands:": "命令:", + "Options:": "选项:", + "Examples:": "示例:", + "boolean": "布尔", + "count": "计数", + "string": "字符串", + "number": "数字", + "array": "数组", + "required": "必需", + "default": "默认值", + "default:": "默认值:", + "choices:": "可选值:", + "generated-value": "生成的值", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "缺少 non-option 参数:传入了 %s 个, 至少需要 %s 个", + "other": "缺少 non-option 参数:传入了 %s 个, 至少需要 %s 个" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "non-option 参数过多:传入了 %s 个, 最大允许 %s 个", + "other": "non-option 参数过多:传入了 %s 个, 最大允许 %s 个" + }, + "Missing argument value: %s": { + "one": "没有给此选项指定值:%s", + "other": "没有给这些选项指定值:%s" + }, + "Missing required argument: %s": { + "one": "缺少必须的选项:%s", + "other": "缺少这些必须的选项:%s" + }, + "Unknown argument: %s": { + "one": "无法识别的选项:%s", + "other": "无法识别这些选项:%s" + }, + "Invalid values:": "无效的选项值:", + "Argument: %s, Given: %s, Choices: %s": "选项名称: %s, 传入的值: %s, 可选的值:%s", + "Argument check failed: %s": "选项值验证失败:%s", + "Implications failed:": "缺少依赖的选项:", + "Not enough arguments following: %s": "没有提供足够的值给此选项:%s", + "Invalid JSON config file: %s": "无效的 JSON 配置文件:%s", + "Path to JSON config file": "JSON 配置文件的路径", + "Show help": "显示帮助信息", + "Show version number": "显示版本号", + "Did you mean %s?": "是指 %s?", + "Arguments %s and %s are mutually exclusive" : "选项 %s 和 %s 是互斥的", + "Positionals:": "位置:", + "command": "命令" +} diff --git a/mybulma/node_modules/yargs/locales/zh_TW.json b/mybulma/node_modules/yargs/locales/zh_TW.json new file mode 100644 index 0000000..e38495d --- /dev/null +++ b/mybulma/node_modules/yargs/locales/zh_TW.json @@ -0,0 +1,51 @@ +{ + "Commands:": "命令:", + "Options:": "選項:", + "Examples:": "範例:", + "boolean": "布林", + "count": "次數", + "string": "字串", + "number": "數字", + "array": "陣列", + "required": "必填", + "default": "預設值", + "default:": "預設值:", + "choices:": "可選值:", + "aliases:": "別名:", + "generated-value": "生成的值", + "Not enough non-option arguments: got %s, need at least %s": { + "one": "non-option 引數不足:只傳入了 %s 個, 至少要 %s 個", + "other": "non-option 引數不足:只傳入了 %s 個, 至少要 %s 個" + }, + "Too many non-option arguments: got %s, maximum of %s": { + "one": "non-option 引數過多:傳入了 %s 個, 但最多 %s 個", + "other": "non-option 引數過多:傳入了 %s 個, 但最多 %s 個" + }, + "Missing argument value: %s": { + "one": "此引數無指定值:%s", + "other": "這些引數無指定值:%s" + }, + "Missing required argument: %s": { + "one": "缺少必須的引數:%s", + "other": "缺少這些必須的引數:%s" + }, + "Unknown argument: %s": { + "one": "未知的引數:%s", + "other": "未知的引數:%s" + }, + "Invalid values:": "無效的選項值:", + "Argument: %s, Given: %s, Choices: %s": "引數名稱: %s, 傳入的值: %s, 可選的值:%s", + "Argument check failed: %s": "引數驗證失敗:%s", + "Implications failed:": "缺少依賴引數:", + "Not enough arguments following: %s": "沒有提供足夠的值給此引數:%s", + "Invalid JSON config file: %s": "無效的 JSON 設置文件:%s", + "Path to JSON config file": "JSON 設置文件的路徑", + "Show help": "顯示說明", + "Show version number": "顯示版本", + "Did you mean %s?": "您是指 %s 嗎?", + "Arguments %s and %s are mutually exclusive" : "引數 %s 和 %s 互斥", + "Positionals:": "位置:", + "command": "命令", + "deprecated": "已淘汰", + "deprecated: %s": "已淘汰:%s" + } diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/CHANGELOG.md b/mybulma/node_modules/yargs/node_modules/yargs-parser/CHANGELOG.md new file mode 100644 index 0000000..584eb86 --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/CHANGELOG.md @@ -0,0 +1,308 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [21.1.1](https://github.com/yargs/yargs-parser/compare/yargs-parser-v21.1.0...yargs-parser-v21.1.1) (2022-08-04) + + +### Bug Fixes + +* **typescript:** ignore .cts files during publish ([#454](https://github.com/yargs/yargs-parser/issues/454)) ([d69f9c3](https://github.com/yargs/yargs-parser/commit/d69f9c3a91c3ad2f9494d0a94e29a8b76c41b81b)), closes [#452](https://github.com/yargs/yargs-parser/issues/452) + +## [21.1.0](https://github.com/yargs/yargs-parser/compare/yargs-parser-v21.0.1...yargs-parser-v21.1.0) (2022-08-03) + + +### Features + +* allow the browser build to be imported ([#443](https://github.com/yargs/yargs-parser/issues/443)) ([a89259f](https://github.com/yargs/yargs-parser/commit/a89259ff41d6f5312b3ce8a30bef343a993f395a)) + + +### Bug Fixes + +* **halt-at-non-option:** prevent known args from being parsed when "unknown-options-as-args" is enabled ([#438](https://github.com/yargs/yargs-parser/issues/438)) ([c474bc1](https://github.com/yargs/yargs-parser/commit/c474bc10c3aa0ae864b95e5722730114ef15f573)) +* node version check now uses process.versions.node ([#450](https://github.com/yargs/yargs-parser/issues/450)) ([d07bcdb](https://github.com/yargs/yargs-parser/commit/d07bcdbe43075f7201fbe8a08e491217247fe1f1)) +* parse options ending with 3+ hyphens ([#434](https://github.com/yargs/yargs-parser/issues/434)) ([4f1060b](https://github.com/yargs/yargs-parser/commit/4f1060b50759fadbac3315c5117b0c3d65b0a7d8)) + +### [21.0.1](https://github.com/yargs/yargs-parser/compare/yargs-parser-v21.0.0...yargs-parser-v21.0.1) (2022-02-27) + + +### Bug Fixes + +* return deno env object ([#432](https://github.com/yargs/yargs-parser/issues/432)) ([b00eb87](https://github.com/yargs/yargs-parser/commit/b00eb87b4860a890dd2dab0d6058241bbfd2b3ec)) + +## [21.0.0](https://www.github.com/yargs/yargs-parser/compare/yargs-parser-v20.2.9...yargs-parser-v21.0.0) (2021-11-15) + + +### ⚠ BREAKING CHANGES + +* drops support for 10 (#421) + +### Bug Fixes + +* esm json import ([#416](https://www.github.com/yargs/yargs-parser/issues/416)) ([90f970a](https://www.github.com/yargs/yargs-parser/commit/90f970a6482dd4f5b5eb18d38596dd6f02d73edf)) +* parser should preserve inner quotes ([#407](https://www.github.com/yargs/yargs-parser/issues/407)) ([ae11f49](https://www.github.com/yargs/yargs-parser/commit/ae11f496a8318ea8885aa25015d429b33713c314)) + + +### Code Refactoring + +* drops support for 10 ([#421](https://www.github.com/yargs/yargs-parser/issues/421)) ([3aaf878](https://www.github.com/yargs/yargs-parser/commit/3aaf8784f5c7f2aec6108c1c6a55537fa7e3b5c1)) + +### [20.2.9](https://www.github.com/yargs/yargs-parser/compare/yargs-parser-v20.2.8...yargs-parser-v20.2.9) (2021-06-20) + + +### Bug Fixes + +* **build:** fixed automated release pipeline ([1fe9135](https://www.github.com/yargs/yargs-parser/commit/1fe9135884790a083615419b2861683e2597dac3)) + +### [20.2.8](https://www.github.com/yargs/yargs-parser/compare/yargs-parser-v20.2.7...yargs-parser-v20.2.8) (2021-06-20) + + +### Bug Fixes + +* **locale:** Turkish camelize and decamelize issues with toLocaleLowerCase/toLocaleUpperCase ([2617303](https://www.github.com/yargs/yargs-parser/commit/261730383e02448562f737b94bbd1f164aed5143)) +* **perf:** address slow parse when using unknown-options-as-args ([#394](https://www.github.com/yargs/yargs-parser/issues/394)) ([441f059](https://www.github.com/yargs/yargs-parser/commit/441f059d585d446551068ad213db79ac91daf83a)) +* **string-utils:** detect [0,1] ranged values as numbers ([#388](https://www.github.com/yargs/yargs-parser/issues/388)) ([efcc32c](https://www.github.com/yargs/yargs-parser/commit/efcc32c2d6b09aba31abfa2db9bd947befe5586b)) + +### [20.2.7](https://www.github.com/yargs/yargs-parser/compare/v20.2.6...v20.2.7) (2021-03-10) + + +### Bug Fixes + +* **deno:** force release for Deno ([6687c97](https://www.github.com/yargs/yargs-parser/commit/6687c972d0f3ca7865a97908dde3080b05f8b026)) + +### [20.2.6](https://www.github.com/yargs/yargs-parser/compare/v20.2.5...v20.2.6) (2021-02-22) + + +### Bug Fixes + +* **populate--:** -- should always be array ([#354](https://www.github.com/yargs/yargs-parser/issues/354)) ([585ae8f](https://www.github.com/yargs/yargs-parser/commit/585ae8ffad74cc02974f92d788e750137fd65146)) + +### [20.2.5](https://www.github.com/yargs/yargs-parser/compare/v20.2.4...v20.2.5) (2021-02-13) + + +### Bug Fixes + +* do not lowercase camel cased string ([#348](https://www.github.com/yargs/yargs-parser/issues/348)) ([5f4da1f](https://www.github.com/yargs/yargs-parser/commit/5f4da1f17d9d50542d2aaa206c9806ce3e320335)) + +### [20.2.4](https://www.github.com/yargs/yargs-parser/compare/v20.2.3...v20.2.4) (2020-11-09) + + +### Bug Fixes + +* **deno:** address import issues in Deno ([#339](https://www.github.com/yargs/yargs-parser/issues/339)) ([3b54e5e](https://www.github.com/yargs/yargs-parser/commit/3b54e5eef6e9a7b7c6eec7c12bab3ba3b8ba8306)) + +### [20.2.3](https://www.github.com/yargs/yargs-parser/compare/v20.2.2...v20.2.3) (2020-10-16) + + +### Bug Fixes + +* **exports:** node 13.0 and 13.1 require the dotted object form _with_ a string fallback ([#336](https://www.github.com/yargs/yargs-parser/issues/336)) ([3ae7242](https://www.github.com/yargs/yargs-parser/commit/3ae7242040ff876d28dabded60ac226e00150c88)) + +### [20.2.2](https://www.github.com/yargs/yargs-parser/compare/v20.2.1...v20.2.2) (2020-10-14) + + +### Bug Fixes + +* **exports:** node 13.0-13.6 require a string fallback ([#333](https://www.github.com/yargs/yargs-parser/issues/333)) ([291aeda](https://www.github.com/yargs/yargs-parser/commit/291aeda06b685b7a015d83bdf2558e180b37388d)) + +### [20.2.1](https://www.github.com/yargs/yargs-parser/compare/v20.2.0...v20.2.1) (2020-10-01) + + +### Bug Fixes + +* **deno:** update types for deno ^1.4.0 ([#330](https://www.github.com/yargs/yargs-parser/issues/330)) ([0ab92e5](https://www.github.com/yargs/yargs-parser/commit/0ab92e50b090f11196334c048c9c92cecaddaf56)) + +## [20.2.0](https://www.github.com/yargs/yargs-parser/compare/v20.1.0...v20.2.0) (2020-09-21) + + +### Features + +* **string-utils:** export looksLikeNumber helper ([#324](https://www.github.com/yargs/yargs-parser/issues/324)) ([c8580a2](https://www.github.com/yargs/yargs-parser/commit/c8580a2327b55f6342acecb6e72b62963d506750)) + + +### Bug Fixes + +* **unknown-options-as-args:** convert positionals that look like numbers ([#326](https://www.github.com/yargs/yargs-parser/issues/326)) ([f85ebb4](https://www.github.com/yargs/yargs-parser/commit/f85ebb4face9d4b0f56147659404cbe0002f3dad)) + +## [20.1.0](https://www.github.com/yargs/yargs-parser/compare/v20.0.0...v20.1.0) (2020-09-20) + + +### Features + +* adds parse-positional-numbers configuration ([#321](https://www.github.com/yargs/yargs-parser/issues/321)) ([9cec00a](https://www.github.com/yargs/yargs-parser/commit/9cec00a622251292ffb7dce6f78f5353afaa0d4c)) + + +### Bug Fixes + +* **build:** update release-please; make labels kick off builds ([#323](https://www.github.com/yargs/yargs-parser/issues/323)) ([09f448b](https://www.github.com/yargs/yargs-parser/commit/09f448b4cd66e25d2872544718df46dab8af062a)) + +## [20.0.0](https://www.github.com/yargs/yargs-parser/compare/v19.0.4...v20.0.0) (2020-09-09) + + +### ⚠ BREAKING CHANGES + +* do not ship type definitions (#318) + +### Bug Fixes + +* only strip camel case if hyphenated ([#316](https://www.github.com/yargs/yargs-parser/issues/316)) ([95a9e78](https://www.github.com/yargs/yargs-parser/commit/95a9e785127b9bbf2d1db1f1f808ca1fb100e82a)), closes [#315](https://www.github.com/yargs/yargs-parser/issues/315) + + +### Code Refactoring + +* do not ship type definitions ([#318](https://www.github.com/yargs/yargs-parser/issues/318)) ([8fbd56f](https://www.github.com/yargs/yargs-parser/commit/8fbd56f1d0b6c44c30fca62708812151ca0ce330)) + +### [19.0.4](https://www.github.com/yargs/yargs-parser/compare/v19.0.3...v19.0.4) (2020-08-27) + + +### Bug Fixes + +* **build:** fixing publication ([#310](https://www.github.com/yargs/yargs-parser/issues/310)) ([5d3c6c2](https://www.github.com/yargs/yargs-parser/commit/5d3c6c29a9126248ba601920d9cf87c78e161ff5)) + +### [19.0.3](https://www.github.com/yargs/yargs-parser/compare/v19.0.2...v19.0.3) (2020-08-27) + + +### Bug Fixes + +* **build:** switch to action for publish ([#308](https://www.github.com/yargs/yargs-parser/issues/308)) ([5c2f305](https://www.github.com/yargs/yargs-parser/commit/5c2f30585342bcd8aaf926407c863099d256d174)) + +### [19.0.2](https://www.github.com/yargs/yargs-parser/compare/v19.0.1...v19.0.2) (2020-08-27) + + +### Bug Fixes + +* **types:** envPrefix should be optional ([#305](https://www.github.com/yargs/yargs-parser/issues/305)) ([ae3f180](https://www.github.com/yargs/yargs-parser/commit/ae3f180e14df2de2fd962145f4518f9aa0e76523)) + +### [19.0.1](https://www.github.com/yargs/yargs-parser/compare/v19.0.0...v19.0.1) (2020-08-09) + + +### Bug Fixes + +* **build:** push tag created for deno ([2186a14](https://www.github.com/yargs/yargs-parser/commit/2186a14989749887d56189867602e39e6679f8b0)) + +## [19.0.0](https://www.github.com/yargs/yargs-parser/compare/v18.1.3...v19.0.0) (2020-08-09) + + +### ⚠ BREAKING CHANGES + +* adds support for ESM and Deno (#295) +* **ts:** projects using `@types/yargs-parser` may see variations in type definitions. +* drops Node 6. begin following Node.js LTS schedule (#278) + +### Features + +* adds support for ESM and Deno ([#295](https://www.github.com/yargs/yargs-parser/issues/295)) ([195bc4a](https://www.github.com/yargs/yargs-parser/commit/195bc4a7f20c2a8f8e33fbb6ba96ef6e9a0120a1)) +* expose camelCase and decamelize helpers ([#296](https://www.github.com/yargs/yargs-parser/issues/296)) ([39154ce](https://www.github.com/yargs/yargs-parser/commit/39154ceb5bdcf76b5f59a9219b34cedb79b67f26)) +* **deps:** update to latest camelcase/decamelize ([#281](https://www.github.com/yargs/yargs-parser/issues/281)) ([8931ab0](https://www.github.com/yargs/yargs-parser/commit/8931ab08f686cc55286f33a95a83537da2be5516)) + + +### Bug Fixes + +* boolean numeric short option ([#294](https://www.github.com/yargs/yargs-parser/issues/294)) ([f600082](https://www.github.com/yargs/yargs-parser/commit/f600082c959e092076caf420bbbc9d7a231e2418)) +* raise permission error for Deno if config load fails ([#298](https://www.github.com/yargs/yargs-parser/issues/298)) ([1174e2b](https://www.github.com/yargs/yargs-parser/commit/1174e2b3f0c845a1cd64e14ffc3703e730567a84)) +* **deps:** update dependency decamelize to v3 ([#274](https://www.github.com/yargs/yargs-parser/issues/274)) ([4d98698](https://www.github.com/yargs/yargs-parser/commit/4d98698bc6767e84ec54a0842908191739be73b7)) +* **types:** switch back to using Partial types ([#293](https://www.github.com/yargs/yargs-parser/issues/293)) ([bdc80ba](https://www.github.com/yargs/yargs-parser/commit/bdc80ba59fa13bc3025ce0a85e8bad9f9da24ea7)) + + +### Build System + +* drops Node 6. begin following Node.js LTS schedule ([#278](https://www.github.com/yargs/yargs-parser/issues/278)) ([9014ed7](https://www.github.com/yargs/yargs-parser/commit/9014ed722a32768b96b829e65a31705db5c1458a)) + + +### Code Refactoring + +* **ts:** move index.js to TypeScript ([#292](https://www.github.com/yargs/yargs-parser/issues/292)) ([f78d2b9](https://www.github.com/yargs/yargs-parser/commit/f78d2b97567ac4828624406e420b4047c710b789)) + +### [18.1.3](https://www.github.com/yargs/yargs-parser/compare/v18.1.2...v18.1.3) (2020-04-16) + + +### Bug Fixes + +* **setArg:** options using camel-case and dot-notation populated twice ([#268](https://www.github.com/yargs/yargs-parser/issues/268)) ([f7e15b9](https://www.github.com/yargs/yargs-parser/commit/f7e15b9800900b9856acac1a830a5f35847be73e)) + +### [18.1.2](https://www.github.com/yargs/yargs-parser/compare/v18.1.1...v18.1.2) (2020-03-26) + + +### Bug Fixes + +* **array, nargs:** support -o=--value and --option=--value format ([#262](https://www.github.com/yargs/yargs-parser/issues/262)) ([41d3f81](https://www.github.com/yargs/yargs-parser/commit/41d3f8139e116706b28de9b0de3433feb08d2f13)) + +### [18.1.1](https://www.github.com/yargs/yargs-parser/compare/v18.1.0...v18.1.1) (2020-03-16) + + +### Bug Fixes + +* \_\_proto\_\_ will now be replaced with \_\_\_proto\_\_\_ in parse ([#258](https://www.github.com/yargs/yargs-parser/issues/258)), patching a potential +prototype pollution vulnerability. This was reported by the Snyk Security Research Team.([63810ca](https://www.github.com/yargs/yargs-parser/commit/63810ca1ae1a24b08293a4d971e70e058c7a41e2)) + +## [18.1.0](https://www.github.com/yargs/yargs-parser/compare/v18.0.0...v18.1.0) (2020-03-07) + + +### Features + +* introduce single-digit boolean aliases ([#255](https://www.github.com/yargs/yargs-parser/issues/255)) ([9c60265](https://www.github.com/yargs/yargs-parser/commit/9c60265fd7a03cb98e6df3e32c8c5e7508d9f56f)) + +## [18.0.0](https://www.github.com/yargs/yargs-parser/compare/v17.1.0...v18.0.0) (2020-03-02) + + +### ⚠ BREAKING CHANGES + +* the narg count is now enforced when parsing arrays. + +### Features + +* NaN can now be provided as a value for nargs, indicating "at least" one value is expected for array ([#251](https://www.github.com/yargs/yargs-parser/issues/251)) ([9db4be8](https://www.github.com/yargs/yargs-parser/commit/9db4be81417a2c7097128db34d86fe70ef4af70c)) + +## [17.1.0](https://www.github.com/yargs/yargs-parser/compare/v17.0.1...v17.1.0) (2020-03-01) + + +### Features + +* introduce greedy-arrays config, for specifying whether arrays consume multiple positionals ([#249](https://www.github.com/yargs/yargs-parser/issues/249)) ([60e880a](https://www.github.com/yargs/yargs-parser/commit/60e880a837046314d89fa4725f923837fd33a9eb)) + +### [17.0.1](https://www.github.com/yargs/yargs-parser/compare/v17.0.0...v17.0.1) (2020-02-29) + + +### Bug Fixes + +* normalized keys were not enumerable ([#247](https://www.github.com/yargs/yargs-parser/issues/247)) ([57119f9](https://www.github.com/yargs/yargs-parser/commit/57119f9f17cf27499bd95e61c2f72d18314f11ba)) + +## [17.0.0](https://www.github.com/yargs/yargs-parser/compare/v16.1.0...v17.0.0) (2020-02-10) + + +### ⚠ BREAKING CHANGES + +* this reverts parsing behavior of booleans to that of yargs@14 +* objects used during parsing are now created with a null +prototype. There may be some scenarios where this change in behavior +leaks externally. + +### Features + +* boolean arguments will not be collected into an implicit array ([#236](https://www.github.com/yargs/yargs-parser/issues/236)) ([34c4e19](https://www.github.com/yargs/yargs-parser/commit/34c4e19bae4e7af63e3cb6fa654a97ed476e5eb5)) +* introduce nargs-eats-options config option ([#246](https://www.github.com/yargs/yargs-parser/issues/246)) ([d50822a](https://www.github.com/yargs/yargs-parser/commit/d50822ac10e1b05f2e9643671ca131ac251b6732)) + + +### Bug Fixes + +* address bugs with "uknown-options-as-args" ([bc023e3](https://www.github.com/yargs/yargs-parser/commit/bc023e3b13e20a118353f9507d1c999bf388a346)) +* array should take precedence over nargs, but enforce nargs ([#243](https://www.github.com/yargs/yargs-parser/issues/243)) ([4cbc188](https://www.github.com/yargs/yargs-parser/commit/4cbc188b7abb2249529a19c090338debdad2fe6c)) +* support keys that collide with object prototypes ([#234](https://www.github.com/yargs/yargs-parser/issues/234)) ([1587b6d](https://www.github.com/yargs/yargs-parser/commit/1587b6d91db853a9109f1be6b209077993fee4de)) +* unknown options terminated with digits now handled by unknown-options-as-args ([#238](https://www.github.com/yargs/yargs-parser/issues/238)) ([d36cdfa](https://www.github.com/yargs/yargs-parser/commit/d36cdfa854254d7c7e0fe1d583818332ac46c2a5)) + +## [16.1.0](https://www.github.com/yargs/yargs-parser/compare/v16.0.0...v16.1.0) (2019-11-01) + + +### ⚠ BREAKING CHANGES + +* populate error if incompatible narg/count or array/count options are used (#191) + +### Features + +* options that have had their default value used are now tracked ([#211](https://www.github.com/yargs/yargs-parser/issues/211)) ([a525234](https://www.github.com/yargs/yargs-parser/commit/a525234558c847deedd73f8792e0a3b77b26e2c0)) +* populate error if incompatible narg/count or array/count options are used ([#191](https://www.github.com/yargs/yargs-parser/issues/191)) ([84a401f](https://www.github.com/yargs/yargs-parser/commit/84a401f0fa3095e0a19661670d1570d0c3b9d3c9)) + + +### Reverts + +* revert 16.0.0 CHANGELOG entry ([920320a](https://www.github.com/yargs/yargs-parser/commit/920320ad9861bbfd58eda39221ae211540fc1daf)) diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt b/mybulma/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt new file mode 100644 index 0000000..836440b --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt @@ -0,0 +1,14 @@ +Copyright (c) 2016, Contributors + +Permission to use, copy, modify, and/or distribute this software +for any purpose with or without fee is hereby granted, provided +that the above copyright notice and this permission notice +appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/README.md b/mybulma/node_modules/yargs/node_modules/yargs-parser/README.md new file mode 100644 index 0000000..2614840 --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/README.md @@ -0,0 +1,518 @@ +# yargs-parser + +![ci](https://github.com/yargs/yargs-parser/workflows/ci/badge.svg) +[![NPM version](https://img.shields.io/npm/v/yargs-parser.svg)](https://www.npmjs.com/package/yargs-parser) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) +![nycrc config on GitHub](https://img.shields.io/nycrc/yargs/yargs-parser) + +The mighty option parser used by [yargs](https://github.com/yargs/yargs). + +visit the [yargs website](http://yargs.js.org/) for more examples, and thorough usage instructions. + + + +## Example + +```sh +npm i yargs-parser --save +``` + +```js +const argv = require('yargs-parser')(process.argv.slice(2)) +console.log(argv) +``` + +```console +$ node example.js --foo=33 --bar hello +{ _: [], foo: 33, bar: 'hello' } +``` + +_or parse a string!_ + +```js +const argv = require('yargs-parser')('--foo=99 --bar=33') +console.log(argv) +``` + +```console +{ _: [], foo: 99, bar: 33 } +``` + +Convert an array of mixed types before passing to `yargs-parser`: + +```js +const parse = require('yargs-parser') +parse(['-f', 11, '--zoom', 55].join(' ')) // <-- array to string +parse(['-f', 11, '--zoom', 55].map(String)) // <-- array of strings +``` + +## Deno Example + +As of `v19` `yargs-parser` supports [Deno](https://github.com/denoland/deno): + +```typescript +import parser from "https://deno.land/x/yargs_parser/deno.ts"; + +const argv = parser('--foo=99 --bar=9987930', { + string: ['bar'] +}) +console.log(argv) +``` + +## ESM Example + +As of `v19` `yargs-parser` supports ESM (_both in Node.js and in the browser_): + +**Node.js:** + +```js +import parser from 'yargs-parser' + +const argv = parser('--foo=99 --bar=9987930', { + string: ['bar'] +}) +console.log(argv) +``` + +**Browsers:** + +```html + + + + +``` + +## API + +### parser(args, opts={}) + +Parses command line arguments returning a simple mapping of keys and values. + +**expects:** + +* `args`: a string or array of strings representing the options to parse. +* `opts`: provide a set of hints indicating how `args` should be parsed: + * `opts.alias`: an object representing the set of aliases for a key: `{alias: {foo: ['f']}}`. + * `opts.array`: indicate that keys should be parsed as an array: `{array: ['foo', 'bar']}`.
    + Indicate that keys should be parsed as an array and coerced to booleans / numbers:
    + `{array: [{ key: 'foo', boolean: true }, {key: 'bar', number: true}]}`. + * `opts.boolean`: arguments should be parsed as booleans: `{boolean: ['x', 'y']}`. + * `opts.coerce`: provide a custom synchronous function that returns a coerced value from the argument provided + (or throws an error). For arrays the function is called only once for the entire array:
    + `{coerce: {foo: function (arg) {return modifiedArg}}}`. + * `opts.config`: indicate a key that represents a path to a configuration file (this file will be loaded and parsed). + * `opts.configObjects`: configuration objects to parse, their properties will be set as arguments:
    + `{configObjects: [{'x': 5, 'y': 33}, {'z': 44}]}`. + * `opts.configuration`: provide configuration options to the yargs-parser (see: [configuration](#configuration)). + * `opts.count`: indicate a key that should be used as a counter, e.g., `-vvv` = `{v: 3}`. + * `opts.default`: provide default values for keys: `{default: {x: 33, y: 'hello world!'}}`. + * `opts.envPrefix`: environment variables (`process.env`) with the prefix provided should be parsed. + * `opts.narg`: specify that a key requires `n` arguments: `{narg: {x: 2}}`. + * `opts.normalize`: `path.normalize()` will be applied to values set to this key. + * `opts.number`: keys should be treated as numbers. + * `opts.string`: keys should be treated as strings (even if they resemble a number `-x 33`). + +**returns:** + +* `obj`: an object representing the parsed value of `args` + * `key/value`: key value pairs for each argument and their aliases. + * `_`: an array representing the positional arguments. + * [optional] `--`: an array with arguments after the end-of-options flag `--`. + +### require('yargs-parser').detailed(args, opts={}) + +Parses a command line string, returning detailed information required by the +yargs engine. + +**expects:** + +* `args`: a string or array of strings representing options to parse. +* `opts`: provide a set of hints indicating how `args`, inputs are identical to `require('yargs-parser')(args, opts={})`. + +**returns:** + +* `argv`: an object representing the parsed value of `args` + * `key/value`: key value pairs for each argument and their aliases. + * `_`: an array representing the positional arguments. + * [optional] `--`: an array with arguments after the end-of-options flag `--`. +* `error`: populated with an error object if an exception occurred during parsing. +* `aliases`: the inferred list of aliases built by combining lists in `opts.alias`. +* `newAliases`: any new aliases added via camel-case expansion: + * `boolean`: `{ fooBar: true }` +* `defaulted`: any new argument created by `opts.default`, no aliases included. + * `boolean`: `{ foo: true }` +* `configuration`: given by default settings and `opts.configuration`. + + + +### Configuration + +The yargs-parser applies several automated transformations on the keys provided +in `args`. These features can be turned on and off using the `configuration` field +of `opts`. + +```js +var parsed = parser(['--no-dice'], { + configuration: { + 'boolean-negation': false + } +}) +``` + +### short option groups + +* default: `true`. +* key: `short-option-groups`. + +Should a group of short-options be treated as boolean flags? + +```console +$ node example.js -abc +{ _: [], a: true, b: true, c: true } +``` + +_if disabled:_ + +```console +$ node example.js -abc +{ _: [], abc: true } +``` + +### camel-case expansion + +* default: `true`. +* key: `camel-case-expansion`. + +Should hyphenated arguments be expanded into camel-case aliases? + +```console +$ node example.js --foo-bar +{ _: [], 'foo-bar': true, fooBar: true } +``` + +_if disabled:_ + +```console +$ node example.js --foo-bar +{ _: [], 'foo-bar': true } +``` + +### dot-notation + +* default: `true` +* key: `dot-notation` + +Should keys that contain `.` be treated as objects? + +```console +$ node example.js --foo.bar +{ _: [], foo: { bar: true } } +``` + +_if disabled:_ + +```console +$ node example.js --foo.bar +{ _: [], "foo.bar": true } +``` + +### parse numbers + +* default: `true` +* key: `parse-numbers` + +Should keys that look like numbers be treated as such? + +```console +$ node example.js --foo=99.3 +{ _: [], foo: 99.3 } +``` + +_if disabled:_ + +```console +$ node example.js --foo=99.3 +{ _: [], foo: "99.3" } +``` + +### parse positional numbers + +* default: `true` +* key: `parse-positional-numbers` + +Should positional keys that look like numbers be treated as such. + +```console +$ node example.js 99.3 +{ _: [99.3] } +``` + +_if disabled:_ + +```console +$ node example.js 99.3 +{ _: ['99.3'] } +``` + +### boolean negation + +* default: `true` +* key: `boolean-negation` + +Should variables prefixed with `--no` be treated as negations? + +```console +$ node example.js --no-foo +{ _: [], foo: false } +``` + +_if disabled:_ + +```console +$ node example.js --no-foo +{ _: [], "no-foo": true } +``` + +### combine arrays + +* default: `false` +* key: `combine-arrays` + +Should arrays be combined when provided by both command line arguments and +a configuration file. + +### duplicate arguments array + +* default: `true` +* key: `duplicate-arguments-array` + +Should arguments be coerced into an array when duplicated: + +```console +$ node example.js -x 1 -x 2 +{ _: [], x: [1, 2] } +``` + +_if disabled:_ + +```console +$ node example.js -x 1 -x 2 +{ _: [], x: 2 } +``` + +### flatten duplicate arrays + +* default: `true` +* key: `flatten-duplicate-arrays` + +Should array arguments be coerced into a single array when duplicated: + +```console +$ node example.js -x 1 2 -x 3 4 +{ _: [], x: [1, 2, 3, 4] } +``` + +_if disabled:_ + +```console +$ node example.js -x 1 2 -x 3 4 +{ _: [], x: [[1, 2], [3, 4]] } +``` + +### greedy arrays + +* default: `true` +* key: `greedy-arrays` + +Should arrays consume more than one positional argument following their flag. + +```console +$ node example --arr 1 2 +{ _: [], arr: [1, 2] } +``` + +_if disabled:_ + +```console +$ node example --arr 1 2 +{ _: [2], arr: [1] } +``` + +**Note: in `v18.0.0` we are considering defaulting greedy arrays to `false`.** + +### nargs eats options + +* default: `false` +* key: `nargs-eats-options` + +Should nargs consume dash options as well as positional arguments. + +### negation prefix + +* default: `no-` +* key: `negation-prefix` + +The prefix to use for negated boolean variables. + +```console +$ node example.js --no-foo +{ _: [], foo: false } +``` + +_if set to `quux`:_ + +```console +$ node example.js --quuxfoo +{ _: [], foo: false } +``` + +### populate -- + +* default: `false`. +* key: `populate--` + +Should unparsed flags be stored in `--` or `_`. + +_If disabled:_ + +```console +$ node example.js a -b -- x y +{ _: [ 'a', 'x', 'y' ], b: true } +``` + +_If enabled:_ + +```console +$ node example.js a -b -- x y +{ _: [ 'a' ], '--': [ 'x', 'y' ], b: true } +``` + +### set placeholder key + +* default: `false`. +* key: `set-placeholder-key`. + +Should a placeholder be added for keys not set via the corresponding CLI argument? + +_If disabled:_ + +```console +$ node example.js -a 1 -c 2 +{ _: [], a: 1, c: 2 } +``` + +_If enabled:_ + +```console +$ node example.js -a 1 -c 2 +{ _: [], a: 1, b: undefined, c: 2 } +``` + +### halt at non-option + +* default: `false`. +* key: `halt-at-non-option`. + +Should parsing stop at the first positional argument? This is similar to how e.g. `ssh` parses its command line. + +_If disabled:_ + +```console +$ node example.js -a run b -x y +{ _: [ 'b' ], a: 'run', x: 'y' } +``` + +_If enabled:_ + +```console +$ node example.js -a run b -x y +{ _: [ 'b', '-x', 'y' ], a: 'run' } +``` + +### strip aliased + +* default: `false` +* key: `strip-aliased` + +Should aliases be removed before returning results? + +_If disabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1, 'test-alias': 1, testAlias: 1 } +``` + +_If enabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1 } +``` + +### strip dashed + +* default: `false` +* key: `strip-dashed` + +Should dashed keys be removed before returning results? This option has no effect if +`camel-case-expansion` is disabled. + +_If disabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], 'test-field': 1, testField: 1 } +``` + +_If enabled:_ + +```console +$ node example.js --test-field 1 +{ _: [], testField: 1 } +``` + +### unknown options as args + +* default: `false` +* key: `unknown-options-as-args` + +Should unknown options be treated like regular arguments? An unknown option is one that is not +configured in `opts`. + +_If disabled_ + +```console +$ node example.js --unknown-option --known-option 2 --string-option --unknown-option2 +{ _: [], unknownOption: true, knownOption: 2, stringOption: '', unknownOption2: true } +``` + +_If enabled_ + +```console +$ node example.js --unknown-option --known-option 2 --string-option --unknown-option2 +{ _: ['--unknown-option'], knownOption: 2, stringOption: '--unknown-option2' } +``` + +## Supported Node.js Versions + +Libraries in this ecosystem make a best effort to track +[Node.js' release schedule](https://nodejs.org/en/about/releases/). Here's [a +post on why we think this is important](https://medium.com/the-node-js-collection/maintainers-should-consider-following-node-js-release-schedule-ab08ed4de71a). + +## Special Thanks + +The yargs project evolves from optimist and minimist. It owes its +existence to a lot of James Halliday's hard work. Thanks [substack](https://github.com/substack) **beep** **boop** \o/ + +## License + +ISC diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/browser.js b/mybulma/node_modules/yargs/node_modules/yargs-parser/browser.js new file mode 100644 index 0000000..241202c --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/browser.js @@ -0,0 +1,29 @@ +// Main entrypoint for ESM web browser environments. Avoids using Node.js +// specific libraries, such as "path". +// +// TODO: figure out reasonable web equivalents for "resolve", "normalize", etc. +import { camelCase, decamelize, looksLikeNumber } from './build/lib/string-utils.js' +import { YargsParser } from './build/lib/yargs-parser.js' +const parser = new YargsParser({ + cwd: () => { return '' }, + format: (str, arg) => { return str.replace('%s', arg) }, + normalize: (str) => { return str }, + resolve: (str) => { return str }, + require: () => { + throw Error('loading config from files not currently supported in browser') + }, + env: () => {} +}) + +const yargsParser = function Parser (args, opts) { + const result = parser.parse(args.slice(), opts) + return result.argv +} +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts) +} +yargsParser.camelCase = camelCase +yargsParser.decamelize = decamelize +yargsParser.looksLikeNumber = looksLikeNumber + +export default yargsParser diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/build/index.cjs b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/index.cjs new file mode 100644 index 0000000..cf6f50f --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/index.cjs @@ -0,0 +1,1050 @@ +'use strict'; + +var util = require('util'); +var path = require('path'); +var fs = require('fs'); + +function camelCase(str) { + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf('-') === -1 && str.indexOf('_') === -1) { + return str; + } + else { + let camelcase = ''; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === '-' || chr === '_')) { + nextChrUpper = true; + } + else if (chr !== '-' && chr !== '_') { + camelcase += chr; + } + } + return camelcase; + } +} +function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || '-'; + let notCamelcase = ''; + for (let i = 0; i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } + else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + if (typeof x === 'number') + return true; + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map(e => typeof e !== 'string' ? e + '' : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + if (c === ' ' && !opening) { + if (!(prevC === ' ')) { + i++; + } + continue; + } + if (c === opening) { + opening = null; + } + else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ''; + args[i] += c; + } + return args; +} + +var DefaultValuesForTypeKey; +(function (DefaultValuesForTypeKey) { + DefaultValuesForTypeKey["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey["STRING"] = "string"; + DefaultValuesForTypeKey["NUMBER"] = "number"; + DefaultValuesForTypeKey["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); + +let mixin; +class YargsParser { + constructor(_mixin) { + mixin = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + const args = tokenizeArgString(argsInput); + const inputIsString = typeof argsInput === 'string'; + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + 'boolean-negation': true, + 'camel-case-expansion': true, + 'combine-arrays': false, + 'dot-notation': true, + 'duplicate-arguments-array': true, + 'flatten-duplicate-arrays': true, + 'greedy-arrays': true, + 'halt-at-non-option': false, + 'nargs-eats-options': false, + 'negation-prefix': 'no-', + 'parse-numbers': true, + 'parse-positional-numbers': true, + 'populate--': false, + 'set-placeholder-key': false, + 'short-option-groups': true, + 'strip-aliased': false, + 'strip-dashed': false, + 'unknown-options-as-args': false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration['populate--']; + const notFlagsArgv = notFlagsOption ? '--' : '_'; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + const __ = opts.__ || mixin.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)'); + [].concat(opts.array || []).filter(Boolean).forEach(function (opt) { + const key = typeof opt === 'object' ? opt.key : opt; + const assignment = Object.keys(opt).map(function (key) { + const arrayFlagKeys = { + boolean: 'bools', + string: 'strings', + number: 'numbers' + }; + return arrayFlagKeys[key]; + }).filter(Boolean).pop(); + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function (key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function (key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === 'object') { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === 'number') { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === 'object') { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === 'function') { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== 'undefined') { + if (Array.isArray(opts.config) || typeof opts.config === 'string') { + [].concat(opts.config).filter(Boolean).forEach(function (key) { + flags.configs[key] = true; + }); + } + else if (typeof opts.config === 'object') { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === 'boolean' || typeof value === 'function') { + flags.configs[key] = value; + } + }); + } + } + extendAliases(opts.key, aliases, opts.default, flags.arrays); + Object.keys(defaults).forEach(function (key) { + (flags.aliases[key] || []).forEach(function (alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, '---'); + let broken; + let key; + let letters; + let m; + let next; + let value; + if (arg !== '--' && /^-/.test(arg) && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + } + else if (truncatedArg.match(/^---+(=|$)/)) { + pushPositional(arg); + continue; + } + else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) { + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } + else if (checkAllAliases(m[1], flags.nargs) !== false) { + i = eatNargs(i, m[1], args, m[2]); + } + else { + setArg(m[1], m[2], true); + } + } + } + else if (arg.match(negatedBoolean) && configuration['boolean-negation']) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + } + else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + } + else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(''); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === '=') { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args, value); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args, value); + } + else { + setArg(key, value); + } + broken = true; + break; + } + if (next === '-') { + setArg(letters[j], next); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && + /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && + checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } + else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-[0-9]$/) && + arg.match(negative) && + checkAllAliases(arg.slice(1), flags.bools)) { + key = arg.slice(1); + setArg(key, defaultValue(key)); + } + else if (arg === '--') { + notFlags = args.slice(i + 1); + break; + } + else if (configuration['halt-at-non-option']) { + notFlags = args.slice(i); + break; + } + else { + pushPositional(arg); + } + } + applyEnvVars(argv, true); + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration['set-placeholder-key']) + setPlaceholderKeys(argv); + Object.keys(flags.counts).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) + setArg(key, 0); + }); + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function (key) { + argv[notFlagsArgv].push(key); + }); + if (configuration['camel-case-expansion'] && configuration['strip-dashed']) { + Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => { + delete argv[key]; + }); + } + if (configuration['strip-aliased']) { + [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => { + if (configuration['camel-case-expansion'] && alias.includes('-')) { + delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]; + } + delete argv[alias]; + }); + } + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber('_', arg); + if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') { + argv._.push(maybeCoercedNumber); + } + } + function eatNargs(i, key, args, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__('Argument unexpected for: %s', key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration['nargs-eats-options']) { + if (args.length - (i + 1) + available < toEat) { + error = Error(__('Not enough arguments following: %s', key)); + } + available = toEat; + } + else { + for (ii = i + 1; ii < args.length; ii++) { + if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__('Not enough arguments following: %s', key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < (consumed + i + 1); ii++) { + setArg(key, args[ii]); + } + return (i + consumed); + } + function eatArray(i, key, args, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args[i + 1]; + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) { + argsToSet.push(true); + } + else if (isUndefined(next) || + (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) { + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } + else { + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign, true)); + } + for (let ii = i + 1; ii < args.length; ii++) { + if ((!configuration['greedy-arrays'] && argsToSet.length > 0) || + (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount)) + break; + next = args[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next, inputIsString)); + } + } + if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) || + (isNaN(nargsCount) && argsToSet.length === 0))) { + error = Error(__('Not enough arguments following: %s', key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val, shouldStripQuotes = inputIsString) { + if (/-/.test(key) && configuration['camel-case-expansion']) { + const alias = key.split('.').map(function (prop) { + return camelCase(prop); + }).join('.'); + addNewAlias(key, alias); + } + const value = processValue(key, val, shouldStripQuotes); + const splitKey = key.split('.'); + setKey(argv, splitKey, value); + if (flags.aliases[key]) { + flags.aliases[key].forEach(function (x) { + const keyProperties = x.split('.'); + setKey(argv, keyProperties, value); + }); + } + if (splitKey.length > 1 && configuration['dot-notation']) { + (flags.aliases[splitKey[0]] || []).forEach(function (x) { + let keyProperties = x.split('.'); + const a = [].concat(splitKey); + a.shift(); + keyProperties = keyProperties.concat(a); + if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) { + setKey(argv, keyProperties, value); + } + }); + } + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function (key) { + Object.defineProperty(argvReturn, key, { + enumerable: true, + get() { + return val; + }, + set(value) { + val = typeof value === 'string' ? mixin.normalize(value) : value; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val, shouldStripQuotes) { + if (shouldStripQuotes) { + val = stripQuotes(val); + } + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === 'string') + val = val === 'true'; + } + let value = Array.isArray(val) + ? val.map(function (v) { return maybeCoerceNumber(key, v); }) + : maybeCoerceNumber(key, val); + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) { + value = increment(); + } + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val) => { return mixin.normalize(val); }); + else + value = mixin.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration['parse-positional-numbers'] && key === '_') + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`)))); + if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) { + value = Number(value); + } + } + return value; + } + function setConfig(argv) { + const configLookup = Object.create(null); + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function (configKey) { + const configPath = argv[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === 'function') { + try { + config = resolveConfig(resolvedConfigPath); + } + catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } + else { + config = mixin.require(resolvedConfigPath); + } + setConfigObject(config); + } + catch (ex) { + if (ex.name === 'PermissionDenied') + error = ex; + else if (argv[configKey]) + error = Error(__('Invalid JSON config file: %s', configPath)); + } + } + }); + } + function setConfigObject(config, prev) { + Object.keys(config).forEach(function (key) { + const value = config[key]; + const fullKey = prev ? prev + '.' + key : key; + if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) { + setConfigObject(value, fullKey); + } + else { + if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) { + setArg(fullKey, value); + } + } + }); + } + function setConfigObjects() { + if (typeof configObjects !== 'undefined') { + configObjects.forEach(function (configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv, configOnly) { + if (typeof envPrefix === 'undefined') + return; + const prefix = typeof envPrefix === 'string' ? envPrefix : ''; + const env = mixin.env(); + Object.keys(env).forEach(function (envVar) { + if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) { + const keys = envVar.split('__').map(function (key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) { + setArg(keys.join('.'), env[envVar]); + } + } + }); + } + function applyCoercions(argv) { + let coerce; + const applied = new Set(); + Object.keys(argv).forEach(function (key) { + if (!applied.has(key)) { + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === 'function') { + try { + const value = maybeCoerceNumber(key, coerce(argv[key])); + ([].concat(flags.aliases[key] || [], key)).forEach(ali => { + applied.add(ali); + argv[ali] = value; + }); + } + catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv) { + flags.keys.forEach((key) => { + if (~key.indexOf('.')) + return; + if (typeof argv[key] === 'undefined') + argv[key] = undefined; + }); + return argv; + } + function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) { + Object.keys(defaults).forEach(function (key) { + if (!hasKey(obj, key.split('.'))) { + setKey(obj, key.split('.'), defaults[key]); + if (canLog) + defaulted[key] = true; + (aliases[key] || []).forEach(function (x) { + if (hasKey(obj, x.split('.'))) + return; + setKey(obj, x.split('.'), defaults[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + o = (o[key] || {}); + }); + const key = keys[keys.length - 1]; + if (typeof o !== 'object') + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + key = sanitizeKey(key); + if (typeof o === 'object' && o[key] === undefined) { + o[key] = {}; + } + if (typeof o[key] !== 'object' || Array.isArray(o[key])) { + if (Array.isArray(o[key])) { + o[key].push({}); + } + else { + o[key] = [o[key], {}]; + } + o = o[key][o[key].length - 1]; + } + else { + o = o[key]; + } + }); + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration['duplicate-arguments-array']; + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } + else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } + else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } + else { + o[key] = o[key].concat([value]); + } + } + else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } + else if (duplicate && !(o[key] === undefined || + checkAllAliases(key, flags.counts) || + checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } + else { + o[key] = value; + } + } + function extendAliases(...args) { + args.forEach(function (obj) { + Object.keys(obj || {}).forEach(function (key) { + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + flags.aliases[key].concat(key).forEach(function (x) { + if (/-/.test(x) && configuration['camel-case-expansion']) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].concat(key).forEach(function (x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) { + const c = decamelize(x, '-'); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function (x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find(key => keys.includes(key)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map(k => flags[k])); + return toCheck.some(function (flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function (pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + function hasAllShortFlags(arg) { + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(''); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if ((letters[j + 1] && letters[j + 1] === '=') || + next === '-' || + (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) || + (letters[j + 1] && letters[j + 1].match(/\W/))) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration['unknown-options-as-args'] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, '--'); + if (arg.match(negative)) { + return false; + } + if (hasAllShortFlags(arg)) { + return false; + } + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + const normalFlag = /^-+([^=]+?)$/; + const flagEndingInHyphen = /^-+([^=]+?)-$/; + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts) && + `${key}` in defaults) { + return defaults[key]; + } + else { + return defaultForType(guessType(key)); + } + } + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: '', + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + function checkConfiguration() { + Object.keys(flags.counts).find(key => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key)); + return true; + } + else if (checkAllAliases(key, flags.nargs)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration: configuration, + defaulted: Object.assign({}, defaulted), + error: error, + newAliases: Object.assign({}, newAliases) + }; + } +} +function combineAliases(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + Object.keys(aliases).forEach(function (key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function (v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + aliasArrays.forEach(function (aliasArray) { + aliasArray = aliasArray.filter(function (v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === 'string') { + combined[lastAlias] = aliasArray; + } + }); + return combined; +} +function increment(orig) { + return orig !== undefined ? orig + 1 : 1; +} +function sanitizeKey(key) { + if (key === '__proto__') + return '___proto___'; + return key; +} +function stripQuotes(val) { + return (typeof val === 'string' && + (val[0] === "'" || val[0] === '"') && + val[val.length - 1] === val[0]) + ? val.substring(1, val.length - 1) + : val; +} + +var _a, _b, _c; +const minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION) + ? Number(process.env.YARGS_MIN_NODE_VERSION) + : 12; +const nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1); +if (nodeVersion) { + const major = Number(nodeVersion.match(/^([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +const env = process ? process.env : {}; +const parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format: util.format, + normalize: path.normalize, + resolve: path.resolve, + require: (path) => { + if (typeof require !== 'undefined') { + return require(path); + } + else if (path.match(/\.json$/)) { + return JSON.parse(fs.readFileSync(path, 'utf8')); + } + else { + throw Error('only .json config files are supported in ESM'); + } + } +}); +const yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; + +module.exports = yargsParser; diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/index.js b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/index.js new file mode 100644 index 0000000..43ef485 --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/index.js @@ -0,0 +1,62 @@ +/** + * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js + * CJS and ESM environments. + * + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +var _a, _b, _c; +import { format } from 'util'; +import { normalize, resolve } from 'path'; +import { camelCase, decamelize, looksLikeNumber } from './string-utils.js'; +import { YargsParser } from './yargs-parser.js'; +import { readFileSync } from 'fs'; +// See https://github.com/yargs/yargs-parser#supported-nodejs-versions for our +// version support policy. The YARGS_MIN_NODE_VERSION is used for testing only. +const minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION) + ? Number(process.env.YARGS_MIN_NODE_VERSION) + : 12; +const nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1); +if (nodeVersion) { + const major = Number(nodeVersion.match(/^([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +// Creates a yargs-parser instance using Node.js standard libraries: +const env = process ? process.env : {}; +const parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format, + normalize, + resolve, + // TODO: figure out a way to combine ESM and CJS coverage, such that + // we can exercise all the lines below: + require: (path) => { + if (typeof require !== 'undefined') { + return require(path); + } + else if (path.match(/\.json$/)) { + // Addresses: https://github.com/yargs/yargs/issues/2040 + return JSON.parse(readFileSync(path, 'utf8')); + } + else { + throw Error('only .json config files are supported in ESM'); + } + } +}); +const yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function (args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; +export default yargsParser; diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js new file mode 100644 index 0000000..4e8bd99 --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js @@ -0,0 +1,65 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +export function camelCase(str) { + // Handle the case where an argument is provided as camel case, e.g., fooBar. + // by ensuring that the string isn't already mixed case: + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf('-') === -1 && str.indexOf('_') === -1) { + return str; + } + else { + let camelcase = ''; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === '-' || chr === '_')) { + nextChrUpper = true; + } + else if (chr !== '-' && chr !== '_') { + camelcase += chr; + } + } + return camelcase; + } +} +export function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || '-'; + let notCamelcase = ''; + for (let i = 0; i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } + else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +export function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + // if loaded from config, may already be a number. + if (typeof x === 'number') + return true; + // hexadecimal. + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + // don't treat 0123 as a number; as it drops the leading '0'. + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js new file mode 100644 index 0000000..5e732ef --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js @@ -0,0 +1,40 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +// take an un-split argv string and tokenize it. +export function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map(e => typeof e !== 'string' ? e + '' : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + // split on spaces unless we're in quotes. + if (c === ' ' && !opening) { + if (!(prevC === ' ')) { + i++; + } + continue; + } + // don't split the string if we're in matching + // opening or closing single and double quotes. + if (c === opening) { + opening = null; + } + else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ''; + args[i] += c; + } + return args; +} diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js new file mode 100644 index 0000000..63b7c31 --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js @@ -0,0 +1,12 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +export var DefaultValuesForTypeKey; +(function (DefaultValuesForTypeKey) { + DefaultValuesForTypeKey["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey["STRING"] = "string"; + DefaultValuesForTypeKey["NUMBER"] = "number"; + DefaultValuesForTypeKey["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js new file mode 100644 index 0000000..415d4bc --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js @@ -0,0 +1,1045 @@ +/** + * @license + * Copyright (c) 2016, Contributors + * SPDX-License-Identifier: ISC + */ +import { tokenizeArgString } from './tokenize-arg-string.js'; +import { DefaultValuesForTypeKey } from './yargs-parser-types.js'; +import { camelCase, decamelize, looksLikeNumber } from './string-utils.js'; +let mixin; +export class YargsParser { + constructor(_mixin) { + mixin = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + // allow a string argument to be passed in rather + // than an argv array. + const args = tokenizeArgString(argsInput); + // tokenizeArgString adds extra quotes to args if argsInput is a string + // only strip those extra quotes in processValue if argsInput is a string + const inputIsString = typeof argsInput === 'string'; + // aliases might have transitive relationships, normalize this. + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + 'boolean-negation': true, + 'camel-case-expansion': true, + 'combine-arrays': false, + 'dot-notation': true, + 'duplicate-arguments-array': true, + 'flatten-duplicate-arrays': true, + 'greedy-arrays': true, + 'halt-at-non-option': false, + 'nargs-eats-options': false, + 'negation-prefix': 'no-', + 'parse-numbers': true, + 'parse-positional-numbers': true, + 'populate--': false, + 'set-placeholder-key': false, + 'short-option-groups': true, + 'strip-aliased': false, + 'strip-dashed': false, + 'unknown-options-as-args': false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration['populate--']; + const notFlagsArgv = notFlagsOption ? '--' : '_'; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + // allow a i18n handler to be passed in, default to a fake one (util.format). + const __ = opts.__ || mixin.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)'); + [].concat(opts.array || []).filter(Boolean).forEach(function (opt) { + const key = typeof opt === 'object' ? opt.key : opt; + // assign to flags[bools|strings|numbers] + const assignment = Object.keys(opt).map(function (key) { + const arrayFlagKeys = { + boolean: 'bools', + string: 'strings', + number: 'numbers' + }; + return arrayFlagKeys[key]; + }).filter(Boolean).pop(); + // assign key to be coerced + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function (key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function (key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === 'object') { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === 'number') { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === 'object') { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === 'function') { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== 'undefined') { + if (Array.isArray(opts.config) || typeof opts.config === 'string') { + ; + [].concat(opts.config).filter(Boolean).forEach(function (key) { + flags.configs[key] = true; + }); + } + else if (typeof opts.config === 'object') { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === 'boolean' || typeof value === 'function') { + flags.configs[key] = value; + } + }); + } + } + // create a lookup table that takes into account all + // combinations of aliases: {f: ['foo'], foo: ['f']} + extendAliases(opts.key, aliases, opts.default, flags.arrays); + // apply default values to all aliases. + Object.keys(defaults).forEach(function (key) { + (flags.aliases[key] || []).forEach(function (alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + // TODO(bcoe): for the first pass at removing object prototype we didn't + // remove all prototypes from objects returned by this API, we might want + // to gradually move towards doing so. + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, '---'); + let broken; + let key; + let letters; + let m; + let next; + let value; + // any unknown option (except for end-of-options, "--") + if (arg !== '--' && /^-/.test(arg) && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + // ---, ---=, ----, etc, + } + else if (truncatedArg.match(/^---+(=|$)/)) { + // options without key name are invalid. + pushPositional(arg); + continue; + // -- separated by = + } + else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + // arrays format = '--f=a b c' + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } + else if (checkAllAliases(m[1], flags.nargs) !== false) { + // nargs format = '--f=monkey washing cat' + i = eatNargs(i, m[1], args, m[2]); + } + else { + setArg(m[1], m[2], true); + } + } + } + else if (arg.match(negatedBoolean) && configuration['boolean-negation']) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + // -- separated by space. + } + else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + // array format = '--foo a b c' + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '--foo a b c' + // should be truthy even if: flags.nargs[key] === 0 + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + // dot-notation flag separated by '='. + } + else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + // dot-notation flag separated by space. + } + else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(''); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === '=') { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + // array format = '-f=a b c' + i = eatArray(i, key, args, value); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '-f=monkey washing cat' + i = eatNargs(i, key, args, value); + } + else { + setArg(key, value); + } + broken = true; + break; + } + if (next === '-') { + setArg(letters[j], next); + continue; + } + // current letter is an alphabetic character and next value is a number + if (/[A-Za-z]/.test(letters[j]) && + /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && + checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } + else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (checkAllAliases(key, flags.arrays)) { + // array format = '-f a b c' + i = eatArray(i, key, args); + } + else if (checkAllAliases(key, flags.nargs) !== false) { + // nargs format = '-f a b c' + // should be truthy even if: flags.nargs[key] === 0 + i = eatNargs(i, key, args); + } + else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || + next.match(negative)) && + !checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } + else { + setArg(key, defaultValue(key)); + } + } + } + } + else if (arg.match(/^-[0-9]$/) && + arg.match(negative) && + checkAllAliases(arg.slice(1), flags.bools)) { + // single-digit boolean alias, e.g: xargs -0 + key = arg.slice(1); + setArg(key, defaultValue(key)); + } + else if (arg === '--') { + notFlags = args.slice(i + 1); + break; + } + else if (configuration['halt-at-non-option']) { + notFlags = args.slice(i); + break; + } + else { + pushPositional(arg); + } + } + // order of precedence: + // 1. command line arg + // 2. value from env var + // 3. value from config file + // 4. value from config objects + // 5. configured default value + applyEnvVars(argv, true); // special case: check env vars that point to config file + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration['set-placeholder-key']) + setPlaceholderKeys(argv); + // for any counts either not in args or without an explicit default, set to 0 + Object.keys(flags.counts).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) + setArg(key, 0); + }); + // '--' defaults to undefined. + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function (key) { + argv[notFlagsArgv].push(key); + }); + if (configuration['camel-case-expansion'] && configuration['strip-dashed']) { + Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => { + delete argv[key]; + }); + } + if (configuration['strip-aliased']) { + ; + [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => { + if (configuration['camel-case-expansion'] && alias.includes('-')) { + delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')]; + } + delete argv[alias]; + }); + } + // Push argument into positional array, applying numeric coercion: + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber('_', arg); + if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') { + argv._.push(maybeCoercedNumber); + } + } + // how many arguments should we consume, based + // on the nargs option? + function eatNargs(i, key, args, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + // NaN has a special meaning for the array type, indicating that one or + // more values are expected. + toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__('Argument unexpected for: %s', key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration['nargs-eats-options']) { + // classic behavior, yargs eats positional and dash arguments. + if (args.length - (i + 1) + available < toEat) { + error = Error(__('Not enough arguments following: %s', key)); + } + available = toEat; + } + else { + // nargs will not consume flag arguments, e.g., -abc, --foo, + // and terminates when one is observed. + for (ii = i + 1; ii < args.length; ii++) { + if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__('Not enough arguments following: %s', key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < (consumed + i + 1); ii++) { + setArg(key, args[ii]); + } + return (i + consumed); + } + // if an option is an array, eat all non-hyphenated arguments + // following it... YUM! + // e.g., --foo apple banana cat becomes ["apple", "banana", "cat"] + function eatArray(i, key, args, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args[i + 1]; + // If both array and nargs are configured, enforce the nargs count: + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) { + argsToSet.push(true); + } + else if (isUndefined(next) || + (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) { + // for keys without value ==> argsToSet remains an empty [] + // set user default value, if available + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } + else { + // value in --option=value is eaten as is + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign, true)); + } + for (let ii = i + 1; ii < args.length; ii++) { + if ((!configuration['greedy-arrays'] && argsToSet.length > 0) || + (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount)) + break; + next = args[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next, inputIsString)); + } + } + // If both array and nargs are configured, create an error if less than + // nargs positionals were found. NaN has special meaning, indicating + // that at least one value is required (more are okay). + if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) || + (isNaN(nargsCount) && argsToSet.length === 0))) { + error = Error(__('Not enough arguments following: %s', key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val, shouldStripQuotes = inputIsString) { + if (/-/.test(key) && configuration['camel-case-expansion']) { + const alias = key.split('.').map(function (prop) { + return camelCase(prop); + }).join('.'); + addNewAlias(key, alias); + } + const value = processValue(key, val, shouldStripQuotes); + const splitKey = key.split('.'); + setKey(argv, splitKey, value); + // handle populating aliases of the full key + if (flags.aliases[key]) { + flags.aliases[key].forEach(function (x) { + const keyProperties = x.split('.'); + setKey(argv, keyProperties, value); + }); + } + // handle populating aliases of the first element of the dot-notation key + if (splitKey.length > 1 && configuration['dot-notation']) { + ; + (flags.aliases[splitKey[0]] || []).forEach(function (x) { + let keyProperties = x.split('.'); + // expand alias with nested objects in key + const a = [].concat(splitKey); + a.shift(); // nuke the old key. + keyProperties = keyProperties.concat(a); + // populate alias only if is not already an alias of the full key + // (already populated above) + if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) { + setKey(argv, keyProperties, value); + } + }); + } + // Set normalize getter and setter when key is in 'normalize' but isn't an array + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function (key) { + Object.defineProperty(argvReturn, key, { + enumerable: true, + get() { + return val; + }, + set(value) { + val = typeof value === 'string' ? mixin.normalize(value) : value; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val, shouldStripQuotes) { + // strings may be quoted, clean this up as we assign values. + if (shouldStripQuotes) { + val = stripQuotes(val); + } + // handle parsing boolean arguments --foo=true --bar false. + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === 'string') + val = val === 'true'; + } + let value = Array.isArray(val) + ? val.map(function (v) { return maybeCoerceNumber(key, v); }) + : maybeCoerceNumber(key, val); + // increment a count given as arg (either no value or value parsed as boolean) + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) { + value = increment(); + } + // Set normalized value when key is in 'normalize' and in 'arrays' + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val) => { return mixin.normalize(val); }); + else + value = mixin.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration['parse-positional-numbers'] && key === '_') + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`)))); + if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) { + value = Number(value); + } + } + return value; + } + // set args from config.json file, this should be + // applied last so that defaults can be applied. + function setConfig(argv) { + const configLookup = Object.create(null); + // expand defaults/aliases, in-case any happen to reference + // the config.json file. + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function (configKey) { + const configPath = argv[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === 'function') { + try { + config = resolveConfig(resolvedConfigPath); + } + catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } + else { + config = mixin.require(resolvedConfigPath); + } + setConfigObject(config); + } + catch (ex) { + // Deno will receive a PermissionDenied error if an attempt is + // made to load config without the --allow-read flag: + if (ex.name === 'PermissionDenied') + error = ex; + else if (argv[configKey]) + error = Error(__('Invalid JSON config file: %s', configPath)); + } + } + }); + } + // set args from config object. + // it recursively checks nested objects. + function setConfigObject(config, prev) { + Object.keys(config).forEach(function (key) { + const value = config[key]; + const fullKey = prev ? prev + '.' + key : key; + // if the value is an inner object and we have dot-notation + // enabled, treat inner objects in config the same as + // heavily nested dot notations (foo.bar.apple). + if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) { + // if the value is an object but not an array, check nested object + setConfigObject(value, fullKey); + } + else { + // setting arguments via CLI takes precedence over + // values within the config file. + if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) { + setArg(fullKey, value); + } + } + }); + } + // set all config objects passed in opts + function setConfigObjects() { + if (typeof configObjects !== 'undefined') { + configObjects.forEach(function (configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv, configOnly) { + if (typeof envPrefix === 'undefined') + return; + const prefix = typeof envPrefix === 'string' ? envPrefix : ''; + const env = mixin.env(); + Object.keys(env).forEach(function (envVar) { + if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) { + // get array of nested keys and convert them to camel case + const keys = envVar.split('__').map(function (key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) { + setArg(keys.join('.'), env[envVar]); + } + } + }); + } + function applyCoercions(argv) { + let coerce; + const applied = new Set(); + Object.keys(argv).forEach(function (key) { + if (!applied.has(key)) { // If we haven't already coerced this option via one of its aliases + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === 'function') { + try { + const value = maybeCoerceNumber(key, coerce(argv[key])); + ([].concat(flags.aliases[key] || [], key)).forEach(ali => { + applied.add(ali); + argv[ali] = value; + }); + } + catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv) { + flags.keys.forEach((key) => { + // don't set placeholder keys for dot notation options 'foo.bar'. + if (~key.indexOf('.')) + return; + if (typeof argv[key] === 'undefined') + argv[key] = undefined; + }); + return argv; + } + function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) { + Object.keys(defaults).forEach(function (key) { + if (!hasKey(obj, key.split('.'))) { + setKey(obj, key.split('.'), defaults[key]); + if (canLog) + defaulted[key] = true; + (aliases[key] || []).forEach(function (x) { + if (hasKey(obj, x.split('.'))) + return; + setKey(obj, x.split('.'), defaults[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + o = (o[key] || {}); + }); + const key = keys[keys.length - 1]; + if (typeof o !== 'object') + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration['dot-notation']) + keys = [keys.join('.')]; + keys.slice(0, -1).forEach(function (key) { + // TODO(bcoe): in the next major version of yargs, switch to + // Object.create(null) for dot notation: + key = sanitizeKey(key); + if (typeof o === 'object' && o[key] === undefined) { + o[key] = {}; + } + if (typeof o[key] !== 'object' || Array.isArray(o[key])) { + // ensure that o[key] is an array, and that the last item is an empty object. + if (Array.isArray(o[key])) { + o[key].push({}); + } + else { + o[key] = [o[key], {}]; + } + // we want to update the empty object at the end of the o[key] array, so set o to that object + o = o[key][o[key].length - 1]; + } + else { + o = o[key]; + } + }); + // TODO(bcoe): in the next major version of yargs, switch to + // Object.create(null) for dot notation: + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration['duplicate-arguments-array']; + // nargs has higher priority than duplicate + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } + else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } + else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } + else { + o[key] = o[key].concat([value]); + } + } + else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } + else if (duplicate && !(o[key] === undefined || + checkAllAliases(key, flags.counts) || + checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } + else { + o[key] = value; + } + } + // extend the aliases list with inferred aliases. + function extendAliases(...args) { + args.forEach(function (obj) { + Object.keys(obj || {}).forEach(function (key) { + // short-circuit if we've already added a key + // to the aliases array, for example it might + // exist in both 'opts.default' and 'opts.key'. + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + // For "--option-name", also set argv.optionName + flags.aliases[key].concat(key).forEach(function (x) { + if (/-/.test(x) && configuration['camel-case-expansion']) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + // For "--optionName", also set argv['option-name'] + flags.aliases[key].concat(key).forEach(function (x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) { + const c = decamelize(x, '-'); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function (x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find(key => keys.includes(key)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map(k => flags[k])); + return toCheck.some(function (flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function (pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + // based on a simplified version of the short flag group parsing logic + function hasAllShortFlags(arg) { + // if this is a negative number, or doesn't start with a single hyphen, it's not a short flag group + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(''); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if ((letters[j + 1] && letters[j + 1] === '=') || + next === '-' || + (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) || + (letters[j + 1] && letters[j + 1].match(/\W/))) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration['unknown-options-as-args'] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, '--'); + // ignore negative numbers + if (arg.match(negative)) { + return false; + } + // if this is a short option group and all of them are configured, it isn't unknown + if (hasAllShortFlags(arg)) { + return false; + } + // e.g. '--count=2' + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + // e.g. '-a' or '--arg' + const normalFlag = /^-+([^=]+?)$/; + // e.g. '-a-' + const flagEndingInHyphen = /^-+([^=]+?)-$/; + // e.g. '-abc123' + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + // e.g. '-a/usr/local' + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + // check the different types of flag styles, including negatedBoolean, a pattern defined near the start of the parse method + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + // make a best effort to pick a default value + // for an option based on name and type. + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && + !checkAllAliases(key, flags.counts) && + `${key}` in defaults) { + return defaults[key]; + } + else { + return defaultForType(guessType(key)); + } + } + // return a default value, given the type of a flag., + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: '', + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + // given a flag, enforce a default type. + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + // check user configuration settings for inconsistencies + function checkConfiguration() { + // count keys should not be set as array/narg + Object.keys(flags.counts).find(key => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key)); + return true; + } + else if (checkAllAliases(key, flags.nargs)) { + error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration: configuration, + defaulted: Object.assign({}, defaulted), + error: error, + newAliases: Object.assign({}, newAliases) + }; + } +} +// if any aliases reference each other, we should +// merge them together. +function combineAliases(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + // turn alias lookup hash {key: ['alias1', 'alias2']} into + // a simple array ['key', 'alias1', 'alias2'] + Object.keys(aliases).forEach(function (key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + // combine arrays until zero changes are + // made in an iteration. + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function (v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + // map arrays back to the hash-lookup (de-dupe while + // we're at it). + aliasArrays.forEach(function (aliasArray) { + aliasArray = aliasArray.filter(function (v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === 'string') { + combined[lastAlias] = aliasArray; + } + }); + return combined; +} +// this function should only be called when a count is given as an arg +// it is NOT called to set a default value +// thus we can start the count at 1 instead of 0 +function increment(orig) { + return orig !== undefined ? orig + 1 : 1; +} +// TODO(bcoe): in the next major version of yargs, switch to +// Object.create(null) for dot notation: +function sanitizeKey(key) { + if (key === '__proto__') + return '___proto___'; + return key; +} +function stripQuotes(val) { + return (typeof val === 'string' && + (val[0] === "'" || val[0] === '"') && + val[val.length - 1] === val[0]) + ? val.substring(1, val.length - 1) + : val; +} diff --git a/mybulma/node_modules/yargs/node_modules/yargs-parser/package.json b/mybulma/node_modules/yargs/node_modules/yargs-parser/package.json new file mode 100644 index 0000000..decd0c3 --- /dev/null +++ b/mybulma/node_modules/yargs/node_modules/yargs-parser/package.json @@ -0,0 +1,92 @@ +{ + "name": "yargs-parser", + "version": "21.1.1", + "description": "the mighty option parser used by yargs", + "main": "build/index.cjs", + "exports": { + ".": [ + { + "import": "./build/lib/index.js", + "require": "./build/index.cjs" + }, + "./build/index.cjs" + ], + "./browser": [ + "./browser.js" + ] + }, + "type": "module", + "module": "./build/lib/index.js", + "scripts": { + "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'", + "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'", + "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", + "test": "c8 --reporter=text --reporter=html mocha test/*.cjs", + "test:esm": "c8 --reporter=text --reporter=html mocha test/*.mjs", + "test:browser": "start-server-and-test 'serve ./ -p 8080' http://127.0.0.1:8080/package.json 'node ./test/browser/yargs-test.cjs'", + "pretest:typescript": "npm run pretest", + "test:typescript": "c8 mocha ./build/test/typescript/*.js", + "coverage": "c8 report --check-coverage", + "precompile": "rimraf build", + "compile": "tsc", + "postcompile": "npm run build:cjs", + "build:cjs": "rollup -c", + "prepare": "npm run compile" + }, + "repository": { + "type": "git", + "url": "https://github.com/yargs/yargs-parser.git" + }, + "keywords": [ + "argument", + "parser", + "yargs", + "command", + "cli", + "parsing", + "option", + "args", + "argument" + ], + "author": "Ben Coe ", + "license": "ISC", + "devDependencies": { + "@types/chai": "^4.2.11", + "@types/mocha": "^9.0.0", + "@types/node": "^16.11.4", + "@typescript-eslint/eslint-plugin": "^3.10.1", + "@typescript-eslint/parser": "^3.10.1", + "c8": "^7.3.0", + "chai": "^4.2.0", + "cross-env": "^7.0.2", + "eslint": "^7.0.0", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "gts": "^3.0.0", + "mocha": "^10.0.0", + "puppeteer": "^16.0.0", + "rimraf": "^3.0.2", + "rollup": "^2.22.1", + "rollup-plugin-cleanup": "^3.1.1", + "rollup-plugin-ts": "^3.0.2", + "serve": "^14.0.0", + "standardx": "^7.0.0", + "start-server-and-test": "^1.11.2", + "ts-transform-default-export": "^1.0.2", + "typescript": "^4.0.0" + }, + "files": [ + "browser.js", + "build", + "!*.d.ts", + "!*.d.cts" + ], + "engines": { + "node": ">=12" + }, + "standardx": { + "ignore": [ + "build" + ] + } +} diff --git a/mybulma/package-lock.json b/mybulma/package-lock.json new file mode 100644 index 0000000..3a6d3db --- /dev/null +++ b/mybulma/package-lock.json @@ -0,0 +1,4218 @@ +{ + "name": "mybulma", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "mybulma", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "bulma-pageloader": "^0.3.0" + }, + "devDependencies": { + "bulma": "^0.9.4", + "node-sass": "^8.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "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/bulma": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", + "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==", + "dev": true + }, + "node_modules/bulma-pageloader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bulma-pageloader/-/bulma-pageloader-0.3.0.tgz", + "integrity": "sha512-lbahiqhBCov5AYdziHFnC5/JOhCrJWFTpdRiAkwW49IM/mf0whCWHVe8MuejZFu2PEs1mtH8Gnz8exEks4Q+7g==" + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "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/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globule": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globule/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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/globule/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "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": "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/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "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/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/node-gyp/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/node-sass": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-8.0.0.tgz", + "integrity": "sha512-jPzqCF2/e6JXw6r3VxfIqYc8tKQdkj5Z/BDATYyG6FL6b/LuYBNFGFVhus0mthcWifHm/JzBpKAd+3eXsWeK/A==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "make-fetch-happen": "^10.0.4", + "meow": "^9.0.0", + "nan": "^2.17.0", + "node-gyp": "^8.4.1", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^2.2.1" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "node_modules/sass-graph": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", + "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.4.3", + "yargs": "^17.2.1" + }, + "bin": { + "sassgraph": "bin/sassgraph" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/scss-tokenizer": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", + "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", + "dev": true, + "dependencies": { + "js-base64": "^2.4.9", + "source-map": "^0.7.3" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stdout-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stdout-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stdout-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "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" + } + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "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" + } + }, + "bulma": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", + "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==", + "dev": true + }, + "bulma-pageloader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bulma-pageloader/-/bulma-pageloader-0.3.0.tgz", + "integrity": "sha512-lbahiqhBCov5AYdziHFnC5/JOhCrJWFTpdRiAkwW49IM/mf0whCWHVe8MuejZFu2PEs1mtH8Gnz8exEks4Q+7g==" + }, + "cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + } + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": 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 + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globule": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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" + } + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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 + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "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 + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + } + } + }, + "node-sass": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-8.0.0.tgz", + "integrity": "sha512-jPzqCF2/e6JXw6r3VxfIqYc8tKQdkj5Z/BDATYyG6FL6b/LuYBNFGFVhus0mthcWifHm/JzBpKAd+3eXsWeK/A==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "make-fetch-happen": "^10.0.4", + "meow": "^9.0.0", + "nan": "^2.17.0", + "node-gyp": "^8.4.1", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^2.2.1" + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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 + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "sass-graph": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", + "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.4.3", + "yargs": "^17.2.1" + } + }, + "scss-tokenizer": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", + "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", + "dev": true, + "requires": { + "js-base64": "^2.4.9", + "source-map": "^0.7.3" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "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" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } +} diff --git a/mybulma/package.json b/mybulma/package.json new file mode 100644 index 0000000..c496f8c --- /dev/null +++ b/mybulma/package.json @@ -0,0 +1,20 @@ +{ + "name": "mybulma", + "version": "1.0.0", + "description": "", + "main": "sass/mystyles.scss", + "scripts": { + "css-build": "node-sass --omit-source-map-url sass/mystyles.scss css/mystyles.css", + "css-watch": "npm run css-build -- --watch", + "start": "npm run css-watch" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "bulma": "^0.9.4", + "node-sass": "^8.0.0" + }, + "dependencies": { + "bulma-pageloader": "^0.3.0" + } +} diff --git a/mybulma/sass/mystyles.scss b/mybulma/sass/mystyles.scss new file mode 100644 index 0000000..389b511 --- /dev/null +++ b/mybulma/sass/mystyles.scss @@ -0,0 +1,58 @@ +@charset "utf-8"; + +// Import a Google Font +@import url('https://fonts.googleapis.com/css?family=Nunito:400,700'); + +// Set your brand colors +$lime:#00fdbe; +$purple: #a45e8d; +$trans-pink: #F5A9B8; +$beige-light: #eaeaea; +$trans-blue: #5bcefa; +$greyish: #1d1d1d; +$mauve: #81c8be; + +// Update Bulma's global variables +$family-sans-serif: "Nunito", sans-serif; +$grey-dark: #414559; +$grey-light: #51576d; +$primary: #cdd6f4; +$link: $mauve; +$widescreen-enabled: false; +$fullhd-enabled: false; + +// Update some of Bulma's component variables +$body-background-color: #303446; +$control-border-width: 2px; +$input-border-color: transparent; +$input-shadow: none; + + +//my shit +$title-color: $mauve; +$input-color: #b5bfe2; +$primary: #c6d0f5; +$text-strong: #b5bfe2; +$text: #c6d0f5; +/////navbar +$navbar-background-color: #303446; +$navbar-item-color: #81c8be; +$navbar-item-hover-background-color: $grey-dark; +$navbar-dropdown-background-color: $grey-dark; +$navbar-dropdown-item-hover-color: #81c8be; +$navbar-dropdown-item-hover-background-color: $grey-dark; +$navbar-divider-background-color: $grey-light; +//$navbar-dropdown-item-active-color: $off-off-off-dark; +//$navbar-dropdown-item-active-background-color: $off-off-dark; + + +// Import only what you need from Bulma +@import "../node_modules/bulma/sass/utilities/_all.sass"; +@import "../node_modules/bulma/sass/base/_all.sass"; +@import "../node_modules/bulma/sass/elements/button.sass"; +@import "../node_modules/bulma/sass/elements/container.sass"; +@import "../node_modules/bulma/sass/elements/title.sass"; +@import "../node_modules/bulma/sass/form/_all.sass"; +@import "../node_modules/bulma/sass/components/navbar.sass"; +@import "../node_modules/bulma/sass/layout/hero.sass"; +@import "../node_modules/bulma/sass/layout/section.sass"; \ No newline at end of file diff --git a/old.html b/old.html new file mode 100644 index 0000000..ed2d0ea --- /dev/null +++ b/old.html @@ -0,0 +1,63 @@ + + + + + +
    + +
    +
    +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣄⣀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⡶⢿⣟⡛⣿⢉⣿⠛⢿⣯⡈⠙⣿⣦⡀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⣠⡾⠻⣧⣬⣿⣿⣿⣿⣿⡟⠉⣠⣾⣿⠿⠿⠿⢿⣿⣦⠀⠀⠀ +⠀⠀⠀⠀⣠⣾⡋⣻⣾⣿⣿⣿⠿⠟⠛⠛⠛⠀⢻⣿⡇⢀⣴⡶⡄⠈⠛⠀⠀⠀ +⠀⠀⠀⣸⣿⣉⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠈⢿⣇⠈⢿⣤⡿⣦⠀⠀⠀⠀ +⠀⠀⢰⣿⣉⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠦⠀⢻⣦⠾⣆⠀⠀⠀ +⠀⠀⣾⣏⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡶⢾⡀⠀⠀ +⠀⠀⣿⠉⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣧⣼⡇⠀⠀ +⠀⠀⣿⡛⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣧⣼⡇⠀⠀ +⠀⠀⠸⡿⢻⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣥⣽⠁⠀⠀ +⠀⠀⠀⢻⡟⢙⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣧⣸⡏⠀⠀⠀ +⠀⠀⠀⠀⠻⣿⡋⣻⣿⣿⣿⣦⣤⣀⣀⣀⣀⣀⣠⣴⣿⣿⢿⣥⣼⠟⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠈⠻⣯⣤⣿⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⣷⣴⡿⠋⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠾⣧⣼⣟⣉⣿⣉⣻⣧⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +
    +
    +

    brain genuinely not working with me so instead of thinking of a design, im just gonna write the links down for now:

    +
    +ForgeJo +
    +Ouroboros.Gay - Fediverse +
    +Ouroboros.Gay - Fediverse (Akkoma Version) +
    +Uptime Kuma +
    +limepot.xyz - Personal Website +
    + \ No newline at end of file
  • 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 z zFjKt~n)L+MSr;H2xRp6b?wG@x%D8hmC7gUhBz?|d1$3$j3(OgYmyk$fCHf4*O32^H zVYCDdVeF}f6`3;(D>5e*R%Fg6tjL^3Sdn(gF&?a(WKh~e#-Q9$BLs88jg?us6_vrj zX>yymMLIGLGTw$gs4!f6EMa9P>mtXs2NMQok0D{1KXkA{>mOkhu@<%eLnw?ih_Q8t za7ZUHSwn9BVukMH!V29vB`mB@CA`#~L0G9%K^Rw)i(O^5LI&&94i4+LO$O_%^b9sQ zkA%Rr-J3(tzAY-9aT<|T2c+Ul=PnH24n&=Au(no9x@4LoQ&^a^Zvml#G7bK^+TYC& zi`yKfzNG~9nNBXOH#JWV>hf`On19Pb)%rza2enDwaK78w+dFQZ1ndvNI$fxDu8>@- z<9EmVH7@%&o7stJ8sIZ5O2auGe!L7r)C*dFsLU){j;ca#O9Hb|;G&C)lb~=wkjRm2X#lnc<;VWGHrHr}fI`6%m zH+DEDzHyLg>S`;csU0v7IT0xu#TSw)dL>=RriVc9k)l`U;#}y|#4bs(-d=Rb9FlE> zgN1zlIM1PQP@dZakZkA*RhHr4A*J2j-F9>S{z}#7Kr_m2Xtw*t`FfdiKl_TnzpHui z6@fRGR|LLWUg4#Y)fzmh*r%MjpR=F=dv@7oK?8={K!Yx{fd-vw0cDoDHrUV(*A14r zh;xJBZDh>-+zQ=|wo`DK`#DRSTisgv$nQ+M$)2Ts$t-iNv<)=(_vUD4+|N1i#N^V# zOk!qfg^vs`t?;I^I7{iNUn;twvcl_=Y~|U*|hK^SaI4gytTt9VYQz% z$CYHsX=y~bn9wp<8Cy$0W8Qw?S{hWg`^0;Mk zdrMF=W8MtZ0_Kc3Env>9(+pM{dfMQe>8AzG?UgNKQeUKNrWcrdS^yLGbLN{(>w|C$ zMXv$1^d&vO`leev$ow1~v(ti{cRzP+UfKhn#zcb%ei|Xc{oJt^lKZ(Us^EThs7$G4 z+ezwv_BciW1@32G6RN$OTH=0oINTw~kOcR$$4cGLzAAM;yQ)ZiW{vr}!2Rs;+;R`x z&%TZ;!knhF0|)MBkH?kV2#=|>tWI=4JEEfd*;jglR0sES7Ktn_;ey8B%>Dcn#Mu4Z zgxlbLZbA#B7IDsJTeNs<^RgWvI^Nfd2Y)#a&C?ON`#HyPtNXbLF>*gQfyVA<59{^j z!2Rqhld}+;mvK@ZWBl{DekIsr8pnOyxtEtcRzdjzTO{W7`}99;Q*dM`KKf8t+-OnD# zcZl6P=8ZY`vqh@i&#u6`pKU?le)c7B&oHX`UM?@G-OmoIc0b#a(EaR+0{62k3f#}G zC~)AoqQL#^iUKE-D>BEC@B`V{*RaSPHCUOAtzl)M``NbOC>NnfuulGWWA9bSD?qkUOV@ zh4ra~m%1|uD|IRen}U)1*>X^yIv54+es-|j{cKBv^GHY{c0W7l+K-#KpHq<3{hY!G z?q>lgbw8&-&asSBj(0!jp+fg_3RUX|>Ef(?l}dC!r_^Nka|)MpKMRl<_p=Box}OEe zjQd%D%($OZ$gKN01gc!K*m#_8gIj&Zs;g+0zw+|LQplUk}B$?&IV9m#&0 zS-)|O^&I!J=lI3$XHUubSoivPf&XTs16t>WCG`ULv*YSJxSu`gcK5RbbwktQe*Rs4 zl|oAkUuU#H_ZEby%ek$8cNKwOm}3O4U0&gZmGw?LQmKW@*CZD#>Y6$|y3x0MO=97S zY69z#tKl{W#r>b%U7iqE?4EPSi$){sS|kQNyB-c`+|kb)AZ;1Iy$$mGv{`D ziOx-XkA9I9--@U_01q4}b&T?x_ib**H+aJ3opg|C*) z7rt7Kp7+&>Z`G)&ZGbzHnF3yl!2EHpy6 zvd{?O%0eTAE#n3USI7(wbzuepG<4eOZh&BaWC&J9U3qy{&eX)VPgk4EyZP=*wR=T@ zlE^b;lM9ts^b(C&h>I|BIXZEyd?CGpWyv69>VOK0(Wfh_OI%^C|Du@U`mfdDRk>bW z?dd%TJZ5oooZnRC1KzYkY<*qh3ka^*BhlWg(*Ih6YbyF+S>EAl;qK8umG+Ikk{&X% zOlweAj(lIN91k9?t4f0}w(H{^IMMJyd9^`Kt+;TFQ2(@aGrto`aeLu5g+1Vgf-9x$ zlANvW8Y$tZ6Btg@wlBf^dQr(uQi87?z)+_-9V+2;sD#s@lA2Eaed*a~vheyQOci}> zxe6h_->L;t?{bVCV$P8-+DsD5ttMqFke_dTTqZ~~DE8}Ma{CW&XP_B0TaU?!l}5K) zF;kCaEVd~_u?ta`Z zn}Bttoik=uN!T2K&yAW)JorJ4%O*%c@dESv?QsXOe>cCkS^OfH!~9ECnr|WudQdBj zdQdBmYycpPkFMqYmzdi&^iY$?ck%wQT<~twe&B?H6|#CPZNo`5A9z+x;wY-F@WMUG z93wRxO;Z};@)|)%J#f@O63W#z;et8stW5p{oREc&2q z3t_dCyb%&^myp%N9HZI|M=JzZl=t6j6hVz3>XX_)UMF?@a|PA-HPd9$#{kR72|F@j z`ECL6$jhnIn*Fpm*F+$TIFhMI8^Ibg+kWsd4O_OxeIG{7)@8V`wfDQ#c8AweVodQ{ zYEr}rvPoYdpY<0AF(}+xDEK<_Hcwo-udvP2aUreCeF z+o>8Ve*t8MfEOhJC?*Gei;#BwcfAla-UiovL-38xn;n*Lp{SAmVZ1FNR9f=YJe}u( z?)6&uQn@Kh3Jc9iHt$>^pA*n*0LW3}nPV8&6e&%*Z8j(kN!ntfkpjn*%>bB{T)Hpq zG(A>%Tg~x;gjnU4y-;cQj8NVMRKwa(d1N3N>|^nk2kB0P)k!4 z7pbkJiJCT*;+!;9nK?<7d4^1FI^j&YJmGX*hY3e;@`R(B)(NM9%vmCxa6zR`%+5b1 z)i#cDW;POD<7^B7XqL#cF#-~1V+4`TMggEqXJZ5v%tj->wU7%1r7gz3{tx|ftsOO6 ztjl;2wIG2~xj^{132A5m&BI~tj=H9d6pQV4UCo_cz!!&_fiDbqbYB?kguV>l#PaWp zf*mm^gMe@o-gJ5o+;k)Rt)0m+HHjvMfaSm#IA;h&)1Z2tj~|@!>8k>dQZnA zNT%|)%~!H*eX91zzfTtK55>boslOp#+Pb=2Z0{??%_BPEP?@6H1+3(V!+|w;GhdI- z_jvC2P|fZ{)H9{QJ(LLa&RV3ChTj$T(GudQnBT7;UQDy9_`KCUnBCp`m;X|z{=3!w ze!H*!s*jDci<(JJZDIgmefxw>3$cQWD$~sziOH`}K>uFNzo3zehl`&d%xmH!DmsJV zmJI3Vo9pd4!mPBLfz|lDDtZVQZ__hO-kqiFhi`xYEM)!stP>O*Dy2SDU*Si>6Q$rB z-)E=?hth$X$XEEBjDJBl5MdYUvN~v&BtGcRt7^SG!}E9to2{QlHA3j4HU3>$lWO#{ z-B=udVdF`qQh%)u4x^p<6u$ubIxXV|*t9u;(WQ33H@81>Bj?#QFH=y@)7HipyX|31 zCh;!d=}@`3Q9GyE{GgHiom?2;Ip_@ksvCOm2$-5QUK7!;moV~v zpj?BhhmUf0-04X3fSTDK)!_5(Zu`~8%JU&hK9wgru8Cra>)Q&R_Jlm?v&MG`__EE^s&$eeKEL+~{@iM&6Qp6f z)FL3=Dr&6Z6XB(~M;&u|O1gtPOiSTWDbw_)6 zh)63B`Xlv8RP;(eOHjDNJh#PuUV;_XpX0p0aAxVS?LOU^c|*15^w8W>8?Q&+hw3X(s-#|lZ8wWTZbqJ)cSvi!+dd`?HS`4$NZ2fQgR|{@j0b^Y_P}2-wq{!! zy{|Smhg1-5l z&3VZ*#bjR0asPb(0qG7O>~e~k#{AQpe=XMs_n(g z*6g$?>7wa5&=--;_to2n-0CXJ4WhkD_&8w*FcaHVJ?H*cEuvmRWr(mzVC3W%Mco4ZQCKXGS-`b!ua zgH*MH=Jax|rrOm*2FBUT`GWX>c(Y&0ZLbC%WO;c&iKDD2~RS2}pKJjC3M;evdH`4# zhLAqLw_IpFHqZ|y@B!$<0z#_o;{%!n(jBYa-3lRPl`g3BdrPxk&sPuP2iF$co$&KH zDM+E_L|UmS4b>)J%Jm{w?1#n`)I;D)d}nmY?;jM@+QqkT^Q+Z^Qe*s%VCjA7wPV94 z2O~vvzv={ub?|VP0~P!HJC!DVMrnODo;Y95&7@tf%}-nhpyJI}`ca|_bmL=pfY%gR ztN)3o1?ZQ>x4D@m_;mGG^);|gQv8g8qZvh`up*m|#=NR176F;X7r0_ziWZo22&AdL z-Q&Zd=Jj~FB*P?1oba& zzu=It()8;R%_AY~50ElD_<3+3b5M_!fJ>n%mcUEggn_SXghV?C$8 z5Q2*T?yCwnZ}bmL0bG_sa(MjwO6G}IbShkY1+bCl5Sdueca~Gcs4i|noPOS+d-U@j zj%)m+_qFsdkh!l)GGCV908iXQ*xn!vjrvW@plko%`G=41W~0F?yfyIk73$|pR*C{j zSC1N;RKdx91Lc2nz~JotF9^@C$-pA0*`lAs7X2i)@DuVw|J=BW0}Tr*@LgV&@UCsp z&hY`OgY2Lr`GY_A`YIA??GV#%Tg>CD-FCh-Q^pl7jagD7YZy;T|Mhil2``Pe9-~WP z0KmS(#guPQRKU^}Ec+6VZvZeJ_-4NLxbX%5I95j}58K_BSIfsW0=N#xtMZECxpuE! z|AsZcfBo&BkFbBfhUK0d%=_1ukOi-g_h=Fc5?<4{`U{1BzP>uH*2~vF{q!2qU$0*g z4cs#LX>ou5JVKw0V)J@?^~X<#`3@87wWX;WaP+mcLG^V2s*6Ix9&mw+cqDeu^<|i9 z=l(u(@%ENaM@F;xeua?M-Q(+ba39cO*}Vq%9rphB2wnROBPja4-@UdGO|KXK@gJ`r z)N5njc=h^u*qiF>b5XHw^xZM|M6DKOSUJC-yn%t507D+E_`#{*BTAmz>U@1e;lj6f z&m{l>hxc=!T4}rbbE)Y4^svLqK&%=@KxuCloq68wR?C~}{Nh5XU%|ANBT)488d%^CE6y(0 zHs0dm7hGSZg`kc1ZWTDMg8SRA3eZslI1v%qefVfDagpCB@QHa(5n@_gllJbE4WPcd z$_)~Bg2$_>9Q5r7WX4kOp(ONi{qr=VMVqoASPxmQaoV$>>Hwo=^hKXacbdMp`@~NZ zFOaizTkDzFq)ljiH=)h+aFP<65iOR6*$eq(YDua`ldHzYyqWy9I$UC7-Djr7g(~z! zJTtR}rYuEaP?XvF&{^Fz? zO-{DgyP4Wi7(u<#Q3s%-KalA<1%of1(*F>b!cw1#Ylqy#Pd}&e;o9Etw)eQ7%D~{0 zRaSr1x+|M=fsdUA={-({PPNtg7S^~qk9XL};2&VLhs;}l^|FuYW{3HhUG~*tvP4iN zo#JoY@*Y&s}uWrWYH_2CK!3=IX%)NOtdDVAdc@+{h|f z>Zhy#*5*n zwDF>kj57m{D)tkT{Ox1I8~+TY1`6{zeK{$3#>Cs$K;4|gzAWlb4RsQKy{EWo^T5{! zOrJI4_g^qpamy>cf-TCl*M`QLd8_?-+hI;&at{8Q#`B9@q1s%3J z{0jU3cKPP`O|LxvNs3_1$SVS-b;i*0ws zU%;{jd$u__eK!jhZ^hcNSfSpidcV@4*{%C}g?kf43$stu<@GWQc23o!m@_kh<2@me zH?J~B!|!GO%QUA)@xw229@1inn?Do_vR%M`Np3va6Lp8VK8@H|Z7#8gvWAl{bqM5{pFwhE3avqb1#x7ol1ffTG2>w3*H zc$z8Cd!0=As5(F8lg*%E(kHO$Pnq_-FRzS!mm6EZ+wLSbhAEE#PMs_d9;s09L1Uw< zDDK3r+48WIMx(|IZXD|r5D_Z;Yhq8s6ytd?IsJSmt?+e zZ6lP(4@rJ`%^y0Xv4^FMJnIOTk|Be&+2)^OmuMQBKlY{h0$JA8fI0~{`nvI8fsz^mS?^r^#dz_FM$ zY%6?>)d3r!xv$QTJqpHc=NWd_JKcdpF9AFxRpS~f2&aIkeu)CbW3-u713eOhg_}p0 zV-hRUunr)&Kao5lrgG*|=2^>8`Rhrjygdn(H!r7x&vSxt0hJSs3#go6TtMX|ZDsvum`m8lhJ_U?PoxJ;R`P`2S;nBxy?c=BwkJ- z+pcqvC8|j?p=T&%lG1K>+2@Z_JdU73cG?P^AM#yf0R zHJ_2NGXz?;D-HCWwkwIBXYWI;Us3mDmRZ}Ku`?^NEB?z@mF>neR@MLLZSj;6tlK&@ z9Cur%?jt4oa+h@~BjeH~Id}hzmFk*`*Q#?ckBkvNQV`PEb(nt9W0G!PHykTdM*L;WbU)u@BfNjuLHLK495+5rs84qx^}0j>PPLx zOWITVU$LgcW1qYq`p^CHo;&yFvwGepbM35pF_)Ikcj3`Y-50ZH$UK9?j0Bg8e^Nax z47o;SYl>`5KU;$v9L&y`nT9qm$Sl&!fZJiS@QW_RZdC~V0!VSYwCpB*irw0>6O_-{ z9<#Wuty=l|oJK`dN|O0!Y{$BtcrVt&&_QkXO!B#C(3_QJ4fChy%(|r$sLY0ASWj${ zqUW1X3`Ye>UAnC9FEC$NYB=nljM^!T`I~H zsc|XNj=-IXPeDc&4x~2!b0(*5DW0BI+wZV}1g!Gu>PR$iBNpmU*-30$C)i9ZrBjGr zONw&Q{zew6=WCLVsS~JKjwz6OAycx#X6gU0+7uj5uS|sApRxFCOUdFh2i^{gFJLuV ze3nGZ;xkZx&f+s|onrABN+(%-medKBOlG2+2L5+Vbjwo|X!Nw0K6}5@WT-&WmX|LV zioEz~{(p$p_Wx>w)_`2jdfN;G;lh>)_|^vVYG?#i!BBmVINM7ky&yk^$zgi&^A%lu z>6sU=5e>Q~_jUc0cMzW*($yQOwckmJ&Aag zUbXg-Xa)oMj}bYIR4vcweBEyHdiK+p|Hblhi5xrRYbie>WdOZZr-}`ptfEH?aj989 z5fFb4HStJiNbjL2eB=ZrfY=rLZufkuR-t1jqegG(uv%!&|@l9kxpMhgCnCZx_LgxT1d zNhl0R53l%LKbBvS;bwLbjj>FUM6#2cW@gyoOTaaoS@4t@&G8f9o9Pc7lcia6&D3M) zHrjkTx6$U%&!8QB8NP8fw=Tn~9^C9m!MZ2$9WFlsys`1-&TwiP)=@K4GG50>o)An( zk}2st3FMJb>+|{&a!lT!@|$PkRu0LS;Oe{PVYsSJcHlDXQggWQOFnpg)%P69C<)-B zOa5v)Jery8NM01CJx&^~6)n{Py?MX}`k|DmD zGb)}2n^G-c`3aFn)N9L4*%q)?`pL(WxR-&RPFvzUq3uLRI@v>+5Pvv{v8KsDD{?c_68egD|2$QXgN$SE671?_f<2eRhcY(h&92A$sQV33*Z}P3beSancC3 z7XICf{to#TAE4mVQIH-XH%H~Y4V2Dnl!vXp3AwJmG0^1m@$G|T>@&NutdQ0-=t$Di z04a(6lPx*MnS8K|kq!jthu>|wFCt+lJn2G8`q+)N(@a)6RNK8U;bUZyP&a>ir=y8t z%pK2t<|$-Wd5c7sl%cO!dzA41*%!*ejD8CyB?nYUg9#Q=-wM9f}S(;i~V}+fUb4S z8KD;X(L**=L)H!K238|6ldE8|73eKJRJTiA9aQCL2yWs)3qxZ-TlS;lUg_l5++q2*^)Qa*)4Jj zV-B)alZucg=xBa5&`lJRCb9`ISy0@2Z)Q~E<4OqOq(q|CG#X-(M!VQyk|xw1N!3@^ zs|9kC+kv(0L}S&+O9b0)t%)rO&Gw)Kx}gCx+?=7JH(&mNB&X#ZsmXVE6=Hu2A(iNd zG*gqwXDxf5Z#SwxD(x}&{nKOn<44TQ99*X#z)hw%-D1=u+t)w(X~Y(JB)T4X{2R z_FTue#JwNabjX%6%a8uv!TAC&X)kbsgbNdMhhlX05fRv0bfziz>$Z6QrHy}x7X$7b zjpD4c10KV+5_h~9cZuGH*3~uXyU;A|w`({y`TXYyMGq@wx5DG7T`}4?a`{Ty;LM%r zHYgqK-3CNKr)@AJyaJ2V&-6B;v;~9{`uTqGBbE`QGh!s}=6F%${j;9xC~<1t-U@u z6()no`GyVw2gEl}oWfpO@j9f14)uaGsPL>eCO?-4V|rd2rO{fJxL^a~mWx^IV+5fR zYkWz?i&lnG?<%~qg@6t8NfZHE5a|!22Czfm$(uQ?N+im*&n;>In(Si?8C?p}Mhm_> z1v5sCeb9%C6d5e&fpFHr6bQ#_N|cy^a?u@)q#Te)Dsk9Lq!J*BRH7saloA+`Q0(86 z2*ofGp#gW)31lJ&iAdicvo#1rIDkOH=}IZCs}YcfXLxUK zm!g<*0YPgHDZDNgz}3)L*1i8EMNL2iG9!e7B1$nuwiN=3QU<5I!~<_BBCD3r{i6jX zrKT4MZ~%eC^c|jFL`L_AD#fnr1jIUsPaiB(>TyIsIiYuyNV z?(UPF>YEbUhf=#Uiive+@R1@c)$~=H?BXVva-(_>_~(iWA-kSID|x3v*1d z9<;!IhYpOdw7g^ygY`7ZFCs14dGC!__qp56V$*P)`fkv3pr`D*Q}p#F$os&n*mq=A zIX2nX?1XX3j@4&Y-m9RTb*V1z)Sq_n@6#D+jz*dQ?{8emIvrJZ>Ul?;Q+8j4J9N}N zR>eCPR(0!I7mSm3EI3+5{R(S%w}P5(z3PB)%1&7;7w?ZNWL>d^oqEv%d&&+lYa8zd zuVS5HRh_!j3FDLTs8G$(azLa&qm3Hbv8}NxbVNM;cvAiQ1c3R#=Dqy`sL8p#2z@4a1 zTC+qmS?!bz)Vw#kgms5XI`yXs@RS|WHh9jpDPnBvqE37_LY|Uw<80uZ+cL(wDeJ_0 zGw3OqwC~kz z2&e5-?d*y>71TtXs%tuSsvY5!ox+Zy4Z?hnaHXACZUa6gyE=k`556g4qi(`4;>$C- zv{R27Ay3pD8y={WAyHx;7PzGu$ZztdI+wgg*LJsyvg{PKWz+|He-Co*3$loE-H@Ay zX-#5(r1%&|$kDgRM=@AGy$G;8fZ3?SwN-IBw%AhKyDP$3N{!*sE)(5 zcIh{x|ns*7bjE0*L3P{EA)xFXm(%UTFXRm_s&?CUC6Z6AD?+K=y+JIaVx&Q-)YHq z8m$)Cla7_^ZY)%WI&zs$5?jWG%akS4!xVSwZ8PXeJ8PMZ`>I%EKksu?$NJ9eI(4=i z%85E{c8BQZL)5*vmUl3!?bgMPNT=+i3&Bt3p{wY`c^mNe;CS(H#f$)shh&#`6_nUj zKhz$EMfq#4HU=&}{6_ViMx!Ini3Y`6o+-5l15M&9a>?4ES4Nv6d3;kEZIGl7IBWz*gh({bj}*J4#% zjD=O*y4D5bG#z8d7#DQJ`qu!#yV(-im%G?Nc@9QmtY8jwVgWK73rj%6q3$&WA+J%CuKOj3mttJ0f2v-6rfv=yW@SQ4!axM z*$#VvT!$UNQ#;&-cghYU!GLfHhW9xG!@4cQbn5xjP*2+V%(bGZ`#C5+02!!mL-0i8 zQw~COuZ;ISu4G+~Dm(SGBhL5fpcKvQFU^_COb2!46Fb<5bIJ~y>&)?KM3;7Axe@Y2 zjGBXm;WRjJXtlV$k;W%qP|iL}UEZmC?cgWsqtWq$n|ZuDDy(503TrxbsSCpQ>Qs04 zcRldXecidSH*hH$gW>odG~M8nVlOrt9W-0?de)gtGQ6je5Dx>%O*_{Ot0u>{?4nM@ z)zWF1-{k8y-(tEstdmZ{Yx@xNZA(ebV9u=N~mY@{n~@B-Vsb5 zMr(;ln8j;C8(i*WW~Vs)L_8&;>=f~oh^jk|Vn?hKjiMWlsMXLumjP+YsjCIDe3`V< zC_D}Iq(dP$jaY~z8L-)Pk|!}bbufL0C5Lv>&ZW)fJ2v3?qjLOl8PE~ww4I6?&37qG zSJkaQT`*4DnXtutPlOx~k#LeAxb7oBq`Q^?)NSORfOy&g6dKNtW1M{~8pNcUk6>J# z4qpt>ZS1;Yop#{jR;5w%dqMOP(->}>ds7B2Cr;{{KG+$JbCSF*+Deo9ZsXV)?L-4< zb_B!@M=x|ny%hlXyh;JmnU%tH8m(LNPopD7oq9fP z!VP>Y93TId;{=Wh{6Rj+#n9Gd`bCrUkdAwM0!iyR*GYYcCc4d;gmMn;v{NQ&Ha}xh z(5~kJtHsfpWiR!}6V84Lo+dK-PEjTQNW3!rLcBgV&Rps0hI86)!`l>&3mhQ-dkV-bND}xRAjzrVm+K+_R&i7;+IbJ zUtG=itA)*Ye7?}>)46_)LH`Ck8(M+7I%*9rerJ=R zJ1Y_kCc{m)2S1ZOX-2{UG>=P`ob9hX7GLb3G0o39*^xO@$pZ)0*nD1o7u~U*mHKZ`kry(T;xT<8Szs^}8Pk z`lCk*c9km%XFN%Z`}t~jPLJ6dK4&w-(3$vv0$$oHufHzwg85>t^QJ#DMD=cdxc%w2 zUh6gzl#RUAHj_m2DUi)}kyb>p*(pGsm?o{OeRA4BDF8&_7b%3fjhvS28`fztT^LVG zabG4BD`{ux}iF$j~|bsGbdpNlnRzCBOcC;$X` z429Y-|4>@3uPGLx$Drufb`ZRy#Xi1%Mk{SQMu)4<@A4P@FFp16&; z88s)}1WC<6tK~&=te7tRPg7Ikv>RR{y{= zFnErQo?_F7zyHMA(g!~GhN5(GI3Qv|_aP)j1toO`Yo)j`8+T`!i0x#CyQC z!XXZmYkkC77*h+!&JxEt9F}PWp7(j6(QAF5j#PR8asG#nT#xTq8ebHGbBymLajEC% zU(3&`y!;y%S>W%f@=%zwrxS-F@e@kJ7W%Q2vJ(AC!mz!GxRsa6Lb1i~DhkCGB}wR? zqJEO9k_teY{ayx^`!&oYco*;X95QHt3I6brEyK1}1@^H(6RG>eMx7*nQdc`@WsP!p zQ2wXcBG7>*DGc?EWRMdgMhY99E+d6iu{|Ej?RB}EGctWTz<#`Fa%1;aV zmAY%Z)1pl+(F=BVBYRCR+!g!99`9PxR`>bR@*O*jO{k%-jh$p6u7B)~<0KASUM(EO zIY1JO!>W-lY*Fcl{8ayZgLmy#OB42#gG%4uWRNDmIxBiw`f-NpOoyz{Cf#Ob=CI3( z+{LOo&dq(K+Wf>3_`#Uhg{NL#6J)Ms71lh)%2+m4R^zghvO<&dlNaesnyiRyy*j!e zoJ=rZF(5K>u>x%jVB>7A{kcgtu?H)PBy}deF_d%8W}iQoow-8AU;_EE49X0RyNcR-0~uQOP>|-8|J(! zx|z)?-Th)#=&yL1`?$O=zNgA--A!I|Ih5Chrcqwg;_z$ObZi{A6|Pypa9P9`?KmsK z#WoI*`d)JN?%EWqmo1_kBy;(O0o68gZJ^E6rGii2cwo@Mw#tSn2#06zt+E`Ohj}N6 zv<;2h>9W}d1V+u$ZJwh8Lw}do{~i`>UV0HV;$%2v!^wll1@gQ zo9Ti)B2!n;Fb5`)0IY;x_|wAGuQ@ z5}t+A6Z^{XunNjLcup&dN%w zs^;nKVNxI4(KS&V=DdI5g&@dgqg8GTgRHW{>Kn{Hk8cu+HWug!@o#I(G|UO&23!tVTjV zMnXS?bzTVTyb#uTA*}O4Sm%YX&I@6k7s5I(gmqpB>%0)wc_FOxLRja8u+9r%ofpD7 z?+fd^FRb&vq>&2qbU04;N5VQ9^#xpE-j9SiJ`(nskuWDmk|H`y+Z_w?YAo#M zV_}_-h3_^Ibfk%(`%Hv(C&D_Pj?;a0DvbS9n5WR;B&AC@I;ftol#~)=uM!m-C7gDY z63!JUOl1HH1!Y7DQUx4I=#pL_Dh6sSXcbBrPNf9>8ilE#Lt#3rpd|`hcOlFTKngu7 zdg)gOWGX6AD12gRV+N$er?6yIA?m%tW{SBWd^l(tt=Su8E=c2dR@}SszF~*p0Awy@rlrJhz)T43$G-x!HA;KSUfmxZOtPntt=*J~F}r`M+&_9VuY}>H-T9gictHpv1z2!4wuKEV586 zzQTgBG7A^STv*V!*g~hF7#2RQ@ECE7hR292ECvtWu+Y5FLIx2X7Az>SFm;TF1*r=h zhv}15d_Lyt9eyS##Pu^%ZLy=65sMU+TG%*}!~(~~j`GjP&4R-HS#P4S6W0g+&I-d2 zLsBeWQ%H*Ct_j3(`ulvhnqRFe)@~HbV#$SZE4GO3S(c=EoPp5`i(I$aTMZ0aihOZc zV&scu2EhWy{b74o{(ZjNtTs1>sKw-AF&2Xtx;7%eCQ~D%I)^96(KzPhT8HcChEX;S zQ>t@#X#|eLYT42oJnVdfce`p3lwuptk_bnv8OU`by8X$ggIMV>v(Y_n9I^n8LN5Hr z5y;i2_&hu)#pm@FzbSmkl4t^PR2n0U9GylW*B^dQlz$4TF2M^zl-wA2yr9nF1>s8; zIw-L)L0m^Tx8h>QNfPJe*l1Z30X@V%@SZ0$U1Le;O~_#yn4@cJ+$g;cuZ>a_a)y$4 ziV(Lcw8~9}-bI~csC4l|rVYnm=2+vZ#o#PA)?%f@Oe41(T3X|9vWGASARqBuZRUvQ zs)f)U_90uQPD8|)>shV^$3YtQ#Tdv`J8UW7%(X1lS-d(rD4ael8v^4Zj(AFDzg;$# zd~os|n0O^pigdaU-d+@6Cd8+?&cqxDptf-y%4YF-p&PxJsI+Os0wH3#0mThQece0k zyo*H(%i>71K+og@90O*;>~e$W<+9n`o4c6Z%43$AZ?H&GHuD`AXwy7Q0X@YQX6kR^ zMZQPnU)X)8=0S>}GPERd(bT^u!wbTuneTigVy+8yg!$Q*eYI!8O%@|#BmHcwMxw>N(de#YIX z_X>FtuIEQQ%k}M0ZT1k>`v9hv=I;rvyxW^ImZ1>TsvcEu?;9Y77GiT;uN%O0I~%0i z!g;P-ukKcdfS>op@bb;&WpR0Sd0GB^{^4Eu_rINgo?TwNIWr?;dpf0iT_v?Nd&RQu z&^58wzu{{B{`I$iKH~cN>xzrF;@>*GE0d{y(i*K~>SFGS__)p506zW#&} z#ieO|VeF^*|6xS8|Cd&>9n~{b(Us`hJUg3Rd@e7Lf8kYh32nbyyk>-myB12gla0Jg zpq0Y0J=`?P_~?M5skb39+c0(QX$algKpv*j938s#WXcdawK2KaRlm>I#|o>YOE(yN zrxu1!AzuS`qHU~i-8lEKoha8ET9;7?pgU2=#&+1z+Qzl9{b9a2bR2yVuUm_GL_D#@%1KMphZp;-&joIR;Fn+~Hd`&*5`DXckwW&UDw`-^d``v4IZG7<`|MB`kz1|yT;ng$q z_#rPR=^D>Q-|nA_Y8plYpXU*~49ueN(6Qq*hI%pf%k6TYHjU30#U z_f_@fe!IuKDhJp2<(%?J++AU7I#eY#r$5jNmx6ri#5bDKSRaJ{kU;$1Wl5WateSD` z%59(uH>mHF-Dfm-SpVaM3))e%3)*Bp$6}@O-{1e&s6yJQWi?w#Ixgpj1Z#}0`j81= zxZJO9Hq{bjWGF+a^o@BTU2~#{o$~FQ%NY^^o&Wqf7_u5@;$XyD)pyn9uWv4Y5n+lR z!JK{kfEbnE-h4j)_@R7@lSr~}^>j~kqK~?H)jRv!n@?}fKF>Z~&R$(1U(@Nn6cG!h z?tsWULEBMqGP$coC^B7Pfh4x4&_+(8d0f)bhuN;^bYL9H-wrl?@@(_4+HE(K>;T{f zCp<1esioC8LmG>jIG_B0Jx^@k&CM~(h>jOzC;l^J&;PhR(xu>`Y+GfCu|duNE5&UVMe0b2~JhKD0k^q*7OIT}P1 zeJIcW6Tj%+883Q5n^=|RQTk95P7yoH-5`&zhMq8iN5>^`| zsWgpfZBE)s92yeQGu^^Sy14L)Uf&Z7kvZ|z;>aE#rMVaGTk*1l0BrAmD8p_hVz}PbCY``Wp8tb7N zJgoNkq>Eb^WMSskT0&$AusfRfa%mHyDv)x3@>c5PmLzYZEw2oygmz>;K!rjEWE^2P z`+H+$H$P%F(BXO&a|-k}07?5gCc^T|`e~t(C_f2S75m%malI_{(8R3d_?Vz0cdKu! zrXiGAaxs=7C;jXBdQE4el0qE1vQiW)ldg=mM0g+$$bCpIj2NHBt)7Uvj;S7cMhU0! zVrEPshZAsM5MRUrCW-A&MGlqai-`3-G5xjhZ~$_qwCD?9=Cq^QZ|D$V}XrS5)|l z7q&LC)6Ho$NEsf1NO0O5}u zE1(l~8up>fwM-iuJ&bhurkqW86+ENRoGLJ2Xv`jF<{>Q9;~#_s*OvK6N3H=r*4mun z+ym7~f@zMF96O1SbQ+-(vNg)5-x#Y!m~ zL27Ii@_|U{2~xhKgas+9!qsbB-%SRPQlH@51e>Rz$C(dky)e(701lrE4%TYpHz)QS zjW$5jiy!|)wq4^vE7*DVr#rpWB<<0~9Hskc<@}cwUI2p>vgRWNiN!@A)#(?O5b$8c zAzu1o#}w74m(9tew4j#syJ5mkp)2d2d9!hheuAe=y4YAQ-~FW1^RJ{1QlVbq3k!I(83RcVt~ za1F$r9kZq*JsX;=jYWAm46Kdh4s_N=wr>t;-)u5F4xQOC+QaI(%8$uCovZZ&CfXkR z^J-CDQP4;*Dgl5h5Yj;JNqoJ<)|vqtEFS0PrjV770fE6BFE?cHRF5j}aDiu&BR!n| z^SH}aURA4`T;=F$wFlpsriWLE9siQ4R0Gs*paU%D>$@%74f5CkDobDWsPbX8#mglb z^x+j=5X=qR^y;`wbxj~pNZns!u@C@cyTx@sbw5SD4 z@MYBiwVP|?_pf#hd`t*xzgp)8d%W1K?)LVkSvr3v%lYn06M3p{n18BI05{w9vfAvj zqp4fD+07p_eYN#fu70W;!DA}f?@0h(Zs%WCnHH2Hh`ad>j0M^CG9Z}k8fTlEhPDvA zNMQOcfLv=91P8p_1RE0(yj9gmVXqfR4x}Iw`)c0Eto}ZGnuHBs*?dI})$o-VRQ6jL zD4bCLaooapkz-zuP~!rgEUW7NeznQXYu~k3-Q}d(ut{J|*7FA#1S^xjKNZ}n?*K6U_qUnePuKIWo5mr;Q@YrL zA*imevzx?py}G$=-V8NF({^TPH0&frPt))dsqw2CY7KMB0c0nZvduLJdPAdOaww%) zZkE!01Jfd=3j@_C%+$aDkuY!QItR-SfTeb*s&#_|wS8>-8lZHS6Z9CwyT@qEydQo*TR|IH!s@I+tqT@vh=5StIc6Sfr**n0Koq6xZ7q`fyv!=vB3N5 zxjCTJX8th$W81hl0VF48$Jn;$CToVjp;q`Zl~Y~0+|5lMlvE6l8uh@bsm%{D(3_@P z{~l3~ULxjr)Ibe#OldN$vqD3)&WYar{C@s8$Hy@5v!p{Zy|3nr+j~6sm|=JTL;NvY zmsj`(_v>SBmZ{$T_A7SFh7~?)T($lDN19^tJ~o~v5wJ9G7NYz4a=C`0m_L$^nzxbO z9^u7}TufR74%P2(p(|yEezadzn@vuGMD6+^tBs7C)$nQC0mJ|_Y-$c5yPXa8o2(9~ z)V@`CPWLSvVIQ|oG9x!QRM}(v_;3sPm)$Hz$VUSIO@{EaZPAVzPf)|Jx79prA8C@O zs;6uBciS&HxjAZ736wI`jr$eW+*JkH-?%W93W6xQIA2m{1zZl^#DZ(`IFHGeIa`-C z%GvtZ9_NZ9Q=FqFTj6YNVt{kyvF**4r)D>g5Lw)8d4sXdLd149hbWuad~=Z~v*n^; z&DBXZHQ${zTunjElGO4cijCmOCiGqTO9t`^Nzj-%94yWF?8ipJ|&L-sQ^X4ECLYmypRwU@Yj)v()qU_n~*z{wIMXQgkOAJ1? zJhk=MibgY!gOM#ft~O`fiRu$Y)Ya!rIu4@2n&Utk4LJ^|!G;roNJn)ClC#{{deLZ8 z*QNFvTPK-nT$33qjjbL;1{zx|*k)`^VwSPxqD98mrN$VKq`h_gh+iYgdWtcdNY)oe zRWiKTy1dPW0W^I>+0x?M7K|*mF1D}uVs2XT#oVf5i!%llTbtTaY(->7v8AE~rLIej zC$e7Hr32t6~E5Eogv2h^1!2+0+7+=eYIF!uNJGrBNC?1 zLw{`zR;UmR?|Z|PigRvY_N!slG=!bOKT8)}Y715X$r^u)+x0ToI3#$sMvS-&$H=`o z9OS+r%T3Vbi+y!mhW5*Vy+H_g{!VUGxmy8WzJ}2S0hu0d2vIuv900T#Tu#bXtHK2+ z=0SS)PDQQ>h07P_PFNno-AKwp^z0p<9KdLGo#k*+t#J=Hhlz_B*X8{BQ0>Y_xG~~P zvP34=JLJaBH32D}t%Hg7cDFs=+-4yrq^)FYakS0WO<{<}{e>J`6I^3xK-Sk1v&hqB zb#=VSR#SkHPIi}v=-sThSBQJfvZvG6 z9UF#rR5i?o>RXoT=)R$D(LnRAq3%B4#nJsD%M0Rq^WS&8n=iAN6KG%!wNPF1({6OP z&(a;{t44qOXBKVzrJ+*clF(*}rLC_xWof9f1^ZfEeZkGx?6jO%xV!B?SL^jW57>8r z`A&J>zT6(}@>9`V@WnmMY-3XjgJ|HT*dOm{n`mIA|D}4o-jS-2ZDq3EtRJ(rs<*qj zDzEcjUiA=H+ypSD`s~2>%}xg;Cl52e*E=pQ?j4#Mnjke*p3m`inV;M^`t7zis|J8U z_3a)3i2zD_ z|B3`u&qCz%b^y?)Y@ncSsfji6!LbOVdXz`IraFBSIma7ra+>SuBESR}nf2v$v37L( zcz?^{>S~stOs-e=`&H%`P;8EO6+)WL#USzEp#X9PZBt(z5+R26<00a{0cwEwY?DX0 z0Z8EkQwq>*W78|7+{;(1o;iW$@z)5^$m35amr)iO(E_`hW&+dWZq@Lq)Bxdg>#_xi zX5s-KWqU7wwxS0CiJRFFADWwGg~-bcC@xl{(kJ1S3p@4?`V07O&&&GI;gX8Mz zh3$8`>zKT&YQ~-!nAyf%@CwgttqPG6eL(tT-;$9P;6OQUxXTrcA>G zCSRsB6xfA7N1`A@7fs~S*$VFGhueMbk|`7@tiWogvk`c!St~JYYDOB;BCjQ{$0J#% znLx1Q4bIgy4`~}2*t7|o$IB-2xlnyQQ0Lk#Q||q}+2RiAYy{L?ocvBj#V8EmSQ2ffd3Ub@T zm!LsEq^2+1y2+si@TQc|$$c^x`z3$21?hak?xs;lC?ona{%Qh(ZNq)*4k+&^7gaJl z`3!Ph@aZ*drhs?z!`!V{PDd52j^6|4b-l2CRnSWZIhw34qRHwQO~<|JBO?#8ZWvo4 zEd$JsiCafTE=%8^-gc#oRO0l9^$af*=vM?Nuiw`lv=z$Jfg~U<2lC0%fE1ZDAaCU~ zAT+s6A`qRp6HgHkN0)C){7b*M8tPz&rj(>AOEI+c-oj@4d&Po+>_5<~q& z4xzoN_<%&imID(E84IbeSm_P94V1)#N_arFhIDi(mrvbERr>Tc$(}+fLC>{pyh;ad zgnTo^C5=9pjV@iYye!(Esc%yDYCU_4c!?yLv$dJB`nS`dCfmU5p08v@fEo8M!2G4>xW z{|cG;iw2!tn7mu|Rf_)~boh?6lynH^+fgiKBm1n z3Vpx<&>%oM<6wD&o*bau#lnU%&*}fs!jkii4@;~U%|q|w4ie)7o*dZwBtUPmR%S$_ zDfiFJ<^FL=ok!XJlPaI;Ym%xIuI${YQFk}fuL-HoG;rovIYB2}W+PIXpo=$m>TTUA zEm`Y_*#;Ct!jDmLr90QyHyLK%7M1p4Yt+HlTiiD@8iEKghC`lmRaqFmefb@UMlw$L zo9ry{HYOukc0WJ#%1trAsId*RTZ_*_b^~Qw{H`yK_}S@FEt}IZ*Nn+(u)Be2Uq7OS z;R?2HV>N){gk#V{H4C@OmWORann*u+e~-<1=8QR(jo-C(7i!!RD_qd8YOZD@D56Mc ziS28Uw+BVqZhOZl>*YPNWFS8o5)SW?EkxVJ&T&j4bIHTU&%xnL^_}ijQtTHjgL-NS zdw06rJ8m1oD6m&Bw5DPfkk>xPIOZeniZ8Fa7U4Pc{$Qw{k7hcjFkjCoB$e40K4n1+ zzwRi;5@(7vaTu?Q@1Qr*0)4vPm|65M;;)(J%k*3O4J?1pqxC)bb0W+x<99xvw6rGl zNz+KzM4K9<@|+BzfdDf5U@9CGe>0||QjWbHOUy40ttUV+W~v`#6f|>UBd3B-u$g|O z%@hIv4{UtE&Z^~?pm-DLr3Re^){6R-NkwjAm$RI0eo!dLHh%u;;^!;DDh}~v%yD>;dm0?b5&Z~)V8#zWOg@rw0M z&o^iEn_td8I^&t?w*OulZsN^>_~gNiGRDsa$xo(8FZnIye-rJl(*rWr#Q<&5s>&ZO z|I+Wdwq!JCt~Dr zO0*YdV@S?9+Mkn~#$0`ozKUB$k*(&bs{^5`h%((?m--?VEZPwFq0Q*I>TMqzyfLZA z$`m-%y$f0y*>`xfKE^y9RFdpE(xwy6OTFiqgI2FJ;aa$Fpx>#|&nnG6(}Pv`2jLWQ z;UqR1h4j{ku;;h0-xRvg|J7pkttjFllTY26-V?MZCbOq}zXl;$q&A1&vy*5uZdTs= zPTg(ktF~;Gr)EL#u6E4hB*rYD!R6Vn5B;itZXPJPd_>~ZZ`%Crptz@$Re1}$J}0=W z`poOf;3Jt>x+ka^`cqD#jnpUZfCtsiwqQi3ddU$%CiN_B-jTA3_ho2O!}%FUQ3Nr= zPr9!=Ac7``O8@D&X#lEneFo=a&f9jbJB(ZW3PPIJKYidJP0drJZxZx{B7t~Hy`Mh2 z&`;ka=%;Tb;K|jvH-nVbK}u_oKE*Id$q#!8`C-caFnva1m@+X;`#4Pb8l@c?r9(JM znHZ(yM=AMn+95Sa=_}zKJ0*;w62?pkgQf(A)mUhED)2W=Kb4xM->OjV`CW4evB6+w zLD~l(TBM_Y#UhLcVFb8zbk9mKXRCqtq{2`ZMvA*&IaajBnM`$!Ho>^oBbZ2C)#Ac~ zKEc$-`|)()?%U)dDiQ9Pt|oB)#pRc80%y+7{3234GV-VHS~|DtL5DHI*jrxIiv50^ z)C+d4xbM#+#rjSpv|n4FTExCTua$7_*2bE~RV3}cnHly3&~&5D&F*-k&a|Cu=oxy! zhE5jU3^fjA?{60u=X#{fpA8R;d;febIN!tRc3s}>ZvqNIEmBvZ8uuIW5JL;0FIeWm zbUXHuO~l3Dt->oW?~CE(o6F1M@(jkipU*$MEC2pCyvluf@#YLmY+)i#DAxD&Z}5xk zUw`}OBVM|CeX-mA0Ym)$HATU`KHi(z`I?L-e<2(EYYIDAzWxOFJltuospzNq|FPu4 z;N#JmZUWX+W|@=%T>@tOa5{8^mqAdlO~rf@3ot_94mo{-$Q@ggdtuU6BluJMb4vY^ zsg9Nzn#U-y5NYkOW*o84(N!4UmQwGk1@2Gjm)OkL=Vps;51mcDI|tT58#=6aY~EV% za96_b=<0Zdx6RBGg74g`cEN!~OfV2ZZ=Ca@|wuHEQm9zhgy>eK7!d=^xxP=>2 zExkgS5JEylaH(@AbZm3*;mC5l@)1$$SACB%epJ*#g@e)p>bf|%bQdqX&}@ZvWcj14 z>A)~f+knT{$g+(GHp4lb47D2W>A9Zr>ak2ecnXaRsXJV5GS^b^6wYpi=mKL#4To4- zDu@GyXOX{tT6-(frjR*`H}%LG`Y$y8IAaZUcqq+&aq0EMcxn5nu5gL@P;9e)Ul3Yi z&aR()l?K;T~Yi8d2Q^vHL8=5TeWbIo69(} zp6}z8Lbj%yyAN>CXeSfzM?EDJmnbsl$v_FccOs`F1&R0U$TG>%u>p5HY4~6&5*{5X zBVmb?P&m#l^^3T{lo7^8ae30Q9Z$%0p(bNisGWR#zcX_&n%Rh^*3sw;9Rc^VpfU%X+1{*Dh7VzMJ z16E^$S88fXO+l#%B{iU^l#og(sT5JL1WK=yrq(Fok*uYyqozNC{~vv%}COUHO-8i6MD3Hj|{ z5h*_&5BCTu_^6|Y_ma)S5h4qWaQCOabj9!g__kmdk=w!~FyGdJsvcb!xx$k*xKkE} zFM9wAe;{^|8du+AN=c09qO9c!mprR)VHB;W6J1`(7;ZdxK^K|n{)$dN@$x%)BrKz@ zkM{HuDo9-xMeT{gHSD-rM40jdX@6mTYqYG?FFDAHG zi???FS%u+up5Nj1nu32_M_G`p2kKi}7p!?S2;XI_2RNEifOKhQlM8$?OX01Ve!?g6 zXy1`HWOhdm6uRFP+6n#WC_6eDz(oES2bo>i$_?Mw{XJ#E`5wbp3@sCP2w&E^Cgk!`1OT}&*0wEPh*L8<*j#%!28vRP@1w3j(-M3EiK z7+>q&nxPfCS_~|#&nMV4FrG5PGwOg zV3aET{q!&+97*~qUw!ec(4TTrYQ`N&nMT&_PGD+B( z`rPSm66-#Hy5rs2Ex0IkzR#ENLKinQsU{6#D8(8NlVIcLej3%&d1L<7Y)t8t^e<m3$t>Zk@H*+g-Zlkk}Dm7t&}Gh@6ZIdG0&vim?$*2 zF+csnE>Gn%lKih8icVKp3w6J$7S-1k%*J|Fz-`#)Y*Z%0vmi}6J?_<6}n3#EQ#U@|WabNaRAT>X- z&{N8;bNXZmi@-&~VHk{|`j!?<+{jLJ-VHmlGzB&gcjmUHEHxE|Ep_=z&hCD#{{8rl zuiXxbtZ!jV#@YGibjB%8Hgtp4A?cP|%A@2j$RkEI z%qcc@*@0%F5r^~b=9JzFW5(6LjB#&rtXWdZ-BE;Jv0+Se!@>p;3)P4ajCZ$hFe=aW zP2zgx31OSXxM_>J&$$)f@sH*b%ieLRL&Ik5EFBC&)DkRhl)(h5ZL{f&5;i5PVMNrPW@}g_wrqdf5dhW z{%4f9VD5=L|H}rs8_&aESBRP1+_-W6f9$) z`@HANUKB}5bWdj+YZt8wH?HC;){*4Zj}`YkWoCO_2PZ zi7Fy#cOLD%{`=9f339(1{Y2#Y?`PW`c<`EirbsmSgHcaF@DE18cetV8C1f{)575X_ zki80W=Y0@i6mK~sijXRyZ2!ZV!uXy6^3-ohR~%3^T4kZP*P$*+ z+&)yZP_Gy3r}10dhnGkq`+l_>QHDE=^oB#*`r8i1+t)^%H`3JSnxd#tKqXi~2bxm- z|Cw!8@8+N9?9pX*Q6^#BjD(3)-ONCv>Yy6@jA3Lp{eXOCY|(WJL6p?a3DhWBX7!Sb z=Zi4Pv~&VaaLU59TRY&Ke#jA91bPry#&|FNpMM;@x^qG> zGGxJbkwo8$w%&42l_sHkay@7e)7Ar(^aR;Vl zN?R2OzgYxAsBG^6Sk!TXY9MbO0`{c22s9p0Dp@&q^aO=ega{gso>hq9!$$$AoUNy* zKL<{bwyMU!|I>q%xFrW0^FR(Rz5Qk(6JE(d2J@N)a>I^2ZoLtE^O$QVI<(W*DZvIg zaav6+qf=MY)CgLoO$#>GlGkeL09&L6)kWHTks?~8m`aYUY4ehCcG|oY3opf9@@-AA z@1!>AQh2;{Ktimyh7t2pQ+d_u(`jH`PAg{Pmo&{~#sjb_3tonDFjhyX-$8Ov>8X>0 z%rEy8KY6*Qa27{D3TFzH+Y|)I%%+e+3Y&relx_+sP_ikcAnC52A#&!1nSmB=fjLOw zqLu-bZ%`TF_>!c-j3cVYuQ@JDA@f|8!pdBh!sYl!fXwhu3Muf90F?4i3Y73q3X&Wu z?zQ;xjT!Lnc|H>cYRorW=#21%lwP=zm<%Ga4S~hN5nk7X&c&}8mbzRdJbhdt6jAjj zE00!CN_mbazRfXL7;H^`w4}s@m@@HNs!Ik}v+<`|uki-=$bL(_TJ_7K4^mt`=#o&i zZUUIaCfvxp7e*Wiv-l>_R@ka32y@o=TswR`+TY`fCXb>s8c&`wW!;~jC?}&_vG;Md z+e5!0m-c@)stL)C1es_ip+~llY&TZq1cmPqYR!)c=ojh$K{7)8JR%pV{u}rP!&lS` z3?-pW?ynq_a6H+pwz-6p7#vu9uM<*+Y-|~)_hZr>0cs{eRy1U1lypO)YAAg7xT8q) zcM4ZyXd+t+ zlUKBC%xzApRNlhr{CVtQ<^vC4zA@*Jck+~W-@?N*$MU`Rdt`UbmG>ULj5#x$V++WR}d8i1x#s28^1VfTN4Tbnt z+uazk9uKtk&;1G-xExg9#mmw<<}9sM1^IsVs3|A+Tp%m^dW}Rk+tQE2lmRXr@KrD? zGI$(jD+6T$AL>wCGE7nE$bAeGY#8EFk0UJxJZz0OGDP+wzRI|O`<^-cms}jjW6MDG z&z7s1Ej=B#5l~RUNp$;3dlT2t{OkiU#)CRZV{? zRPW~vd60VvB^l5x>Qhsf^tZFwr}c{SFLxgB(%CNV}7D=T=J3?c255=mUQ z@yQ|xJYg%*l;aHZn2XfzapZzjza+&eNJ9juROQrAJC?R3Da_KyWDRv_>41a)2SQ2% zNfnm1B}8fy0=0Eh;xtUskP=7A+aNTb>OzH74*gX5CL~$tr%3eE>FB3O3{sWmAXP99 z(&h(g^MkZ`A%fj79grHPYR;ma&SW95MKKWI1WXF_OUu-#xxD?tC@zlQFHA+RDbske zqVs!z?Y#M}k?SMgHE6K8)&*E|p{6Vu*NWn_kN1lmrz|B?kF6&+Mar8>U-oARBR}JO ztLIbA=;nOoj8VuK^^Ci<&?9`Tgs7FCMr4;CS?u90mYNY#UJm^WD_r0By;h2&QjMR4 z=&*xttt%0GGkPD4%d^IS?*c{;=vz!=fUphGOAxvpfkHv^EGzYlw;0b%5VP0VdJ;~E z^#(Jua{h4j-{bLiL(&SOYCNnqum_n|UV?YPx68VS?MC$g;T+`1O6>{_QZHR3?B(E2 z@Le0jaP0~f-J{_KL9^iWfjC{ZjS-TgjXFEBEaMQ=H#&&0Xa60N!A+bW>bxmMS?;u4 zt5t))E7uZV`Z#6viUwy)vm0EtD>jZbSU5TBeY~qYY1dBkYtIVu5f+b?8@8S{yvLPrMHZy+)i7p zoeZ()#`?*ySh%u>08V2p%yXp04J*ca+^{s!2=CZD%iB7@^Puh8$1+${m?-3;(-TDh0&*u{a zs@=eLwE1I$A#jjO?YzMc&gJp{;hQ`BOSFLG>}@_Hv)&`yu|U+d`Wd^m5VP2C$LvVF z)47WAwJpq40eLRyCW6-cgaI<5_;n^)fRAm|Oh}4UU6kIf)2q9rKuYh`f)SRKCm^j@ zq&+r_eVOVa1igS@UUjmzNHB>KQUY{SqDo0bQ?-etW=a(zy|khdQ#qvC8zty{3Zd6R z&>|JXl-$KIu=EO+k5w-;NE)CIYr7y!#h|gAUPE3|w(EE;$k3U#g9VsVmV`i=mf|%? z%Qc5$uyc8WQ>0g^3F7L+cn1m`9E>b1Y&|0@&X_@1a$p@(vfD-#KHy)OLy9uJPU_=BdJ;9O+lJVOy$QgLIx3I z$94{c%=sn*V(Nj>F$F84zhk1qeb$f~zc79xJJW#WA)30=*;wM4+rc3;0Z}1IyCb z?L2N)`?XzQK5W&X!Mq#y$`IkaGpY5!B5fL_{T&U~NQz49$G2%S%@@Ut31lDgElwP5 zMUieIdf&HuQX7Hmk{t=dw_>)q-#+ZL@hS0;GRXN*j_C`fmJMm{wpTtq-%gt@o7 zz(-h80q_m=g}ni$Rm}76q4T`D{XuiTpwHe?@{;{-zKFKAWXY=*a$el7_L~VPS5NDf zNb3-3Rv>%p(ayT6W*v4O;iM-x)#JfbP5I<7AF!=rV8djw>rcWH=x+#T>XbqJLh;+; zm@G;)(Dbu}yUu99QU(A0$NOkjjb2P-TRtU%r4)pR#!g49U7@G?+o#ojF=c8^wJMg| z2&D$6jHzlG(znfa@Zp}475_ZnJ=r0?UYhoZ{<3+x(FXsdiqs%Iz>R2NTxv-MKI3qb{BAe8 z9YJC;(LZ@suZsc!nz5ii>Ohi+4uNbciOf>1Hj?7#Y%NINP7m%Z|2nCcw|aA9!J$YZ zYtY}&iLAAad}i@ew}YWk8+NO#gih#E=kKxac_*_GKVLgZy+S;?I@ETL@tHALvAXIN z58CK85Mw-{S07~HU5x!5UlKxUQ=TwKZCO5Kl#deX{8!=LX7-tOit3#ggHhmXzBg81 zf#41P_mTfQEEm^{L6;5?{KH{r2OuFpXdoZKHTdzp141;?A9(%wPtAB}Mu1a1Bj3-b zIv4s1(y!McNksa+dGy)56njJMAT`fdniSP^1jhV>1WV4mL8&WlAiz~ap+(UxVd{=+ zul;I8HOOvvMS0gQ?>gmw-*L=F4C}8X!qNH>N47zv&((7|olS zJ-}b)7&~RTMX)NH0}qyq`HM(wD1p@ySW4K7dA>}*cfTU=DV-v zUZdBK`b|u8tG%H#_Y~>C#Cw^1VDeoBrJ~fw`>D6VX)%u^s~@o6d+R44TBJ_Mp4I-= ziN%7ouMnG>h{~zuWtwKD`lLR2-FY@M7*!bO_*-`N;am5mT5C!h$P7A)daIbG#RrN% z73Ms_Z2$`clY;4fju*)>^?SH+!V~T4hMS9ax0jd*wKFC{2)-ei2-$5P>Lu%XWF*bc zY&}2+YfJ}+JBV^V%&8;6vc!re)(y(!Og`J zm%Kf}NwXMi_|E%__{yBwqL}csF(8|!c`T+&IqoG_zu<5MDLV@sh*!T<0qgx)1PFMz z?(z1Qzf&9Q@qB{@b@*h=_4itbV+C1jhjxYb1o;;qwd|h@zg{hvlXhvWQnp(Gen!1? z+?EXz@aw@a(DP@j$hOp>3 z;<@4oXvt85nlRLbX~F8N)+&aV7|5BJ#6Ktp*CDRC&qv(sXpXUS3r;-sD-M%H23aP^ zu@p-TIfjx16-Wyiq%QhufBKmJfOq?53Y^o2T(_HJGx3!-mFhm-$?LT^xt*No4Y$50 z{q%+13k++%usO3aWs-P1bHdT3P+$0YZ58NXzg*F?1$_SK)T8cZ{5${wfS@VY`;> zut{22J@w$ETW3kdl-_RdYM`BJ00)Iu^1*Or=03htF@?}9~OiqTnP z?xoF3Ud8DErO*wQ&eIi$<=b6cv=nw7K2Evc|sg zr7^f645Tr*1FM=SU4(9)oGHim+tp%^I39@l|8)L726$sDm*eNz`I{b6;=ym!wi-T< zKOq(4c)40qj(1HRW8`%<`nP^r!O4pVPZnovKz4H5p~Ck}(YK)Hg9_Zd->?*F7>95s zPhIxKMVzTK%&wF<3g3zo_b9`4DNAUK}F48wYXy?}?)_f&UvL|^EXx;=F za61Ctg|mA?L(wHX-YBiGez?$Vc6KKcb{A3vY?m|`n)}oR>##c zHj*dyX)P>GpN1c3z1;5~4o&J&m5Pv$D{B<+e@$OewPpyOGOF$zXy{#{?2&c54d;5y zD0?u@#bDya(gHGKBkcJIi67$PqE>{}yk z3DH}licNT;O$BzH`CY~ACJr?+WYC-NvF_682v^R$4*S73>9|7 zsj<4Qa)0zZxT}~U(BK)?Y_@+|wcj!P+(iGEDz#EIRI1WaCu{OjMUa$GBULpC?%gWI zU8Sf>sw_dHl=@5yy0T`;IRpimpu_5?l#l}D^=RE%CDb9F`soy&dV6H07Fm7RJ=%$Q zcox$39KiJi#&(!DT7-HrxQ?3F(K`}LY6kCL4M(2v08?%e`MPS%-e9kL&&!2HAT5A2RG1h%)ZPv zsx_a^mb>}G96A6Hk<71fnjs>upz(xp0a^;1S6!`i^QOXFnQch*fSfE6uncejuVTDF zY&bp5TZcGIEE0t6po+3T`!b&F7GJNfC!K-@0^10(a`?LdVn3Bb88biFeH)g@ z>6SE-Jmi_Zq5kD;%-&>4*N*1%C5%QXyWg_6@C8iIgff+s%l)73{E(QfnjW|^)435j z4GCh`XjFTq^rSPT=Sz3lGX)_VfPo)Z51XQRT=udD2|1eTgXE~=G78Xt8OP?~$rbI5 zFK2@PIzyfjB*pQSYA!U&scI|ZTf?d;^3yO%tniVcI_uk;$9s;FaO|B5`Jk{G+?`5Z z2&~%A-KpOCt4{lR;2MTlDC}}ei#;*CV<(^6zh@;e)!D9R6F8*P21q%X`1)9rtEeJG z4}=&aS;h$mENJ})qy;Xl>!lsj=~%MvPaU~i{igN&(tN!3ccxg^XZZXG%!2F z1qnc^1v6#6?_JQShL4-^*DYJ6U5xOcS`<5FG2_g<7c(kEpo7WT?s5*NE^AvZXFUBC zg-3h%dO0Ifh~qt8Zej31#u5L%pluH+-n3xEx7rJuF~xg1e4Fs3bwR@_CQsw#BfQ!! zY+S85!t)~YJKos;q_cIR@5+1y_m=ru(qyPYhi_m0Yrle-*~J{-bZv$Y)#Z(9w<#C1 zcJ#IW7;m}lpp9)*1T#%MZaIe`;r`YE^T1&k-EHrwJ=!|95ds`3!1JjQsyi#=wY`r znZd>GVz!Ac+zl`3Zq?=(6_>J!<7xSVYzTZYw8L4CE=BZgKaVd+9O~(`6@SuA?!+s+ z9 zmfi zMWw!!p&`NWVs#G}&WjzP>bg)cHl+BaOr9#>4TV_R7dNiX!;H+OFK@YZU@m<@4_dI* zhgs5cbwP)6pNBNRAgQSjs~Gs{U(g&W#BEq`PTCSqSC=%ft{d2;DF+cO!p<4Q-itDI z?`_HXb_P|UX39&F=PQOpEXNDbR+~IOYM_U6Yo?4J$Vn`0-9Eu(VT!B{Is#G>6y;ue zwN!|*Z8oIMY`qv?lx-Tn%S5@;{&m$M}Or|kY4WM-L-mw(>JY`r$G ziIWMsomV5S5k~x4?>6kmCee&I(DDwG z8bKm<)clI-ATs0a4ToMFjoz(4-1#i$+^NhS8r)eB+BjT<;nsv8mB6v5*TU5e|49(D zCBJXX9}uK{yxq{+fZ&8=hluGut=7gJYU4Eoc39huBKg@7Wsc{OD>R43RM)Ph5?yEh{ef0`B$dD@{MMye-b0*;MKGO z9<;*Juf9=N$O_Ps22t#STeNvvgtDDb<#vqO!d%$Q!L*vq}Apn#xdjGkl#2B}K zMNEIQIdsTPva^I{0|VAV6R7s<2Id;H9*@6Rc}YJE+D0Q$~p*7OIVfJ)a^$ z2h^(djl73($PksS=O>!%mmh!0`);l_Gvm0~Xnjk;Xnls%i@YXR6zy_RuBZd6U-c+O zC31R{RwriEec!op?KO@la{E$N`xY5_KS|ZS!iBZ|Rjwr*FtL zsCpwEX2&OYUGv_RDM?b_Nxr0MrqV1^-#Q^yn%i8;ewC)~I%`6#G%Ht;(xym}C{lU} ziQ|Q|S?x3{myk)molaRhMYWxhP{@4WPO-}NlDmE zbFg*O#Ae+T`)-PTH^si2lCYbSu$yAvO-a~IvG1kW_fqV8DfYb-)n1BMFU6~u;?+y> z>ZeFZnc7k$M7gOr4W zlwN}r)nSU)FhydRA~8&n7^cJ-rbwt(N*&co(NL|FKB|@Crdla-s+D4=S}BcGD@9qg zQYtC&d=PL}0?tanSxTCy1e~R`iAtcUa84*8bD|P5AgV&>w-9J0oD51h8kDfbD`AgU z!X~eTU0w;>yb|_#)fVQhBk-D#%uxx4gc6PfC7cOLI24qylPh5#DunI55H|Bd*t&~; zI!A@D4-~@`t}XC$Ti}g0&Uumqe|pas3e|;uPdQtz_K#2HX0>|Oi5yXS3nhYT{ltbC z2=O-MYgTes4K$TTCcJt{W!H0{_OOA&;~wgOGA;SCuER8J#|O!@k`ae94Q8NoZD)n& zT=UrqnI3#;o0uWfZUm;MwX&-3Q+RVIUByIh9Q+(fKn?*ESpX<`rrAP-Cq+_#Z1I3% z>}N~+Fs#fMBEopKaKO>nb7Sr!nsT-(Ok`Ye>^xB01)I*pbgJ0Rc_3wCA?G1lI<{~g z0O8g+ns?ops?fLjcG@nKY#s*hope1X^;{mPr6ZkY0ia!@G%dO5QHld`?!F#^c&LMT z7_;6y-^L(}jhP25xT)2?X2d-|8fCtvt{2=f57qNyCFa38Rp`MyklO1gd|8MghqKET zV>P(wa0h_Q8%1_j+b)b&z9EL;uvB@Neh}rU9m$TKzP2(!2(l1E_UX?S56DG6 zTZ+K-N0 zsu&-}JPbFaUH|exg>|LNgDB&gmW5!~sBEb!@WQ~JQ+W_RF0><39%vYOy<{Pap6n)* zt)Pb1fW_G7$6Gt9w5c))90SDw_kS*<#FrVYN-uxk3rj#)w&qKiC!L!QF!wntW zft98P4iXbybLJMU*aWvp@7e@33yDVUc#KhJ7SuzOZ6vdRMJqNr%z~=6c}AP(Wn6xN zb;fP^rjUWjw-w6+_I%T;2<*DJx$*@0&iC`h>{|7wvxhM(Dn?`;O!g>S4`w)GH5$HN z6I}Vc4Xy%JDP>4_C|B5kvJhPZvD|~b^I+T$c?G~)r(DdR;V??KS$#9PF1oj`Z*Pm+ zx3{TYy<^ZKp6H^vv3>kb`dUJKRT=Grbu4A?Ay zt^U6X_x_c3)av$=xVdu9)xVa-jyF$*oO}^Iea(YfOqDwV#s%^-pwWpicmtP zV0p0CYc_sj{e2#+|MPgW#QMuabVr*FLaJmj>AsuY?`!H) zuG;#s6ju-V=G))bb>10`Cr|mx-JhSZ^X1EXA7{7}*GvX>MYC7t8}SVz>!AL@4xs$r znkA;rxVNmCS5{}G^#==cw(z3VQ3M63O%o`ya&wKCV%2{$Uye6lOHXT<_Gp27KQ@Pr z9;dU77OmhFySzo%>F05N3I;zJ*YG?@@4Zfso9)xQz-P;ymMsebdx_nKPP{|trV+^x zxA{*BrtcqucGI`>P`pK=Fx>YJENay;a0j;s)pwie2i%c4{8Apz3i$o(@xVq{v|P)L zHqN4O@K&%7>A zcHasu3*{`EYdW*W&%Wdsvsm}m%HoGP9JYa^B(yd1Jr}JTGFp3DEv5)?eHdP_S;-C@ z%)Wpy*Q8Z-HEjYmc)i0Kzu&_=s{yLro9%2rT{Qvi{R|VaHB{*hnx%txO+luc0H+pJ zd2&ULb}680Kj30}4@VxI>y(V*s(cU?yz1yJ1M*P$_T$~n)n@=&c7iRfl{<}v+&4Av z4=u7Hq1;+VIoxOr_Tzz3j1q&V^bJ~gffgP{1t{TZJ$+3S9;Ai0=ORU`NP83>qlLHV z{|LLKbcTdiYRQx-ouRWDDW&r$*&3yW6@p=rWJQ$ngk&<5+AN&aiYTSMWLT6^LU`lv zr)%iXWNVZ%lVC+uz@CM6Ec1dKZe#YnxPCL{quIVKhYi?w=>`pG6~e`*^)eH(X`?0uv;|hjc zz@vpb)D*JiY>YKo~xL?(a*fB^SAd%mA-supZ7njM}$k)ri8SF&I3;k3%}50u95 z`BOkb_jSql-6_{C7^CM;;|;RK>gH_a)jg?3^|v8|nfCyQ`lQ^cP&1(@ixxw{^N|84 zmpL${XW29+4AV5Hbf>nt8bIAIC!q2OdSe);FgkzDP9WorEinrPY5G);7s`%kf(67( zqRB*DGEKy}^!(`l1-=Qh&DnMU-I}jq9^7m|QuNXL^y{=7@7PsW*bFK>Fc`i0x~hGu zIz>Pz!%b1~kcwf*0gXy6zyiul8DKyyYl1C# zIS@ryu9oBNWIoTqkbmHQGsjK@1@(m9D&!Ft6r*7V3zaqdARYo&1bzsptEWI_B9lK@ zF6`Tp%f$mXYPr0tXGSjUnR$~-ffh|lrclqQT-ba1x_&|yc)4^~5laTZTVpUy8K|K& zM>1@W$)8(pRCl$e=MY4-ti@t5UVddh%8*U9DI#!rPwEcn zq;pUO;uJ3C%h^3%_CDo+6dhQr2L?O@^FYrFL{>5-fnn|WwtUl`zv=fW^btD2v*Kq- z^7C}lz{Pm}J*G&&lYfkj#;tw=gK z5=N*aT6j|qa$9wf!-3=n`!UfG)nlLPj8Y*Zz4)b9dL{Wg6pAskcR@=s{%G!kL#LO! zN)R0dH^HL^Mno~a1eDSz^Tpo`Pck_W1UpE;tIgL}f6=z?H@ou*n^lYc-ZRvnKivP4 z+kFg1RrSE2!K)u^MAi4uj=}q$gSXmYwtFz}AcRu59)FxYyv13t^Y=U-WWGEAB4UHq ztzCs?*Q!aUtB$Y%wP*!Z!||Rts@mgQh+F2W6Ss^OT$$ZYqUNk#r~Wgr50-8O9rTNN z?(W9$HXr?k>|f4ytZ`#LUv)?mp?VV>$h#RHEbj59%o$vM0M$}IZ`JZ(q%+WA>kdHf z0l|#O5{H5<{Qo!X;eViQinf8E=-M^EwdF{I<(fl;^h?+`Az<4TntKmldM^wFzQC6n z|IlWt391L!(F1g^Hf$D@qL9>cgjtZe9@&lX9o%m^1);_naUV}5;2B{#)JVQZ9?!TJ zX2Rc^en0S9VghzQ;hH%!XnEh+S`K`QIG%3(c*V1SdEcwnI(+H;Xct^SERVDZ))Ww} zpvmo_Gep^82P%Y*U{3I&V-)4hZBc&2|88yv<>GoV=rThfWD4=h6&3uz5O3+nI|qWW z3|Aak!w>I*;4Xa*?s7k$Y6Bw{m2JqDD^yA1vs9B>C|utuOoC;*yA`cA9U7=kHY*e@ zqq`N>nqQrlP|5QVGwN_ThV9ecW{!JmNLCxl;iiVLZ6fS&z282S^k_KxaNG7{=$tIC znI#BA3LW*;(gEB|yNkl>Gv<;*$>albH4Og3WY?TTf!3-W!^T@7jxh`J5GjC62dvT~ zvbY21TeNMD&~MPT!s39c`roq+u7JFKn$@fOqL?gt?QqzY8jA3$>rP;Fxd~c0OiQk* zk53asMfcsX<^W;H*u9`;t?Q*cprt%?OIb%A8%e7<6RPQUlv&3|A*>JxY&^v+m>%9q zLo=E0z6Md1D74yky@2i<(eYsO3hBPu731wLUX|EkgJt=m#-b&Dd|Rr;`vvs!5K^Mn z8cwiGFMaeKMR;29M0iFfL-{r(VdANwC|%|Tr1#S5#Aq8H!T|wVV-rC1AA5$dJY*M* zI|1&xz8+f@@`oE_nl%9 zKO$xwB3a0ynlSo!wZt;wTuK^m@EH4lgH+g0an8OY3b0h}MN)G|t#ODNPbLVU<(=#l z;Yo*6bD_|@Js&#u(jTvf!2!6xvBrEture-5mz_@npPD4rAI|HYySI5d(vdDZ5^ zXK`??ZxlSMNuQxc%)fl$s;c+Uvr0p$Vk|XB5ll~#H#;E|g%B+ywI7k}ika$e;h=)LZhpLG5db(>G@XCW6+N#Q z8KJ=f8UYfd>O-GcIallQDnuvG>t?n4#T_s(ZC9~DjC2>O=-rb?8(F(ahBOpzlB1E($&6bGKXXY@O z!A;V0a1UG;hykv&8({f?-#E8IAAX7w$7e%3*sU8OS2eyTIP+iDJ`X~hEkr$7_m`J< zfp=YF8KLJb9Et76AJz-UL>+1lF$NiyIs88Ox9$AM4)vMjd|^v^-g|NI;9$ z)sn5{$gkxfuzF2VVBS8Bm&@5=`ySRx6vH>uwCev4)J^Z^pXVHH-}xb84T*mCI;FJ5zF+=W14&202x$W60rAAz0EcYbyg(7M@8f$L^B zfzHmZwLgvyb#HdPQPuE(ATP96Yv0xB@+HUpZoS`~Pi)l9`7&eg1Aim6tQu-Di9gsw zQWPO8tlS*gcJQz#w-ZB#FS@3>)vkM9?@@`qxZ96LVJ?7MRXWRz2E3_livc$_E0%97 z`6DX#UBAOq$>>BXs~0*`swnl4OfnBGKGp_}$kEsisYPKYwDuV4c)>COA+U&rp8RkI z;Q;7T8F_?90BOvC5Fj5iAcD(#`bU77$N?dg=;a@RIPc!X6E}kE-m(pH`IZuzj02DF z;q7X_naut%UhBt;AWr@Z9>X-RsNc|y&hUb{_}OFFP$E5aQ&opbPd6zHtDu5OPf9^6 z)9hFjf~cMxOj`(AD#R=uy0D(KLppkS$C&?3Z&4S2HnHjc`RtrbbHUl9AB0tly*(y$ z(Iewd*nyPTv*1heh3?O6TH)OThHvoRhA@G!B7cwf8h^j-(|${WefZW49lNx1dIPKu zFBv7Y@J+Bv`W=j?pU21p1JePF{%-XNmdl=TNKd2JhLHi1(M+#l^#WI4>zts932wnK zLZIEAO@N6UxLlenR{GR2BSdx{yvDoCtly0A$qDWXMCHY3$(V0N^~uF%t({u1Xf3!(**D2_*WpW9zaQbF**Vw)|)L?UbOt- zIKFGnuN~_B*C)KLI+uhz$7YzmKl=g)ipAHf>q&Qr+L$ct3fxRrWc;3wG(DjRBhU0T zutD*tmprD*bb+%3S=CtdYD^RM62jyk=)t&8X)Zag@#+0zv&N?!XsB`H?0$sDc6PO> zAx>MPK$5S<-I;wYtkQgROuiYy zD>d!VuD+;F^B&pX3#$+Lxf_zSFl-lBYTRehA|JI4M}cbGsc|AqYBlavaj&pRqX=HL zJk!++>ZO~mca^+hn>QS0eA*fuj>H_20Oc32#k^39)#}sui4GrPL0DWb_SoA{DZ$20 zV~#geOsgH)uZ?Zlba|V8(`wE8E!YXw#`|m9 zu@y$sdX0NF-m72cht3~!IJ5ekv+J_J=VjaV5(N4ZbB19RkJyH^t!LUy6PiiL6OqC< zH>H`KtfX3Fk`*oZ=WW-s$sGQGM|PW5Yu>Fww|G^2n14ZJrKbHF77^+-?pU?3icJXS z`iW9TIj6EXK0`9hquTm5VZ`tHab?@! zfb--%PH`VjYokSuvU+;z8?c9==`5veVXjI0&B7%+r*xT|2U-vqVVlaQYvv}I8MJqC z=qSjmIQ{A`4(24#Ck`A^HuKq5!p3Ycz{w`kPKRh2%mE1vW$;$T7^VTpN=e~Qw@wXE zl%8YpXk@hmc#@A8ga`R|3>ZIZ2b}5Oqg!{-gl>i&TXOu@xBZkJhx)R^DTh{pyB*9H zi}`vxr#$6)_Vo1~rnr*6!>nk_M&itwJ;uTabE1Z!G{m7#h;`75a~+Q-+xA*cPC@b4}Cg6Sme0 ziIgO~B>!GPxM3RoMup$O1+0*i_)9sbusrjJIbuwt>#i^t6PzC8dQ_#ae6Zn_xQx^o2F@(tJtHrq`yfZ?zI9!d6ic^uT1B*lolvC|HQpekH(Feoq<`a1lFf^@#10t2(ZuO#tylpfv(#~vjZEGE@wgxgsxJofTY$D$l zR{C+VbdT>7F9ucE;FG2svb-KJvay`hfV7PctQ6z+2s)TeN70qV?2ncs+LfGuIxX)o zz?~nBi5GCRtJ*8W!Ocv!-}UIvpy?P z1O&8U&LsRt;9RTA7_Wt+#}3;hugKlm?K3B7p2pc{e51>m&bPl%+`TBKhLIDkE)AOJ zI;i#o;?W})67n7_r|b|Ao0lp-Le*$wLyB1Q5m@AruYaO@qh;=V3zF?b8JUMHcIk_@9ikw`Td{j=U%tMBE%*l1()RWYe z)UIw)F~R<u6L$8TWFZb^X-JOtrFe*2m&7oJm8jQWas9|3zr^_98H zKfoRWNqht*HER($O4l1|3E>J-DEqDqD5EPU-Kzj-w>@Oln>anK0GHeL`u5R;q7k|m zNNir2%Vc2`iMAR%|0$iHu9=P_+iiLZCamPE>@)57JFdMv*4<$XGlPLrJF5b>v<=4E zoVLZ`Gh!u>wAjS9B?Os75FDVD|r!q)haV!UFJe*2EQy5s2_)lf472eY z`*!{6I8pY%?`r2USSpw`P&1tkP2Cb6%B03G)!)}ik_KLkTJ`HC1SZzmZT6>0O>E+TR6qLGn?ERX6k=JCvRj?PvMGD! z&goqD((6d>EwhasNuyaUf)2j5NH2nWB27%Bslfwiqzf;qHzMf7c`|+NchVBK*_`7D zp95A(N07qfyEdVUIbsB>@u%7+pA1JLFD><9b^JuDJyoCui`~Orli9493U_g-Wwo;= zLV2|AFhbLAvH}@0`PzIcC2FXix%SiB7@{HCt-c!60AI^kLjgVUWF^5Q19HlmuZ~V4b41zXx@cCZMKF=0LVN#C;BpP>Ec|HnZlkWXIzniH(T7o^J zRm~lBxAr)5c&?|ybG2hvdEKocvw^50P)Q{dp=B+txKwHfsj~c)?Jt^NA&}MFyCx<* zG`JyUm$#(LXf;w!`HW#K-+vu9eMg>S;O^vJ!wl1-uijlKgylTSQpXaw30#a6CayX zGCm29oNehiktCW10?Rq2Pn>8ubDB_8vic0-LCdh3ytI5O@&><}Q&-`6209ZIN! zHuM*mwR!QU`OJ@eQg2Pw^0Q5OcW z?m0tM);XT4XyHkRBKwr{3(|`f7_Ho%+g_|%*^M|g==OyjtC_V9A!G;~@R^pn@FZgc zbNjV3bW&X-&pEw(?Vv3eju+1>q_d-BJ&BgqD%!LSAQOXjT!BYas}it9i5-vWT1m%S zHn`0!M0+$~&lrX<`e_~#60IasphmG`qG!5vJ@`Vu)es6$^_UmrXkaj(uJ-qEbd!)T zC{0la_Hz82W449GeFMx4*o!eMNXLyVZ6W7yvZo^!ws`f;DRT~-Lqlu(F!02UqO5XI zAzqx3{|6=iwv2}-H2X8v{se{Y9J279{N1M~8R*7{S4U_+=mL*&&>gXDjw#`bi20qu zV=Z*Bcf&Y^tlr3{$D#P9EI^@{?gSU~?6>cPTW>HLBNC2dT!$4oJbR=(ye=W?+m`&k z<*$~0F+x0vwiye=9k4dbmbd|VxH6O~SaMJ3>LF)ajk|99H7$_Weo>mFc0htC?Qrpa z2R|(Ug9>78W(jHKO1ews_Way(k!}h`_j&Llth#s(MQj1YA23UrZfFVt^Pkd3WeRsg zPtb6w;8+{N+s}dU8$JIa&ybg&Vf0)43xenHp^0$KVbmUAEI!9M8?EXMNcDc+P(Fca zd25U;rOH`PU##Qw39;~p%TI{X+19olmXzxYoaG_az0uZ<7UVa=si)}};xc&cEIq#^ zI$#TdN)<+)>r8R=AQR+}0P!9HS~%gy8;Yz!i@E2SbF{x-ZRB<{kJc}k{Luc0)6ifm z0s*=fHBbB68NuJb1~Y56M8i`_1dzs9QXZUPLs9HKV)X~;R?OS|nPLUV=pH>m-Y(%r zsn>icDyoWbAfj)=QyZuq$up=t7pncX#5HHWp@F7!l~%srvtIZTvIAHZe{ZbZ%D1pi z0Vk6DixUfE#m{VvcPe$rHn}jc*ReHgKJAK>JAWkQvOQKImcj93^$d?;{k;1EwXEup ziSGPi(&k9QNJ2&zbmlZK^5 zU8vu(ywcVb8JA5>F7(O@ZM~i=)#|lOX%~UO&9%qtnMmg=9S;$)8oYETaB?@i*R02j z(`;jtW(pspnU(GmsT#G)G;BKHt}42DXa(=W%+3BAar4nzN0&h4_ih>NaYPOz6ylWr zIaPJuLtx%n5Y(ntR}gS~HCal>n?X}eJ@B&)Rkvr-=vFsuFw!wkB(e_Sl(E&``;Wvb zs~mVKV#&4t1&9T@0U5E%r?!PG-R0wEHk(#1bFk8rcP0bsS;v3NhL>M0RD_hir0`Fdim$%YuVg#jrkRKd?;F`c-KBcll@ z_;~4J$Yo(Pat^Ja!$875+Qt-36?(6$U}q*}i3vrXfC~2xP=y4-TMTD4-r?r<3Tgro!4qM8Dlnz_UgOs9*h`TXf!xVefO2@5Q zDQ2oAa7rufRf(*al1NFp08~mhCB!&ZLil1O@Re!{{R%vz1g25llzd9y5!Ds?=n3@e z3G@^AMD+xk_J#KPLce{X4}qnWkXuXjrG8W1Qv-o61EKCfs4K9fl6Z0`@Z?aS!B80Q zFzvT!r8pM?-xmVk7p;`eg|HTiR=Q&qt(2b&Va*g$dJAFeEZQkuijL5Sz>|frnH53` zx1uNXA@Fk{Yk<3&%H4`DMb`a-_~j~4_LcPdmcC)&-A~xacyG{Df@ntIho1Gh})d zUYpb8+mLs(#A(u=sMhICI4o{C@A4HQ=`a>ut5uKWRR@2dOCeXKLAqfJMez@gj`>eA zQ7A{1YpNT)YbZp$rea9tRLy-M*LqErOfU6Uj7&fEl`=iW_mWK8 zF<7QG@A{Hy$b-nV;a_kvjrbs$R)RZFrkMaH(@uC#$}|)LWm<|aQ<=76uuN;=oh#E; z2$X9nxR~Wy3V<>#dAB#(4>L`LQ2#0ED;E1lME^KjZYB76aC?3Ni~f!Nh&M4YH;=6o zWa4y{ly8e=zlLd(+*c7+A?7o}J?mcToN$kJprqu_&uaubxSu0?J=;Xm#;;k&BBc-+ z+I7D@SN|`v9Ek6fsi>3+K&e;*?Zn!I%Q_$X*am(6>3w*3K*(RP&qPd6V(SF_V=F0C za&uxo7WAyZpN+e%?xBrP(){2ML^&|MD_2K9JUXP#>XPd^`xdPhqi5f|#q}k8?aY^R zcG{(^Ffsi&uP!KP%K{?8q!Z7|COcG6g8U>^iBH7!wO0^SSub)W&vUPY8ynmhMgXID z!>m3l`7@x|q{lFaXNMA0JqQz0H>fM3L-1k&@bn7;w|b0C6W*&C0x+LqX0iab1s;$? zlPrc(3dl_#Uo+^_CZM610jKwWL@TZnnQ^P)X#Hzebj1Q^yRwwGT@iD4Ox>ty=JNwE z%<(=99<^blIy+-t4&Aa4Kle`Z#{alfb>kqbEcG zI{T(7z^0E-cmO;0vCu?&%szrwK06%lo-U%i?EPS8^d3kr$pnE=Hi%oR1D)B|E<8HE z|M33x?c1v>T~ZbFMz?QY-{4hC#|3lIz$}F4wXFR2yVSoKNc?P@u`$JLE5VB##}2m; z{8AakZbPsW7c<&>GIS;gw$(1)P2;G=wp|_(56bVM`fA(2W1s!$jnDg9H!Rqx!PJ>O zyvz{f&Z@5h7b)bwvc~kjIe-LOP-ZWiuPhWo-0~2fpM|Ds<5UaqLU1`yCies$IDT6C z5`2I^za2Ae%oD7ATow9PLgp(0EVZclO|dMLeXHj*VHD>L&*hw0PCz!zJ|_XSX4}bl z4HnTc%OsGV7ocfO>8Nw85dtC_N)Ax)$+u#%5wOgT9+(u!AVr&OrUD0lcvIxDl;QKp z@|^FDj4F|*^NgVIb42Sd2`W1qT`KjX5Xi#`e6hz1;FW7pWJYlcXj6yz9sZT@Poo`5 zP(rxN%m4yo6B(vxnWHi^GsyuPU!f+zvEhf@WOirCBjy{k6fF@W(AT)dWNF>nk{60| zkCg}wOPR%YezqU6vC$t|!jt%J=<6 zEpjC!xr;_FhuQH&s8$kj2ZU|Wsjsb4btBjd(s|1HNO=a6_0CeJNj`7wZ+kR*C~B{D zc9x2efKj}K_XwAV*Cp&MW&5LT&it-^`54&_VuZA_RD=+Bpq-^`2e!V4D?=G8u%vGf zAzL->T02WcU3=}foU@cO&P`as>!upF?GP*wSq$p>UU?)pg)As6;i{?)4CGgdN2ruE z-I{KSGE~?(^LGZA&$Y-t*_PQZ^{lh|UqmyA^=X7+kCSLA2u^@Q_y@YU1=SrW?w6<- z-GO*PTD*cgkWUS)NqYyP&)$%7g9}4CI10F$(l*v2Azw-yCIQopRc{Dz#;P)E$@^Vx zq6w*W$aeX-{Fy%b`UsO_`O9_U9FhVmD$Xh>!LZr&uk&4$=2HOGS>Xs2Y26RfEzFxJ zHCL0FPXG_o=?MU7-a7#(pYKxw&gV+ZLL)i>a$_DQPfdzFp=~|cRoYDnM2Dn^ve8O_ z8AE#sR5b0E0OjPg0wi~C!<<;1+ z89{`0^a?Y1h=p>doyoAAD>gZjg<@`fX@V#U<@#n{-C(mGWD(a^SJt^6gr>Q&$w46$b7h_E zK`7HJ=6LMXzw&_)W1s_7EGXPXi`E581g?&|r;Qk`(JGTV&$Tdv^eOu^vCAKzcS z{qT<8VFk{v-dbf&w(17CRCOsSbBRaX=Q%PK>u7F5FNM+)ZZl}SG3xk{nK6k0CWT%- zRZK1K3%eoLX>P3N#N~&Et zDnO(udfE%VdP+eazt;XH)5D=LKP+8YfNtVo!?r6Zxj(3_di3Wasv(Yd2n8!u5) z;#A&T)aKU=cO;p^2V=6>W9TwE?xd@0&|x}MpF=$jm1esNRe!Jd7aR@3 zKOw@hj1U^g>c*(T>>GIrFCV>Kq5vL|+zSkJ1UZ@Hx3b?0pPPV%Pbply$oN-VL;Gu8Yi!2bMInyW0gh7X}wy*{%h(D)kb+tM|~ri z5|{X0xY645ICd|rMvptqkmHI(J819#87&I?02zK(zUkM&)sUJu(AHC(!p58E-eShej)ye3zT%1v&1WKuM>oKahHJXai8 z5$ph8O2j*cCect+BO!07Z5z}+%nWQ9IzE#KiboU~?dmH#Gk&cttk-UM1L1~kskd!; z)(Q}1rt?QK;bY5Q3+#>7lY1B;9$ab@Y-=7GoG;hK$`!)bwv!H?PIp5G|CjmLc-`e# zUSbeQ_V~T#Sr}l}q%YX!qWx9{DuP%9i7a3I#g3URtZ7z>fQi_Z+e4ZZvn#uwe@IOI z8_0>6RvUkOhNa?}$L5kYFfZu^(p(*)$827-CHNCdOx1Hkf9{h^O`~+5PxBq~I zqArwsl7-G8-Yy3-vRG&YI@C4^jbM8S%-9HUKv5iEhJCo*Y- zvJQw1f7ND9(<8Sw&S}`X&8X1`dWRiN0mYGE6=>O%C@$?$* z6~S<5I;CL*2WCS61_tNbS|&}L$wCm-W%?TdC))v*(3Nmb#$SFqe~6w=r> z5>>j?Hmk|qOld)xRj;lc(~z+LNW&BDiG1u+F*q2%ClRZb|H5dGNAC*JDz#-3%bk_% z=tcu-Ce}>`))O?X$XVS3g`tW9k~IEW$334826fgU+Og5S)oLi&Lk)ZIPMgZnEcn&k zO^ZI$A>rmr{}RR^p(~E7<|>dETfK=3Qsy#Q{rKB~5Jf84IOlA@578aM7r^A3rw>7* zs)sT6?6^ZeCUB~iNUqW)d{=geyBOl~c&e`w;gca^*h%teTKkF8BEB5-jp?Fh2k!Oo z#EX+GA>hxURXarV%-whc4Y9T6i0Y%Gsx{rC*88p6}CQq7x{PK^6;?I61{gk#JX{*Ui zv^1X)?}gJDK7#r4DQr6dv-vzsyNx}1Y6F(l!5}K`i3pBA^_fa??vhu!NI?(}82|aGoaTR+)LLicM{3Ae; zar|wcch=+~_V=?%&7F#Ra1j~)fP>>hE+=sI?`OMTXS1az`e^Ig(dhbF;eUJx=W1t} zL?s?6J_o446-7&i#EbcE*5m0E-bfrn;EIr{mPGFhzb_`2B2GoM_)20S-{%ZR)pj$6 znf(S9yzuba`V>h`V}s!&wlm%msMbY=vbZd~C15l-2IH!p#9VecMvIJ;9ARXXh|K-~ z#5TN>jfHFNQ=j0JRV%BuRsoLTxaySMrh3JanD$d zCBy=WBN3^V2Sdq8;6VcLg>G-6925GDcuWY{2JgYVloQeOI3_gJeLRQ>`SUR+VQ{yI zn6dW3Hvc&5$@<};X-%%fuhL|AbEs{wlO^lfU{iBV7o*f!<^b?SQd~h2>)L=;fz0Y5 z-|;ohb`JzUz=}(hm$^tA`=+v%$7d-z%;Am$f{oD{`^J20@xkZ>W8V<^D3+=}X)2cx zy_PQjk6l4}~Y!Tvb^~>$9z_7|3v)$Cs%>fS4<> zem2Y+4+*fzG7Ct^8Pasz!*qGrDGSzO=4Zd zRVajD03dA@zaT2HLIE}8PnP$)npsQnHx(}SR;P&T(nH1DFo?CnND4f2=@7j&f;xWCh^Rui9Nc_( z%$y$R9&X|S^~&`K&$vLnBbKHyzd&`*|GPk|BhuU7(`l(#$Su%@Yw?(u7h(h~%IH;I zkTB>mmsvA0!< z%-gra0)O8QOYFW)Uuhcc2;FaCN;6v_npq;&3dI>3T1Z>p<=h)na&GxG(QbHdMTNn+6_!;;0PwDGp()6F z^`7elFakird6pvHeIuQgicvi-a6g+LgEc!!yv2u#3!;}lL%;iuA}g5WT|2o*@$^?T zwNv0x$2*gRt5dRAVwDEg7=j2F(t}#a2exaj&=L0<50&t?&}^>(Guckgzt?!UiF=J# zu1ENL>@~XQ|J`e<9nU*|(rKyIh1+0!o)tD5#A`wpjOAl#G81V1-Zn@vW^!scP?Lk9 z4wTcPSgF0-Zx&?@bUTIKt=8oNAq>5Go7wZ~GXhXA5KQH1wU{D6>DiL{Np1TXrquAG z?)}E=9f{7wWRX&1L4ql{wIDO32r@xDR%F-ezFDj$pS&3ofhl8DLNKnc+PC&K;2JT# z{DzYJ%0-KOzsAVF=@Z`1cPVymFztWbFJ|yF^Sh8JX~31zX^tC>&(`VO?$_jovn`LQ zHheeVAk{RCAT(~byLMTs>!MYb6eamrFyHbKvAx+jjc%R1bZ&P@733AXwHX)xdi~+e z>+7=I?(fShL?cfK&zy=^>bqN=dQ+qtqv9YsA0XJkPGhw!-+sKix%!N$m#dj%(x&O5 zt9SJoC2=OrG|_yT-agH(snP_TLdtL}gd>CwAjZyZo;!2<1%Zj?Q}=#!M;&yBL=1UlSB`Hc0s`D#`) zt^386@r;ogjXn~tZH@j42jy)1d^Nd)JPo{fQ{Yx7t2L6XnDPBZ_w=xt&0I$eWzJbn zMr44@r~T6ZNFmJ-YHfpnYZTRcIa%zdGY{FbQnrVkeYV-@;g{vFn=vAp!$9on<_ArB zo|)N_lyBwy0pjR*yD3yz&bK98wBgVV6amlEMuh2d{Kf4CAzrq4Y+hoBd+f8QPIF1* z>{@s`{kPwjBOF!_v(0QdnPKL28|WENdN&%44n@8i-M%XUjDHRNLQ+wHI!pb4bWDDx zrUqHe@A(tOILG$-7sTAs9~R@~<9_@&D_x0Al?)RIO2EW3t!EAB@tL6#?xtIA!rlHbi$)=ut?FqPU!j#+9r-$@3&9o{dn@J+%9lH zBdPV1-X1=Gxbp{9bO?4=Wu2rHb$enhdFzo^`CWO}qIKTKI>$!jk4*K@0ZcC_=sq%f zpfBC<(CiTR`-f^xh`SwaZ)hG$@tYs+O3VrVrLAT#Uu`kOEjZmIrZPMhZ$Y$i!27=OD z)PQk6%h`5E_rS&c8ELiuLi1j1;gfw<89}$`->kYDTtA<&Grf2_{qDP0+s)*a*~|HN zI0$DXY8DDs+{<=wTCzi&aX2k-1bVa7UvE~3__-zd;k;eEx}M)}#+$FN-qGcFg&V@F zx5(y+t>_vlSnpP=#rD;HyLn~AhF6pS`ma}?)hk3xoqVdecjyRn2Exzvnafk_{S3}f zLxrv{2x6O*H)Nt}cvkkev)QNhYD>aM=K(*i6b^*vdkO+OD|e&OFP?mK@+A&oEO@f8 zYH(hhM{-revV>i~KDUrBbv&8xzJ^;gj;rl@0Yi2W1TxSSUGY<)BHiy(GJ!lKGIPMR zp*t?=)bINTr26JPe)vr~gyx?_0whIR?nb7|^zf=SvG@c@&w=!mNl$_F{+ynBowT7& zyIOwrhX<`qlAL!47IfCl*ELG}FZc31{xma2W!v2C$<<;NR#lBeXF3_gH(&Yoo4S-`1Q#nKoqYYY+#~QW}(u>>n8!aC(;ies1(VJ+Y*Z^~h8=Ks2 zSnOkRs5Y@-P3^SU(w-aUqs5FSCe;lx zvbt1G*GMQG8uXzdYuX6=;H`+MV#JCm2ZP`G1JPq=AS~L+TwkntPE8RJJX1srq;FEd z{;RvidlmDgRCl}DZzjBWIIp=Gm{+|Pz-!?d>W>+`rl;8^G7wQ4%p}OLUfYZe6t%<) z4euxQO=X~{Em$Kt0ul0PE5+&{5VZt_4%8}O4R|STzv5NkO9_EHZLA3#wKs7&v4p{8 z3w2Gs7NEaLyPudPloaZkKwZ>rJ z-<2`j{PaLq!&vW^-UHopiD{~l_HeNc)VKE41Me#NuB(Tcu%`o+TKWQf_qkOrp{=ze zHfSEGY@UKnt899>#E|6%}!{#sSell_Vh5GFGkRKN>f~mO7F`S zLK>%cISYpjU<;)Qa|$-^PUG^^*s_)`$qfHsj*@DMkDDh-fDtf@doSmQo8cSGBJ2+E z&>YV3ZGq>$k$xoYYISLc&S%v{I@NNvTCfjgmVre}R2~zY-gX zIc==M5m|GknqsTNVx=oqI4rRYFLtynhS%9TVQ56iRFxWuGhv;f>qmYWafV(7uSO#d zyHGDU{-c&oU7^`#YBvg7OI}q$>2PMBP=n7ZSZ868u*4j|EmY2`bqj-~+4Smpy`YyN zV}mK!*QKie^l>@0xJ%y<(zopNDf^sn=jpqKO3@q&pHf7X@Wig#=~Ig8q(f4jAul7l zeKcGW7QETDMNe&9r^)Jeb&lB*-r9ZSC2Oz6##8a8!lzb1u$M3JpDemBTi}jVRWl71 zxKQi3^Iy-cFos5*^X?MwA21meB>~Gux>VR*Y{l&E@{?&elZ}bQ&3J*P-6M zZXg;NW?^9{zpJ6{|JYIgu7br#4NU)}+J~p(=F@CLWBBV&e{cl#<7E9?FUDcP0wbU% zc0+$4L!nBMf8GacRd=Nu zu?_QU7biOR-^*Mn>B#e?tRSC1A`;_%Gc%aDs#IwIkjf^A|1`I?_zB%Uh!|-5C!-j( z6qKzu^VJ46DN?jClF#eUZ_@jmB8JNwtQ&&?vW)_( zY17Zilxd7)Y=dF?7zG8U6Z1ezlS^)m=~wTS#)I|W8T1n`wGciqRNu)^I&FEj{A@nr zmmbRO%N(6}Uzy;^SL%!G@)OAD8^Jv;R`&^D@X@0se){iOUdi|#-bR(_h*zSY2Mo^s z_ss z;g+4)p$d|8JC)ws>6N0Lit6oD0&l0cif)Ug28bk*#1SCt2_3O?5yR=$njCe1OcPn} z@UAlk=Cf$On=j6LHgb!BB`qx(n4H3rw(KzPWKTwijT=J$VKLspIGH_ObZuX+_+pz% z!RC;8Np}@#;>clr6dEwLNz)^!Y}`m<ztQ0 zO`A?;2&tZ9=69eg*$N?Nzyw3kX-SfZ74!U~-QKde}Y1m2zcN&!1iHKBgR5)+C79kDq2% zVzpoV_UIcm7ed7yXbFe92;~_4ouI?-hJP6;xg@Q_l6Sbk_>*RHLofc~FE{?6InW3B zSNh3Yk6Z~O_iK1t0~h=2l0SrN(n#e#DJKicQs#f*-^QDB{$Qs;e_f$>=^WzHM69dM z1EsF?vkVDPBbKJDySDT9>AWG&FH>eT{K@l-^gxolj|6Ry@0@Q-LN>zo<&fcDAq4MRwY@7_DDglTB9$p_S}*ks3gR8Q^B*B8szub<;rQXBvM%o zmn#!UZIy}*NMS)w^uSnIJCwHTHRPhLdG%(&zrq>Lax;1`);AYbd|;Q_H|z|> z+fzKqutM*{!vl^b4XJm{@WsE6DWvYj_x?KncQy#%T4(ZqFEak`Z*%_di2rn>?GlXt z`)hh@$G_6tn|JrdWDMW~Dn=8edgQ?dU&E!HNe&}ZUFRi{-pu)TPis0c6Gl~iY7=KK za;F>6xKW{27m-zn`RIzP)D3ynY;MU1kY+!+9agKF9G6bH9;OeLsg@;u4^7oBsn!KC zQQYV*|C+hKXR+~|TXxl?zh&br)dg7bZ0DgFC6-LEZy|9vEXzt82MGd-+mAcz@q7a* z00HHQ%aVvlfaMT$64N96k3Up5$39{`lE*)NHcZ?Ix4)d|^}AoLHrTVtU1NqDrCo(S zHeJ4{9EA+EqxabtYlYlK4ULs1yQE+&K9; z##Mw1mOzdWx+i07xBdW=GG^51AV0((A_t^Y?A5UV2bzf(K(&K4Bu_i! zHF4TuxAwR3_DN3!Z78asod>gJKlv9o9Sr|%!2|@Iyih#4Xarlkkxv~}l;smTD0dW{ z=iB3kL@m@^=qB(R<1i=@UF~%iu6SAuyYoEQz((4IA9KiGHLrJ=*EOFD9R7@U zyr2hQ-4TYWEh(Ack#v(DG-gXyLt*KrZ%9ql{ch(#mh{)RXI7^1(zH1<)qHts(h>34|p`zhQT-wV(D9mrs9xtk_0zoV?DmnT6XWs z<`?(g>uki;B>JVQ^LD@8t)9!DwF*7c2sTg+Hri}fe!vyKt?paW>*reN-s*6tZ|PV= z-o_kU+ra&Ezk=R31J${Pvr?w44IwmBG<>~z+_R^024G+TGUc83coFf+R2&8I1~MK6 zN?-*Zwic$(Xk@0!yScfkJhF*22I+AqNRdI0YoYgMe@_`9Duz0C2zTrSaB_WB6M6Kw zp=9Hp9@$L$^{)H~N82TwOl!BMqPeq0->{lo0*!v@S;(;_Bga0=B;oj))_X?~KOC<8kuN(f#=e4)v$k?|q!XXmELY10X)4IJ{&b;AP8% zvO66M)p|FBAU!7w&zH3FkNFn_PIwDx=JZwu-y7@C)01R1ti^8>cg*|1nUcr#;MHpIX=%4%9=IiOqRTMgyJU4TmHR

    m{6s1h zy#@u^uOOx(Zi3OZYlF$EwH6G$mTky`%d7a8(GPJur)5MSdgrcGR`Lbk7`^Y>1=wqr z$3L*5AFQ>KH?*B6A23dy8xgc0U>;Nfysi#Ch7B_roQmXl;}9ZwJGNV@N}~W?h=w&< zqGBoN=T4qFSHw^1j`XF>hTlb!T_&2|)2uPeHUNWT*@ks7FVZ(B42KT#)Br5vWO^sX z9tm1xsx)xe%N5O>^!64qjC^zm2LrZ-C)@{tZQ)GDxX-f{FjY^7-RIdlO9sJcsy}1l zwCqcE6i8V14Thp?W)8pN$;~XUu{d9=U+k#6_=Ri>xV{D!c41jCqrMP%as3U4e(mXe z3SD&M>Bp>rln%K4W)pULbB&0y|t|Vwns!!I06xwB$O9Dq3 z1&ChA zALzVmVW4w)VSXUL^uz*2;j^@`fN_P4D`wna#uYPeFylrru99&h7*}aUH$-s%ZdY8! z!(->iS-8D#ZF)P?1EXu1t2vP0=|pB~4s`BR2%rKiCV0OJ@6K0$ih7pkE)V9W?1t^D zJh~QdzLoaDDwJQ|C*P~GL>5S7VW!d&TP(4IGu4*Z5fWS3M#Uds#d|sxhx{bq%>tgY zU6nr!7QGUv-hz4tb6>S`m)S3~%H&sO8lGG)nNg9G-c!G?mv6Av{Z820kqa7lRelXj z_!4~{`xX(2{hr^1ADm&|4#=hCb>>Wjti+zXNrq*}KK$4E&DxEg3OoFop((~pgPEt3f9MBc&3i=9ZB15tmBVhmfZV){4kvx+w; zLy4j0&ik@~*zNM+Fcb=b9z*#EAGW;F%vzl)wNl0PeCN4E{rV#&F}bMOUqFOKgl0M* z`ZXOOeK`}qMzfV!OyP8aQIq+AQTp0#pn9UjE)iz2LJ}NiF4;4@*ZmyypnU%$FDk51B=Jp~MIRdbd=2rHcit^e`XqP=|7*j6@HIaC`v{(+8j2 zAHVgHH+qsG{4WB9-(lJkNy|*A?aq(6KE#L2hVd?Ljh81E(p=3-OcTp_F)^E_F}Dwu z5w5__p{x!76fGdMv2U!ToS))r1iuo~C^rDC3Bh>`CT_2n7%Zr;RV`0Gmy+0NO%e-3 z#l$p?xqXGiR78M_glHx2XZ=8?>@er7i|+{g?A8+h$}(enCD@MI0lM5Ig7`29#ByR1 zh?TJg`ZBJAYKSiAwQ z0~jmXIa695KNA2rsi4!b_*qzLcTvfkm51bAfFHC52ds?9K47Jo(-^}AHur$F4)Pa! z4X0&w*$1qD!~tsxsq8(Zrg~b7VB>rEl*4(JTK1B)C}ZPWwyd#ir5u=+z3w(0YTh~= zn5NtV)6dP=&mpIXI(8Hk{b{-YhhCR6y$R*+QQx9zbc!_G!*4CS6=Fs=n8%4V0; zRCk|;9N1c6pIs6E-h6^~z~1KNZ&;b-$koleEqQ1#5$cX(u1)4e0KtO45(DVnnA|6b z8Dg>H*FH(+U$9A!7Eww<|Iqz4IK5go+WUcKb%?i|8Rax{jcXo5Mw2J<|&*T&|8B%wwo98KHyo&uo2nkqw!%QU;_#1 zmTW9rx@|IHWbtNO^<7Y$g00t^;f!{~(pU_!_HCNfWCl1nLJ@&H$qzXRq-XzD=ueJ# zc_55qVZ6gkZi7PrdkgA-d`;&2wOVlKBSG^SKb-=rY1D=FhP=wWh6MWsM93L46zvBH z%EMihM^pcB>3g#J5bvK|yzdL%nHjvH*Ik?uL^4}<$tI`F$ML|tD43WnQy1=VLMLYy ztnB`zJ_3kPvcT)Q90;e4orJlOEt_n}ELs&}Dcn7JHq-^^757iKfp5rD%m z27&Y$NMU?{GP=?*`=c99Fm}GYM8u3gmgSPMDF=jIkH!@keU4@P%E2RiDR2)nA?Ffj5Z zH8`r}!PCcwurC+X;uEnsIJhFj~7M#z5duhS{kk)aHi7{FWmQdU&SfKBFLkcE7dynjb>wnco z!SkGgPdr8nuGfMKSa3a2CGyV86wGKXSVC^W0)4m^OnmlTIQ8?jxWjR66uihOc*gNk za7qg|f`|9kg2$9R$3ZS{2k*NuW&|WJ zv~4i&pCD!PfFAM1Ec+Q^OXOXaDVxzjx)oi(5Lmhnvp^rKWfP-42j`f+M&DZ0Mx$2) zkOk-UlY-Z3!Gl@wnOg8iw%2GzYojIPHd>&cd`%ine0KNjf^Rspje?C+@b?3x;ASm& z1PgwNs1kWsX9{Mt7AzsRV1e$Z1rwkB@NQWxEuus}cmZ)q{{*>JDs@9N1z+94OTmF^n$AHEsR|aARfY~s6n`Jx+#W_?fL>ey!VCOqSs?lZ zzR+}v^Q_nNmrA`TEj&(U&R78Plh>vj7w>i&R?D_??0`swRO>Rbi zz@(qDG49_&2wqH8xd_2A!_LMzL8d0nh=Fxce9meFpgv#Z$fGYTT?+)J&ui3$E!SlN z=kVa%BJ7FzaU!OjRL>O@Yvx*_$VHJ$I)WI?*r&htu1Xe4=kfvrE+TXJezplx7>H6^y`0zE`em-S zCF_uTavpBCg?~lJeX}8_wubBk$WR9izD%El{Kze)T+pYgAvmT`(-q?fxS^(FM7Ej^ z?=wJ6#}~4G&TW0Y9gw+Mp?CIYtR$(*bqidGxUnNIL@4AA-`tlP%guc`B+RJv?s*3) z3pMNx#A-1Ndi*wGL+|%?T%0nnZZw5?m^kBerK-`Xv-Apkt$FQLA^g68vasnz zzca{w2T2gv?2U|&5@+GND@b@T#tD-bo?5;%Pl1xklj@p0Dle_&a3i(J+@x3wWIBoO z7RJt#*e4b#@-Zac{RDa5=np)8$Y>NLslR6iE!O@Th_zGtWh!X2@+;RL&k?bo?Hw1E1Y;jn2ogSK&+1^c|Z_&s$#|HcybYfH8EPCLf;mTJ%hlEvfFB6OA!DwVKO)NT@hw3 zXOkZjyon_7`i_E^^h9TIJ(+kL%UV##zQYYzviQ$m;Sl82W_pRyx*#xw&Q)1PphprK zXW>9#uSBo;rv6cP0XL_9ALx|*@^W9N@VT)4LgB?)c$2IzTKGPh!WpfLtc2V}R-pg$ zvJ_5ywqy9g!4X{sTUYuF^7`oS*Mv_9(ft7Z-35q}r4fukdAq5Lk9gy38c^`dcTws-pm8pq2daapHC9a4$=r$ryRSwxGvYcz%AqL@g)JWI z4VTP8&Xv|1Ps^D|&;Cv((qNrPYdMs?;9UlT^^fu42T#eoJ7}K*NfhUM!N%zkCgER6)StBfvosE4oczsgjQ(KquX+iL}h&%Qpp;O|mx6gwv=~IHqbLgGJ^Frk~O@dtXH2I2(BauZktIG-D(FSP= zPLV6&4+aZd{d(?@M1DkxE6_DM{d&F+^W6BhAdIPkQQ?PqEOHg--Lz*TVB(K3FiX_k%&VoC>C6!=tNMQXD#G80Hxl+c+3ubOub1KAKF?jl zqe}qtUvIbMkP_>D0md0f9ZQNV^N1KNDPSStnPlq~^!?yQ%!-%QK`M9}m(T=YF|VJ~ zIs(_E4~4hzk$NQ^U$~GCA8B$W9bf81tvB7M;VavTT0`+sphM?PYO!U7ZAEQnBev&1 zd3FqIoUZPn>0yqv5U73}ascj?aLvDZxpxE`S_5H$4Kza}QU!tPmzQaG!E>tvd82qn*C#Od}Z z(4EGT+RV+2?Wqx!B=~E6`8ZY0FhtlVc)3`46J*?>Ufc*~?BmNw=3=@N=v$aREB3(z z%J%`0^_dpzaO~GSpke~05$9IDhCpuYaUpJ!721IiD)y(muV<5pUg~fxaG7qMRDhFA5c#Mbtcd{ zY?!o5L^|90T&A@afj&iqy-a~zITUY!t6kqdsEg|{X+Qfu7Yf}<1J(q-UBT2&q1L}e z1fEtBDrjPr?(mh?m!;jr(k@Uuc6ZEt06Thy5MHQJ%ey(iB{Yw>cbHBJ)hnSSRza+hh+94!gj5ulg*v! zOKU(lJpmchSKD_2n|+(2Okcsc;fk>*WEsP3C^9LkCL+K{& zmF|i}=S%%Q5cyNjaV+~Hm>Vv1^^g5s{iDV88n#SpKtt>SQ3#qdSfPDUA&`niBohUR z>Kb1_r05!lNn}T24&kg&b&VDxfiwI_`f;u5U^aOJbRTY$R}!H8A?~?Ji+UmUjX!WPev*rMKPhguEaY5ja8;{M$ zLjL$=*#I2-B~0P|XCKS!zo0=~TRxVPU!ezfzy_cKn0C|#AnSfpYx|%@r0%$AfULy* zJb5oqJjdgB6?z7PQ$c_kfgjKxEE>0Z_r*$h`wDK>cx7z3b7f3j;wEF~0iGU=L+-_~ z&4K7C?R^)=euWRYIJPGH0u~H@eD}xR)ca${Rp0@OV02wG+2nViG^k8iqhR!(Fv$@I zG`Q9|RLczC#=Ar~D#0ft9X7!1e;wyOgR1mkX7d*y3MQZIPK62J`(lxCm08}dVZAvf zM~#wV{}Ql1Ie3yA46+X13t56GWOb5#w(>!1z63jCF~0TAPchOh_eRc4)f}q^wy~Jn zE?im4zVoA={T=blR02~FR}g*5oocCUFmYS=wao6jAH%kB9?qFT^^UX@S7NYWyUSN> z4nJUFCrewsnJ3sC=RiF$4|$W`akhl(x0~UMI^40s@gBsvdc_uRuEIBZKYgW(Z`<=> zigQ6Q75$#=UWaN0rkDH>`7}t)vX3Z8Dvhy=@z*(`_?ec(Dkp!oh}3{+(5zTMru`_xP%*F2BaW2$;z`+kaUP*dS76#R zh!I6yG~@Be=%7xY?nH7+x6aJ{7*IZ3bAJ-oM}Pp$Vc|~il`)^J#VSwBO76k98h^G) zsE*c1{2YF`>`>L;*dO%+rkD=hPCni@aVMQF6F1z&7uRxz#D(UhXTh0o`kvDGl5#Xr zjl&;YC@MKLs|H<%QTKBM#2Ss2S^wGs-icCOIZc6*x&xYkHlbq+*n{3=CN`I`(1ftX zbbW#<^qZ;G;~2P!)Yq}MTWk03T&o*iLA@5h|gzqBF1Kx)KD*$Q&#g7^iQH4+#SEPGUVy4c^rAHMBbDJw=`b7({`PL zq>V8asr+*@LS{5dCXt#0B$fT5sa;tEOX@{aVy-Yg^}6NwrRo6ympN5m0oeixq}t2u=`)fKsV&v|7zLnk%`&k2@)S&xylS} zcnlKX-_aVxxol-$r?n zhE`Kr)-E^H8U8N0y)sJxN}(I(uDB~Xe_P8FcmPTXdw6{tgq;LD_CwdD_d%W~u;~!O z53fys;@}uZgy*L##0jrciSVzvEprDebiOk%=~6_xr8T2$cN*QFt`%@;L3n>LytO!+ zUKXHMvuVp?oaOKs`*(`j8FrcRSEBwke?s1V0Me`~_(a|=gn{cXOx|7s{lWh(Z%-zc zHs$R@40>P(bT`Nc`&UwN%)AN1I3-z;ymB9~&RgTN%LyvIX7PrBbJ|t~f110kw z^p3wgiy+#p-~Fg8593m2ez1^(JZT^_PQgYkb5{}A5rV3}K@IeQ5;hP{ zoJ)Q)Y`GqT{%XFo6Qi;gQrs&IBE>a9ram(d2cTyHoQGju(Hji|&djtk++@zdYzQW% z6QkG+Ak3}`Chk}(QJK?Ewwkm5rkg1q^GoI6h^Ye(KD->Lo(9eZp0m~@5oK55OD3oS zV^WKFaN8|=h@G;p3i$@?qufkYz4!98vVu-W}VMR zBKimB^Cb`a=kxb?Cj+}O&gY46P3z5P3%${LKHr2nuw(Q2?^9aO=O*B2HJ_Its_psw zCkOb4=kucvW#)5l^m<$K`2daA`8*gXIiJ7&%YQMSTRzE}&x3dW#m(nK*6fV={O0>V zG@qx!59yA~=hJ}c|EKvpao*3J&oyuS#C+~BcL(P4;jg;Adw&!zD<8?kqfRgjM`=9=c`F#BPtohu$%P(#| zSHKnR|1NKLAeJ`Q=SSb&vH3jy?VU8A-S-B1%IOuHMZovyO_k3<37TWNHu7TG5=X4& zF{y~vP=e65Dp5894=`>HESxouQe;vN3Dt06=_-lH5ovNm{B1LQ39M!3+$i57ctgNj z0j=F==>9Mn2Q73bqg>nsW5Z3e7`5vNrV!*6HyGk zt=Mg#dp!_pg@r=-xrlRJCV0uTUQ6V4f68SrKk72!5T}RSTd;7|5WJ8Fl!%Rl3WLFa@~tD zo9Tf(u1z5%8#ydg3Ym&iGiY0>0z-UH{FqCmfV}UX^k{+6YDXlYxO1INpkHB`iqRg3 zQK*29kVKN4!@|MR(wD{ej`W#Wu1+~&~`y_IYvrtA55Hs82A(u&kum)^>Ew;Oc2l|MOdIB z9)!4S_h3SHUll)1gTI}TMT2{|Gk9!aTv(6yLV%!7>S0kbNl0#6 zH{H$i8Tc-RFU@UcH?7d~PK87y*8=XCBg7*$ifWh$&14C~UC^}}Nd{&v*KjlHU@k;h zmw)n0zqa=O5vAF`K{aH9EQ4%boDB^k&mQbe_@g`LdNZG~wi}_->psMZb`QOr&vwlq z&Wr0y`QW9dh?h2*gxyjqhUgw{s7hC2i_cL zz&NIRYrUnX_hfBOLqxhS|KPN}Aw4*KvO)+Eq=Cw%nl&1hoc~4`m#Ra1a=>>-xlW@n zYKs(1M(q&|%c#{MOxdL7UXe{a{}4a>{QV9}&oLVOi9WFSJAD4K&fgzhwKL?CtB9pd z`DD-6(BvJ^2fn%z@H;~v=*lOC%$+*Htr_{G3a$w=YCp?m5+a-o65(Vn*% zMjg@)lEDKMBq|aQdFS_7&l<~802Nf=7B}SlB-1KK|TJ%}n#aE7<2xG~y*W=6=r^92fEhruh z%Sk;QzGl=7lP65Pl3%c*Ea)+M;)L-%_=VG9eTa6{m2gvsr)YbQ5(xrJ2TL}~|L`-n zI&gN3`MvRK>~k{BI|x2%In1(vi!g7y^Fv7>(PGR_rwjQ*mr2KuWQB~=5)OQ>vte_|mU_2w8(lA!te_vj;U zg)im^-+d2dj6=r#m14kh$T@Qujpcn2@(w1%b%cn|VK^fKj$q0~k~gpK-#ih5(L9C{ zLvEi4P!?GDPsA1wM{=f=kW3O|xw_RL@!WvdV0dav4>0EYnXFdc5~&vTb7iC(DfJd6 zIduzbm!}w6P1Lw>nWy!mrv?_&)|EznI zR&mxkPZ&HB>238sd;p-%^a237TYC1byS-yUc$5T$J=4vDheQu@7z5t5)`Q4E49p|P zzD`l4%=;+aWghQ3N57RaxbVA%LyPAmT?Q@?JDyojR`gHg+DkAoP;)sD722qfx(ICq zWH)JJudE;r$*4m{ez`YI7qd6q+CGaId%1#fItQwGNXu@L(f5PiNl@;7 z5$X2MGk1Bt6AqyeAn)`53Y+WJ}kjau6~c6(izvny{k@i_LEC2yVf($0{# zHm&#}d27x;(BvJEw}t`J|Ao8-lShis8JTNW+?#4c=Cb0he=oQS$`-x0mpfcxZ1p~E z3uE3L55L>}vW_U2Hk6k*Hk4S79k=`AUF%7>-9M&-&w8>OKDHOeME>7i9uxoj8T-j+ zK)zi5)p#;o>-yinTO_clkOZ+(uNwp)$9HJIvdE;9p%h5Titjvnjo13H@9(Grh9_iN zQE@lgRjlcIq>sZSBPSAxZqnpk{i}ITRKvHLAAryDB*enF*jc4JyYtH;xBRX)OZ?k> zf|zjys?TYcCHqAFjj|{canGp3LoNVy09gRy9LaDI&_Tb(NC-h^(XV?ieU*Ii^&=;a z9eMdU8U!9?Egl)7vEcQ5jF!N_Y1#)d{s#24hCiFgkXlH?@m6?{>o994iX$U()U zMqV)n0u_3wq4+p(jnADm-Q0HvJ60b({~>>NU{O?Ztb!Ep6Mr@#r@Lz7{*2x^_z;oV z>!r5|cq+3A@X_7Zc&b4kPk3H70eC!NnDcmoOLt!ds;83$XP!>T!+L>@K!I!oHZv{0 zEZFP)-mB#O4YAjCpG&}d4{OtBXR1_N5&yg*IgXDf=suu7J3z=!_5mQjQE=nG71zYb zZt>P^cv>bm@PjI)`#_ZEm1PrU>5da+pn3rmboN8|6X+H}OSle@MA_jhLs=9$?RKTm zK=m!mGYNkx;vWQ~AFK@~uUl)yzqFQpf>#lqFNrsmMAzb7gl!`z*Hqwj=gD>*P>WP< z^?Cyu(n7c+SAU5ASN_OREc}t9qf* z7dtyG&L++uXIkj|(T&#FYjyq<^cZ_Bw;4Krd|R!C;+_~IvL$(~z+7_MPfsB78?N)U z!?I@30%Uc(fQwwf8k;)e1AeM+x0&~GuTggqe3)dLxoNJug`gJR+zj9!+d@#0gNl-% z%%3LUut#?X)Fzq>W{9AE%p7kIAWBAcz|fI7dMm`<_j?eG=00z`Z31GnteJu&Dep_L z$;U=9Xo)#o+qgNROU!L%bzF-6t5-B!xT%-$;Y@KJk~kk>s4$5aj%I@KHKBo60!HAI z4@)2I&6lBOW3iEqdDUh!GQq)j->Vjdsk|=@vwY?>B~0giqOWUM66CBj0w{)kM7KFG zpOH0#W%QsvE}4ZtHyb~5x%jJy|AQG6$~MEybh{16k3C@GZa{9bAHul)$Ohz>wg15T z0mp3Se3kbDw&H54^zA=uD3MBVIfCi0AS65fo5lLvf=<`IMGnGrlfwI#DKj_j%?I4S zol5O~Gae~f+ zM0l`O-RRpZG|7Ik)h|{6W^p$nvXP4M!hwC|_T^#5=h(b#-Kq=97=IJ~0Fz7nBVqC7 z68{i{Gc^jG;ZgqDQ1|lW7(dBhi!R2Vx1#9N@W<#N&KHs-Y^di7$)AICxlP9TSb`53 zn6G0l{UZ>JzwhrP>hkOl@Q3|Rt&naa^N`nB@xyzie=CDiz`+S!i*gG|{vS^F4@~%S z`#!~z!5%)xmet(BOgpxec^KJ5M%yEOgp`RJkEDq@b7wZf&b(UaqovU4-gMm@>L2J< z+Gal+=pONq>y_o_!zbC+ywUG|H0X?w|5u=J^ZT zKW%+xXY8MzB9=Dw)x(yc$vd!rIs}+@>i$X988G!!r_bJ*`U_yB?iQ(Z#ypbr(mMPx zXUDi^zL42lf&cr=SmodfC*~(bIRX3ZiC4(r2QDA$2Tw~dJ-gxu>H8wxO5}ZmblRao zeCOhbAEt{Y&BN;*rYVM*gy130%Bj?wVK%Pdx$p8@iSUru1R?c#!+4E@u*PDNb7t3H z!$T3TBEmDct%>O;Q@v%GxDM-yL@VB4Dg|X;FjGfK(MQcJEOv1CEV~YFQmS!l2Z(AS z=p?J3RTYTsfrwTcs)n-qtlLs$k2RJp)_YQ_&2}{24f2)kSl~L;O8f>imervQXYcbY zW*_Bmh-x1!p{Pdf@6Nt3g$II?GdcI^T%fFXik$F?q6;2sm_bm*> zUWnKryk-Clh*nb`TaG9oV%Uuu%)CxHrA)@zE#8BB4RI8+C`ygLkH25>5>7DsTur9j zCvTQ=b6BtVG$yb%?;|#tSSX)*gUFoCLiDi?P_NPA`D0cRg(Hl;$c)roLxgN1>FnAt zFdzOCW!9Mvf{0mREEe$9uh8M62@pO>?y3l?!5LJz&7l`j1TkIe18Jdy zG;}jQQ|2&yrb9q$SEI}DYdQ1og`04Y+6xilft=1CnADYx`YV!LusI0huEqtN->*k> zfw^HS7Z}aJaZB&6VWFRK#LLSdz`)sQE>&#OUFS*|-8B#au2shgs?3IT2k%=P4@U>S z^VRxyesSwn#e$u&UUeXrHrK017w*`4HU7z+v|hEoZ}A-GzBzq4mw=!?>Fe|9CN9y% zet#+Jy9|Q{zc(+>=xilRawA*%h4zeWnMwxpFLU%5P#^g>?p4A~%=9|o4NT9+hwhOF zgQ&1a=K6pXxO`zm7894-(OFksJp~&0eHIfhdrWLC8_U)bm!4~G0ZoE~ujTpOBH`do zJD-EQS6;!$E1F#QFz{b6olG3JC1Sfed^-@^lcCl(Sc9mfUSm01s_VPPLKf+}#!{!t z>Xi=*YnI-FIgSs;xx@0&4V?9IhlM~chPLmpY^!(01fPxUJoB&L0!JcmUeZmCM$oN5 z5x`Hz=6#-my>+{Ssm*(x>5b^^Y-BCo7`gODhf`L6rOY#BEJkUs1Y+yRKRy$W|+`Z~e0kAo+)F1;IAl&p*IASGqKo#LSjl{w;vcj=@fx<)UZ)S255-rh*P z&V)2x7s-c#jqL5*DssvUd)rZY{M=_TTVkI5NE3}Iep%-kgg+koQ z8nzt!V_(v(OoAM9)b%73?)S3yYqxwlOYB0RX_{KMG=*7YE=3mT$b!j*tMQ3d)|;&s zo>``O9SldiTo3W)=ih*y@Mm`>cEAf)!RV(EJhQ-)MtD2qPJ{mttdoEQMIzK#%82|2 z0Fl=;7-1CtVQaA%l>t|{Ylh1eVm)Q5PGfI=YuVQ z^B3TUn1k+$9AuJ^CD-V5)-f{r*hfGYNG8c=(zW-+)YRk$Dq&xtW+TC;@lVlj;*7UNJA-q4zs-p5!Tn zHS8lcO~p=79f(vU{*pO+@LqoNpLzXZUjXCGD=_^FoZz_UUMVYC zwhYEVf$CjJRGBBI_iXPw`^v$GoIl{nY49uOyi3m?^u1~OMgOtTCKI0{^$t|O0<^j* zT?l#xk;)>%;{`lv>QLs5law-@B*z~+#{}2!N9z@RxZS*(gfR|n24Tqf;I+L_1TJ!X>ud%S@y-fRHNFK>zy79Dz46neu<_7MbC}`K9k8s!1D^?uHKane4rkihU_$=tbk+(elp{aWD zYx=_1ofRuS2nZY-F~kzBd2J$(`I$q_OIR_}4(;#}TLD^+W*M4bIHXEJtUHDkXKEDn zfAEc{-mAnPH%i+qjo4@=#c+t2(3eb-OV+ZudelMfy~SaN18j;Ajc#7CloQxY3F#RC zyza8VWToR{KQ50m0zW4!lmS;{kTJ^XbtaEU3?oH-GA;El#rbkdpn7^irN&K85uCA6 zQAP1V9F}Ip^oaKW@I&I#-NGvXMh7qw8-~3e;f6sW7l-f+XXVJy z7@WEFzzzadebb)zN~j4TLGqytGhmn_iJZhXNk(q}-)v+l9uD<@10706ll z@k$#DSQRtBl0#Ba|AUhfk_-F8hQFZgHV_?AZ@91k9yAc<@4&Q#jj*@kPet7R(R0{9 zv>m!c&SC?xs}QvLrU1HhEi&_wxY2(g!Z|X7WA6m2V@Sp$9nKV=g^Gi3TFFW73>5#p zTp@671{A#L9)+F+B*c{y{VTC}rGbfXLQ1N?TmX1`B*t$gr&@wH#_I6nF#sXq1vTJH z9s}4o&c^`IM?X3FgUR1;@;4DZX5+f?ZB2d_ZVs66W0SutKsfp50s)>>@J)WEIB$Jm z^7AV*`S%C(#u(8n^JeqRKosQm1>58Fo%uw=918P3!afGS=6(zd4LBY_=V*u3vqu|a zDg3a*8svolIHrj`#)QRV;m_&Xs|tF6GC_+&&JPxhom4PhO?2~n^=OE}QEZDtltg6? zy!Pi2<*(0ZgD58GB(4G z&dES!*wNJSGLYo9=2(_MCkEZ6DBq%sYc~lfD1#kw9cTqOIxY>}Pq76|l@hNq0eNo1 zgG&mxRz40e6@^Qv+i&LJy6BQJP2;jAJ7SqDvH57{#0!1a3!BVqd#R03?4)nNG-i`q z_KFQATIgo*Lt#S!vX4*ABk0w+7+n~uc$c%vn9x%$Q*+3jl z;KzOqo`$4Db#jWd&k9 za7lN!S{l3p05C_)Ahy%ge?qtH^iQ_?C zL(VS;N#QZ7@gv9Kn!u~ts3B)_F9u`QsYs?#?wcKoBxE>{%-NyXbde|2rTn}dgLH2sc zl+1d_ugrSb0nk_{5U1-Qn`TZ%LFh-e+ps-OpW5lo?6Hg|I17HSC~D|K?VF_q+db4C zj62NLVU^;H(vk<=b?=gJxTZYoj&ZSs2hS8%tYGBl;JV6#6%4cP;73$LKCKQz;nR?7 zaR9hg@}vMcRJ zQ9IrC=UdT_nkjo-GMduki`>*$(U;+WX;`W}&NF8$S_@VHS9yGk30~DcXFx;gY0SMI z@r5iZIn!dB@YuZ>Qt`Ej{cdrIN4YwR@6IOk=_t-v!eYk$jm9-FL&2B%HxgKd=~sA* zeIRx(0PH{FkMJvRBsQ1;po57pRW`v2lGaBWJT^)Ze1I9rI&FTR5*|XkQINMdm!A0Dd)J3ANF-i2@W5j)3;*iF(oE% zbU`O(FVqH(s*zWj2WPJN_6jj7Ldhh%K^ljkvO;RQae7VRZBUNWyTI#y6MdY_7pDCdV%mJF+6g+5_A?rbj-q(n<^C z^(fJpc}N$MzU2j~u>B|EY{8U~RCr5cu0$~Xl>|pIXm~Q?%)Z!cuml_Ah#Bt=D(>e1 zp?xj>AQF~XEL-|-zYd7M9DfK5l12;7yT926-I%jjgpW)g&om6v3y7C^92$Unp;HaH!u@1Ck(- zT<>5$$Zdf{1giJIH|mxm=J&Ka>>{vU`*ZSX4z6^V>^bY$=eq$N`hNw(i!YP$>WIwd zQG~1C3BoDseJf)axKXIAjEj+AU&#_rb4rAV(7mk0lzekPlH7?h zhBOgG84k4tVm(<9pNf-O3Re!q9supyT{IH4?8sW~gIuJNN*%~knD2D0Al0#7U+SZh zi}1nu?7-6S%iddI?E|xafqpY(nJ1COeu03`DuAU+2pY~s<1I`RXVC~$-v|gaTo#TL z66|Z3uT=AuCywTfJrUQ$W%d?*8tNKMly=8`%@>+c)0X^-qL0I$S&4qaFELXIW~zXP z^K$kjWalmRHpS-lQ#BV8lqoZ_oMm=(iUaH_4N8kiAc5Er#MqZgaLt=3;79FjFP|9QZ{0|@u&yJ`|p}vhI%-% zyNsoiTm7U0aIDQ~1Q7MB%uHH6u%tuyhsI477mKa{LPce{>!e}9o|C~Ih}EH$b_dN5 zV8OoTVrB$}HxTgGJWb%f3ha;nH{%ODByw_cFY<18a`Mupa^3Mk4%rff)3Z=nKc+Y_ z!7rKiyt0XLP7jF56WSUu&M zJ$P1}7@lv%-U(gA_4e&Q$e_SJYk8|Tmha%mIBzTyvOXKq_r|h9cH|q&Sh)|SRZsMV zj*eSeKLu`Q?@)vF&%y(_c=-Y^hg&js`YLNn%8F~mX}MS$aC4N*Fc3Wi4){vq|ANId z#cWSwx!&CQAIk7gim!V;TkJLzluMVt-m4UA!Ta?TFdlBARshBmZ~dBFLoA`ZWF8QR zDOAINt3f__A7AaB|F>%#Fb;KQWWlla_VEjWOa869*AlJ&7d7~*y(EbZV^6_cMYoH#0VovY`kl){@3NOy z&eVyA`di8U&cCI7PACt9nm%mCF4d{f$-Q49d`aKZJ#)f)1s0a>4jt^W>Qwl%^g*~F z=9Ce*bqeZab0;)f^bwFn0@dyDSy8kh5bckNqkC4*Boe;=D|$gV;g0o+J-`d1o8`Tk zRB2Aiaa@C}p&JojF!7-BA`^%%<6&QXS$VH7%5&{t(LV#x`A$sylk#3)X6cV%-+l1O zH3#>G+SV%ilJCu=(uKj~P*A&W@EK521oOsvF_JUx`hjn4hJelqt`lEr8mXBH z?oDY`>&4q4sgiA8gU4d4#4k9e0t+**e3r)-mH<^g~OUq5LJ02W`H0PQ)dy|pUawoOY|v8w@r`v}P# zZZO!+Vuc~Gg3={c4csj}@*H<93!awVP^107OBmM)=OQ5Hk$k8vW!^qt`n@KY9JUKF zFI+2v4Hc2NyuHT!1t-Y(;F>`WdR0F(ou(sv(7;OW8NaE0&Wz60t3pSCWV7kNZ+;*) zh)^x5z(QCVEyJlo+I?^&F#Q-L1>^c&iE6XiU(jYZ;|CN0tv(~VKot0Z35$c*UO#f& zSRNbUYWVIKz>`qN0T(pHJ|#G8eLb=lOJF!E357&$uBP_~G0-j!}W z~R|puy+2f4%Y~HJt#}sm>fdm;9B$crS8R!*U(-Lie4GUJ9}u95)^yG z^kF4&2G4%r9EpDd-6-bKTc&Xu9VT4XeK71hD8hl;fJ--#j*i(i&zUIHlgg4&*83$G zBN2`0PQ#J%_?N%}Mq#$~(bEcb?U;Wvbe8Wv z>z#wyk+{$LuH0W^)^u->Se==S6lq-b5u{gA-Ia{eRt92S$kz^$%JV893o-+U4Rsf_7Z`6nUOioElkHP=7xb+;~MguO0Vk6E!r`vHmAqlC z1?R2HHspat$G?nzh@18;BPQj`n=gUbEucAhK(Ey$UUz&;aNv0|{*<4bALzVmVW4w) zVLm=fPcD#1M3fd5Ft$))izRk2V~ZI(SYk&=Y$anyFt*ad)3so=yN2ud+|tQ%?>?9e zot$qi`!KKfJDD-8MNx$fhUEx!ylIyErZ=8+8fOMr-l3X!x3z? z_yyzNRP_1=rjS_tu7eauqshtVxdxN<5F^5YkpMg09Npde^1qU>r$4ZxyW!H&^6-o<0U_(_Qb(eH9edpcO9jmOCi67dZnI zzO$sEgR|IO2S{F#a>xyf9Y(np)6!Ynk&1)ae*!iv!&l zWJk!QGxLmuvE)6DfN#lLf41~~4cNg@6jTw{jf9op^8CKp7gfV)!3wF0Toz{Rw$oVQ z0kANw?!E}r;COHi#&7Fhk55L=lV}BL$_82CfTSc^kM7*7Y20U5qJ|Z5dVLv8-jU0i z>l@KT%)OFcpWq(Kr*NkOvFKXN^eW8sEsj@>_{!)9?o3~WeOe%P2THZ+Ov;(*aP@X$ z5zeMFlTGAL%=a#wu3a$AJMX$b{*>=8Gro(=_%4{|@PvUd;t_^>jA8*FEb#~<9%00f zkoZc8M;P&#_n+vzpT(`?32>#6Z*6)jQ-jg9lCv3qJE0bIxq-jxa|5zN_yajdq^Vah zx1l_DvppO^-TU=9i}S9*xA$v?1nJHYM$3*Msc(Mow-w$cl70SOy&I>LMG`9xw$G7U zAPc;V-c8sD$pFWT_~Af3^vXAUd(BGpdG%uK84~+#yr?6_W|R36IMVwHSH8hQa5o8F zi(p_6doYI0J{y0)8=6oOxIFPl;&24fI-`anWcmYZ1~_yoh@yry z!Ln3pWv{=T0qR?ih#!k7q0L6r0ykR%)vIN7*kpPD)_z$&)~DaHaT7yohW?-^X>J_| zjq9$g5Mn5k+Na949N$>MUMs_$8NMhx3n`RXK%Mq~@P`@fn;b}$W^TooeW8P1?#<&V zD_nc*4SL{iH1VUi;*RCkaJOGGd_7zy@96q4TC zsV-MkvkX;q8-QiNwXv0w~iCQZVo@kVELEkG-2y*mjFgXQ`d@Hqfs45DKiOpHrcsFUm;sPTROC z?*ycvZ>mU4Ey8x4lW4yMl@{HHvg%FOlUj(ZC85sZyeMWwZlGlP`>lqQGcOVKr}?OgRJuW|D_PH~3EAcd2;UYvdNAV~_!2-v06TFVP?O zXR?LV33b2`DfI$u?-7b37$|))()ZZ#wa{HwwiSJ7m)|5cPCl4EU!PJ zKM?RL&cwCpF&SX4ul=RCl~5n%Zd{fdF2Z3^=xDZY0LA%OitXbTJJbu>HRpEhJ-kmF zn3*bAk=~^~x1?s^fhe^+o_0$K+fM8I4&WTPvt9_Lw2Ap5tY&q&qa0y}}yz-l!TL&WcwNqw>Q?m>-ZI z&@#-o`qh9#8CBq9szq|{-X*8b!i~4aGg#_r&F8b!MszoHH~>b;NcFU>Va_@Zn3GRXV+Fe}P9L~-U{U8WySjG3$%xLYO=gP3KEY4mSxeS! z5QSqFhTW(zp|lvg52$=8JIKs0=JKdII><^Wo|bpKmepvMfBOY13qz*&&F=-_)J53s zq^x8a+BY~K*ruqH$a!{8ciu-=sQIYs@CZU=VBC?6w1$Ro-{-`fQLyxqZfc zig{8{=sVz!U)mBvC4s)L1{Rs)B_B2z$tji3wPz2$I+AA?AsNG=I)>=4K?uV5W_vFg zxA&LcAdB~T$ykKgjF*gjR_92mjvC@Qo?0JgUgu4QzX%>sdbGIe`(WZm>5F>Pt#>mJ zmGY~;hFy*EGj9V{cd)Rz!U&sh3$Y1e$_ObJ;E9S?YHI2vgHFqVF8)NtJZBLqkMl8G zPIn)R(5d&^({<`4pCDDCjy*ACuHE+GK z=Lzo2gV{znPJs<63hw`b;J)uUBDkMcu7Z0Js$gFM!p7E}haw4igc!=D@X_fj5SP9R ze>TR5M+NiMEcs6;IRh$!c~2AwCHi)Pc@;oKFn>=ZN!ANYg3x9dlCZ4fekEGZTHcNb zd#QYUo_F(kMjL{^ncTR;Uv9Elo#lk-rfm1mqFG>$fU!ESJAG6GS zCY^w<^s)T&8;KX*k?x~mvL#akFl3%(ZbkrB16ZFnnWy?g-Z+fe4pvZ-s~P4N#)V|C zX{VegyYDTiQN`C5>_F+e3afIC={O7vLLEc*pDM~P z-zI!B=1FEMPhErsGTs*qCDG?{Og(i~MHle0u1-J-blT9#aVU2Pm#ZCLaN?n=?3`R$uOvARnDXh9RKp1~1)*HJ>`q^-9FyGjC|* z3iB!g%(g(XVLzNLZ~laTyrorH{3UYdFOI*wH*RO}m){dhoAxTF@ow!7@RzOE>}38j z6aoUY_BiR`QY1Wvn^5!Tp%9dyhe8;1yBdc!!c{QYMW&Wl;|fpWr0&z%@)!$eeLYxC z7o>ox^cdtZl@waZx8lTH2*28W+rD!E0S|k0=d9fCw&gB z0$dk1DmJr8`ibVN>D*0N|WWJ8hI_&%kdW^~s$Zc_z(@%k>zF2wO43 z=s+q~$8rM$S3^w@?hs7OVK-B(Gx6^Z05{o;~@ zv^xFDAM$A`JNGr{S-2&$^e<6GRgo8era;hS&?2T_u; zy~Ri8EIvAyoEl**|Jn>4ICoB_+ljLL%7{f9y83C2vjn@c_m0O3k-Qm6nIUIVBJYWT zIyZ2kM7?x?>>CGF0&NcbbyPupmRAp7`&^TQYKTKuGPk@SE5;7^j*+1wDcm(co*KM# z2$0HCg8?g#)7!xgXB{L_i1j=x+GZ{&BxlFo**C5?qctElPC*Q6SsmcHJk2r%{zpg~iHmAafjjn6#K2R*r*tQWj_H5njA2Vqr#JqAKpp!Bp!pf4u0 zgT6w-@Y7d{fXYNOdh4L*wgwnH<|Q33&)bb*sn;P3#0Q3f&cY8k*JX@M%oS#sC`*A- zm>|+nPtcsBoKVGrlXWH`xQ0eXdb)*eW*^opk$3Q!?iiAQbjL93IB5V2Hn%ZMx7)PF zyagTTY8XVC_@|^wHTd1;e)*GQiNWy=;cc1sm7MODxe8S`w`7p<8?}+>-5KrdQ?~(^ zJUd7}Zkmai-Wb;-p!-QK7g<6FY~-fSN*@#yW4WGe(bE9teh4XQhWl4V6S4on<}rS1 z#Kx0h3|Ayh>P`jksko3)OY(t&*LPh8_g@nOnsEZ%3|`feA1o66F7IPJMQC%^@v7fl zcnr#<(uMln7daMHNMS+gq3JwZ`c*1KzMC#fPfA}0IBvqEHt7>-;>!xlm~1AtfdnYw zpYt_I2IM^?SqYVlRub$OO|;nZ6cZgBPa+K2N?ynN^f+wgv`5gZ_X-qx^-csR=-qHM zMK0&Odxzwwnv3J8#awd?6(fEJHt>~Hln&2?QJ~WVSU;r9-5(5^X@2wL@VKH zkeXcHDAM7QVsr#Juk^=IkT+&xEtqQyl>1dqY?a9InfKTs?Y);?x{O2Vo;E-}*+I z*-h%?ypbl)wwZgF+u^x05XO#l5opF0${wPWAH(s@c0$>-IutZ{3Wc)kp}|HzR+wC? z_bL+^z;&n%HD+TEsca>{e7n~#5S!V(79!CMXI|wOhrWXcA%GI6+@qwOivVW(s z&hVr!1cXrfDJViH{kTk7a-uw#gFLLK+_l+2f!CDpx*UD3nFd94Y8h zW(@)^$o`^LkoK*}M9aOl8nXp0rdr_s?%C?c9rQ>1z!;ea?)p~8gR@`O`nKe}_#cgFfgkDa(ng@<0ZE#;QOoOl%H@N&F%&P@ZxeU@J#fUVA# zhl5JQq8q!Nu%>b~5L0g$7UOD$mCXCyFn1%+&UbMGS3#(C0Lk$9YV{FhD0zqVbw%g) zde}MCx$r{L1h1WWq!L-t;s34tbjIi``pSv?;^=GGB|C$@_9vD$>1zq;We4bM>cu;W zzFhf<_7X~F;5NdZ{`L|zF2Z?o01NUeZSf@EUw$8FvOb4P}vR z&(ycT$h;1zT$vqDN+XUCQK%kP=zVzQjsS~$^*W|t^2kXAP{*8XEgmhcLyy?WuR z&{{mHa@@!pPAwRXFZfp)b=+0Q74+n*X%;-tT{%`BU+al4c%Xxaxk&|AOmJR{f@7TG zN#V*$q;<3wpIV^rMTtrM>6jEeq#Y8WK;yhUaLTbXQLlrUR~XITSQbI(CJA{rhi8H4 zb-#NrLfC|49;~4D%R2(_JeF|rH#Zf?%<6WMI|=pNULRnE7&aW~<%uKDKza~d1g2~w zkWC~p5347M5hKp}2*GX43FqnVSA68{rv+VjqBn&xyo5COb>m_pcM8oN2v;Po?TBwm zjOtnY=~Ia>t%tEo$a@@-E0;MFvLDB}029asjz%ob1?1BaS!N*$RWFqKsT6Z0^J*#P z01XSV?J1zmkW5I3KFP$QWOL$SG-yKaSKrDFa{{Y(fkeT-VJwU&`v&}hAk4v{lk7-t z_(-{kdYr7yf@DL1B2g#V0FC5^=p?(=ye26a(rfV9WM0H)dIV4WF3=M{8M12*#V!*M z3pDbUYa^d3#X+NX!4Xnt{h zPJli@AGo}feF=xFK(24y%kB^6NPV@q@SUO<;7CXZnBT6-%PCESXFEM0`wHPQdB9W> z-G*+s7wru!&=Blq`ZG z1ZUa@w$GtTpEv#k3(Hc>8(&5wD^2xF87#YmPXv}Z@-TH47N|yY%uvA+8q@}cK-u$f zDAX1Nf~J*%M8%Jc=yfS6mMt zeu^Ty0@m~brX8lp3)4P|9D)wmD5n`1ijn-_l0%BDH6w{Vb6uM>?1>6;ys^$)Js4D! zys>*_8Fu-do|E3Zr$6jqc9-dDW+04NR1c2B1$&*@?L?9e&#;#^v+H+b8M;c5D=FDz zN)fLrqGCGz0Cw6O>5Hos-@X7k?BTg5<0J>~yKkrsL-^N}LrH6M48rIrZHTL^Cy z53g#PL>-ms$hK&&m_-5%s+dp63_JKwS4skPIu`Zjb$r4^39<*7c$VxT;*fcg@D6LK zp3D2W>YT~kCx|G7%tWmH2mHZp!XJCUzRJ0N_BIB{Zbx<$-~1!+fhgz3|Hs|8z*#lz z@y}FKLvkikAsQJJq7){1Ow8mQ=8#KnE|EtsR}7s~kzq3D)SS-Uj7x6ry)n4a^&B^) zuHqDCCc=1Juh4ka+8s39^dQau`~9u8_t|HfO630g|NAg!@3q!m&)@p3-}*hxHy5I~ zeJlQ;dD-aQq+f(qP)7GdG>i;Fy=pD}BDH!4Qti9&ry17<{F65QVC~W`$F*)FMF-Y0EaIjbK^{)0)|}&G|+A8u-X7h7p_L*Bp+=X5A&fXE*9^tuJyi z{9Bs-cB1b~GB$77PhgLmS>1qVI0D0ceCZ~VCbjC{_$BK|A6N{9B`X&`M#$A-`!&zX zp5B=dC;6cU6AeqhLDyBUad#FWp}UWL7rtc8c=JW3N;N<+ThIdny)SwrlI&8a5K~4o zh2DMGu|ssn>@!RW-9d35C15s>6>0E?`>4a6QW+ZVI^ob&CCr{uNYW^mF%dH+(phyag2@(_nz`mC12P(0@w!G*KFY zGn!H(cXFnl2EDR@L`6rg3}ci0#6dD;XvaZYz4>&#uTK4-F)7Wr9UbG~a!pH zJ9@WUzt@U(#rjQSEiJBJZ>;Rjtl!s#yI}nW!GDu;pWeu0B?dDJBf<4vrV}aY?dCwQ zj{@bJaRWP2F4M4i-`siP?+arMg&7SMMF|RUgK+IuW2lqQ%*2w>rzb_ zIc`?hO1O#k`>sul@|7eCNBM3Qf)xz-HpswzkLL-PY4XE+FP?=+j$3uiade*8;2!U` z%81}X_682dQNFdP@zx@jub};Tbk=>U9_70(>)(ZFS&A$i6&iU%ZoydcOAq!hyz;tn zBk2-Eb4bUJ%pDgV&o~@Vdt;2)lX442GJXd*q-jn^4#z21T80ZlmFm!eccZB1vL4lU zb*lk=b32W)W#oeue3Ewe8Hukwhv9{IeW4EDsbQ>^A;9Ko(Z=FFm;%p*MJ_0miCcT| z{FG}jPF@lz;F%uTo;=gz&p((vQ;7u34CIr|hWtH|5C2d}Ty9jc%Ct?Gj3^`c0q zZ!iiislgarz){K5nr^4n5=e$u(wEsVGF$f!V!K7fuCSReGphG5UuMR8h5k1sP_ zat|80!P*%PRmw}tU|CgGdM^Svp|_3b3@?`7sK$+8?OONGLCt}3(YQ05;0@WFQtjwE zCSlLmxkL6KC-_-1_)$$6$8noDXsP34+sSJ1p5W>DT}VxJ zyow#q&>iP9YL+C6-x`CdDR_2PW556MYgbG49+F*zyR8%=qU`C!TaX#L5f$aS-5uY9 zB-xKzj36RRGtd8SE8XRV72U1C=bYy+kc#fgtGULXr^h85Dkfex&_Fc@@*b-&+8wV- zb+EOA_DOg7B5TfphABY;F_!6}$3M#k@T`ue;z8s63%wZ_6Wy-d6}+DwbvLEC<^mIeih)5% zDsOQYOU6nSY$MlOva;@JXVCe_aQnb0kYKFfmI|@W&5{Ey>}z7uuA6G)!X4~1HP@K5 zvlHAYs*RI#uf0}4f;l6Yv!)FMFz~?6gdt4$z>`qGggPV`bQ<0}c^o@qkn7>N@hLWJ zW5`6(pW;_W6oJ)flT98iiZiFy&FO@kBw_+#NEmt~i?5gJ_6gqVA~q*kYfyFa47cP8 zzV_E8iDuNXDCrFFQ1`26SgeEl)oi@_$*nGuWr4r*R{C~WhR*HW{ctU*>8N`@EEta0 z-Ru6*Vc@QyUu#d=7X3QzWDI#H?jOBT(=NOpPWejPckcxKdiBoIufx3bE1df5Ed9Es zHFy7x=+|M<=JYEuFX-1oWPpB62-NByL%&LaxFuX-FZ~*Lb%*rpg}P5dzy1J|$=`^6 z4Ps~Q1pQhD_sK+shIc<3Uwi1+d+@61*O{!=OTXq~ay;~Foy;8Q*Vi(IekB$GS|IKM zeR_2U&%=Z6+SjE|nPHF}^3P(vad#Te%IoAZ+t$A+GT$)yQu4S4Q=eIiQsP92umo9)ONT5lo2Q6%ZAwxXtbkh??l0-8lVf=WG5XPYF*|wZgHiiOvmd|iWpb6vW6KKH@Y-+RBwK3+Brl&vqSddsKrBHo={*`@8=Q56U=gDaH{00GPE}q zz|zrt%AaGWWSuss;?1&7auJA?GlN&^36eUOujpMRd-^$&no;#7EM@4EtMKfs%Er}c z#PN-%xt(vxgv&SWHZ}tSxm1?SOVgjzg+y`-8pAVwlx}y`bM6qyFCaCgFn-)xub!s2C&SUEF1CW!!nFUlWh zB|qBqQ&aL*-HzHGp`U2OD_5Rn9k=Zq3+kuf|KvU^Hw-{DP{)Fu0ltU zBA$mA0!_Gk@^CaLkDZe6jPxRgzd-$t6{KKlnoKJ6!8T^mvi&E+}MIKJ=7T3}+W3!0 z{=%0*HN-Clv0#jMAhQ0RU&phKL8pz^i7J0QJO`~*st=HdS*t9zo+B{;x+j4jIZvC^ z=5_qAXeK-=F_n0tm(=APraZFLJyL}@?n6f;=}?wp^#|yOD%BAWDH?#(k2)qF;2hm1 zpK0r()Q{FQ1<*QY8%OC`(qkc$J;pa7q^6Ei9-rz{UC^wsoT#v2WzJ~k7~|24^>aSc z&&9JoN4ag%xJixM<0d)Ih;POW+OzRzn;fOxOaCF=zGk#zUvtYkqI?L_g`dLTM=>V; zKC6GRAE-E6Bl|*gbvpf5gKT(kGN^Ope92FqhBq_U$*biVfWPWHSpWh25B0ME{_A-5 z0DkN5d3-g6_Vx38{vO>Tv3Kvc>>i))kSA1{+)vkBss1FjVMmnfYGqv~@|o~>Egtyc zh4LZ&*`@2}PWcJ|tMR2)0mUu_O8AR>pH<)1*=h z#6p)d8&iiKW#A{6B1&@cDntp)GGX@Qf!Dx?Tbc^v;-Juz+WH55myS;79zg&V-thz0 z-O?I4C8_!(7)LxI}T*Ptypj&65gb83iPj~bNOv9e| ztXd?k@gNS`p%^LkrNMG2twLLJVfb?;Pwo9Ck0StzQEu5?$=fYmddSQMj78?)+GLHs~QpHpl2+kI-@48gOd5*fs!`ojRegZ32MRe z4Hu++viQQv@NzI;$Ul!BDNj|7LS`Y_DT;jUiy{^~8eAkWqyBK5&;-87Ml@fRKhPJY zfItV&NXQsOijK4lEezj-1J@FESQb47D>VeqmXZr|FV96djWC=~Qy_lbwV}%qpB)iD zXfkxImWN-7HweV9yyo&7E{8=C-XIVkAG-0Hk-1mlJ4E3)9P8uE535z{5i@0{=jYHD z-1!j&GrPM&7$*tnN8mFOLR~rP zf5}HidpIkyrJbQ9B~mvE^+X|@g>fmCbxo6-&kW6tbi3nF$n&H})(kdKY*|u;iRnv9 zb8ROQ$#A#1lG47uy5=5k%OH}aRrTx|As3{ZkLhO#ws*gNW+Un@Jj1&-9`#fc!KtNR zaSwvv2(zT<2J?XTP^Fpmk7C;kq6 zXaQF<^uzy##GRsKNss1pTSpXG5aE4;?yr&JOHm5h;a%Og|gXF z_bSz42+N8ybUERlKrc{j0_4C(7k_sVVt|WmE6u(0@t}1Y+22(0_M+-_&I2zmZ$hf2$4sCyqMRqo_@!JrNFEyR;DMP+!_hg_GTEno^DY-EBitDbq3Wmry{b5>6JLA43laAJO!uauH zue&z4Cus=K34m}|6W_o$&jH|%*VMkH`{ss;mqharhcEpNk zXg^4vxa|+a8DJlR*KINgb}M}o@CO$C7f4w1+y8<`KQH3feCeRE)5$WRuERx4a;U@O zk!qi8xCt&m-nMT#K;HJ*HUM%NGMuA$`0HDmH1X3KEzmbqiujqCerQ$$-}2C0BlSAO zkEH6jbi+_UEtgz5B5}4b38%pr{NP-ymb|Px*SqH;GxWLWHs+p-QnNLKRp4BdD)hOy zR(07cbuNCRF4EPW^}SOq&qbD3D?h~)z$ply-`3BpRn_7d5#!;jE8BN>*}u5;;*-hm z<1JGScy}$n0_Uv?#oQxvj}4gg9Q@ffXo)`T?qq)hd!cLAy6|;69=DJ79JQ^9b`^I$ zHdBVb7eW)>d=i$=*w5}}<2yMuz60?HJkNWj>IH95f*c~BiyazvRcA>emS}QzRcj>K z-^xbPmNQ>8WMw1|0Lbv9SMTy|FXyceZ{*s&WH1oz=c_WqJ$cTCkGF5fLF=^s*r&Sn z(C5iL_yJYD-uH8B-zhol1RSNHJht{NNV13E4UXTSkAzM55)T^HV2$7|J`~<~1BF)}|f7<9=8>a27NxIlwy4cgfACb$DhpzH`w;?iOH>%YJ43Fic zqxDMhRU@46+cpSrgr+CC&Ea!$GR5vmE@6wMXaXB66LwEu;~bJwlHiMcEa%(edhWZs zq+|n2`l7EP!+uAX=4E9KaLN+~Oz=2QVB%`Y0d(zS&(ghR3%*FD zG=S9#NbP1O%Q*_NW$bafu)xn}AEjuZXa}@s)0!={fW9d22=?!sPc+JW9A9Aq1!Y$0 zXF-{Ft$?1p1;UasYSgPaWuv_CR9tR{0n>{G$~v z4i8_N9HZ;($vT%J2OaOq=lS{>_l+j?sD74q@53|Yy9W|L|MM|dROURqFGJM7ltgqK z^hT0|DbdKvoJK)I;SU$n0UU{XJn-E)mmUZ%M zl*my3{fN{aMAzZEc+orOSa}bf9&0oA94j=p4UW!RIto+ahX9!UA7i{A*AeR(%-1lS z0FOj4@%5q3et1VJf5{W^#lDMmrX{_IXbXK;B&!Hf7q7_5*g1dy#~vi4ak26DU)c?> zyP5nOnAy>Xa$*6O3rja19fKtT^Rt9MvAE{xmXoUrsAL{wk;Sne7|OF9YiU{jy$^=G zGxF~ol;3so?;Y5O-Em;r`eYor+pW(NzFo0CqghLf>(c=%w=?VW+TQ=m^;x@r+WIt7 zdvN#KKOHb1zkdJJcG%YXjKj+9%=+|3O}~2ooIix&G0MLJ%D`2J zH_@-?9}YTi$e8WG>mO_+HJWN?MTcu z;PcS+j!3P+SAHnSM^~iQ880G^{0KgI(&drwX#cM#Fq}}(O6jPKewSyF^uzdkVb5^C z?8=|`xCLl1e1|Zk#P17p)r0@xam`1~uojZOBWl7(^~9`H-=H(#p3qK*mPCDut>Zt0 zn(d(Jdqxx*L-dZt1bTmH@N+E6SZ&3q-3n}P6~*7?PbY&oAi=`HYqo&M^>_Z z#5m+^!9OYfpXAmd!c&O_Id+ljt#5sRj&daheM? z6SHT1k-M20*H`h2-Xb6oYB)^00)MEHg4O=x8$UGx;t6yJliS~<_LA~tnW5h$PiCDo z(CPIKPD<<*7I3>2ga41i^&`Y(DV8m--uZRNLAL`Vqo?bN<4^jr*a52u&^?up{!$5VdGfDni^W2Xd zj$61IuA*jQ#C2-b`QJC0_??J_mi;NK?oT!Nyi5KSc}9RPk!IYI)1^5Bk)vvHkS+k!9e9VPXcw-U-B-3UI6A z9Y!Td5l7_+nBKnF8lMR!`=(yFQZxn!K3j!B`lfN4A^=;sQ{M!9{~Il#0iXCH-DRG| zTqF?xi#}Ae!eVTerr_t5U}*x@9df=?4*}{4f!G~9V*S)mD1cJLG@iRiWSOA#R03`K zwc;gi0J!a`?5x(vcw`PUoH$d{%q3z3>c=I5t)U8DB2b}}^i=U7FA+<@8iKw_SAm`Q zv`W?n)f3<@0^e0_i6@B+heF8{zfkssqYze4Oi#bv+EYjZI`8KXQF*A1giyeeP><$> z`UaXLh;_i3z+xs_^-ZA6Bo7ETyWdUusw-zA_Ft?BsS+;8E6>7`#Cq&~_RpG|fqbIZ z3or*bfU@z*e*h0e^eAU8|7p*n1=xkSkP`)1i|d>d5yV6tCX%jwfoV3s0zF1}3uA;6 zw+Qk^4XPbHhM`ObU!8%+Ygns4p7nKugTmY5?SA)da0&d4P72gcCeB-{(?Y(As2a05}rz^I_^3HVrXLM?1k5*%ne>&jG( zmC1ugIr{O0kZh?A43?&4x-Q0~MAH(gB@l0u7l_Ldt&QMgV(d|@=Oz$GbWv>shDYp& zAn=JrREX39Zld^L7LffEZySi8!+hCfF$s_+fNsExy8@tNl%&|Rz2~|1M|^#19EO64 zyhVQn9A==7z^Fqo2VnV^gXf;?LVQLab|H2_9?-&GdBrhVPj`Et!-B(fL3W8zmIJZ9 zkvK%&g3RY2P!Wd|hz&)45cdmE#UPVT1N@Y6A&JaLnm*H8T zWCU{$8UXr6fjR0_6fm(U1v>0fEIx62{Ah$(`8w1OK?cf@gn$pBzM_BEEWXOeVZ_g7 ze3d6zOda=%K94V~C952GgYi{r3GrPer%5fU;Yq=u)U`=yqtQ1lr$9Y}FE~BwF@EZV z$5gZM#selQpKTQ{Zpv46Xf_aoij4%*&=T(j%S4n$RAkN9cueSY4F!l%WN=YQ4cp9G zl5}tkAlE7-X39aAq_hA^*0~=!B?|M#Al^htpjL5;P<0#{lO<@-!lYcFQCU5j+%{*ui*~`oP)Ttpo9?a(0PA zqTE^o@!NTRrPL86Dg??cK=nWe&~2Q`osDwUk`jbM9#tHt*6RXLF`1gcBMNXbQBeg7 zlwo1qSpbl6&RlK84Qlq&?ndM4POS#%WIeA>(1+Pv(0Y=U0_=T}65crD&(FlW`ukp5 z-DqkRb5jAvq}SXCE3ySOI<6afr2>q}ClmK(mC?&FWPwLd6pROU@THd1AHm5otibp% zXfzsL-+FZ(uGH|jGR7Z=08__mimlXfq==4G$Cs&sFAAg8DTUEFn5-((3xfwa=PnX- zrki+=VeA~F_j6|XG_d|Xlin~!PiV9qLBs>4{&=atH0Xvv3>}OY0WSpSK>ri?r(GbX zCl{Cn*F)x(A-4jU3Asg>4D?rDEHQAd=B9FE|BIoRJll{VP9)EePZ*Kxsq`@w1r zBZ9n#<5DC1i!>z;VX)Lj_eVjaVYFRU4os;D;R9_DqhZubYZxs{(=dWl`Zu+P(SMxb z;yO^}w}J^r0b_$Y=MCe^Avy)yM`Tjb>3q_B7Hu0WQHcKsGnT|<0`k*SU*e^W(lJK4 zM^d#qib>5`Kb?{2Y`iHi5!Iv}ND`|A-XOgqZ;}e(Q__hu6Z-UO zO0GsdO!v&FUkU*UHmXvL7f5EG#j-N>ip;%)@ zo^YSH7Q7em71mBCud8g+(V@M{mKF4Ut8CL`V8f+?N`w4-V6+MY_Dw6miw0XEkZQ%s z3pp7zawSR!+sn~hZFH;)wptZGrMF)r32CZGqNWceITwVr9@0fiv5+`epoH`!OiHD| z!s}9D5DtO{Qf}U;>yV^1kgk9(a!*7*a5a!7Tz2smNs%+P@35dtLtT0*GM@<70ewlbY1iMk-LpC*GVkVt-ki(c2N>#5=h zYVj*iT8B0yNoVndMT|}!y)90-mos}WPdgetz#n&`7(M6_MY#gx%)%e{7O`*vXZ8;8 zAY9JuZ6f4Oz*QWbyBU7ce2>3$!=F9IYwz%Cf~z4*Z|oh|9C))lv&fhA_~T}dS~G!j zq^DyqXF6^~Eh&FyoIscS(Gglh&&!o3_@;a1sh0ECGgp0iem0xG*Yuo*u5iZVDSzkZ zg5kqoVJqoAf1^%;y$7`V-0-QVEG7kH_=DhF)XF1a+M%Ut zgBOva6rL|f(I1?aMqULa>wh1YR6V%50zn1+wIw(_!mKdUD%>UYegwu9z^PD8rpf)XWpQ1Q>> zf`)ABPd4L%?r#31!2evH;(z`_^FL)1OkTt*0+G19p70#k4U^Ox51P+Og%w-SE!me~ zJ|5^`o#V{z@kKwx6lhC)9)!m)P9dL@E-#gT8aCVuHw6D-6}*P{FmScuKoht1`kKZC#9{zrGwQvBVMigzdeZcj|auV0+czS-X5L>L!* zCl;p=we4teehz=Pf`A_TzBoQ#C{IXK)8rq%@|8k#5c^etORKtJLj>ZB<*wd{4Yb{0 z;Ky!q*OnWuvA>Y8p`K1K@a{NDD|yD9FkcQW-!kXWYGeIPnZNybg}-%>w)6Ox%nS1)HqnGac6Pzg}@0!+Cj?`*vmt17i#KSeWp@ zm*Cq>tKcvG;jv5}_=vdL_$M(fcn!GjZ^WKi4Qo-e6B1i9kk2d`R6C86hUq2`d79xN z*GvGY8Lh%# zCS2iE^(ib+okU6&K4ACzh_uev0d;68fuB$w$AwN2wi1{tj*7z&lQ=Rq z&&IKWaVIeDIcjeXCpK~p5)hKL6ijNw$DK>J7Ki|Y{M+%2hXpE%2OZ3`v_egi67vY) z+PeXP-b2w4y0q-BdR{XS+vou?0A5dgh@+0jp8E3`k=-5DNS>VzY`OTEtPCA8#Qn|@ z-ie?I?lMTfvDbO|RFVGz(z~->2DHTY8~G`<}O`4pfObFw}yFzd5@te_`VE(4Pl-P2Nwb|7F8v( za1i<;OR-Mu=n^E@^W^WP6sFZzfefY!?hewsoJRz(LQ`oOZq7j_5dYv9J&9paVycKTg7)2 zfVN{T@rhjnTZt{7u!&x9G22FbgY`yg>BKh}w;JVJq&Xag5Ye*oiY&d;UC>N_cPsvX z6`^hcYN>I@_^03qv!cjn8yRAFwZ$*`n=?nD$IjC@@2>) z9X>t}j~$2zv}EA#oBs=F&U(T5E>9 zNgM@+yDM3kvV+fdBp-NM%LnB6YDqru?c+Rl|CcQD?laS-I57m!!J+?uDIYlQFKL6l z>to>_`J!z>Nc#UjkPm3)>gLCJbPIF!5ZLi*=IX9C?-cpw*3yN>`MaNVq2VzwRnnyk zuQ92)bYTG!f2MQ+hFCc`2x&C-oZwT?4L6!*w8a?MAytmW*k!5KwDATAs$5c1gOOq1 zgbK)GFtUdJG#oBN8pRC|m=~Z=XCQ>(i;bk&a{>cgdBY+prZQ0pZx)BmaYPQ})G%fB zqncY1e}oiG(kpVPU}3MwVImTQevz`?19PkMa*|y4zDJmDe+n~>P8x(-_~LeC58q;3 zhW__W`vNbT6;8eo__AbbAq}zzCZx+A&O=IV^dkJ#A~WsXq}KI=QX>iJvWF$0%)PRQ zofDr)r>q$XRN|GOtyO!$o4IE2!RZ{ph$X;_%V^6Nex)gH;R;^$PtXzO9`yz6>b83q zK6H&chs42=JA}aN&>s54(>p?c_CR<(A-$O6i-wrhl<>{(h_uLC;UsjGSG{A(9g4Kn z3RbdwVe|6tDjbQNK)GDOTK!K~LnEtm=eWo!1XIr62w81&EernTtmRYLp0!*cFU{6+ zCbkACF2uu`&8y=n`~I8v>e`%O>{PSHxFY2P0MsVzhV3qOKFDE1e_&gy{kzJI8J?yV z5N0EX@IbMJNQ#xN<`Fe&9t%()p$pXE2WlSGIA`VrtXc2# zRr7a6U;!zESJ`8&T5yNw1tb<=9x+4VFb-xegsFF> zsMDBOLZSfck3roF9pgTALJ3jjt8FkQ1H}CfoDuB@Qi>LVH^81tA>`KkW2d8rq69S; z;LZx)wnAXv3RW1KRfeBnd@<)QO?)RHmBLvN-vxVZfmjalnQo@XF^KPc(@p_R>WJ_( z3`U8_U?b>@AaEK>Ibyskfj%h43k-O}SAHR0;OQvXYjfYXDhK)Ick5Eo4Lf~lV1Sn2 z*|fmGg!2?3TO{xm2d_OhTAzK38`?`)tDg-B^L7m&1g*u*0RcvZ>45N*l?Dh^jk3z2 zW3hrgF_^iT<&&;y8|o@{j>`cFgUYp&p;o@=V!Rgh{o4LFegl>UYzJy)C6MTa6z~TG zQmlGeM)<9WTN*?}XVf1n!7{_pQHCxc5<7!HU|{2HG^D_Ic&|IWpD1b%65@w*hz_y+$Kq}_}8RSo@f(PVo zw*NEE-7Lyvji)I*#Hm?@9}GT2J7I9E(_AIM&TECf`4C&qlb@hcJsCp^5FLQio1 z*iB5A=&x6?xhRnkFo-~GT*5nn>#8`gLw4$Mt!onsY%1|-BrRP z!4RrpbPWh|r%!esIC91n`{erwEC*fiG=ca<%+{zw5HtS;5oi{1WV_jwEemy z;M&m&Z!QkR%y&pAUI@v$a1RUpgD*JCvcXf`ci2 zr(Ux_#79VVtJznI13YSw>VQWy%H<+I7@s8@I35i+;p^;7XE+)XBD{h*y{^Fo*$qh0 zt+9la9~dJSvlr!0`t7#WIW2Uw$z zpr8w&bMe9nTshNBV6u1e_++8f&m+roh~%IW%*`COlekyUSO?Dc2FTWAqL531a&H3gnl!|_i*%?$_5@9Zd*1vb8=`;hyhUG zhOd)Z5Jm2v8H|n2;lTFP)kCrGC6fP>{Z;`@J?a7jZ?8gCIws5oEZML^I^vWZ*kZ{e zS#o}QNl)|`U1v6e7>amtyFZ@Q?+Hx>5vLQ?gP96Y&RYJsn`}&a zqLs+uKVb0+{lv#I_pxXaA9s(!plGX+Wg}C zI1ZlLq6F&9s41#WV~P|#4Ucbq&?rbY5-2RAZ{jawPvA5�m4Do!J1}O6P-J?jlae zGw={$v?z8yDJA89K8S0%);xlz%l&aPFRBK9_VcMZizQR~E#@x%I0;0OAy8Pa!pMU0 zC*^80;Nu&P4Gj3$7p;ZMKl^2DZA?AOnE`KAeEgdMOI!47I;}X~d&V5z_Fv8cth8F8 z7aNTc3)x3@^mq&3p#HW96>|;6V-dqF?I326F+&F0;sHe7^$n( zaWepGl{}06HLtr21e2R9A?dfn!IL^UH=JS4roPqP#r<}JO&jUJ4B z7U=b1p!|nMD!KT|59)%!mj3{@LIWx&jMW!r)K}!aR;n6 zbZ&ISG2YUTx)V*HB+x(^x@3&}EMZllD+Xj|qa%ij^Pu_S0ZNZn>%p zd)xvz7(>uz5D_}nvn3utt?rh%8!yh5F!W#x`+=|&FP-DS(oNOa4%V!C;$WyZylX-Zr=35x^4mMfjsJXRq%7&N;B{cIegL z%0C5$9y$h|D*NDw4fV?jENRH15d-{T6n1XJ?XNR#e_eR{>*6n8nj08UAO12p;1yq_ z815m9GhYqh_Sb`tEd$J|J9Y|SPVoSYv9QoMR9jdW94hqij^X9VrvzRaQt&dyN`n{4 zapC0(5Vku7FN_W#5!*cQa^W6ktG4^)@Uj+n9}O>^01n$i*@y+0VPD?@y!=LfOb91O zZ3QPg0Fo1d_YIKb@UdkeSz_%JkeuiN5@;o*unNfj6jssZH{Rp589F)pF#(Up6nF&U zY2YC_E_j@Q%6AMNGzc*0q$@CqeQG*7IrB|}PA+%BL!5JJN^0SscmytW&bS;QHiepM z>Cms|xmYVUQ)mX>(9l}v-jb<{q9Qs(wjHSVm%l7c7xFRTvYXX~3Wig)2KmgpwBS4iGs*ojE>(Tgo4M9eXBpA~uyn>4PQ#QDTA! zYDd5NlxluH`7;}Vfavw7&b=x@`3ZX*WGZwMDV5FW`&M7N>KB928kEJ0Ae&!l9DzrF?ArkT6Tm?fVeu z>Wp&e=lu3s(%{wkP6F9#?n+nRw1N1#MUH@@7^ScK{)K^S5!z|&Rk;$QY0vXV)fQx* zaehto5=;y=Y0{a1R?*Wn1#NRtsLjY5YBO>#9~G)8THtc`nzIAvM+6%gKH&Q>_56+a zfG*e1+^#$fLG{4x9zNhJU*qa7e86}4WcYv`og-^gIl4&rg4-lSufZIsR=1Je{{){s zKz9ii5wIcb1D-se0cU8kXDO(%Lli`ajKz&XR z5@p~6ftTk6qT(M65G_mc^6qf2iqLq9?XWHG)n#ZLl@AecU!`)<0Rz}fa=BOX;;;hj z2LMol713=Tqz62WqNcy#3z*sJguVg{hherrxaIICCD!LII$sKi<|lk?WtyE=fOgeP zX6X&acefw%;`Br9gHoP_7;kn{^ao7P|3!eW5l(YYzZLDvK{LRK3E{I%p3{J=p;*svBNwMug2Q0WQFLXn*V;gN6SS5N zC#_lD)Oq5?g|Ur=85=7k03s&kTYQ6z+#4pr>)-f2z&gnf40!E^tBYfswj)aRmCpmz znfN>1(O)sw3s{%A`WzRO35LnwoNIj!_6|C58wG;2R0!>kuVB!(*oVcv){qGSdGP#8 zj?bv*))$g%|A6npYfrCflP{ZsHNpFXGjfnK!jmK2q-t(9d^v+=WNupK%i#n-by>x( zy`Qn*DB+}&M>h#|u&=VG)SvdpoO{eRgjZKBLs_M61%DljP0q70_u^T>N>_NmLLiS& z8=uIxGjR`WbauVWKU7X+B7}X%sZt$pgXRnP;rq8Z ze7^p`{XjU zkE9kz>JX+DFm;Hej*!$6rjB50iNE}tGE7OE@cromf3{S3Jmvkx$7is3qgUYn8TI2L zdt$l*nXf_MZ>Gooh{w87J^J)!$bm<3e>f>`Fa-kARLWweobF9|j46G*DfcqvV3Sgh zCe<{i5Meg*?MA#oubSRT31W6fr~^CCS)S)j04OK@YtQqispsTnD1dr%S#J_Vll_v; zL|P8h-a}g76^3*UACx@8sqpV87atA_Hdx)Wk6KXPz;9Nge-Tn6C;}khy+OT=G#h4# z8huEc8BCvu`dvu40y|d@4X2S4Qy(~mB2!o>AAdMOy7!G(1l8MHldv9sk3vpOUjsJH z2Tn~k({>efLe^NEov!;8!HAPtHMf`F4L|$il zpTbw#59$J#|1!?c?@N{deVpyb&m{g0FNW(y6cFI89r zRA+_*$sv3+XF#Dj1Cl35qEwt>(jSHIBP&8VY@@qVS4aA^t=8^05-Jc(?nQL=o8aVoGbBg1V|%*9g?bVK;KvzUc8Ra(UOKclt;mth~&Mtux+bp)%=WLH1rSM;Tgj37M$!sF5@@R(DE z6`&EsKrcC7NKoF|9)kV@7xM%4-Hp`5S*tpuYxE!3ME`+Us!kMPxC$4Gy4Fxi=3aVb~2>D`cSR#HvC2X=c7XBN65Ey&EIkoN^B z5m~`i3wN_W)rBw_LpT}hCSWpN(`lUCo~&)LQ&AtF@Ju?lLhHGv^>8oyPsn$=zhRQ; zeuH#h@zns^7^jPGBQg1h8SN&|WCGYTbD4jVdm(bbLP|aM|Kc@!naUvR>dYhNZIFj-M!)) z^nL=@0qdbTvJl4O_|C@%S^YR_X)*qU^(2P89s5{V;S7cHXV9^a4WcI6$NH`3-bbH= z&Vk}0NS)%C@gCdQ+$YB|&fS#yc008`*FBrIK7Bsh?bgS7Y*(z$nXIM7_4%6fy%X#6 z#G}9E`gDOkI{cAy*S!Pr>29`HGBNgFzgM37=eE}3a;(zMti>UyX=nFJOa1`l@-?XJ zw2Y8v{_`#Y>A!p7sws1J#rzLsEiLYaPdT4Eu@@eAh38NA(H%S)am7~FYUd+Me~EM4 z{sbA#=B$#_bRcFZbU5ZJ+_zx;y9F4oJsU;6^JCvF2?elAtd-~v&Y6Po7s&W0=<#2u z$3Fz)KU0tY08qN8fbE?R$H@im_)kE&GdR_rxi;h9D-%rBee?Ii)tTj!-Jsva0k-#N z)?$F6ZhCNf{Zd0b4)f6$%q=LiUP@(F-UKpQI`2~cJ;rH#%2)$Fk}$Vc17fw?b-p&j zu@7EDL29%18-@*!mjduBptu}ps)f?$fPq5041BH%P5H#(CcSy&F%SVP{YZfa2W$v; zvJb}-9Da1ik3?MmBJ>fMFJsVUfBY_LF~TN|Z?G{ekst9D>bK&Q*N9OHyn7%DnOJ?r zp>tROEv@olk||~2pFP299CyXy-Q&7{{7Q`Q9oRss7i)=+@9K}2Q}q@opdJ)Ab(P+j zy?u<(+`Gpe4{aMGh%0rnIN*87!`~2k<-+q3jcJ60A=qMAj3j3Z5?WJGOc;d)21A+J zq6Tyls z4Qe7@`R#%7tt;8uQCVlgRUe+(L2VA?N#5Fl22 zhSBFoXTbhX;E#IokL0Z3u1KxHtr)0C;$;rqd2B4MGx1aUmumB0a4eaDd~ynqA4k4F zp0y5kp#Jg%_9S2~7G);NRO&LLr3^h%|B43=li!zUgH z1}@z(FJKi603+tIt?e3$ZV_Oa-5FV@?nO4H4X#qO+qX@)vuxk~+0(9-^&u2@MNZZS zaLN*% zs~hU<%2n*8>*TYOG@qrM__ugw;15q2lcLzew1j|Fu>8aZPa0IdxsCSrjUHFv(`wfI zhBQ`0xa7O1hJbZnHESq;egS@r9caTy>G1*E7hK;BoLp^a;Uc_>z$aYm+ww; z29r(G>rj{U+5l1iZs3)G403?#AGm037pOi5U21@t))p|6G1e9XqgCjN?=MS`>$^LV zT}QWvgDM7J?^GSwQPmZxs{K~hq0mJZcCO#Je&p{ z?6JT6IkFWDbcC*wxt_%7i%FDGLdSiQI+x`zk@=kK_Od8~bolNh-_4SSM_3_WA*M*Y zT~p;oe7k3q=+zf}4)Fg%JrdNsQGyNe1viUVltfx*;*}Jq+ya6vEz$)ncH9^|K!JDO zs8JwJCFYc18`TWH0n(DGWoUx`0<}844g>Z8r(pMFwQ)a^=?Yp8bEn`NnG5|`g&+Py zDz^#$;gRL|PaF2E>+vndoAvSQ=z|lhr-a8rOzPz^nMDxAhY9@fA0C;)e<)RrA9QEq9I=r+`CimAHcl6?4Mjfua8#|xQd=EfBlNgY9ETi9%jL`j z3jGMT5?gtt>A|Y4tck{*7|haZ%E=UTwz5BV#w0NJO4w-Z%t<`plHs+$eDr5f&B-w< zsMcK}y_W99b<`Mx2ya4;_?Ba23q7J|uj1-ckVuAK+Ujd>gUAta)P1^EK4U})B-axL zr?E;oER3F?sQKVo&xAzvjC{>K9iF3397-6#dhqoAL2}&Fn+La=inQYR$U2#-8>JeA&MCnI z{AP$VM6t&wvF4$*J%{3#2VzjvpLiLg^Q4y^WYWpX)>7%KuaNCwoHl4+ayNkBK#+}8 zqn|Pa7+eD-0r_<4cM)O5EN+Ef+%h%#GVkJ6w6M6dQNq)$sdBov;Yy&>(F->cq-1tJ zLP7guPB2bxI@|>JAbL_Ne-ZN+Bj1#NobONIourSpcl_JsvRhJqXLFoQ18`0`1s%pE zEA1psK|B9loPuUBY0e0kddw#Y=ziyrfb;kbH-xmeTKT?MNAp}b1wHFN%a24C*q_IdU=Nd*rsM}UIS%X@?+52Hs|T{|{Y`((nyYVzQ`}^K zX$sHHv{yOb8FcdoO4whUMEeUo*c($t670(3EV7z8pO~Djkm_rfaUd(z%lNeynNp7I zsjtyUqwMKe@MpFqZ+f2lS>1*zcn&`dZXf-VLf*u2GHEnxKM5#R25xZe-t66Bsl*0$ zc@tTM26KL`p9T4Rif8af4&sFFkJ^&^%7lpI$X;&xjSuzyM`8QbRAM!2zMqNnk!U}G zKZICzW^QJ3wDXM58(A`plF4ySYVyit*m<_^OjTOKqGz$_Rc2IGOvz`;@0<@%WhGO4 zAQjJLeD18DrKvsfjA8ZXB%OXKh6Rgc-LWKM#F{4rp9i=QRjs&~)c~Wvr60=FGCnl( z+dBIXys=`v((ju;!@u}r_qlXq%D?#0#k-S#@wz{Iov`w-PdQ;7AxE!87}&}QEAwzU zqV^12x!#6apfc1IGYjiIab3+xHmsUF*h1m8`sc=v{NhfOhoI@##*g#^2?SyrocL?? z05-sr5TA&p`95J!Q>`9R7RjY`V7D0(lu#+TTA{~Fg6<9c$XobMk)Ttqbw2uaBv>$)(*~F0`WT>O2s|@n$$g|jLA8hGX-)o z=Q;P&F*>F50ykv{Q{q{9sp>}{1&WkI08NysuU3A{y%U3cc~=sn`lN5v8oaR2VenCE z8*Wj{55Ni{<|Jzc&JF%?ZBz2O)Eyr@1afSe)K$Gujs(T$z>c^GEoNt4bQ(i(Q0 zfW}YMLsyfA3NG-+rw9cXzmpi>-)pIV$q#K{wAada+eUn6z!GDX2&GFtYvYfHay9~J z>yWETf6v95#VLfV1152i{P8lWEMB5e@O>7%fCXc-_>Adlke{}Fmmynr_;Va+7CR98 zuxUs>iqxlyl+M(to&_&@46ILURz3@HRxbf12fy272nXX&xmL#{jElJEVAk;!EQ15( zo1qN2H#l&3g01n>*qw#3hQf@73KX@9mLQNLXg==Q^37s`!fWuW{gjHe&1Ny>l1c=p5i3uCG zJ&}rh84rqohIz(#dIkn8_m#u_B63aIf?W>6m1_dzD^#q8S46l6*!zJpRNYXLn1Vj^8WJ(A z;!O`^zYf=>PPm7=laQ`=C(k%_82f?PO@!fCYoU9Es^#v?8od_G@iN$vjE6yuKMq1+ zJ=(EH;w@-}@?cxDs*x1NS4hQR>I3DkV`qmGq%a7?(ShhQ2IHGQG_igu2xjS^iz8*{ zz$Hr@ocZ|Bx@0^5n`^+PUjj;GrdoahS?X>iq*7@DV>!Ohn`q3E2-3KNv0rvnzq|bey8qsD-U8;%>)bu zO&SCmYH{e8ZlImxv)Q#F?$_2vf`n6n=99-P#l&q?6W0uQ9i>uE0hpFd62Ov3!?eE# zzMRK8)Qx#`G{VQs@J-q`)Ko0PdQqH)9^4)B!db)1-{gg>fR{()C7)mVqI3CzDC)lG z3zFOny3gcr4D#PF1W3S~7)d^?mQR-@Y;Mz^>dpOg($uN@i#m1xKI!Vz{Y9O+|B!Tb z>i(im-M^#-b?PdrQ=cIA(E%&eKgYl1v#h==JoFaSs}H6<{lWOSdn1&qyTft=NB4)} zFQM1(iyRGCm4VFV^rn`LN6nvcy#S1={4I^ncG~`bxi9iKmr~pRSKv`%|M?=Vc%mDs z^lIE}C^?W*w50>|pOq;f#EE?M0DU4C@E8xe$M{oN-Q=lczBmzaKgb4F2Fv%n^1U?_wTyACPaE`g0IBbh1AKoV0xFVk9tlBo1luCHxlRe zlbS(TETM`y{P<;{z0A-e5WtuVq8BtA)@>eCq&qvJQw-2 zVnCP88Pf$d+1KKaBK19XYd36Hob-Qxn;Lnp9QzGwZb zpC2n)Sf5jOtM%!Mx%l<*Am6%qd+QUz>g~+>^ha&GWPOS?Sv6>SJE&(|m{O43hp6$= zX|gz2jg2U9^0DEQgVw}Ms9ThsdStP$u(5dH+$tbVU%DnF=yRqY(aqf*NS zeby%RRMcHAzE=Jnue+Dd`fE4tiglUBT3TF}-dM4nS(mRT?fkl=-Cws_AHQY|PH#_z z_G>_*VT}T@Ch8n_Bw5lvB5MREobRXTg=2RseAg3`^6T;4XA`%F?;=>joxyj7sBIVF zJ69jv7g_DB&rhyS_#bbR^^pZ3r{QMcH?S{)r1oVvrs0#TOYqQAv2Vm z4s(L0L}W#Hc@lh5coF|1+{vhzpNMi$G51A|!Gqrk7&$|8qgzlZcLTEo>vX_K%cD|` zNSWlg2VxSu1q!wa8LUX4!IdQn>^6b0FnbO&;$jeoj~3{+F(AajcOyZMDyor)JSnM# z*iyxJR4IQqj9TJh1dJ4K&RBTr4p5GBGuPE1QY}gmWlL5K;TX81;4F$Y-1$RP0cz1O zu=ss6W+VvnSQhMO*o<-(pi-XP4_=W#YG5XPjtAMUU1Z@!_6Ftm2tw&@Dhf_rbi2r*qp;vGv1;gv6&8O5F{LZL}F7)(NHWA z=mm)l;Y;K-;Hx3tjL2&m?HqjV%9hru03G;pM0X)wk7(+t%|=wUgAom32fYDwQX?AM z-WgFg=GGaJeBgMxg$(Lw&Uk+jyo<{T=3d{Au*y^A)3ZjB9ASzg` zmYl+ipv-chd^w~AvpJ0>suN;9({NWr2M8NwB8^n?z6l?*p3zdLO&rhiWA*CEytmF{ zIY;G#YLn+) zwQVdQuDOH``+Yonmg-bzsg}D-wE{g#1HML2=UW245?QLEvgVNYwn)_&=m-KRcb%lP z6(v(zAa6nXIz8@Pr~C2ZK%T=NYH7VfsH27T>d3iuyuiwO4PmP>9TLW~UhiOp5cS|z zZ`R8To$h+^V|C!b?XA}xlhf8KB89V_ZehKmWFp41J}LID7h3>7eE^1o^&*GE?uqAM ztT9mD0PnDq8d`|T;VZulGjF)jNj%z}u$Bl)rIA;YT0;^>jFL7IrY@!x9(U(~sM^73 z)AnYY5S{`KAv{&9h?L^u#)OdnUcU6UkEge$u(||U_B28d{?G9D+5q12Ns#`#>-8Hs zAtN9A7!wC1?flCr>_`4}KQh0`zwYBi1A#x-8pj{(i-F99eWY=<*KC`AIDlYNRA%-# z0TwVb2|wOF?r#n=-fiN-3_n(@^S1{x7vGo$Geg+Am1W)Q07hz$pLe3H!lP$7S={4n zLF0!q)d}Ag#~R?|g{O{(Q@bMwil!jQCIs!14ncEBTcseV*TeD}awE78@Ic$mx-4Q$ z)aqb#ZZrz33RU~2J&L*|IvxE^3HJI%b?JgePsd2M0wVbLZPO3ZkbXI?Gz1cgez{EQ z!zI?PWtdjLv>{B>j%AoOf@vj8YvxvF&M$?Zk0A6Y&J_4rgvagAEZy^=q3}eTV{bM% zO)uysNzJhA0)!4nx+I^v0^`U`|+`%@5V3akFe zvY{L6t+C`(UE>5zBwT)iY`prEqHKY4EaFUbkDkRY-2)Yb+9J*@P~;Yu;u%MJMcm2K zXwuLJC~6hm38hV6^bDlhVf@hw`GWFm-9TwIVn~%{`WL+u-KdQs+_VWV3Qel*1<=UB zY=Cyj#Si=TLN5NO$nhMUB*GGK!ZlzK_tJXH3q#k@6!7x#&>qhb|6=1uUNiDayk+|r zo|HRsQpw0GVH%h{3f6$Rzzsqy7?)yf%JDR|R#l!x-(pOIP`NKgNZP>{J%vx&H%-cg zjOwrBRj#(_9~!hwHa_!GJ8z=^&|sBDgCi@U95J&vF2$((3h&0+x#&h;`3BVB5?5>R zB8T=$D8zV)#rLQTL+7FZ33JYR*H=?T;Y#R+)vIUv5ev3N7V*m4Gn9rh4`NTPtTlhu zPzPNQv1i=FPkY7;WE#6B8bbg|sUFhyI04klic)}TFQt`@iM{&@+Ly_TyogmtMG5sR zlk_b5q6lQHwZ4De{=eR)|Mq74|F_)vJ)8(xJ2(yhh;f+RPSFU7D6CE&fPz}s7vhc{ zCS?dy9$`w3Nhx8<45Yvglxn!snfYHBNZOA8-0+rndd8x)AJl^ zNbbRJNbCMbrrXaPGu@Hls1l!4p^NHRWKePE?PJ)s^HCT1XkV!g#<2U?hnQZ#veg$M zMT7!X>O1t(ZmY8}P@*yQ*JCNR*`RK7Dnth9AT`BgjCC?ZshZ|GBrh@L9A7#&ogXp7^wb}f!SLJ2N*@l3KP)SAo43@rk(4^|ah zPmI7;@LQrlE~?;LiesOtQCGIo$7f1G)URzY;e$cX(nP1)De0K#gy-O>MxoW}!N1Tr2eW^C z!6`U);`@yqsEujXeEz=rl0Ls*4AxP%w3SqW+ZM8a8u%fs#)qZB$F} zi5T^KOrsu-d|b799EnAdCK{`)R-dv`GiTOk1D&+jqP5Sxn^htNpD_6cjkQEAW({#*`V%L0CDU`JcT$A7A>v zT%V?~Y3q|??RM*P5a#38ug`nKx3zytv2r`JKBu529>cqC{}_2)*}#m@86v9NBBCJP zTSh=D&5%lb9W)aJ1$2j?`G=!!rRt02((j?1;K1jrfbl0B2&X^V-gc#0a;xNpT#;pCQ5|UI83#}0sCY0mh0g>g|T3jdw)T_lfVxI4<0w!mhln=E8 z;)Apbs92+|AZTNzgZ z*;~rsZZR}@2_9uRhIeni9Cx5nNbI|FMa%K*EKNU_^G0R z_#KA@=$k)}wR0o-qVy|*Z74qOT%@~J-O$?%>i2B{fc5CII!zYxr4)m>ZU?f-0yF|v zEU#61%xeR^R_cfb*NR}g3F67)VNmBpHINUiC{0>KJb6Bi?HJymGww>h@*rf-7<0Y| z#tZP`B5haRy7r_s3e$*=cFce2Ux`PsagI8Ft&gKgiJ&r676gT5C!nIcbXy} z5C<6~LyRRKIY=vbFoKjq{~4o1&JYLB0F%gNT07nxV0K9XJ_^`v<@BuFZ&L{~!y z1rRBsZnQ|Ng!v+Q07M#E$MrY9$i9-W6p8^9{PY6*;T4hd{K&IypjCyg`KEotmpCvw z&-p;S4es`W%b`sIFDwAtnJ5N+?E(%YR#bsU(irfs!gB}YN*N}OoC{Gs*BDC^OtP5I=`GJD%EPR@&4S7XxaEng(ZKI>B?ODY!mU@8;{f zImc^HY-7x_3$~g#>B=q|1JH*K#FWIt)mT-sSX9vgbWj8HmDnu4V_z(g(wawn1akfH ztPwIN^sy)69XW#8lryo?%sk!93^JFAv*R7~DZGKF@F)9AMJM)l6HVVWt!CDGWEeoon_j*KRHaaDw3s2aHjs+Rp#);qa0#LVzA3%u)_4k(3Q>L zhg^&;dwLe*JYCVFrXu)kzye4U?{(n<@LNs%6|mj5=r<={Eky2fSP8J`dFbH8DFmvr z&&D4QN|@VIw!1Gf5b0Vp*nnzqdNkq(UuV>atEqI+;HSu|joSFDeS>OW0Z?3WzZrt3 zG$*0a^N<2s83d;`t$(2pDpyxx>af@9K}^@3FT`}hzwp|SNCtC3Fdqid;58%1!AobuDBB*8Wo+Og4Cr(j0&!a3MAr^D8V;6V{xHU6~!tFt`TN5 zE@)t8Aj3E{E@)~+W38IjEiNEh(IAk3Rz+OE;(|rtK1U&nCLl<@|Nq?k-n>ZyN^AT1 zeg6EBH+R41oO{l>=bn4+nDE6{<5yqng{v>R;=&0N^7%_2B1$HHWga3nl^zD5==cH2 z=^UGt3^t~Z5QFY;i zEI$aAPos2#TjnrWeuyj|)@g_32kXGanGcqaD39^+V3@ce9;_Ce;65=rgacv~EZNA( zwI4x8TR%VaMOJ`rjco@Hw?Q63#E{d&kCKA*-xW);jK=TI@Jn3Xoo?d)sZUN8 zUbc&Ui$4CROQ)&4vA;E&PjU_DcPLg#`66p}`pCR|ZgctD@+MdLdk)la{eCzAl1cSv z=WD7DpK2&Rd{(P0cFj&&NJ7u|)(7ToYSC^&ul){k$&AqgC(Wm7?%88mJY1WETBgm= z;~+Zn1$Bia%4!PNrT(_X&6UK*_=Wku9E*LnIWhL(Qzm)e?(QUg(f1_Yf}UtZG7Q^T zN$HW$;iN7@hP?y{!T9>E__qDO=0DTyi}p;zXXQH5ncn7IzAN{2V;F&#Tu7aZ-{$n1 z%$DXhxev}QreV6#-%)!oBvY~*L2MxT9!t|Ih|*+}S|wVNm)1gJw_+tq05mCLl#}rF z_S;BDlJghnn{D&0CZtj0UxHz|Qc@mz8s~IlnN7z{JLWIOP)Eu>4P$V|b7Fct zp;4FzHKNpS2m~`G&5mQwu{}mFL9*NTDkgrV6VYHJ8~@tZg_O_7i0SV>9c8I83UR->XJ%hV02)6#oT~dA1h0-@z&qg!c`ET5rlmX|kCE2@Jl+6?>p@0IFDaaPUG>G;+2I?1{k)%cziTk`#H|z`Fffk7Y*Watv--^ z(rn4I9936aq!BNf+iHJeirC#{k2OW7{DI8C*=nJH2yXbJ8gn~R%;p$Y9xVWm0_?T^KRh|$P z{7GO}ewZs60l&B;Oh_v2RR_hy)8bmaQLcmA6_g^q54Pf`LiOp6pH(<7keSI=`ec@X zTE(68Z=h9ekDp)@dWT()^agi_t+nNWyNIe;iXlK@KAShL2gnA%dLbMdlTSl4v@U4L zSLI(A3XLE4d;EfyJSP9D3$GlLKTb5V7j#b8#N8j4elNGVwEsmgQ#X|!3bjF?gsByx zFSQp|C%~xyU}Kn`vP^*ehZT~PHcS%|T+gR|OlHGhTA9ehm%0qiblR|tkhbq9`thpg zRt$IPNL>5$0-_O#>$*`U3YWI>8KYf7?!%jd2R9to7f@4R!_winKEe;jh9&m{GwgLb z9#?8mFnJRrCarEEhkdc9fW89rFfWmhmZ?50)+@J9eejR~W`(%7_a}Y>)N2ER6Zjz^ zq~z>^LCkdU${&*H6u`#r98qBHd-gckM6@(}Up?=pyZu1|>A7u^U{z0!hz)S8`~ zy=^1a7SOM=OtlGOICU0dg2+c%t=tYL;iva_AdwoRU?=m`4zx;$ueg=S`E(z5L&JR8 z(6F1#9k1@fD5Xgj#LMc0bGOaeavUIrh!JQRO|IG7)j3VCYI!cDB8Q~uYc#&pju!%I_|hsXs1@5PKJzt7H+n4~Y``BdV=9O;&oD8hh22mnk@N*O=F~ zzpikN*0KM!65Xr>jbYj(xK%E7%eo8%*Ek3sqFF0f(zL!B(>-={Fr6pI0v$0u)`RIm zJJ5u+ZjqEBW?t|gB#@H~By%DkbfNWY; z>@V;gjIY>=g6)go_NcSLq;1yT0}SE+9|Af5>kI-p!VpMojbO1WY4tNN0|Y1Q7X`mW zoLeC<9s6y__L4-Q09Z3ey}I4D3YKq{b|F}Lq2<;XThs(n!?rg`+eWawoE9uAKs_G& zRxrN7Ki~s@WCLOxE|w6F8*n!0N5mz3p)LFvO=YF854rm9f745Po9_?J_eH;i^~&sjoADV; zj)P$Q9D)(fS-~nb15f+H1l9rw`6F-OXy*w5vRL>f0v!SgE@ozYkz7W28Q(bQ0ex^U z0giG-cXAXH=QHR2Jsie@aFp7zh5$*zSgi!qC~8w$qy`h>;_#o#Qi)UQ5u$so$yh=? z&(?1yMQ;PXg7LNb#Nv@2O&L?#(%I84*_Xit>`ZFPvZ}Q-nU(_Z2|sU z1N^oNwnx6q0Q#lF_^&h*TMkmk?1Dbvmw3ATC z?uT_5j4#}(3|Wbz9b=?CWjn}_3HaxKgNx+A7KQ;#&Z!02!L&zBRDG1~<*v+87b9ug z)b_iUbirMpMKi52wy3#lJ=?yY-TjXj<&-Zn=wo#cquKH%j@EZ}=ZwX7WptPNPJ;kU zPT|!sL=FZF7wRN3EOiu<5^_@(ISou&vUyWlxs_$hWYKEbg=f(N_qzG%y2&I98m;!w zbsnwu7BmU1w(qW9tyVhAK~8Io)itD-5ziCsuQ_GRar>X=6PCXyyp4;iLgix zyz>TGTzMFw!=R4+L1rRS5Bmg;ecmP@a+~Z5>)vn~l!@CYwnQ;6?1T<*|H=hVKD%f| z7vR#c^5z11SauJ>FU5*9=9#UI-eyn@QB%Kn!Rw37KxO+c_^0DJg|-*`lFldQBHrhB zu6{NNpCA|^{uBa0;F}bqKEb!SZ$T7fhxP#<5xBjx(S=*Mw|%f^urTKeAaU-=tr0E= z5+39}ewunav~at$P)o{13kph!l#&Erl-IJ+LOrtWr_h4^82B{`V0oD};ER2PB*$_u z>9P!bQF*Qe$0uA0hoBdD|N3H=vJnKBVI%fA{4pLsY+R%0a&+r3bF(|Z=w5e9RdKk! z=-=@hqpM*Li=-q$htrA2*yc03G=Rt{tBcozhRkXliEpzSeK8!!X4w^P;YLDyuoUR9 z$S;vD^z35&(5B3Yc6_^mGZ~=Upc|gZf$-?mWtb*^iwFpf!C)IX*uBvb&j7ARwba=t zlR5+c@G43Wf8CK?%~s#XKS;#T8#uBVZ5(>9_(1OhK*DUPEKNyVNi$6;Ak4_|Yyo{!h9RX>F zIHe@P_l5J}dKkF?XNbPh_<0{ho*x!!&I zR$;uI<8cPIa^K~tVr}*|_mL{#uKo+VkMzc&KgWHFscfao`$&f!jwx@$eV4BeLHWqf zd7oly`0)+Sz)uzLRQ|H=iya1d{O9*wRv)}2{3L<7ZNX0vE&bg1@x(vlnPo-{!8UdI zKnF)KlC-ItcwsHpi1;8)_=AICxR5R!B59%F+_2zx{n7Xx=X;ze_7;L!m-G)Lug}IA z=K8=d^{MQk5Lf>Zq9v}`X2kpH`l;-{5OG^sh~CgWp61yq>JCs zi5+lz+fjlzAVzRo$IEVM-0nqOeu-#CM5|erJK{bQgWq?ELPr5BQRw!-2P}*{O8Rd; zY<~AaKL@skvz0C%Hg6^Lw*gzT4*WN;we9lklOhLSa=*6amnYADIN(1-jKo=eo~?8# z&qe`dTSH98`?dR^r7bNZd5V*J%MNh>GwyFOp29Sr)!qy?w&4gk#Wz=N7{x!M=DF)_ z+V(y3j~y5O)wJJaTajkGKHRZnQ6o!tf$vFQ7GqZ%$8#xhTr`hQ#HIZ!aiM==etg7T zj1)N){5V+hgD=t(>x!>M4O|Yd*g!nx+Sf~`4JnPb`=Tk7Y@M4O+P7#49_)y}4eRvy zmG*l`O&jm&kM>MHRwzqEL1_}5}|6o0i@J^Ju@S2UkAS$GrGn$*ODe5j@FxgCyx_3>Xmxlyx3Sws<-LpKEne5s$px+D)8 ze8vI16i&wWLmf<+SN`wzIK;x&^cgg!LN8e***4 zA;BauUlKh*!6da*Qaxe8Bz3f;b`==x0bV@o?}X3Umpu&~*doQVI)#+`7oPx&o`Wrk zKl=?niE=nTHI+s0#a1ak@h>`}#FP{XZ9ZZfAsocBhS0K5!kE*-)$})jxI9j6!n1`p z74Ye7Hy?R;X?keESiX=wwBR!ACUb^*0M5KC0B)v#_=AIpp#>GZ;}vPD^fyNfY6N;9 zR(#XtjsNkxiXZro(KIUg!Kakl)aP$O~9cSP%cD$C1?DPl(5QA0~uhy|+;h3v{d9pu<&7!!FCl3L(k)BD;xSLZm;%KjOgx zjObmt_b27GB{Xw*x)~a565+qZTS%Ir@d#&&o5{)JHo~_y&9U&F&a_<^IC5MHku$BoS%vbKO2&+@M3R;lVazR{N6|xa{i&^adQWHN(ExzPTlUD!%A3s1b;N z0q)4FcfQF!{w`^m&=;>j2L`MOWP?N{7lkL&;DWp4TVpN<80NwwOM52%X)b>k|7H<9 za+qzuiyL|!IF2lQF8}`~qdCNRiD{sDi3!|hOV2L_N;ZV@{mHX-&H|@lEaL(17qv6q z^D)(Xmq5X=N;ZeT4rH&#ak7I+au6^QA{0F2SsX{NR?Ao77zgo`$+XC5Oj+SJofu7e zMJHqllD!Knsvyu;LtClDvu=yg2XUw#r~)B*mf@9})>ji(>XRxVs$1^X%!+a;5*%a%^;<)0I87DAV{&Z96cKImOW6b#Gto#cv z2{o0^rsE=QWLRKXfC+oiE{F6)GeaB&Rb&ZtxJh5X-NeZ|ECc;SIAj)z}*cz#hu zC9eg+#c{%faaUiJ-=FS}`XUel2#)8k%!@#9ag>`8aBU|LrDLfmnsX%c_x zIpw%K^@BeR`~`GlH#HpLZWc?KwdPiz8hcN7FfAR5B~7xLLm|+FRMuB>#Gwi|EOqM= zH41_&IYZFM0O5vnsGQ}v%(BE{BxZOf9JDLOlzgI+-6m%C#~3 z$atXgROz9-(L7MuK$mos3zc{j%VWXSU6;-y@Izi$rQ?kguUo&bD*iSrz#zZ?ss+Yi z4+Bds?q4f`g#{%S}oiWAtz}yved=CV;>ilQrPzuzL9X_Bn#y+yc zMG`5G!R8v(HEbwZ4jQS_B~65qfd0+r%nU3>>h)`j+W{ONI0j}6;AD$?zFMB5s4#u};a zx(C)!uYD>lkq+5X5LB>?@G5Bu9hqh(+;4QChucxnLl11gX_yVDYnYEKR8)Qd<|^La zzy1@jugE+PS0o|QzlT6wBaCsaTK6$Z@tLVF@BuF(if`yYiSl>-?F+cMn!K(R#MdMO zUZ2tQKxeXEqr*j{1O8vHAegxvu%1sss(lLn`LVYPc@HOutI*fj_h22%Ue9vh{QGZt zXrV*A6rH@OFwaVcj>_}TU6F%`qIpC6FuZdg=;C{{AiVP)R^(M|s1}D2-Wj_1KE$_v z?hl8Y03wgD%j>nClZDCalZy07wpY&?O_}74kdWTzJamv%_IX6#aVP`NeBFW4^(@7o+~aq3|7Gc9vV;Rt8Ew z^+jP+6})_Ey5Ra`T03A1Vi61$FHUKMG(|5zd~2D zQy^jcO#R!4^spP8RX9Sp*dBy@FvKjjy#Ngg>z3fGctOt%&iWX03>S%Z*Hy^H?WrPr zq`RB+rzwV>j5Ii07<$0|2lCOAF#mIc0|Dv6cJHSYzBkSu6LN0F&x{G)-PdLx@B$pj)e;qRDD$5@)GK~rpD zGK!=h_Y2{d-BD}LI%01ObOZV?m;aMK!m7;W*~c!^Y8&G@ziHu-_-y-cHvw3{6+OdW$fG_I~( zs_~@L`=O<>jS@SPfmQo+RGh?j|o)rtEGs!)*^Vz&C; z=<&h$<5E(+`TZ?Y=hz+@C9)i7gdz`^gzPRz@U?kA-<38>XKkgn{csj<9lbBWhxr<|}99B`* zB)1H+(N3LIrIpg?ISxU#sy2)t11wza8Y#(Fpi2Y>Y`}>M01z{l$vQBr_(I%;D1YBd zmcgdA0y~LVJyKy%a5l2ZvK9E8&BVDX2XA4)NxzN;s>r{vO2@Zb18~`TCV45=mMBK? zcdWT9b1;P9Dt8EEXoyBcZsAY%@S#QWS$~rEs$vWAiAN7`{jwPOw6lb3g`SN4@fhHd z_D9f@u`8~E{js0}Il;bZ=!p!osJG@O$=*C)9iPWXpajE;B#E+w6M0D6f6H;nOj5AIu$!S)Y(#e;{*9Vdf}e?* z6$DXoh9!{tL=9g8GK(zWMo9xl$F@k6gGaB$KAu`7*2SW?xl__=z#M)j%5jBMhu?@- zlcfcdSHX_7R=tIYduV?J+ZS`v0#bAQCDftO;%2h6=d){bE zVQXA(4Vgp=^G)T&eAz*J?MPe}*jlvU4+=4q48CYb`ji=4vLk)T;@e?j*iJ!O{Cjj@w7%)t>r?Gwc zB_Pofl3-H9mQeQMTFokT5SF807Z|&{&t4G#k%%FlUvl-fN@<vr;w#+!Z`>Zm?b$O5f&_2<(piL=SS?FaEeE;u&ZI{N|r}dcm%CyM=?pS z6JP9IkTJLRq)y5b7xLI!_P_~IUci@!N0V}Wy#l#;+;95wC9x2ulUzQVlv^mNrII?F zseCvocetdEmedNS^68}93M*n)!Pe3v48qfx4Gpl8XXWNu-IEL1eJi>sqHU%Km5ywI zZRSXMdaI<3rcse&R!Oi9;j7G#Gur8#vD>sowh-=RCve4no%q zgH{gOs0VHe7<=WnJh6_q(SjSnCmN$pqQlvBVWSjg(yCs(pEgP|f$Z?X_(1>J;X$&y z)i%mElqBKidX~Dle2eWvK_eH*yG<8NV1H<-bzeV?n7a2Cf z=K$B}LpKV$mF5tR-3l&rZiR<*OMrE@YqyfpA=<5kGgPq%Im51Y8z_q{i{0uAAv5sw z3)tz0ItwVYNIcs&yQU|t#!x6u^L?>t$B!%Di5V8 z{yG||RxHdEcqrxyJa*8?{4NA_J<>gbnno%|PLjBt(JdGm4I|Z3S!K-}IOteZ zrupQZY1uvSl8*Y)ejSF7im*?KsNN1)b_5N8S*5;!d0wC<%k9wxF4Xibgu9t=PHIHz z%+%>97fg)79_F*q(Fjyh#TH6d;@qbz{o}*%8h>IUTp}J}Idw;~NF+6DKH572mZQ|? zsbA@iWo;ggerO!(Gv8Q^7*tveT~XBFbsumvgrnXSsUGGw1kJ))6WW!0_i*V0_c7WK%p~Ro z`uRea^F=*=zW#(`W+JZx_Ou2ygW6Hr%(PHHQ}9#FOu88`=C9S08?&+5d$b-S0vSn* z@u{=*FBXH!z}{e~YCt0FR#H;GHqDJ`{2Lmp#fb$$JbsT9_bmW$2CWS1YZ`4eGi zyMC^vqgVEuP=mWRG5O;UP|CnwycKs+?AJ5#i}wmpNstOPXkw!_-Sk~R-D3gO4>$1t zNKDf?^&tx1olBF=M4D{8S>6L7$l8yWYViVb?F#WkPNkbVtm5CW*Tn0=Qj$40?7Xe^ znu$34ZdIqeO67TA2 z%TUJ{U=4K~z<|yAVi;1GSb>#2_FQ#IY1go>l>oj8*bAh_b>;R#vp1 zUWjqPw{O%!Zv4=ad)`dlMF#M%T|5JzEm<`-awcIAlWy0qLT9 zS!{V5W%0Hra{048v5<&vN8q9M1Q%l<$>$Kmv)Sj+gVB=UQvL30ktuLSQ!jI9iJazl z+-1^QzF0puu|mb>a`G)$&&B7KonLmrDDcjCp8PS$=OA~G>3IFSe|sk0b9*|Q{sm?6 zH@ya6Ct@+{J^dMiN#j)hOB1bwX@_wJNL%Jfqc>wY{2TA$jhgV2{G8s15z(i-13$re zLtrcS;U36##D#vJ3ukW5#SR`S@L~s;j`v)F3?IIa84SPU#SVFp25X>_3ow~5=L*8` zt$0Fkr_U9vctqn($^?>+HFCBdZoNUx`7ZlEyM`n82d-l)UEUwq2TI)57=Fk510Q|M zML$39XMbNvpBvD(GA+_2K>x;e^k~k6b_ygXWb-<~VU+N}AZXw-kisSI!I;a$@vi;5Bgdy zS(m+)!=DgP2t+kNGV>8N*tkZ`25Z($z#&)TmXtdU~WKJLcq;NH( zgLLk6{$t7Zq0LI%ZwW9@g7JTfd>)6zgCUKo_C@I53q}Rf<#^zS7MJ*<^q9LZwYmKj zqDh@GM@w;6gmY&hA{>`Js?5pD&M&%R+|AY}FXdxF8cpSw;k={#3bY44nA852!>7vm zvmyNxM=!Y1Fds)RF|kLWJU%H9_#Zy2CLYXk&R)tZ z%9_Q%k6C9yt%&iyF^3f6yQnfMgpJ|yB>@1f>Ke=?kT~p=H!0W`K(Id{q>-3v*moWD zFER(b0%X`Xf^3)9;9({*Yh=!5doXR{vtCk!erVZ5Y6DUiO96QX2EQ708DaWyF;iRd zSg|mn^wSZb6vEoDQ%ZszANGXjz5*tYo1jh7%&^`c(8ZjG!R?I0m2fwa~7&wL6 z7Gt(HtH@W}m{p|KE6-CrJMB>|1H|juUJlxGP7tJ7X^UC9E%|cVk{T1x78nRunPHLW zd@+8dc25gv?uR~67K-8&A`c@3&1O8EVTcv`j)l?}ju6Eb@4UQWD3#VrywQOHdtzdG zNz_;p$;dj8=jDISAkUuXV!R~5LYT$;TDGg}ux&Bk0DmV%SiWJ)py`GYq|@v|K0&Ml zSB_K-fu;AP>=$&=^0}t!bvv-(m>&(xc4)Ku1P33`u}R-r$0mDIAIu~c^c4>C5N)&k zVtdqs`_9^weik13-VdVJ_+l-{-zvT9P;^^9J_Cq(e3nW1cn7|-8+L8SV>bAwl|L=7 zvG+ShLd$pZpU!iZflK$4O?b`U652RHr&CB|5;{-$KH=2m05dIVa^1_Z|QZ*s=uv))=mO#yU zr^#U}-LZA5woibhF$_)%-Jf$@2`vhAK-CVztK?)NP1uW3efM{#l)>pv>wN_jwfRrpt$p0YMLEf3VgD zIvfuliK5u6JJ$`^1vXABt@c0`c3$jZTl`%$EfT_^NJ5(sscseu$KbvSzriK!!L%HZUwIHdMW?VH+1|0dH-?Wn&i@U3>`9J=d- z;aoP^NI=DEW`2jq3^_*pmL>H$f13lJ5AY4X$R$Pl@QY8-I^x)$I@$}h3u|j2@g&Rp zljR-vCm@~34!HylbPtIssx0iK_-@>kIsnF_E8I`LlnT#Ogu{X^KtDwOoPDU635-{v zuI8Iclds;{R5ozE&W8(}KRIg|+t5PFS+cZG9{mJ2Hu@qgLFMFOC*ipWEBDjT05F}? zk1H~wuOQ>+JFhxFEmSZEjRbcPg0^pd~&cugC=%Y^(q2O^44atU%7=^DJWg2)f$@ARDh*5{Ziip(25wLcuwngHZ&-h#uONpFxUE(@-XR#hk)C#fQLnpTv$zYgbD(pI zgUu-hnZqHLWxLM$Z7u#mdUS$t-ZVtNLf z?w+_!wN7_89TuNGy8ATLC5MfzQIEsR6WU7;xqXTIF-tuQH>Y`+ag$v}JvP$>l?tcVe*8<-B7Bc<4{0`E{1UCsqksze*2oR`;`{RlRk z@`wWNMoK&kF3q?Wmd-V5EI56o5S9QgG=DsZvb4(a-4l6)Pdn|;9OBz7b@z?-$3-= z6N2&Q3aU_3_2a}K(}w*;pRcv?e#!!-f9jpX&m$8e$4%B zl$VPK;&3gBZ!+(baDp|jg{unpWj_fU{rlxAWU4P9J>K! zq<<`)-$AQfoeX$TBlk1<^?~fn z(aU~?A6gyj`>@E5^g6A@oSk(_<$CFZY1!e;+p==K;CV+_;L>Fx=UVsYzbQL-e9*3L zsm5Z%cFIcTeEH!v2oIbhbX2e@I12wvl;!L&Q;$_M_U`sRbgE5GtfOjh9FA8UuwMgQ zZ58YdpSfV~S`~hYx(C&qXYnDhCrPQ=hqeTNoZKv?tN;$qtlL%`lz|6ofh{=r#!Qn! z2ioxG+7l!C(z3;&S#<#P_fj0rs@K?+XD(>Xx zI9$<-8=x2SO<*`kV3oz0AD=-L%xJ@BKkF8)f^KTT7Zl_n*Ex*+3e~=OfJ*R_S_ytc zE5R=}l7;M+HWxsb`$R27Nu$%|vy-$=OU4VGmb$fhgUaa4VnXz&&Dvc#9wXP*TC;xE z)=`|3M($AJYD69~>$sym-rZyG z|1XyqImfg15gy=Cgg-}vAob$3t?e}n zr3s*kCXRpIFRSVAPiv}kRukNUsR6lc17(Gz6LP~5It(=%0vMVN!R=@^X$@$&q*BMx z*H97yOjpy$tGy9goX6U z8JH8DULMvTb?QERWN1HR;9Y7z?>^8$`>{M+HLd+n(yCc!i1zcFe~R`4Ea0W#`yDHz zThG;gSO?k<%aJWw{TwUfRZjunEW=q(f#1?VGDfLH|wWh||pLl#Voz9=0C zIMC0LAQ7oya7%r_o(W}%fo*x{Dmj!Kb3RypeU#KDn|#sof`GZ*b1ObtG~tkrM_5Q+5F+^|-f~ z+QZc^!OQvr+Sp+Md!J~wU0$8$*}*EX*-8x1Fl_9KKr}oz)xm?DX91JKbM)zl!_!%6d4V?{hCE$wk3)Ns~6clNJArl)X9EN>l zy;-?W{!tKI@5c+4k@DGj_C6SRS~|hsirj}-xNC=X?KX}}K^Ss5O$!m&k_qhu0H7Hu zCyp6cIb4*~W5sJ}A;B8fY*C+qA@3L0_b-Gq^(Cy4X!%=IksbtX30q(9R> zXlX3QD(&Bl_QA%%vT;SzoDCbANls@eo~7#ZRrP03tEsD2-NO|n2Ok#g?^E6el1ym9 zI9^!SVL{L#DO*+kL+29Oaeb37F@q?>m3f|vk>K^Y*m^8RvrJa93k*wk<$6r&YNR<} zkkd=eK`1jaUTghhxMiAZ@ zjjOCDpXpC%8}rfy0TCxdP%o-0<01%T7_9v1H>@8yV z>grS>eMzN-)K&OMjZ6Jn*R3PCo{+j|-PGSTb(|?}QbJhHB<+o%@~-yZkWUt>!u~#6 zJ$z3ZJYXCx5Y@&fg!+OT*EUvPVxzlYIo2G-lu894R$asJ*H zkPqlMa8S;nxaQ($O*ETB;1@Mda$(z_yS@ihvH!}s;~(zNTKXdfYqV9c8>XYlk;=7|tk9uf zv9F=Z8DGj%ur+_+Gx!Hnx`yofVtK3Ahh2~YhhRgfy8 zmUxb^AdKKvbXK%Hbu_g?5aLAq6sH`L!is4OM#kd;=%TQYjb>&(tM6sJd_X&=aetgUPY*iA`$GIEjL;wdHjsE(@Aps6-0nm1to21|y{h19Re3E{ z!TSpIUjOj|ZY0bu<_B;Xccbs_@D~DHvWDH=y+w8c+wDZ`?v1$zb^)$`9A}RtjL&ZL zdWqxPja?8(;@Wp2=Z+aJO)pO6Is1Fgx)^W^CSDRx8A4;^8yFN0^3AhaFX$U9;i1gi zWPS|hkK3}u$Qj0C1MTWa^J5?W=&f%eh4c7hHgcT)#I`z;KpYY+r~@E;Q%~V9)4jTB zF-@&HtIT(IGs{n(=h|x#A3G16Y7W#9vFyhfY0i^7YFFmcQi6)%@t&NOcxbn54!|cl zBRx6edNT(R#wF)?PtMvt%z-gMatb^-;lAV~GPt=zlZPfb9@&q$6L}VPz@hmYow@k# z=It(A?8;v_6lR<1QGcl}huKDZsx<$KSj9#a@%S-z?r^LjqZ%jlBS)n*xwV?>1?D^0 zNyTna4hqrxA7QJl>a+FVwA)7@)oiMvHC2Et)Jv!tKm=WU>jtzbHaVTS+`R{qohE0J7%e>P#@1e*OJ%OS4xX(%D*#zZ00cGbC8p~*+41Q#Y5Ehl z=ot;JofdCaZv)e zK2*h2ffD3av_Nm{*E8M($jif1^v3>CRFk9f=VUcv%9R+Uv#s|hpDQr?`a(85^;l8; z^5=`{*Oy7p;ApHNTP&(G-Ky@+p0!{wW=Sr9J$ioI?pz*C3@rI07Gk3J@9)tH;Q1Je zeHYgNclWH49RlLDm&2!W0yjh2!v%mosWVYZ_nUB1Wq)7H9!r*m3IfTowXLN}E;&}N zS9NFr1`fnj6mu~fN{QEvj!dSikY6=%aaK6jrl|<6bHI-y)&5fdHsp{x5qSoAzStDx z+0%3Zd!AcSoG0yPO+}6A@TkXFN$MJfDwiufWN{lt96U?o$aDy+hMBggY2H>^o_XsTNN9c24KA4=NWdgK; zkCi<~3&#wWPjWYIi?3NU52Dh&g>n7)MGIw zXZ`v|LJJ99tW*~xqjj!ofQH^!NO2vj1L!-RjJo8q!vdGiNG^M%$p!ZIOnNyVG>h4J z=%oiF_Adq(PhF9Li~K*xXnoO-Ahe-})qrlC)%P6MNH8&nfI)yFDm=l&!=v#>h+jXb z&>Z6i3?*=$_IYpsVrw$I)C|m+?*lNx)P*L(lrEo)J&p1VdlikLk|)+w0uAd}Q*Zhr zH{*xIn)vvhoYyfY^+!&kprT9jD_1SZ^yg zH9P<=WzDam)pqC3)@sCeys5oMmYR*HOHfhDMm~UMwGJ2A2yncvHrqG7{H5wqbHE6N zksu_13PDZmhEX=v&5 zA;4^v3a$MHAX%+8-ArGGIl^%pLFo2l8wsne#k69yeuQBPUvKkywpW0yENeg;BIzH4 z2pNdP)MF6-2@J~1i2pQ5;y(>4%#8muNa8;Y8lD;dX^_N!8dR~R_)mkJS8WEFS8dWW ztU;)$Ej@4}(V$+!6&!!|n~VnaCw`i#zc&_8!@@n!FoWyPbhsoynoF%Q=3YM-_c?#! z1!1Ix4~ zKfZ}WhJ67ik|bFDPCC_VKDyBtGgA-TEE;x=91R-NajhH;GFWHV`gM){A@ZD#w7-fP zFMY8ec?buKjUa)Rn?(R7gEfJq$Z^?BtWo>#!WPUio<4wId?Q8+lK`qw$-HJJaA<<_ zKs&?@z>n3H4NQv_%VL~f%946%`t_9r*42B7uP`r}I&W^Ys(0D8fr1{Hx=@ldONh1m zVqc)H1YVP^R=8G0Cz>XVOL3u8F#atu?jT@1#SVfxo@WPPX08U`MEy|jC(cGwvY(i_ zjF3yp!{_Pk#7wiBsKgLd39kC$irbRsWj8UJNf)Cj?RwkT>53cc0Lm;!sJ-64&bZ!w zeXHyv_Jm5sj6N8GeFboVt2=nG0mTts7!*;#4*rM^Xq3UXdrCN89CV#D*+o>blP*pP z&p~yMA(_oMr-ZDcjzK9una3S)Q5wG$dhX~D~HXQjC%g*YKG#&^H@FnqHrm~eT1)MX{BgXZd`oU1acLeRcTdQ(5>Pm|_eaWebH(wJr=tD=ZScGG&)wYJ zpFAIDiXT`Ax9p3(MXl%sXpH=CU;lt_5zgA0`+axo6)3a(&u5iLhn9!!iUqb`RW`BGXOjhCCV0=s-Z{Wg}8c)#8@0;Ev z+5OpWMiTG9{v|#+L0Q`{Q8iC8v@)$bKifXLniMe`C zBkHV#d^dpkaE}9rj07~w()F+w?e!veMgClCh?VP$j?AU1iFS->cEDU~?gqGW$khkD z*z22u11OZ(IaI}6|J*!uipvW-fAu%_XLV}Vw8oG9GWOvK3=z0m)#H@JS%tZ<<>1)2 zA+)!Z=w=3S_Y2-Z6l4FWeLQ}BwcI=+q&Z^8#{;_rhBgti0$wUf>~LD*&<#k;1%m1J z(RPJw^RYvgJL+Z(rzAq?+yu;emqqkJfhe_RQRcc=p!BzA#i5L(M;$-flj123uim@9XpxaHKBAPiVdNJF(*DklXYU` z*!4SwFS8QQR!JYL)s1Kiwq3S>JqwLRRh472@CY`LiehY&Lpe)|g&R52X(Pun>C?+t zbG7;af8l7*TjrI>YAPL@ohB%MdvjojSZd&}0veEqIMUgmw{t4tT{IlaJ&^db3<|-n zgIGNJK7y5)kc$luhsQqOKwszwlpsFs?9-5qOGUoeCp2#0@)wv!_$5u7 zlkvKw?1MYeW=#fd;)nsxJBPjvz^})sNS|kOru4Uu>mIs*ren zUq+Gh)Q#j?jd}K^$ks4~f65R!RQ5&Q0BaSKcVZ`N?us5(B9sl%nOREGf)~ggdL|?t zCIyqf=|(n5{g*f@Wv&fxZ%=GCM4zwml+Z|N(acAgPVlzp*p6< z6?R(UXs~Iy=8L9D*Q&4d44;R%js!tj1QP(Wen8u>o7B+R1;3Fj3lVoRJS`j6_8_ds zLNs7{EG2XXp8BJFErk1-N$@a?XE8b4KP#@2#+V?{pslN#sbs(pi7{sM@BaJOT#ndbF_X2QYG8=!@;m?s!+XWYlZ~ z)(O90AB0XcF}!w37sOBs9@BvsPD$)dok9`CAcltsl{h1K2ti14Cf}|mByK`6vjF)! zO&s1H3~}UN^luRdpo=&fyd;fyQe1>B=!gW8C5Y>45!P^MpR&8I7a?5U8pX=LO8p(B zFi+?gU697dzZc{#)TAMLg)GklS;>U<+EafMKx!9usp;Y(CL6lYH;AaZrZr%w)S^Qe zh^eDc9$`^>Uh9TM@n9T!tS^ekLct>Nf9d)_Vl*{7mQeR%jB?zHCmfJTo?q;_4{Wcc zwLN(Odc`0U&s_~wHdG98 zAR+e%{0O=QSr!r(V8B=kt|a)LT~QSH@%X|J)W=X+POZJr;ZOrFCQ&x);T9TcFg$}p zi8P>wreo7#2Lk_6-RW#JhD{McFp}-Ipiri^VU1YI^~RuaTWVZHS=Hj_$G&S4NGKoQ@u|3_F;FS2p)bn^n1t7(|G- zZ1;tab8Z$LP1mX`F+uZe+U zBY z5;26JzxV=qA0=h!C>}EQ6-Y~+g@n{^n3})^?>CS{ILthsryjbjkj`@^<33M@;Qmj@ zz>uWD+wcv3sC{;uF62oL+PvOWy)a!BZ2BUWEo!$1ad|L)h!(B^lg!gSPx3&Me5Ow3 zjQSzTOmDS{osa1~pKU8JdR7|dVHR#da|QHJ0iHp&GzKw}}b zXt|wo+Y>%>q$#^+x~z_E_$y?fL7DK*_?8XCz5tZOh}0vhC~8lgtqa$(@F_^cbfn_(_>L|Qk4T-%0_f>5B)C1*peG=mF9eZ( za>)B>2N;)OJz&B>D=d~Z^#px_Km(#&{VMlw1CB%dK<6Xz1p#cZi zym5W}ZrCY2*T)Mi&-KDbd6q>j6({JAO^2Z;eRX^+2A#e-UW~ztT7VlE^-xi1anQkG z$+SkpHxFCg(Wuhdo!oWT^P3>mOa83=3#ZnhbNUx{x@KPGTr*GP^uAj2S|~}?slC!F zQBB7%*SPxv8;p1u;1iyJ66=o0LTU^CV0ReQBY+gDGH!K!IZN03P8%oWF7;2nX$~mV zu@CrL117HfU7LDon8)R-O?@>E(50{*0Q$!cYoP;;`47^NDObhKlz3N`a6u7yZrk@V z9GDIWT@_h>aHu4*{s_46QJ~`io9VH?u{N#Vf#e9<2} zm#0%ohw|65JkBjkyK28@=kmi)Ui78S3WN%_3Z0M+=r}f)yYpNcFx zFEBr}SmXG~*QyWB5l;kO@Q2@&I5@8h?X@NUgNC$!d>txc6vH{);UlTiJVntLh_8TS z3z?5cV|@iabFc`bhWKj_%vpxIaJ0DMcO1^Z?8|8|>pgxP{Y~1`BPeI%iF5NF`3PMt z9pqVgwjk*s&&3?b;GM+-X7OF(0aJ~6tKXv!@LGV=t>=2vvkp99SdJYp`j8$l0QtbR z7z#$zcdQ=K?i^7}Bsd&DSX_I+)Utzn&;dMP*p|lw21ZdgZL9a>M-m2Gxk_1#d~kiT z1ky=3&;AO)ggwnk;mAjzkir(SvRaKj0cRS?mt=s!d5hnBj1u_=XXmsiy$rbpBJZI&^f$cCE%1BPc z5s=OV zapCweSB1ucr~ZmXW{0o3=!&Z+jJX&Iy^zox+YkSanJ{ibQ|thIIatB4*`(TK1UMNG zNu}Llz$*SA_K5ivk{AH@#o30LC^gX`2lDx0B3H*}DrHOOpruwB7A^(z5}B2llh2GY zWY~{0Ap=w+7UIJ0&kn6ElEuGI4)OOhso@Pg@#>-6Upvvz5WmHxQ2#^!TM8}79MeB% zVko=;F_4-{2H5{=6e{{jvuG?Jo2*yz@sB$FOo{|a^!3l#jaNqp=qqq9YOwF4Vs<0e-||S2wF1HVtmmZ#P+Y9 zE|bWx*F$js*MUd1ai=>)V|HTCKfX|YhK4y8Bdrd3i z-%tSNy!(4+1HovyEN>TL3J!l~PY+W4O1qg)e!Z)n`kS6U>qml~S?KBMcHPru89lMQ zjSvTAr*o|Mt5*A~MT@G6`@@6%HF~gPp0^g%fm~#sRPi{^-ySNxmwI~N zP51ugh2D9xyiI-0vnKy}6zbyKn{cyCdzTE9_J(`fn|GSP?Y@lmSl(Wb(RkWBc(AnR zi|)uZu4M(s_-ZAQFhi6tcG9oA8$>1oO^ z>8Z-o)3X7A;jI}xvAnJDj|YigbOTJe#XS=A@JbCi-KD3QEx{b@AdJ$Z6$yZ~+Vt74 z74XHj}I|t#oWz^{}xHEoHHQsBNw4EPUH3a9Ix|S0oK2i(N?W6LcV1-x-p% z29nE+NgX``l5Rl*$rt@U3Q21=fq_n;?GL-cO6D9M?*g86gy(&y2t321wggWOO7%gh z4$!%X6}yC|jRAHA&!TjVuHo5$iVi$`ps@WXaCi?qtFWOL%1p!ajZ+O} zC;vov0=W)6|1hNscs3GJo6s88`+MhX37#C3x|V%r!gC%gb_q{Ea=L=&?dcj_!!wTs z3_LHEZwQWfU;A-fB=fTBzSA;T^?-!@^hLRCr>`9ZMQ@!JZt>09iEsB+Z8#+K8Qy^n zeL_v9nYR=mU~YDmq|npZ@z*`58*znf)7-a(xpR4Ysw@xpZDFR3LYU_0a`UwC9C#sN zL$CLl5g_0GW<8kNPICKh8G83cM}g;HEWYSjWIm?oNEU5IQ7sLAXE`)d+nGid8X74e zZMo9GEof+@b?8r|5f2Z$EZPN)EGG7sl?#nLJ#tGl!a=DsP^trsJiv-w(#QeG>54|K zOxNg|M!v+%92zM_VS6cHr0<9wbu!_GXV6>|LaxKJ02WWoi7XCxx9<^KB{}f%Nn#_T zQA`~_EFE*gt?F9ISPND%mgI@ULyOjVVooghEnt)Az2+=h%GRnc(2|V~FrH>7nuOFx zj0t(Dp_z}OH6u^VK$8#orfcjI*>|yw_%k=Q5JZygwfSMGaA)5j3Xb?6(zrat4 zRAKjGCA@f@WpAIZ`NoM-lT5;X#jPnnY5EaMo4piNW-sACP~X@%`@B=vtY=Mqq{Ke? zGj)CHX8R!)zn}m7F%ktj<3HJM2K66v+Q){Lv7w=QsFFpam+nJ; z&Lv>xxoO30_6hf=#h-j{N!RGlpSQ7we$0X$^hH|gX5>3|6x{!wBX*QsF=DePMH~;D z%ArULN@s^oMUgCwGc~BIdjCAhwZEX=zEUI)rL#l3IhL5`QN($e9(+q(ROW!rdDF#- z>;e08sXmPxn$_t%u9`*#K2yKRa9i@@N1x~q(!CW*5mTmW!+D|Q?6oYSr9cj3 zM(SWI+4~iEO;77qUA{Eh7%D1ioEBVqNlkIj?%`d0vjW|+VK9v@3a?G=F*Ls3?ZY>j zm-Owk&<{_VqNn0RbE7*?r1fGR%+qygn|*`BkYLlS1yiD^I^_f|Aqm9mW+Us8=99+a zt>Tj|14GF9?Fh}AaR<5iB>0h{w?xj@U^aRuc2Y$kc~Pa+9N}()|KZbB*_$I(lE&1N zD*373uI_dq2e=F^RKUtY%7h~OIX4D)!^n#7q#v@j;wM!!MQTwCp23kiR>yx}>J`9? z84KKBf&;!B8ecIqYejYW`~GC0AkT_?+Tu?REm(oJYf;pit8$XV;YG5_imX}@`4={i zH?&&=nsJSqdL52y>g3Nm*4&jj7|55nb*m?*O+Ja7BhPSCxL5Eer}hVtp!rIvnB@Ak zl4bDi*Uv}CXRb#I#xRhDX3Mvneb(bM$Oya-SFuWb2G>Q=@?d-u&U?zH^(=@kLP!=M zvUOf|Xy2knfBXFSykN<h;>e`G@oX3vv4U*xHs!Brv~`dpXqk2emDFC3b+uv+5aTgljkD1qL> ze)|gYwdC)B!Ih}`Ngy7qS4}5~DXxNDL|zAoXGm}Kg4EF*0||W`9ACsCM~N9+X+V?= z^q23O{4EBA*M=tag=bt~z~(?UJn|&Bq|G;ZDKq1XKrt(<Zh~YqTAMk#WHw5~uy^pEhyTod5wn{dKzYb(CY%9sHw$%i|O7?r~2R-*~qR z2vi%E;&d?0E1Jvek%?TfcG1N_u`~0ka6D#lktAd*54SigIYScS&U4A|){J>&_2k&!+L2BGGe@@=77PQhz&E)@gSTkEyH}&tEWMAHyGGE`oVG zx4E>xyt7?;XqJxILX09>2B(!AfwLz$epl1sM&TTw#MVJS)6dVh^Gjf%kwf^XuZB=_ z#EE;WdUKIJjfyfBnehO`pV7h>;XsIx^n!iL&zR{Sg;3*jZvt)LQKvfdX}7`IozgQ7-ywd8EfRgRTE5iObR*!1%fs=?8n zdBFjG2$Ti>$R-2`x;vL_a#Nq{cAr-Mel^ec%AbZV5)o*iNA_=!2ZtQ?~;}YyZMtx_b?eKH(BnuL_~)j?Tb)(MJN@m zry=?d1!9&j#-kzoJNyH;H+Ug(>gr&2jw3RBJHbf$GksU216;ZI=I#oc(HVL8W;pl# zOgx~>cnT8FUCPs?f$g)rdaXp-A-3605ZquHz5(*kkzR0@c7*rssOW(=8*mzC1L_*) zeOvUU9x!Mxj!!ragA+c1;ATmJ&DP4^ZC|31BijNbq zakd*hXNEhY4;vVE~{@yFiC1(c8n_gt7mhz#91i=t#_ijrJk zuRv~|B#J26nW7{&pQ(kCDxzd(ijv$?rVf`>5hXiQl;nj{_S?z#A! zEr4sa2E3UeT=vaEII5EBy^l%DmlcpNSh$5!VKsKVHS+fPhz2!tFmT~nfvePUOc6I{ zzAu6UUDxN!Imd-I%Vl{j6bb`RzM;*=v%>@A!RUd4lqX=Uwhy7MpO_;|rxHy&FMlsZ zVkxSqiZ5LS)2%_Gv#Re(x0 zcOH&EC;|nDTB%;rcnnZ4>E9YHRlmHHjFq7H(ApLHn4`INawb@g zdfdHLW~Vtmp`kY7D3_}Kr1{)_c@AL$@lUs+cEKeC9ZN7RUyKfUb^!lqoIHmnq2~e- z@KSaSnXWckUIo@FyOCi0yWoHybm+Bmpp8(Gtj3_DYPpgOcdp=i?F`2rT9W2Igf102`PuiG^5# zgvc?CNO6qW?a*Y?t8Xq`XQY)CsHC~7{z6NW&nQJ_@B-9_vH_vMOC-)QVuSJSy zv3LtsccHBA_E*FI!rftC^hIzffA$*;`GseMv11wKlG15M6LEOfOXvviE61;_CZuBT zg9JcD0Ke7*X1Z9wa?n@(zA2;)P`@C~Le668;<}dJP>SZro2XI($|D6mkB0CZohXp% z6`d3ksv28d;DcsK}}3Hn`HeyIYKZY{5pFskq||J_k8WmCby z6Vfbnfi#&@Tkev!JrEH3Y2n{)uxE6p1JFxekN@^=A&q|Wi@c$OiT|F1JE4E2M0`6% z(Ek?Ezb`%kQL+nFQbZdH*B5^sf?uf?i^4A-pZKU!dob-oiPb8;)Aj{iUJP=Zhbr0O z-Gv_?;_&HWdnodOlYBO)P+3^-iqsCQLoWQDMOpbKbBwHv_R>|z!tE^GJX+v((*7C? zQhF1yir$PEI9$37*za?}8t#9Cv?*dDv?A40s_9=#P()sMOh@ApRqYn$ccH3Xigb^v zc8W(;+pB|9;1-m$19S_E0Szc=;lB38dVXltr1_$pw?}z9qNam>{OJ)Hqh~$nfK=7& zUZ|>7LiyPZKNF+s0hms^z5CDz4nd-yVZC9hLLK@lMw9&@(lpFv*&lY8U=0gDJkg${ z^SDWj9V+Nz`k2%e{`g0z<2=lJIN}mkp(wT3BRYe|&-Z)db67&{ijmOXJqXR=Z)!Lu zkouQy4pc$!PLR6GbygnEfrpO32zck9Ny004lAd!=%DolSfFC52v!LAgcIq6zei^`o z`1LSrRbY{5Q(!gfK!1_5iTfP)#ub3E-p$892G8c!xbzTmY`I?L=Kde*zC5t0D*L|$ zDn-B)Ma2avS`}0j#06xrg$5FB6c?0HQBY7&zzT`tXf@bG2$^VS)EUOL?zq8EsA+K*hj%f}2Hs4CdLBAWYYaf*P7hu8T9Q^PPkA8XJqjM%7-vV39kbdmK zMSFFzE0Xm!PSNSB%sm;}4v5x@3#x)#ac82Ea{Tho?0{|S?6l(Fxxh!r2KZY}Eyvlw zd5!?>+l$!=;V(>S^TCBNKC-AM{EGOUrmWGRNVt1{r4@;L_Co(fk)SqcDiRf3 zsY&R?jYzdA5>)@FNVs@l?_RvX{^jodH57?5$E%(8E11(M2YyBFf&cc2{_rBcwhid1 zf0|0q;^T?>FF8vTjR7TjIT8Sl4Er%=4npzv6Wfb#u z1q>wf)wplkLc{S>|V0mH-b7C##or$V4KX z3#o`7k!lBSKsneK8BZGR&165YP51VgqUr>^nh3BV=@kn}2crNC?-p{jHNuXa0SC!h5>BjOWp=Y3K)~VA4+mL? zN12KCh#jC$V@GD8%B%}+`BJZclKACg%`Xf)X$Q&7tCK)783&nU z2yvFPuBG@2ZvYLa91AoLUf38kED&RtJrN(+;Rmq87IkuOB3Wy!r5}JJ#8nM3l({zI zpn}H&ftn}gBMG$6D%AU{4VFN#$@(C3G^JHC^JBQE83oB1D@U+{C3AS1`x96#!FF>@ zyhVI-geGvs!bQlc7bNJaHnFM@s|w2<&w}+0>Mq(n!&&d0W^w{}h$}Kq7`7FeC#2k^ zb#?B@%(`X_;n&B~7{X@fA%M{Tpew-+KlwcLbhAFpHwhrS8mVY%U&mZFo1t%0V2B zmvDtJ+_kdtZHH!TjBgblK`#~RmLm<-T}ZANZ?s-SL@QIr=8=-%e{h7>Gm!xz+8?O~ z5jld(G5FXmpbLB^TiW__nH<&~p+EolaN~1uL(HSgqKPPpuf`}-VU|IL$k!K;0r_l* zSVyp)4gHRPYycGBa5xTRz6z~*0GJ1svVSw5e2RRgi$c!r8n8iBJ&u7PD6JzvT`$H? zqnJ5}z*|ym5xK#(yDcKLm(jl*tAC-@v5@}W6Fv&NU*3V1&iAeNG&{Ye=zm}OaDVYo z54Q5~x!MmsqWX6##zFOO02Mo^f0&au#*dZW$;jj`ESX%^JN%Hv< z%I8h-BR!ETAvwQ;xH#ZjXg-d-{f!V>o-8`iZ+SjO12Q`@+< zVG9)WWN8wZ!k|oe!mm*^M8;MioPNnW)XH-p%#DMy6`4G$4>bezDOsmKf(JO6E zs+2WwlBNRb&NT&oxUj|MV>kYU_1(VOOqqNZ(X>`#mE7+m!+N$uE$Pp%aM_%3Ix!P{ zg6rGo{V9=`!r&?5TJI<2vxREW(TFR2V$34!o&bg#ln(h7>X9(Cu#}md#?Yec%5oS! z)Drd!CYoaIr^pB!)HS)N4N-B5fhp+e%qEA`lVs#0If~szBbo{Ejl3fXc*Rq4eDb{G)9E z3R_M*n5*wxLa8$KH3kXV04{uG^v{prC!~Grkvk5#i=(JfJ&|idD;op=lv(^kXu;k< zaze}$^+gZr1-?quUatK39<7$^bD8|oR9fXL9homOx}0q5EyghQX#t{JYm%q4d*Q4x z{WK)u9U}GCbmwHkHnm35m-MrREpv8y8o36!s0Ufn8P!&}TJR*&CQcW0Nf#Q2mV)7FGEM@-siu2d$p3t-MfjajvPCIMW z^@qSTmCae}JJidR0mzBbA&%2dW@qC@id zTzsne_(=S6^YI^aNz*q~<)MK_G8Z^eGVzm)lVXYt?1%F3n4i2uH64qgY9mSf1*x9=B?_1EZt zZOGTPUsNuD$VHN8;0{NCG5X(SFa7$14ox&ZxKAZ)XVHTJOOu&GG3p3Pe$?G#t z@|GiSDg?Kw39wSLHcD{l&$k{(9ur$ik|L1Cmhzq)V2A?aZHpo|K>_dq(47@X zM1@k)R>kK#u$k_r+b0WZwwDT zx)#nCQBSDuyiw{goFyWn+>yl;b|PrdT_}dQOqh@W569cU+qrbvOdAuY%x|;SO_KE~ z_ak~?2zqfteGrSAeEguI#DZ+CdT_Ae4@Mt|gthTao3)XO1wLlS`LQSTyJc-W0UoQg zHr{ZVX=#+gk>EKf%-tKGX=U8%C_OdXW@S7EFJhBlowSyPJV;v4ek%6H`0;j2;IaEt z%4-_YmOwTNOW+vYs4q+_U|0&E90%>_B?~(^^br!)dUUNi{b5@NxtmBN`0LEMV5Zy$xnZ;Ux{s?E4uS zUKqdVWLJRhY6%P@!m}iv@1o}P`F;SR;R_cpu!HwK<}?FdNAMEB&}hQbvg!x5?jQp)|H@$=hF^#j;jzAl5huNf#bbu2+ zY)W}|Y-w=3IyzeacBXf4&dy-ZnmF8FeM?*`|6_ckzQLB6*4sSbYA9`^ptQj&6F$?f z>iirI0>2<`{_=n0eqV;cXqTGtc!Iv-hE15|^*IlN@r_7g^9ZU4Zh^mx4I8kEEa--0 zOBK=EIzR72wMNG*)EWulWfn>tE-?LuBUyh=Xe3F#!>-5zHY*z_YSA-EzQZskLT8}b z^@>9jk@ZKIib(r<@%zv8omuakpXs~M^hy{=s=Xe(<)|c=7~D(BU~PLh%G9bYIRY^;kUk0E7>)YE z@q4rh>Khb*CX)ca1u)10!|3r~XBs`^l(m(MELa(=Q`XSN=37A63mN7H?Jz5KL^1a= zOPBLxHKz&w*$!Fb(JyIC9Wj%S1oK8U>Sq8yl2!00z*tNj`pZaUT}wqG}xEe zDP3L+>sMB;W&L6H;*ss0d%uooSd~NnaRZW_QBu~OBz+vf=^rKCmfC# zf{d65u(ar>kP&KuCDmCdhFw_$m}RU-79cf^faynZu?Vf`Y=@*(kdS;u78S>I+(k%+ zn*tx(((JqA$rSK?hcRwqR{*{r(Gd6lVKHQq-lXLdSX_gQFY0O(s}HhH4YD#O{*$AS zWs{D9@;E!KFC_(9Ge9yB^x60^WD-{zv!qPc>pd)yfzGg~YR?=l8FuW=wsMdLPoSmn z_>95gwX;p6LcEtM-WH!E`2V#stN>eRZ=6wLI%6^6YwRLcnHTIw0 z!eeT;u|L7W(^7HaD@p zGe{5{y+qlG)WP&7)@jHG>sa|6nZK{jkDY9k)10jyMA_K)R$47dd9KutO)^Ry7|7O> zjCg>_sQ>f!#wMAO|333S*7*{A4&^-Ii9E#R?e7jh=tmZIq`m#p+5cq!sst4J1dFM2 zF>tPouSXlS|E-OGkJ^|r068Wn1m|-|xcQA;;&kfJDbE@yI=Yr4_#%r{nu#eKyS9UP zHTjN;eUFw|QK}eRE+w$Pw+scilzRmUa(Y5aYpx6)%0`Yb8zK5KeG|-0MXSfDJB|13 zWdMD(7QstI??rCLi>yVG z_aal*Z^nLPe|l1QLTl~Yk`vl;SwD3%)iY<=%Z%5_YNSOg5`nH_bQw{5$pxF?1`A2SUYww- za2;sQsEoXas$XkMn&)SFr^l~iY+QF={gb(gO`s2urNfs_0z_=K1sFGGhR1AgMA;AE zgVJr7py`yZH@VBPn53;FV{txVGMlZz_<{3rQ*c@iC+^B!3nx#@9iKaO@=P3g>*ZQF zvDlk?!(_%H zYU-Wk7~)UdorZ!J`yLM-Ts^jPU!6b49z|QJ6LYK7C$Jxe;M(T=42Nh^W>h`jMpj0q z)I6A=@b%LZ&leaQ=cmF9iYZgr&26gz=Kb98E-%mYen_~fV#$FRd`EnIu;3EXdsAYr za$otrA7DlcRnd1_2-bH_d<@==og*#s*Jc%`uK^fY9lf5WX$8S6?<MkU621Hv=oHd0_F@t0iIr+w0 z+GV_cDGHLP@6Bw7P!5-77{&!toLft4extfP`4ecAkD1`^K(d#o=zV0n+JI2v64vE`h*dws&oPZgSu4f ziQEDgF6|3GUSMhPeS%WS+dMnK0i0pzdw}K025Ve@9o9W1BPJ6eJ<1?eYtVMkiOW-LA%zRDR+ig{#8Gy@%vC-ioQaj`p7oH_)Ys* z7>9_Z#VN*s7O7*J@OzVEfr=QT$u% z3<}lsVL8hyx(D6>ry9Ts{Du?c>gnsZKq?-ZMp9s_(jL}B7XXP6ERhw3V|2BUkm9Q9tZ*bfM* zZNG}Nx8y^KUuGjixI?hNUXSrh*pO~mr|4YTxGl>q#QgKd86qNBrz4 zO%50_TIG&T>~OS7F=lId!x>w7_Q`vG3#Nh7x`1@C-geBMjanN|1Ak{*HTY+1=ZRAd zc`ZjOc74kEAjfR$FaWM`Ta-ny%ka-W-K^M>BAWG7<2}_Tme0jEmRNS;#S+W*{YXn5 zldw1~?Q=B7q2mj4YPyz)2xqynEm&(|{0>YKu{ZJ027=)O3=l9RNDILIuEPYum-w(T z2;xYMb;k^42SHW+&Owl4S0vivrFjro45%SdxIZC*^F{!}q@N*Y7PO_|x;g1M<7PuL zenkrTEtx{TGr{v*%fRz2Y$BQ(U&Rm_gJ(HXV_WdA70ST!gbeg^!nUbQS-919{+4KzSu+}_o=n6Klo=3BuH;@ zTcFEsn4V0lR9arp@h%b$?TCNo?!DSw+JM6cZ+9Zf8z6w5LNkbNSD3MNj{ZOg$Pm5q z4dlhvvmfYVMk4%HYnc3=PAC;~sZ`hy-|45FBYqx6Wg$L{mlh%Z=>rmoe}0n)u-R=5 z0j96iwk?yc+syN4CAF~~i1FJzbu`P~PLnbikTWgD(=U$R7Z)8)Ht*xZ#_atiQe*o- z^t3`O2NPJHC|JGO@L57j$h?oC*Ae2#>j(8wf1daU3S@I&$xkZIBgZmct;$BvDJ(^6A%U=HHi z&NN3r%QNi+PzP0)udzxZtqw##S|L45OVGnvDO`VmjMKJ4PNT9!Fmj9Q{dj4b3^p}h zLV7Vzn)7w#I*9u$b|JL2IfHO>^L3tyEQx`$>l)qmz0h&d9{Z76(|m)K?`Q<7SC%+Rdlq8aUnw3Xj?iM6%B8Mq4$G3X&76uS-2JDE#OzabuAi@lA1_?DES z-bANN90e{xGe)KAQD)Fw7%W0+Y!v>rHZco^pOFx==k0uw>LeP4@46UWDO%fTFlk(z z5MP7v=;CR$&OeYob=<5>JSXC2{q#MyJ2qh#P%Pfu9MtC`eccR%`cBjc#C1OzvAw}1 zCeo`>k5R_^r4h1<43_Erz(oIJEF$PH;n(j8TU8-f^uL$B-6j#JNY|OZ!+1}#>}pCS zz9Zr@q&Jc)JIzAB=h#|>KeW(pypScOo&DL45#}j&zHTpmqLp1w%GK5v3^ZSQOFxED zq~dyjf>D}|#Ajw7zd;&zHgCtSkOaNb%{)oYHj0cI07>N-8C%yFy+KALGq!xAzgTT%u$#V)@v%n# zy!2u(Q(cYGRGP)&C$WIBrPddN&LJSyf2RliSF;#vlXL%NY9;b$tY2Z2nJQ%xTfUaR z&3UfUb-2P|hvU^A3=HL0p5#fFD2!cak(BMN3H)B!+F(N4tHfZq9gKA>DEl| zA@O|I$~eC8eSpJb;-%$UshH(E8vZIbF>WnuN;sI!13iF;x^bXK~pjpH^N zK~cC8&4Pe|P-*sh-E1YA1r0cHQeyXUbj`7+SX8`t)=)#52@|+ThZto zG>V0&Ih-d+Ew4J~gqHZ%WFlB}*jXl}x3={jWHeow>AN_7IodQbd+p85a{)jMl7MbxRq@>;21YgC22!kvMxUKQ$Lyz)MP z(q)q_F1WPdvaw4A2(_8Mx8p0gP5Rz)Z1aScvO?bh^-gs0G{VSt7OBjEXf$-1D5+Cp z%x2ca58`)s%Xii4FXs2?0YnRq^c`>ZU{Sn-)Qrx&B%SGs99CQTwN#5*&cfFT;?@8r5s!`IeO2qM`2$c-;o|*^Eg<~^8Z@v|Mm169Il>Q zaNwn3DFYgQ6VHQ$Y49HAiA>By-91?^eCe~@)m6YR@1?oEDBis&v`rWAtp@WUj<+ql zkDDXT$e7fCv8|SPYp02Y)Ag?(*j`~#&nm=MWH|h-zHf&42cJ06ciI_|n@`MC{g!QO zfFs^K9+L5#>Qz=b35C<=;QY6?{IL9T%{ zGddVL`t*yMHzhbqb1`g)wBSdM;O%%6Z(#fCpesg*rBiJp%u7iP+nRB=EA%;*Y&;{? z``@n2pZe9?1qA8gM8w1Ei|ZF$xLOGDW4IpR>613t?gC>c02W#ccxlE)b;8({YRWrg zfvA>`wQ3gFGQrpaTrD^!Aw%;yDcI%#qA7@hm~THBb3dq+e;^<2k1>oLv=OXhb_bT~ ziRi%@cmS>7Q{QK?U!fbOYOg&CLG!K2AD%W4boz`)*R~9hHHjmk!`+ZC$oBD$hIsd# z93N~5hJFwTGJhN%?=86&qz^<6MTf&EVN6gNc%>wHY?Vk7OMfxthYOP-;#I;Q$`!dZ zvwkleIa%e+a);si;U92>BbWga#)LrqOxp&lmyq*eAH+FTwJ$mf-fWjg-aMDo9)^1e zLjaa8*$(I1EXQn5HY?blH>bF+=rq@rxw2smLD9pXVh>it#X#ziacE9e3V7nqKL(RRnDlb$dW4O(u~F2Y*E`kH#pxp z%M}^>a8YFH5)5wusKqwl^{am!8>N6-wJHMqz`|C_YIT}Gbg7X-&gdm&mZKi(@HCzN z{28E*X;cupz^WbmLKKbpbX&t_x8s=V%`V3=@AByr<4_qtkba<~{ZJW?a*++N_1@Mx zF00!Nn-#r%KPO#c77pGCC1&DeChJ0$mZqD9xN>N5FSLLjIM&^w$Hn~x;^v2vlqh5kpi1AOQz1V|J3d{W)MO_6rPg|0i?=Qft?gB`QI45t^Z@f>+?b zL3y_UHUhsS%A3<9<$XjN3I)fY1{?LgDXDhqds^_a+$dlTzyRV`8qz^yt0-aubsJ8LoirKVu%ESlffb5d! zQx<5i{<{hKWG+bLH&83+GZ$|$*n2Rl5*?u2SpJA;x&f6Sqa3t_9S(>lG$a|9>Wt{? zAfTiSCo;5<_>>*c3)W=x$nrSw2tIUS!6}Y_X&e9TlO`Hpqca*eULzUe-u!y|l#V@% zJl(OOR>yjQKWsdxJH~)C(lPEMqhqrSqENR3_mE<#%8i+Q6-k4O6wD^neQHJbSz>0p z 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