From cd532f02f67ad4daee7364a1601333cf67fface0 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 19 Dec 2020 19:40:02 +0100 Subject: [PATCH 01/58] Update package-lock.json First build of local development of inav --- package-lock.json | 8830 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 8810 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b9ff52b..f0a31b28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,8666 @@ { "name": "inav-configurator", - "version": "2.6.0", - "lockfileVersion": 1, + "version": "2.7.0", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "2.7.0", + "license": "GPL-3.0", + "dependencies": { + "archiver": "^2.0.3", + "bluebird": "3.4.1", + "del": "^3.0.0", + "fs": "0.0.1-security", + "graceful-fs": "^4.2.0", + "gulp": "^4.0.2", + "gulp-concat": "^2.6.1", + "inflection": "1.12.0", + "jquery": "2.1.4", + "jquery-ui-npm": "1.12.0", + "marked": "^0.3.17", + "minimist": "^1.2.0", + "nw": "^0.42.2-sdk", + "nw-dialog": "^1.0.7", + "openlayers": "^4.6.5", + "temp": "^0.8.3", + "three": "0.72.0", + "xml2js": "^0.4.19" + }, + "devDependencies": { + "nw-builder": "^3.5.7", + "semver": "6.3.0" + } + }, + "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==" + }, + "node_modules/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dependencies": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "node_modules/ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/align-text/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "dependencies": { + "string-width": "^2.0.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/archiver": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", + "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + "dependencies": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dependencies": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dependencies": { + "lodash": "^4.17.11" + } + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-done/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==" + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "node_modules/async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "node_modules/babylon": { + "version": "7.0.0-beta.19", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", + "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", + "bin": { + "babylon": "bin/babylon.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + }, + "node_modules/base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dependencies": { + "callsite": "1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "node_modules/bluebird": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", + "integrity": "sha1-tzHd9I4t077awudeEhWhG8uR+gc=" + }, + "node_modules/boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dependencies": { + "hoek": "2.x.x" + }, + "engines": { + "node": ">=0.10.40" + } + }, + "node_modules/boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "dependencies": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/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/boxen/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/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/boxen/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/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/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "engines": { + "node": "*" + } + }, + "node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dependencies": { + "underscore-contrib": "~0.3.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dependencies": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + } + }, + "node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" + }, + "node_modules/chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chokidar/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chownr": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "dev": true + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "node_modules/cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/closure-util": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/closure-util/-/closure-util-1.26.0.tgz", + "integrity": "sha512-zpWABEochWrY48soiEttuqJk/OSYscS9PcvKgHvKUefM29+R8rqx5Bp8KIZHR0Nsq1JrNgxg2VTmJ/IsqN5VOA==", + "dependencies": { + "acorn": "5.2.1", + "async": "2.6.0", + "fs-extra": "4.0.2", + "gaze": "1.1.2", + "get-down": "1.2.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "handlebars": "4.0.11", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nomnom": "1.8.1", + "npmlog": "4.1.2", + "rimraf": "2.6.2", + "send": "0.16.1", + "socket.io": "2.0.4", + "temp": "0.8.3" + }, + "bin": { + "closure-util": "bin/closure-util.js" + } + }, + "node_modules/closure-util/node_modules/async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dependencies": { + "lodash": "^4.14.0" + } + }, + "node_modules/closure-util/node_modules/fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/closure-util/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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": "*" + } + }, + "node_modules/closure-util/node_modules/graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/closure-util/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/closure-util/node_modules/lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "node_modules/closure-util/node_modules/rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/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==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "node_modules/component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "node_modules/compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dependencies": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/concat-with-sourcemaps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "dependencies": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dependencies": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dependencies": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dependencies": { + "capture-stack-trace": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dependencies": { + "boom": "2.x.x" + }, + "engines": { + "node": ">=0.10.40" + } + }, + "node_modules/crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-zip": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", + "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", + "dependencies": { + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", + "touch": "0.0.3" + }, + "bin": { + "decompress-zip": "bin/decompress-zip" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-zip/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/decompress-zip/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/decompress-zip/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/decompress/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-compare/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dependencies": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deprecate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", + "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", + "dev": true + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "dependencies": { + "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/download": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/download/-/download-5.0.3.tgz", + "integrity": "sha1-Y1N/l3+ZJmow64oqL70fILgAD3o=", + "dependencies": { + "caw": "^2.0.0", + "decompress": "^4.0.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^6.3.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", + "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "uws": "~9.14.0", + "ws": "~3.3.1" + }, + "optionalDependencies": { + "uws": "~9.14.0" + } + }, + "node_modules/engine.io-client": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", + "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", + "dependencies": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dependencies": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "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==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.50", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", + "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dependencies": { + "fill-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dependencies": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "dependencies": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/extract-zip/node_modules/yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "dependencies": { + "fd-slicer": "~1.0.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-exists": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-exists/-/file-exists-2.0.0.tgz", + "integrity": "sha1-okFQZlFQ5i1VvFRJKB2I0rCBDco=" + }, + "node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "dependencies": { + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreachasync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "bundleDependencies": [ + "node-pre-gyp" + ], + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/fsevents/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==", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/fsevents/node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/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==", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fsevents/node_modules/chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/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": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/fsevents/node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fsevents/node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "inBundle": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/fsevents/node_modules/fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/fsevents/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "inBundle": true, + "license": "ISC", + "optional": 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": "*" + } + }, + "node_modules/fsevents/node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fsevents/node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "inBundle": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/fsevents/node_modules/minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fsevents/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/needle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/fsevents/node_modules/node-pre-gyp": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", + "inBundle": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/fsevents/node_modules/nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/fsevents/node_modules/npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/npm-packlist": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/fsevents/node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/fsevents/node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "inBundle": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/fsevents/node_modules/rc/node_modules/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "inBundle": true, + "license": "MIT", + "optional": 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/fsevents/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fsevents/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==", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "inBundle": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fsevents/node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/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==", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fsevents/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/tar": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/fsevents/node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/fsevents/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "inBundle": true, + "license": "ISC", + "optional": 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==" + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/get-down": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-down/-/get-down-1.2.0.tgz", + "integrity": "sha512-SbpdXn+fNmGN6pp/vBALveh3oCbWYTR3wb5qifauPSFhAfAVQ7TMOnAkVzQm4YZD2KABzJB3sA2kmMLaOylA2A==", + "dependencies": { + "decompress-zip": "0.3.0", + "graceful-fs": "4.1.11", + "junk": "2.1.0", + "mout": "1.0.0", + "q": "1.5.0", + "request": "2.81.0", + "request-progress": "3.0.0", + "retry": "0.10.1", + "tar": "3.1.5", + "tmp": "0.0.31" + } + }, + "node_modules/get-down/node_modules/ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dependencies": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "node_modules/get-down/node_modules/assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/get-down/node_modules/aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "engines": { + "node": "*" + } + }, + "node_modules/get-down/node_modules/form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/get-down/node_modules/graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/get-down/node_modules/har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-down/node_modules/har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dependencies": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-down/node_modules/http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dependencies": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/get-down/node_modules/oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "engines": { + "node": "*" + } + }, + "node_modules/get-down/node_modules/performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + }, + "node_modules/get-down/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "node_modules/get-down/node_modules/qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/get-down/node_modules/request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dependencies": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/get-down/node_modules/tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/get-down/node_modules/uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dependencies": { + "npm-conf": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "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": "*" + } + }, + "node_modules/glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dependencies": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-base/node_modules/glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dependencies": { + "is-glob": "^2.0.0" + } + }, + "node_modules/glob-base/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-base/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dependencies": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" + }, + "node_modules/graceful-fs-extra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs-extra/-/graceful-fs-extra-2.0.0.tgz", + "integrity": "sha1-fR5X/Mcm4rDMcH14tKzqVC+pvk4=", + "dev": true, + "dependencies": { + "fs-extra": "^0.30.0", + "graceful-ncp": "^3.0.0", + "proxyquire": "^1.4.0" + } + }, + "node_modules/graceful-ncp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/graceful-ncp/-/graceful-ncp-3.0.0.tgz", + "integrity": "sha1-WAXqJVhe+YTMyqgIajxTDuQSioo=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.4", + "ncp": "^2.0.0", + "proxyquire": "^1.4.0" + } + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dependencies": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp/node_modules/gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dependencies": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^2.6" + } + }, + "node_modules/handlebars/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "dependencies": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dependencies": { + "isarray": "2.0.1" + } + }, + "node_modules/has-binary2/node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "node_modules/has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "engines": { + "node": "*" + } + }, + "node_modules/has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dependencies": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + }, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "engines": { + "node": ">=0.10.40" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "node_modules/inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "engines": { + "node": "*" + } + }, + "node_modules/interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dependencies": { + "is-primitive": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, + "node_modules/is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dependencies": { + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jquery": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "integrity": "sha1-IoveaYoMYUMdwmMKahVPFYkNIxc=" + }, + "node_modules/jquery-ui-npm": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/jquery-ui-npm/-/jquery-ui-npm-1.12.0.tgz", + "integrity": "sha1-PyyuiBlcfUis83hs+pANBAOBTk0=" + }, + "node_modules/js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "dependencies": { + "xmlcreate": "^1.0.1" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "node_modules/jsdoc": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", + "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", + "dependencies": { + "babylon": "7.0.0-beta.19", + "bluebird": "~3.5.0", + "catharsis": "~0.8.9", + "escape-string-regexp": "~1.0.5", + "js2xmlparser": "~3.0.0", + "klaw": "~2.0.0", + "marked": "~0.3.6", + "mkdirp": "~0.5.1", + "requizzle": "~0.2.1", + "strip-json-comments": "~2.0.1", + "taffydb": "2.6.2", + "underscore": "~1.8.3" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/jsdoc/node_modules/bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + }, + "node_modules/jsdoc/node_modules/klaw": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", + "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/jsdoc/node_modules/underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dependencies": { + "jsonify": "~0.0.0" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/junk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-2.1.0.tgz", + "integrity": "sha1-9DG0t/By3FAKXxDOf07HGTDnATQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=" + }, + "node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "dependencies": { + "package-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lazy-req": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz", + "integrity": "sha1-yUUKNj7N2i5vDHATKtTzf48G8rQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, + "node_modules/longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dependencies": { + "vlq": "^0.2.2" + } + }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/marked": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" + }, + "node_modules/merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "bin": { + "mime": "cli.js" + } + }, + "node_modules/mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dependencies": { + "mime-db": "~1.37.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "node_modules/minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + }, + "node_modules/minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "node_modules/mkpath": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", + "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" + }, + "node_modules/module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "node_modules/mout": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mout/-/mout-1.0.0.tgz", + "integrity": "sha1-m98dSvV9ZtR8s1OmM1oygQmOFQE=" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/multimeter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/multimeter/-/multimeter-0.1.1.tgz", + "integrity": "sha1-+FbID8PPDx1K2Os2rWhzXj7Vs+o=", + "dependencies": { + "charm": "~0.1.1" + } + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node_modules/nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dependencies": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + } + }, + "node_modules/nomnom/node_modules/ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/nomnom/node_modules/chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dependencies": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/nomnom/node_modules/strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "bin": { + "strip-ansi": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "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==", + "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/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nw": { + "version": "0.42.2-sdk", + "resolved": "https://registry.npmjs.org/nw/-/nw-0.42.2-sdk.tgz", + "integrity": "sha512-9xVCsQgKM6ycZ+3gtLzloasSaASHL2BPXupqdPEiWKttewomvEalcNJXuJUhQDKrWEBm1FRLFmijlKt/2yUXXw==", + "dependencies": { + "chalk": "~1.1.3", + "decompress": "^4.2.0", + "download": "^5.0.3", + "file-exists": "^2.0.0", + "merge": "^1.2.0", + "multimeter": "^0.1.1", + "rimraf": "^2.2.8", + "semver": "^5.1.0", + "yargs": "^3.2.1" + }, + "bin": { + "nw": "bin/nw" + } + }, + "node_modules/nw-builder": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/nw-builder/-/nw-builder-3.5.7.tgz", + "integrity": "sha512-7LTQu8oom56xdDeyoUygZytxvyWuh+pw4nY4eFMGUd7/m/eOdAs/6UZjav6CbjnyIg8n4FtwnjCXXLsFI6Ooug==", + "dev": true, + "dependencies": { + "archiver": "^2.1.1", + "boxen": "^1.1.0", + "chalk": "^2.3.2", + "deprecate": "~1.0.0", + "extract-zip": "^1.6.5", + "graceful-fs-extra": "^2.0.0", + "graceful-ncp": "^3.0.0", + "inherits": "~2.0.1", + "lazy-req": "^2.0.0", + "lodash": "~4.17.4", + "optimist": "^0.6.1", + "plist": "^3.0.1", + "progress": "~2.0.0", + "rcedit": "^1.0.0", + "recursive-readdir-sync": "^1.0.6", + "request": "^2.88.0", + "rimraf": "^2.5.2", + "semver": "^5.5.0", + "simple-glob": "~0.2.0", + "tar-fs": "^1.13.0", + "temp": "github:adam-lynch/node-temp#remove_tmpdir_dep", + "thenify": "^3.3.0", + "update-notifier": "^2.4.0", + "winresourcer": "^0.9.0" + }, + "bin": { + "nwbuild": "bin/nwbuild" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/nw-builder/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/nw-builder/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/nw-builder/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/nw-builder/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/nw-builder/node_modules/temp": { + "resolved": "git+ssh://git@github.com/adam-lynch/node-temp.git#279c1350cb7e4f02515d91da9e35d39a40774016", + "dev": true, + "engines": [ + "node >=4.0.0" + ], + "dependencies": { + "rimraf": "~2.2.6" + } + }, + "node_modules/nw-builder/node_modules/temp/node_modules/rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/nw-dialog": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/nw-dialog/-/nw-dialog-1.0.7.tgz", + "integrity": "sha1-NTNALQ/btlzHkxE5WQhPe6RTsRM=" + }, + "node_modules/nw/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nw/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nw/node_modules/yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dependencies": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dependencies": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit/node_modules/for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/openlayers": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/openlayers/-/openlayers-4.6.5.tgz", + "integrity": "sha512-RH1jqHJA8/d4ZuMYewBMfbFvmriplQ3GvDSLpqxad3S55PFyMWkbg3lKSt2zHRhijiFq4PpsCsJQLDqmSDGSOQ==", + "dependencies": { + "async": "2.6.0", + "closure-util": "1.26.0", + "fs-extra": "4.0.3", + "jsdoc": "3.5.5", + "nomnom": "1.8.1", + "pbf": "3.1.0", + "pixelworks": "1.1.0", + "rbush": "2.0.1", + "rollup": "^0.52.0", + "rollup-plugin-cleanup": "^2.0.0", + "rollup-plugin-commonjs": "^8.2.6", + "rollup-plugin-node-resolve": "^3.0.0", + "temp": "0.8.3", + "walk": "2.3.9" + } + }, + "node_modules/openlayers/node_modules/async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dependencies": { + "lodash": "^4.14.0" + } + }, + "node_modules/openlayers/node_modules/fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/openlayers/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dependencies": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "node_modules/optimist/node_modules/minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "dependencies": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json/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/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dependencies": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-glob/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-glob/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pbf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.1.0.tgz", + "integrity": "sha512-/hYJmIsTmh7fMkHAWWXJ5b8IKLWdjdlAFb3IHkRBn1XUhIYBChVGfVwmHEAV3UfXTxsP/AKfYTXTS/dCPxJd5w==", + "dependencies": { + "ieee754": "^1.1.6", + "resolve-protobuf-schema": "^2.0.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pixelworks": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pixelworks/-/pixelworks-1.1.0.tgz", + "integrity": "sha1-Hwla1I3Ki/ihyCWOAJIDGkTyLKU=" + }, + "node_modules/plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, + "node_modules/protocol-buffers-schema": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz", + "integrity": "sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==" + }, + "node_modules/proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "dev": true, + "dependencies": { + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" + } + }, + "node_modules/proxyquire/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", + "dev": true + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" + }, + "node_modules/randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dependencies": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/randomatic/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rbush": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.1.tgz", + "integrity": "sha1-TPrKKMMGS8DudUMaG3mZDode76k=", + "dependencies": { + "quickselect": "^1.0.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rcedit": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.2.tgz", + "integrity": "sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir-sync": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", + "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", + "dev": true + }, + "node_modules/regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dependencies": { + "is-equal-shallow": "^0.1.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "dev": true, + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "node_modules/requizzle": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", + "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "dependencies": { + "underscore": "~1.6.0" + } + }, + "node_modules/resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "engines": { + "node": "*" + } + }, + "node_modules/right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, + "dependencies": { + "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "0.52.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.52.3.tgz", + "integrity": "sha512-cw+vb9NqaTXlwJyb8G+Ve+uhhlVTcl1NKBkfANdeQqVcpZFilQgeNnAnNiu7MwfeXrqiKEGz+3R03a3zeFkmEQ==", + "bin": { + "rollup": "bin/rollup" + } + }, + "node_modules/rollup-plugin-cleanup": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-2.0.1.tgz", + "integrity": "sha512-Z2UpMe3l2Oo8jzoB2gAWcb3UqIyiGxlh8kKlcs/W53yTPtwdF8RGfhuTx+/kjRlkSc5TC03t3sX3Lj3B40k9Eg==", + "dependencies": { + "acorn": "4.x", + "magic-string": "^0.22.4", + "rollup-pluginutils": "^2.0.1" + }, + "engines": { + "node": ">=4.2" + } + }, + "node_modules/rollup-plugin-cleanup/node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/rollup-plugin-commonjs": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz", + "integrity": "sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==", + "dependencies": { + "acorn": "^5.2.1", + "estree-walker": "^0.5.0", + "magic-string": "^0.22.4", + "resolve": "^1.4.0", + "rollup-pluginutils": "^2.0.1" + } + }, + "node_modules/rollup-plugin-node-resolve": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", + "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", + "dependencies": { + "builtin-modules": "^2.0.0", + "is-module": "^1.0.0", + "resolve": "^1.1.6" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz", + "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==", + "dependencies": { + "estree-walker": "^0.5.2", + "micromatch": "^2.3.11" + } + }, + "node_modules/rollup-pluginutils/node_modules/arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dependencies": { + "arr-flatten": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dependencies": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dependencies": { + "is-posix-bracket": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-pluginutils/node_modules/micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dependencies": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dependencies": { + "commander": "~2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "dependencies": { + "semver": "^5.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/semver-diff/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/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.1", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "node_modules/simple-glob": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/simple-glob/-/simple-glob-0.2.0.tgz", + "integrity": "sha512-CnCJ+SEDIWYviwBUp7pGxdq4QZgaR5xVzoxL/gujEwn2/vOJ4PVQrmd8Z0spH1cPsLxgF83cNjNcy4zYvSWiZA==", + "dev": true, + "dependencies": { + "glob": "^7.1.2", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.union": "^4.6.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dependencies": { + "hoek": "2.x.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/socket.io": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", + "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", + "dependencies": { + "debug": "~2.6.6", + "engine.io": "~3.1.0", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.0.4", + "socket.io-parser": "~3.1.1" + } + }, + "node_modules/socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" + }, + "node_modules/socket.io-client": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", + "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", + "dependencies": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~2.6.4", + "engine.io-client": "~3.1.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.1.1", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", + "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", + "dependencies": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "has-binary2": "~1.0.2", + "isarray": "2.0.1" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dependencies": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "node_modules/stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" + }, + "node_modules/tar": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-3.1.5.tgz", + "integrity": "sha512-TKJKz1fqBOZBaIQ/MGRKU0EnTGmKMLy4ReTRgP10AgtfOWBbj9PBg4MgY80GFpqGbs2EzcIctW5gbwbP4woDYg==", + "dependencies": { + "minipass": "^2.0.2", + "minizlib": "^1.0.3", + "mkdirp": "^0.5.0", + "yallist": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "dev": true, + "dependencies": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + } + }, + "node_modules/tar-fs/node_modules/pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + }, + "node_modules/temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "engines": [ + "node >=0.8.0" + ], + "dependencies": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "dependencies": { + "execa": "^0.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/three": { + "version": "0.72.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.72.0.tgz", + "integrity": "sha1-rE65X9TlsVnA/6u2CWF/7JCjNrI=", + "engines": { + "node": "*" + } + }, + "node_modules/throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/touch": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", + "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", + "dependencies": { + "nopt": "~1.0.10" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", + "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "dependencies": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js/node_modules/cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "node_modules/uglify-js/node_modules/window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/uglify-js/node_modules/wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/uglify-js/node_modules/yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "dependencies": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "node_modules/uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "node_modules/unbzip2-stream": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", + "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" + }, + "node_modules/underscore-contrib": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", + "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "dependencies": { + "underscore": "1.6.0" + } + }, + "node_modules/undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "engines": { + "node": ">=4" + } + }, + "node_modules/upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "dependencies": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/update-notifier/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/update-notifier/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/update-notifier/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/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "node_modules/url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "engines": { + "node": ">= 4" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/uws": { + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", + "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" + }, + "node_modules/walk": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", + "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", + "dependencies": { + "foreachasync": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winresourcer": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/winresourcer/-/winresourcer-0.9.0.tgz", + "integrity": "sha1-CvyjDzxudFgFjSigtnPJ3aYiubU=", + "dev": true, + "bin": { + "winresourcer": "lib/WinResourcer" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-file-atomic/node_modules/graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=" + }, + "node_modules/xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true, + "engines": { + "node": ">=0.1" + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "node_modules/yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dependencies": { + "camelcase": "^3.0.0" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "node_modules/zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dependencies": { + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + } + }, "dependencies": { "abbrev": { "version": "1.1.1", @@ -2194,21 +10852,29 @@ "dependencies": { "abbrev": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "bundled": true, "optional": true }, "ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "bundled": true, "optional": true }, "aproba": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "bundled": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "bundled": true, "optional": true, "requires": { @@ -2218,11 +10884,15 @@ }, "balanced-match": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "bundled": true, "optional": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "bundled": true, "optional": true, "requires": { @@ -2232,31 +10902,43 @@ }, "chownr": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "bundled": true, "optional": true }, "code-point-at": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "bundled": true, "optional": true }, "concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "bundled": true, "optional": true }, "console-control-strings": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "bundled": true, "optional": true }, "core-util-is": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "bundled": true, "optional": true }, "debug": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "bundled": true, "optional": true, "requires": { @@ -2265,21 +10947,29 @@ }, "deep-extend": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "bundled": true, "optional": true }, "delegates": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "bundled": true, "optional": true }, "detect-libc": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "bundled": true, "optional": true }, "fs-minipass": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "bundled": true, "optional": true, "requires": { @@ -2288,11 +10978,15 @@ }, "fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "bundled": true, "optional": true }, "gauge": { "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "bundled": true, "optional": true, "requires": { @@ -2308,6 +11002,8 @@ }, "glob": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "bundled": true, "optional": true, "requires": { @@ -2321,11 +11017,15 @@ }, "has-unicode": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "bundled": true, "optional": true }, "iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "bundled": true, "optional": true, "requires": { @@ -2334,6 +11034,8 @@ }, "ignore-walk": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "bundled": true, "optional": true, "requires": { @@ -2342,6 +11044,8 @@ }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "bundled": true, "optional": true, "requires": { @@ -2351,16 +11055,22 @@ }, "inherits": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "bundled": true, "optional": true }, "ini": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "bundled": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "bundled": true, "optional": true, "requires": { @@ -2369,11 +11079,15 @@ }, "isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "bundled": true, "optional": true }, "minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "bundled": true, "optional": true, "requires": { @@ -2382,11 +11096,15 @@ }, "minimist": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "bundled": true, "optional": true }, "minipass": { "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "bundled": true, "optional": true, "requires": { @@ -2396,6 +11114,8 @@ }, "minizlib": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "bundled": true, "optional": true, "requires": { @@ -2404,6 +11124,8 @@ }, "mkdirp": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "bundled": true, "optional": true, "requires": { @@ -2412,11 +11134,15 @@ }, "ms": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "bundled": true, "optional": true }, "needle": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", "bundled": true, "optional": true, "requires": { @@ -2427,6 +11153,8 @@ }, "node-pre-gyp": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", "bundled": true, "optional": true, "requires": { @@ -2444,6 +11172,8 @@ }, "nopt": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "bundled": true, "optional": true, "requires": { @@ -2453,11 +11183,15 @@ }, "npm-bundled": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "bundled": true, "optional": true }, "npm-packlist": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "bundled": true, "optional": true, "requires": { @@ -2467,6 +11201,8 @@ }, "npmlog": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "bundled": true, "optional": true, "requires": { @@ -2478,16 +11214,22 @@ }, "number-is-nan": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "bundled": true, "optional": true }, "object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "bundled": true, "optional": true }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "bundled": true, "optional": true, "requires": { @@ -2496,16 +11238,22 @@ }, "os-homedir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "bundled": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "bundled": true, "optional": true }, "osenv": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "bundled": true, "optional": true, "requires": { @@ -2515,16 +11263,22 @@ }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "bundled": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "bundled": true, "optional": true }, "rc": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "bundled": true, "optional": true, "requires": { @@ -2536,6 +11290,8 @@ "dependencies": { "minimist": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "bundled": true, "optional": true } @@ -2543,6 +11299,8 @@ }, "readable-stream": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "bundled": true, "optional": true, "requires": { @@ -2557,6 +11315,8 @@ }, "rimraf": { "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "bundled": true, "optional": true, "requires": { @@ -2565,36 +11325,60 @@ }, "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==", "bundled": true, "optional": true }, "safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "bundled": true, "optional": true }, "sax": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "bundled": true, "optional": true }, "semver": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "bundled": true, "optional": true }, "set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "bundled": true, "optional": true }, "signal-exit": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "bundled": true, "optional": 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==", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "bundled": true, "optional": true, "requires": { @@ -2603,16 +11387,10 @@ "strip-ansi": "^3.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "bundled": true, "optional": true, "requires": { @@ -2621,11 +11399,15 @@ }, "strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "bundled": true, "optional": true }, "tar": { "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "bundled": true, "optional": true, "requires": { @@ -2640,11 +11422,15 @@ }, "util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "bundled": true, "optional": true }, "wide-align": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "bundled": true, "optional": true, "requires": { @@ -2653,11 +11439,15 @@ }, "wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "bundled": true, "optional": true }, "yallist": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "bundled": true, "optional": true } @@ -4445,9 +13235,9 @@ } }, "temp": { - "version": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", - "from": "github:adam-lynch/node-temp#remove_tmpdir_dep", + "version": "git+ssh://git@github.com/adam-lynch/node-temp.git#279c1350cb7e4f02515d91da9e35d39a40774016", "dev": true, + "from": "temp@github:adam-lynch/node-temp#remove_tmpdir_dep", "requires": { "rimraf": "~2.2.6" }, @@ -5905,6 +14695,14 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -5915,14 +14713,6 @@ "strip-ansi": "^3.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "stringstream": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", From 4cbcd0fa389c4b70a1a1bee996a47be5a60adad6 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sun, 27 Dec 2020 20:58:32 +0100 Subject: [PATCH 02/58] Mission planner gui evolution modification of code to have more thant Waypoints in the Gui list --- images/icons/cf_icon_position_head.png | Bin 0 -> 27328 bytes images/icons/cf_icon_position_poi.png | Bin 0 -> 26314 bytes tabs/mission_control.html | 21 ++++++- tabs/mission_control.js | 77 ++++++++++++++++++++----- 4 files changed, 80 insertions(+), 18 deletions(-) create mode 100644 images/icons/cf_icon_position_head.png create mode 100644 images/icons/cf_icon_position_poi.png diff --git a/images/icons/cf_icon_position_head.png b/images/icons/cf_icon_position_head.png new file mode 100644 index 0000000000000000000000000000000000000000..591ae8f7ba6cda2da2251bd6a4f8bc916f56eeda GIT binary patch literal 27328 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%0AAuck=wx`Wj%zU+;dI#|H8#BK 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 + + + + + + + @@ -97,9 +104,17 @@ -

- - + + +
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 05d76c07..ca3d8b91 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -304,13 +304,15 @@ TABS.mission_control.initialize = function (callback) { var map; var selectedMarker = null; var pointForSend = 0; - var settings = { speed: 0, alt: 5000 }; + var settings = { speed: 0, alt: 5000}; function clearEditForm() { $('#pointLat').val(''); $('#pointLon').val(''); $('#pointAlt').val(''); - $('#pointSpeed').val(''); + $('#pointP1').val(''); + $('#pointP2').val(''); + $('#pointP3').val(''); $('[name=pointNumber]').val(''); $('#MPeditPoint').fadeOut(300); } @@ -388,14 +390,31 @@ TABS.mission_control.initialize = function (callback) { map.addLayer(vectorLayer); } - function getPointIcon(isEdit) { + function getPointIcon(_action, isEdit) { + var dictofPoint = { + 1: '', + 2: '', + 3: '', + 4: '', + 5: '_poi', + 6: '', + 7: '_head', + 8: '' + }; + return new ol.style.Style({ - image: new ol.style.Icon(({ + image: new ol.style.Icon(({ + anchor: [0.5, 1], + opacity: 1, + scale: 0.5, + src: '../images/icons/cf_icon_position' + dictofPoint[_action] + (isEdit ? '_edit' : '')+ '.png' + })) + /*image: new ol.style.Icon(({ anchor: [0.5, 1], opacity: 1, scale: 0.5, src: '../images/icons/cf_icon_position' + (isEdit ? '_edit' : '') + '.png' - })) + }))*/ /* text: new ol.style.Text({ text: '10', @@ -409,7 +428,7 @@ TABS.mission_control.initialize = function (callback) { }); } - function addMarker(_pos, _alt, _action, _speed) { + function addMarker(_pos, _alt, _action, _parameter1='', _parameter2='', _parameter3='') { var iconFeature = new ol.Feature({ geometry: new ol.geom.Point(_pos), name: 'Null Island', @@ -417,7 +436,7 @@ TABS.mission_control.initialize = function (callback) { rainfall: 500 }); - iconFeature.setStyle(getPointIcon()); + iconFeature.setStyle(getPointIcon(_action)); var vectorSource = new ol.source.Vector({ features: [iconFeature] @@ -430,7 +449,9 @@ TABS.mission_control.initialize = function (callback) { vectorLayer.alt = _alt; vectorLayer.number = markers.length; vectorLayer.action = _action; - vectorLayer.speedValue = _speed; + vectorLayer.parameter1 = _parameter1; + vectorLayer.parameter2 = _parameter2; + vectorLayer.parameter3 = _parameter3; markers.push(vectorLayer); @@ -659,7 +680,7 @@ TABS.mission_control.initialize = function (callback) { map.on('click', function (evt) { if (selectedMarker != null) { try { - selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon()); + selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action)); selectedMarker = null; clearEditForm(); } catch (e) { @@ -675,6 +696,18 @@ TABS.mission_control.initialize = function (callback) { function (feature, layer) { return layer; }); + + var dictOfLabelParameterPoint = { + 1: {parameter1: 'speed (cm/s)', parameter2: '', parameter3: ''}, + 2: {parameter1: '', parameter2: '', parameter3: ''}, + 3: {parameter1: 'wait time (s)', parameter2: 'speed (cm/s)', parameter3: ''}, + 4: {parameter1: 'force land (non zero)', parameter2: '', parameter3: ''}, + 5: {parameter1: '', parameter2: '', parameter3: ''}, + 6: {parameter1: 'target WP number', parameter2: 'Number of repeat (-1: infinite)', parameter3: ''}, + 7: {parameter1: 'heading (deg)', parameter2: '', parameter3: ''}, + 8: {parameter1: '', parameter2: '', parameter3: ''} + }; + if (selectedFeature) { for (var i in markers) @@ -686,7 +719,7 @@ TABS.mission_control.initialize = function (callback) { var geometry = selectedFeature.getGeometry(); var coord = ol.proj.toLonLat(geometry.getCoordinates()); - selectedFeature.setStyle(getPointIcon(true)); + selectedFeature.setStyle(getPointIcon(selectedMarker.action, true)); var altitudeMeters = app.ConvertCentimetersToMeters(selectedMarker.alt); @@ -695,7 +728,19 @@ TABS.mission_control.initialize = function (callback) { $('#pointLat').val(Math.round(coord[1] * 10000000) / 10000000); $('#pointAlt').val(selectedMarker.alt); $('#pointType').val(selectedMarker.action); - $('#pointSpeed').val(selectedMarker.speedValue); + $('#pointP1').val(selectedMarker.parameter1); + $('#pointP2').val(selectedMarker.parameter2); + $('#pointP3').val(selectedMarker.parameter3); + for (var j in dictOfLabelParameterPoint[selectedMarker.action]) + { + if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') + { + $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); + $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); + + } + else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} + } $('#MPeditPoint').fadeIn(300); } } @@ -762,11 +807,13 @@ TABS.mission_control.initialize = function (callback) { geometry.setCoordinates(ol.proj.fromLonLat([parseFloat($('#pointLon').val()), parseFloat($('#pointLat').val())])); t.alt = $('#pointAlt').val(); t.action = $('#pointType').val(); - t.speedValue = $('#pointSpeed').val(); + t.P1Value = $('#pointP1').val(); + t.P2Value = $('#pointP2').val(); + t.P3Value = $('#pointP3').val(); } }); - selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon()); + selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action)); selectedMarker = null; clearEditForm(); repaint(); @@ -1009,7 +1056,7 @@ TABS.mission_control.initialize = function (callback) { 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), 'alt': (markers[i].alt / 100) } }; - if ((markers[i].action == MWNP.WPTYPE.WAYPOINT) && (markers[i].speedValue > 0)) point.$['parameter1'] = markers[i].speedValue; + if ((markers[i].action == MWNP.WPTYPE.WAYPOINT) && (markers[i].parameter1 > 0)) point.$['parameter1'] = markers[i].parameter1; /*parameter1 = SpeedValue in this case*/ data.missionitem.push(point); } @@ -1107,7 +1154,7 @@ TABS.mission_control.initialize = function (callback) { MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; - MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].speedValue; + MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; pointForSend++; if (pointForSend >= markers.length && !isRTH) { MISSION_PLANER.bufferPoint.endMission = 0xA5; From 8c2d036ef3faf37ba80a081a3615b1b3173bef78 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sun, 27 Dec 2020 23:10:34 +0100 Subject: [PATCH 03/58] add Table to follow mission --- tabs/mission_control.html | 26 +++++++++++++++++++++++ tabs/mission_control.js | 44 +++++++++++++++++++++++++++------------ 2 files changed, 57 insertions(+), 13 deletions(-) diff --git a/tabs/mission_control.html b/tabs/mission_control.html index 03bda97a..d06ddaf0 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -126,6 +126,32 @@
+
+
+
Mission Table
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+
+
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index ca3d8b91..d1d3b280 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -15,6 +15,17 @@ MWNP.WPTYPE = { LAND: 8 }; +// Dictionary of Parameter1,2,3 depending on type of action selected (refer to MWNP.WPTYPE) +var dictOfLabelParameterPoint = { + 1: {parameter1: 'Speed (cm/s)', parameter2: '', parameter3: ''}, + 2: {parameter1: '', parameter2: '', parameter3: ''}, + 3: {parameter1: 'Wait time (s)', parameter2: 'Speed (cm/s)', parameter3: ''}, + 4: {parameter1: 'Force land (non zero)', parameter2: '', parameter3: ''}, + 5: {parameter1: '', parameter2: '', parameter3: ''}, + 6: {parameter1: 'Target WP number', parameter2: 'Number of repeat (-1: infinite)', parameter3: ''}, + 7: {parameter1: 'Heading (deg)', parameter2: '', parameter3: ''}, + 8: {parameter1: '', parameter2: '', parameter3: ''} +}; TABS.mission_control = {}; TABS.mission_control.isYmapLoad = false; @@ -428,7 +439,7 @@ TABS.mission_control.initialize = function (callback) { }); } - function addMarker(_pos, _alt, _action, _parameter1='', _parameter2='', _parameter3='') { + function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0) { var iconFeature = new ol.Feature({ geometry: new ol.geom.Point(_pos), name: 'Null Island', @@ -696,17 +707,7 @@ TABS.mission_control.initialize = function (callback) { function (feature, layer) { return layer; }); - - var dictOfLabelParameterPoint = { - 1: {parameter1: 'speed (cm/s)', parameter2: '', parameter3: ''}, - 2: {parameter1: '', parameter2: '', parameter3: ''}, - 3: {parameter1: 'wait time (s)', parameter2: 'speed (cm/s)', parameter3: ''}, - 4: {parameter1: 'force land (non zero)', parameter2: '', parameter3: ''}, - 5: {parameter1: '', parameter2: '', parameter3: ''}, - 6: {parameter1: 'target WP number', parameter2: 'Number of repeat (-1: infinite)', parameter3: ''}, - 7: {parameter1: 'heading (deg)', parameter2: '', parameter3: ''}, - 8: {parameter1: '', parameter2: '', parameter3: ''} - }; + if (selectedFeature) { @@ -728,16 +729,17 @@ TABS.mission_control.initialize = function (callback) { $('#pointLat').val(Math.round(coord[1] * 10000000) / 10000000); $('#pointAlt').val(selectedMarker.alt); $('#pointType').val(selectedMarker.action); + // Change SpeedValue to Parameter1, 2, 3 $('#pointP1').val(selectedMarker.parameter1); $('#pointP2').val(selectedMarker.parameter2); $('#pointP3').val(selectedMarker.parameter3); + // Selection box update depending on choice of type of waypoint for (var j in dictOfLabelParameterPoint[selectedMarker.action]) { if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') { $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); - } else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} } @@ -885,6 +887,22 @@ TABS.mission_control.initialize = function (callback) { loadSettings(); closeSettingsPanel(); }); + + // Add function to update parameter i field in the selected Edit WP Box + $('#pointType').on('change', function () { + console.log(dictOfLabelParameterPoint[selectedMarker.action]) + selectedMarker.action = $('#pointType').val(); + console.log(dictOfLabelParameterPoint[selectedMarker.action]) + for (var j in dictOfLabelParameterPoint[selectedMarker.action]) + { + if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') + { + $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); + $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); + } + else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} + } + }); updateTotalInfo(); } From 5902dea6d434746803c654c7ed68d6ecea62301f Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Mon, 28 Dec 2020 22:56:12 +0100 Subject: [PATCH 04/58] Update POI on map update for line painting taking into account POI waypoint --- src/css/tabs/mission_planer.css | 26 +++++++++++++++++ tabs/mission_control.html | 25 ++++++++-------- tabs/mission_control.js | 52 ++++++++++++++++++--------------- 3 files changed, 67 insertions(+), 36 deletions(-) diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index c61acc4a..bc575d85 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -123,3 +123,29 @@ .ol-touch .mission-control-settings { top: 80px; } + +.tab-mission-control .missionTable { + width: 100%; + text-align: center; +} + +.tab-mission-control .missionTable thead { + display: table-header-group !important; +} + +.tab-mission-control .missionTable thead tr { + border-left: 1px solid #e4e4e4; + border-right: 1px solid #e4e4e4; + background-color: #828885; + color: #FFF; +} +.tab-mission-control .missionTable td, +.tab-mission-control .missionTable th { + padding: 2px; + height: 2.5em; +} + +.tab-mission-control .missionTable tr:nth-child(even) td, +.tab-mission-control .missionTable tr:nth-child(even) th { + background-color: #ebe7e7; +} \ No newline at end of file diff --git a/tabs/mission_control.html b/tabs/mission_control.html index d06ddaf0..883aefc0 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -126,31 +126,30 @@
-
+
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index d1d3b280..9b34422b 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -349,21 +349,42 @@ TABS.mission_control.initialize = function (callback) { function repaint() { var oldPos; + var oldAction; + var lastPoiNumber; for (var i in lines) { map.removeLayer(lines[i]); } lines = []; $('#missionDistance').text(0); + //console.log(markers) map.getLayers().forEach(function (t) { //feature.getGeometry().getType() + console.log(t) if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined') { var geometry = t.getSource().getFeatures()[0].getGeometry(); - if (typeof oldPos !== 'undefined') { - paintLine(oldPos, geometry.getCoordinates()); - } + var action = t.action; + var number = t.number; + if (action == 5) { + // If action is Set_POI, increment counter of POI + lastPoiNumber = number; + } + else if (action == 6) { + // If action is Jump + if (typeof oldPos !== 'undefined') { + paintLine(oldPos, markers[t.number].getCoordinates(), '#ffb725', 5); + } + } + else { + if (typeof oldPos !== 'undefined' && (typeof lastPoiNumber == 'undefined' || number < lastPoiNumber )) { + paintLine(oldPos, geometry.getCoordinates()); + } + else if (typeof oldPos !== 'undefined' && number >= lastPoiNumber) { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); + } + oldPos = geometry.getCoordinates(); + } - oldPos = geometry.getCoordinates(); } }); //reset text position @@ -372,7 +393,7 @@ TABS.mission_control.initialize = function (callback) { } } - function paintLine(pos1, pos2) { + function paintLine(pos1, pos2, color='#1497f1', lineDash=0) { var line = new ol.geom.LineString([pos1, pos2]); var feature = new ol.Feature({ @@ -380,8 +401,9 @@ TABS.mission_control.initialize = function (callback) { }); feature.setStyle(new ol.style.Style({ stroke: new ol.style.Stroke({ - color: '#1497f1', - width: 3 + color: color, + width: 3, + lineDash: lineDash }) })); @@ -420,22 +442,6 @@ TABS.mission_control.initialize = function (callback) { scale: 0.5, src: '../images/icons/cf_icon_position' + dictofPoint[_action] + (isEdit ? '_edit' : '')+ '.png' })) - /*image: new ol.style.Icon(({ - anchor: [0.5, 1], - opacity: 1, - scale: 0.5, - src: '../images/icons/cf_icon_position' + (isEdit ? '_edit' : '') + '.png' - }))*/ - /* - text: new ol.style.Text({ - text: '10', - offsetX: -1, - offsetY: -30, - overflow: true, - scale: 2, - fill: new ol.style.Fill({ color: 'black' }) - }) - */ }); } From b8675b5dc6045b62194c943ad8c2e38086b562b8 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Tue, 29 Dec 2020 10:28:47 +0100 Subject: [PATCH 05/58] Multiple following POI case Manage multiple following POI by changing dashline style each time a new POI is set --- tabs/mission_control.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 9b34422b..c6938764 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -350,24 +350,28 @@ TABS.mission_control.initialize = function (callback) { function repaint() { var oldPos; var oldAction; - var lastPoiNumber; + var poiNumber; + var poiList; + var lengthPoiList; for (var i in lines) { map.removeLayer(lines[i]); } lines = []; + poiList = []; $('#missionDistance').text(0); //console.log(markers) map.getLayers().forEach(function (t) { //feature.getGeometry().getType() - console.log(t) if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined') { var geometry = t.getSource().getFeatures()[0].getGeometry(); var action = t.action; var number = t.number; if (action == 5) { // If action is Set_POI, increment counter of POI - lastPoiNumber = number; + poiNumber = number; + lengthPoiList = poiList.push(poiNumber); + console.log(lengthPoiList) } else if (action == 6) { // If action is Jump @@ -376,11 +380,16 @@ TABS.mission_control.initialize = function (callback) { } } else { - if (typeof oldPos !== 'undefined' && (typeof lastPoiNumber == 'undefined' || number < lastPoiNumber )) { + if (typeof oldPos !== 'undefined' && (typeof poiNumber == 'undefined' || number < poiNumber )) { paintLine(oldPos, geometry.getCoordinates()); } - else if (typeof oldPos !== 'undefined' && number >= lastPoiNumber) { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); + else if (typeof oldPos !== 'undefined' && number >= poiNumber) { + if ((lengthPoiList % 2) == 0) { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); + } + else { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); + } } oldPos = geometry.getCoordinates(); } @@ -403,7 +412,7 @@ TABS.mission_control.initialize = function (callback) { stroke: new ol.style.Stroke({ color: color, width: 3, - lineDash: lineDash + lineDash: [lineDash] }) })); From 109cf5cdee427fb047ce7eee99384dc157d6035b Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Wed, 30 Dec 2020 23:25:00 +0100 Subject: [PATCH 06/58] Radio button for options (RTH, JUMP, HEAD) modification to add RTH, JUMP, HEAD as options of Waypoints first draft for GUI (remains saving part: XML format) --- src/css/tabs/mission_planer.css | 19 ++++++++++++ tabs/mission_control.html | 52 +++++++++++++++++---------------- tabs/mission_control.js | 35 ++++++++++++++++++++-- 3 files changed, 78 insertions(+), 28 deletions(-) diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index bc575d85..33caeea2 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -115,7 +115,26 @@ width: 60px; display: inline-block; } +.tab-mission-control input[type=radio], input.radio { + width: 20px; + padding-left: 3px; + height: 20px; + line-height: 20px; + text-align: left; + border: 1px solid silver; + border-radius: 3px; + font-size: 12px; + font-weight: normal; +} +/* +.tab-mission-control .radio-options { + display: inline-block; +} +.tab-mission-control input[type=radio], input.radio { + float: left; + } +*/ .mission-control-settings { top: 65px; left: .5em; diff --git a/tabs/mission_control.html b/tabs/mission_control.html index 883aefc0..b32a9616 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -116,6 +116,33 @@ + +
Save @@ -126,31 +153,6 @@
- -
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index c6938764..0553370c 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -324,6 +324,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointP1').val(''); $('#pointP2').val(''); $('#pointP3').val(''); + $('[name=Options]').filter('[value=None]').prop('checked', true); $('[name=pointNumber]').val(''); $('#MPeditPoint').fadeOut(300); } @@ -454,7 +455,7 @@ TABS.mission_control.initialize = function (callback) { }); } - function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0) { + function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0, _options={key: "None"}) { var iconFeature = new ol.Feature({ geometry: new ol.geom.Point(_pos), name: 'Null Island', @@ -478,6 +479,7 @@ TABS.mission_control.initialize = function (callback) { vectorLayer.parameter1 = _parameter1; vectorLayer.parameter2 = _parameter2; vectorLayer.parameter3 = _parameter3; + vectorLayer.options = _options; markers.push(vectorLayer); @@ -748,6 +750,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointP1').val(selectedMarker.parameter1); $('#pointP2').val(selectedMarker.parameter2); $('#pointP3').val(selectedMarker.parameter3); + $('[name=Options]').filter('[value='+selectedMarker.options['key']+']').prop('checked', true); // Selection box update depending on choice of type of waypoint for (var j in dictOfLabelParameterPoint[selectedMarker.action]) { @@ -758,6 +761,10 @@ TABS.mission_control.initialize = function (callback) { } else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} } + if ([1,2,3].includes(selectedMarker.action)) { + $('#pointOptionclass').fadeIn(300); + } + else {$('#pointOptionclass').fadeIn(300);} $('#MPeditPoint').fadeIn(300); } } @@ -827,6 +834,26 @@ TABS.mission_control.initialize = function (callback) { t.P1Value = $('#pointP1').val(); t.P2Value = $('#pointP2').val(); t.P3Value = $('#pointP3').val(); + if ($('input[name=Options]:checked').val() == "RTH") { + t.options = {key: $('input[name=Options]:checked').val(), + landAfter: $('Options_LandRTH').val() + }; + } + else if ($('input[name=Options]:checked').val() == "JUMP") { + t.options = {key: $('input[name=Options]:checked').val(), + targetWP: $('Options_TargetJUMP').val(), + numRepeat: $('Options_NumberJUMP').val() + }; + } + else if ($('input[name=Options]:checked').val() == "SET_HEAD") { + t.options = {key: $('input[name=Options]:checked').val(), + heading: $('Options_HeadingHead').val() + }; + } + else { + t.options = {key: $('input[name=Options]:checked').val()} + } + console.log(t.options); } }); @@ -905,9 +932,7 @@ TABS.mission_control.initialize = function (callback) { // Add function to update parameter i field in the selected Edit WP Box $('#pointType').on('change', function () { - console.log(dictOfLabelParameterPoint[selectedMarker.action]) selectedMarker.action = $('#pointType').val(); - console.log(dictOfLabelParameterPoint[selectedMarker.action]) for (var j in dictOfLabelParameterPoint[selectedMarker.action]) { if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') @@ -917,6 +942,10 @@ TABS.mission_control.initialize = function (callback) { } else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} } + if (["1","2","3"].includes(selectedMarker.action)) { + $('#pointOptionclass').fadeIn(300); + } + else {$('#pointOptionclass').fadeOut(300);} }); updateTotalInfo(); From 5085c43b61e60bee0e1c8fbfe336088f1f3e29c4 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Thu, 31 Dec 2020 17:41:40 +0100 Subject: [PATCH 07/58] add Jump and Poi behavior modification for Jump & POI --- src/css/tabs/mission_planer.css | 20 +++++++++- tabs/mission_control.html | 7 ++-- tabs/mission_control.js | 68 ++++++++++++++++++++++----------- 3 files changed, 68 insertions(+), 27 deletions(-) diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index 33caeea2..60eafb71 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -115,7 +115,19 @@ width: 60px; display: inline-block; } -.tab-mission-control input[type=radio], input.radio { +.tab-mission-control .point-radio input{ + width: 25px; + padding-left: 3px; + height: 20px; + line-height: 20px; + text-align: left; + border: 1px solid silver; + border-radius: 3px; + font-size: 12px; + font-weight: normal; + display: inline-block; +} +.tab-mission-control .point-radio input[type=radio], input.radio{ width: 20px; padding-left: 3px; height: 20px; @@ -125,6 +137,12 @@ border-radius: 3px; font-size: 12px; font-weight: normal; + display: inline-block; +} +.tab-mission-control .radio-options{ + width: 40px; + display: inline-block; + margin-right:7px; } /* .tab-mission-control .radio-options { diff --git a/tabs/mission_control.html b/tabs/mission_control.html index b32a9616..9e78f6fe 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -84,12 +84,11 @@ - + - - + -
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 0553370c..401a4484 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -354,6 +354,7 @@ TABS.mission_control.initialize = function (callback) { var poiNumber; var poiList; var lengthPoiList; + var activatePoi = false; for (var i in lines) { map.removeLayer(lines[i]); } @@ -368,30 +369,45 @@ TABS.mission_control.initialize = function (callback) { var geometry = t.getSource().getFeatures()[0].getGeometry(); var action = t.action; var number = t.number; + var options = t.options; if (action == 5) { // If action is Set_POI, increment counter of POI poiNumber = number; lengthPoiList = poiList.push(poiNumber); + activatePoi = true; console.log(lengthPoiList) } - else if (action == 6) { - // If action is Jump - if (typeof oldPos !== 'undefined') { - paintLine(oldPos, markers[t.number].getCoordinates(), '#ffb725', 5); - } - } + else { - if (typeof oldPos !== 'undefined' && (typeof poiNumber == 'undefined' || number < poiNumber )) { - paintLine(oldPos, geometry.getCoordinates()); + + + if (options.key == "JUMP") { + paintLine(geometry.getCoordinates(), markers[options.targetWP].getSource().getFeatures()[0].getGeometry().getCoordinates(), '#e935d6', 5, "Repeat x"+String(options.numRepeat)); } - else if (typeof oldPos !== 'undefined' && number >= poiNumber) { - if ((lengthPoiList % 2) == 0) { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); + else if (options.key == "SET_HEAD") { + if (options.heading == -1) { + activatePoi = false; + paintLine(oldPos, geometry.getCoordinates()); } - else { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); + else if (typeof options.heading != 'undefined' && options.heading != -1) { + paintLine(oldPos, geometry.getCoordinates(), lineText=String(options.heading)+" °"); } } + else if (options.key == "None") { + if (typeof oldPos !== 'undefined' && activatePoi != true){ //(typeof poiNumber == 'undefined' || number < poiNumber || options.heading == '-1')) { + paintLine(oldPos, geometry.getCoordinates()); + + } + else if (typeof oldPos !== 'undefined' && activatePoi == true) { + if ((lengthPoiList % 2) == 0) { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); + } + else { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); + } + } + } + oldPos = geometry.getCoordinates(); } @@ -403,7 +419,7 @@ TABS.mission_control.initialize = function (callback) { } } - function paintLine(pos1, pos2, color='#1497f1', lineDash=0) { + function paintLine(pos1, pos2, color='#1497f1', lineDash=0, lineText="") { var line = new ol.geom.LineString([pos1, pos2]); var feature = new ol.Feature({ @@ -414,7 +430,15 @@ TABS.mission_control.initialize = function (callback) { color: color, width: 3, lineDash: [lineDash] - }) + }), + text: new ol.style.Text({ + text: lineText, + placement : 'line', + textBaseline: 'ideographic', + stroke: new ol.style.Stroke({ + color: color + }), + }), })); var vectorSource = new ol.source.Vector({ @@ -438,10 +462,10 @@ TABS.mission_control.initialize = function (callback) { 1: '', 2: '', 3: '', - 4: '', + //4: '', 5: '_poi', - 6: '', - 7: '_head', + //6: '', + //7: '_head', 8: '' }; @@ -836,18 +860,18 @@ TABS.mission_control.initialize = function (callback) { t.P3Value = $('#pointP3').val(); if ($('input[name=Options]:checked').val() == "RTH") { t.options = {key: $('input[name=Options]:checked').val(), - landAfter: $('Options_LandRTH').val() + landAfter: $('#Options_LandRTH').val() }; } else if ($('input[name=Options]:checked').val() == "JUMP") { t.options = {key: $('input[name=Options]:checked').val(), - targetWP: $('Options_TargetJUMP').val(), - numRepeat: $('Options_NumberJUMP').val() + targetWP: $('#Options_TargetJUMP').val(), + numRepeat: $('#Options_NumberJUMP').val() }; } else if ($('input[name=Options]:checked').val() == "SET_HEAD") { t.options = {key: $('input[name=Options]:checked').val(), - heading: $('Options_HeadingHead').val() + heading: $('#Options_HeadingHead').val() }; } else { From d2d770371e19952a107bee71f83659030bea5ab1 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Mon, 4 Jan 2021 21:09:53 +0100 Subject: [PATCH 08/58] SaveMissionFile update correction for SaveMissionFile for Jump and POI issue --- images/icons/cf_icon_position.svg | 860 +++++++++++++++++++++ images/icons/cf_icon_position_LDG.png | Bin 0 -> 7755 bytes images/icons/cf_icon_position_LDG_edit.png | Bin 0 -> 7371 bytes images/icons/cf_icon_position_PH.png | Bin 0 -> 6558 bytes images/icons/cf_icon_position_PH_edit.png | Bin 0 -> 6532 bytes images/icons/cf_icon_position_POI_edit.png | Bin 0 -> 7413 bytes images/icons/cf_icon_position_WP.png | Bin 0 -> 7670 bytes images/icons/cf_icon_position_WP_edit.png | Bin 0 -> 7254 bytes images/icons/cf_icon_position_poi.png | Bin 26314 -> 7483 bytes src/css/tabs/mission_planer.css | 2 +- tabs/mission_control.html | 2 +- tabs/mission_control.js | 198 ++++- 12 files changed, 1019 insertions(+), 43 deletions(-) create mode 100644 images/icons/cf_icon_position.svg create mode 100644 images/icons/cf_icon_position_LDG.png create mode 100644 images/icons/cf_icon_position_LDG_edit.png create mode 100644 images/icons/cf_icon_position_PH.png create mode 100644 images/icons/cf_icon_position_PH_edit.png create mode 100644 images/icons/cf_icon_position_POI_edit.png create mode 100644 images/icons/cf_icon_position_WP.png create mode 100644 images/icons/cf_icon_position_WP_edit.png diff --git a/images/icons/cf_icon_position.svg b/images/icons/cf_icon_position.svg new file mode 100644 index 00000000..737334dc --- /dev/null +++ b/images/icons/cf_icon_position.svg @@ -0,0 +1,860 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + PH + + + + + + + diff --git a/images/icons/cf_icon_position_LDG.png b/images/icons/cf_icon_position_LDG.png new file mode 100644 index 0000000000000000000000000000000000000000..137da8d914dd77e331e4ad9f654e29d73e6f2adc GIT binary patch literal 7755 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 YM4}(PmXZ52?8YwutOQZ41eu5bAF=N+{r~^~ literal 0 HcmV?d00001 diff --git a/images/icons/cf_icon_position_LDG_edit.png b/images/icons/cf_icon_position_LDG_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..940eab409255fe3b31f73aefbbf1e3022c796446 GIT binary patch literal 7371 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 Kt5SxvdhtKbl7Q|2 literal 0 HcmV?d00001 diff --git a/images/icons/cf_icon_position_PH.png b/images/icons/cf_icon_position_PH.png new file mode 100644 index 0000000000000000000000000000000000000000..0f12d548b5619fb87723cf70fb1349e751d849e8 GIT binary patch literal 6558 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 Zn#Gl8yQD$~5C2jCU=?lU8YSz9{{i35tB(Kx literal 0 HcmV?d00001 diff --git a/images/icons/cf_icon_position_PH_edit.png b/images/icons/cf_icon_position_PH_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..e9022011557668632edd85ba4e333cfa603665f4 GIT binary patch literal 6532 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 literal 0 HcmV?d00001 diff --git a/images/icons/cf_icon_position_POI_edit.png b/images/icons/cf_icon_position_POI_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..68c1bf1b5a084072b58b19a057e58a4e231a0963 GIT binary patch literal 7413 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 R1Kgq{(m?5`lp?Lr{{z%0R)+up literal 0 HcmV?d00001 diff --git a/images/icons/cf_icon_position_WP.png b/images/icons/cf_icon_position_WP.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ddf571fb268a8ebb5ca715a6b9e922a8973e33 GIT binary patch literal 7670 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 literal 0 HcmV?d00001 diff --git a/images/icons/cf_icon_position_WP_edit.png b/images/icons/cf_icon_position_WP_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..7954d6152b6da2fb892968d8298e66a29aa4aec2 GIT binary patch literal 7254 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 rz~ILHx_}c97QGXqMp+`P5=4)> zQP%4Io8SLCXWpFm&YOAn%`M-(GtrtFiex0TBme+_Oj$`@8`oR^YhXg$mB~Z-A+96v zgeboT;t&9|j>6p&yD1rX0s!{{|Ft{Av<-B)hmX7z^u2UkZM}RgJZu2IzP@}8E{>j7 z7H&3tt{!$d2a>b^0DX(Hyxi-zANEcByk0BJbi>e?kK;e`iR(x|4NXS>rU++h8GWSq z`t`4`@$RQbMj2DQ?fY;ZuB z^8ico62O1~Rz(&>EmK}oz*!DI6Mz88J8Yr+A z078l}QzU71ndO9d8g{C&1xhJXFMO+qz0Nm`n!666#h4M;i3Cm%2OWioIi3-q0nbQA zbitfcvzb3{2onuy!Fz}6AH=o+ck%8IP8PG-+~PC|1v!;nkaP1+pm9 zJ=gf~b{ZCDE;P4a(-~RYW8O$jWo=lqcc&-~k23~|`qklGp@Et+Fbh8H2aaXKbk=`JkVmreQ?nS=M@93;HWWY#Gu*L&FSfIDp@3V z_1R|5&W_q{x{LLGIJ+{s^SRCU-I`cSxgPhy>(k~|LGj63*(e^O@X!!8Kgsxbonn0+ zJ+n^Ft=pSSht3}nmHvO&9Hxpr$LCtKsCYB#>NXnuA09j#}Yey3!W2u<-`eHkVATCt2Gpu>d zx+WFH)_Hl*7mZ!yh|%4h$WN3aOsaM&kxaS6oU)E-YK|>n5_uL+8!_>-Y&mf2*v62* zD!G=SZ)@SpN}TZ1rvyEgwF?jVtc&7k(&~KuvN|cO!h0+qi6~{*w0>S+zKsluX`n>> zc;?8iE|hfwPj#61lqdrQT4`CY%sZW}9196@0ohZ>L>*H8iD6*Js}Hy)b>N6%dlVn` zcgBb&7H4$zhg4A=qt4N_IQx@1GZ$zHx-Kh8c)W0(iB$jW{D~K=-+fbAU#v#1P&jGZ ze&wO^jaQ4I6(nk*Mnx_}6BCQ7wkaz4m~Bv%qBsu+%L&k^6>p4W<%PNz8+CN3#ZwV< zc9q&+z3mSE7AcJExPcG3f9@bk{v1!oq4r)7->S3g%ilgq${M*Eem+9k($c6v!y0}r z3q{NRwpmaKCr=YZiL*~+XOH01&#j6YB7i1LS;e@bj~NJM1wcd>%1ZET zmbq@Qzy}mzFpL3TyAsP!i=;EId4Q?xoqzEFA#(x0+y@ylZE7CM!n!YZW{mFil4%5J z!n(U#{WjIYEiO*>7h1Q|C6uzFH;y}xHEe8bo(#YP<$B%=M*Bo8DT|9G1i{8{%cuXSJLw;NRHFmz8swxACL|{ZcGU&z+fPlueoM?xvNB39=q-EgV z_SxfY2ACTgocB>y226bF`r|AxyAN25?#Z8eKm}m3ZmhHDk>4GhwGTM6;O+8bPZA0P zhG~?bka@@@j7`8dduy4uZC}+$;zmZ$U37r_u&`v-HPl1q_UlpMI|9;cq%&*L1^pCA z@7C>yz=kF~x2dN=Rrl@<#@zuUzJDKNBmxM~s;W{>8kGp=thJ_a9&Ou2UnPWnLK#(+ zd|1WS7{Ux*Sjt~5^GGBKF%sZHzmqifmz!#e82ng}(_8EYD+7S|99(tZ?p|=6zBp)i zqsx=}3yi1t+eqK*5nn-kta%y(06q@B@7CtMALSi~s6^0m0bQ6~q@?GC7h*Q-h2)2vKisBXw>(&0 zwz5L}5O88i6Lm;ZaWPUFUvv7g#6ddMqnlXZ&y8b~HIPIW=L4Z$F z234KgbF(cr_d?2DmZk0P1DN;sC42+|ZCXp(UgnQ$03bU%x;3_W?O0QQ3V!J3=F$n@ zQ}Jy!03z~!=Wo3I17EY?LAPrhM;ZGV>~Y&X6yX34(8RLbLqD+*3XufzojkZI~ z)fF|*`~8fbyIR~8%-Zt-;B-{1wymz1SWe^h4~| zhq$YwYHs8wGcWmoVdf$?s}IwvaS6gl3CFviLzr;7eDxlD5Oev|iaFr&Qa6}sVul*& zO{2vklX&>MCyr*+H<}Rgp6l+X^12UkU257p9*@NUvJN^^C3({S{eI zazmDn1n~e?(tPA(P94lV?WRP`72c!om%Kd0gRhdWQPbx$goEPP73#JUVcrb0tFT~p zLz6>O;o4(=JV*g&j8l}z!%r4ev0&IWre+OYmm0yDJ=Q5zI@-FqhTqW-qI^m9O;y#G zh*@3TEZ`1!aR#+}KIHofC^1#m#wdv|n_&PdL17!3?m;B?=+qOtvh@S+4it#Jc`fwp zGbJsBJQe0*>Q&Rs$8)yWpA8$UnTvy2z+}>H&jd?yS9;7?0zPQ!=)-4weBTvnsdOwpb9g9+>nXx2oOJGY zxElgOV(Zu5&ZObo|8sWZpHcTiSWdrzlsR>~WevcIxum0OY!9luqjDc2E)jed z>QJc;Di}kL5T?~HKb#yT%1_g7>Y4re&jFW%7A{{ny`e$o{~+OMf3!xA=e2JiPg;3*r{6Rfg|D(03Q~Oc${IY8QS_h^=JnZ87KvpMAljLhx9W}qHm8;&G zkTCxYed!x@b@b))T0f2geS`B^t5Fg0%RTw(@LJBuslS2@Qt*MerRu=~-Eu>t%hQF! z<=wYICcNloCLkVU_-*KRsI4@xP*GsW$9=kdW)>x>Ym0}Vm%3Pa2SB8yt7j902D|Vj{Da>_V)(!&XYYTdv z2*1v{)Kta=Ni)tpMCiXTIh2Ee==EDu)cXU`o$}JkN&z1MGOuzjpP8;QLS64ja>Q$A#`4-G|GHlJxNw1acR!vH zjj6K|UFh&T-W^W75W4 zfi>d2x(h=lUy^;KnPa!KwZ0Px7$m@2BDT0#%M{)|70MAG6}}H>IFxz~gTWdL*P=O2 z_p-z>>#0waQ`n-lE2iHx8WLMv{-g{O9H8M=`EB>*Bm1?5#aIA1j_dAhb7K5EdlheeWG+!C^7BQTxRwhM!|&7D$IBoPp11dU+tD^gZc##d`PlcSq+^>)aQ zQbrjM`As|C9=dkj7-1bC&IG9SCf{t`UxhO2uebh zuNNRhBmjg~@fY)+u)FuviXREvj=mQxY;OH9FDo3DmUguQYWJ1MO`|B_bh?w{ zbS8Hs)NUQ_=jKSN{y*`VKH2=G%0_8kZ^Bq z<{WQMw)LFLa-BkkjX_2`Wno41146Vi%ZLeI=E#Q1V=a-IBy9-W_BD3ywu6VCsLguZ z&-3^ajY7TpFdOKOQnI9a@DCCGDMQDdrZuQtvdjf1(VVg3DJ_+Y?->@T#R(tm(h2$V?Oz!l?Y1XpJ_0GnP9ILMD^escc&#;4U6iJsdvG$Pi9qzu2A1ArL0#XWjr33^y5FcwJz-Yv@b3qU7h}6JwuhvW=-*X$F1hjMuFG1c1FjL zokG2p-wU_T%lyh|K_|&L8q`qadS1Iqb_|WRJr9u1L!zz&-hEqf69bo*{sX{VN_jaj zC5`-Z>7NXv(}Vp#nlN1LEqz17BvHWWmnE$XWG1@bVr*l>-#r>_A(W*y$k$B8o!y`7 zov>7BFc~%BtHZsaYzgFwDc6Mw7RD}%`|$8z)}*l+6nkxrgQUgaCvn1Uid7V3#{+a@ z;)i{duOtuU0SB>vJyf{%RlT@32n2InTUG`cyKl0=uymU)KN_4pUh6eA-VN8?b*$+@ zM(w>|A$PEJFOkZqA74JUr}mv;MdrQm+#JmkrbH|MXd2;#l+%*%8V%UuNnU%kRp%(e z^UD#M^Yd*ki!0wAJYWo@QYKZM?R_Jh`8rQ6}eIP1w6|Z6E)m znj4HqyNyAOS)+;;L67adS7rMuaRP17`nF8PkIT=pAMl}R$4GE`0b8~jMawihumT~O z#@afp$_UPw0v@ybNq!tc{EexjPq6T2CwDP+4ddFd+k?rdR zeq-QQpI{X%=2(eLA6ffPMn2T<9#ei*-e`@u*NXKm_2XJ5|BxG@0cTTDwHqrhb8qK@ zO>0K+g2oIBI!0m2QEdB5`-f?n{6@vk1X%)8^d~Eaex?rD>lO^n8k^U*w&;U5kwl-; z_}w$eiXo=#>{1K{)CiC?u4LcbTuVfE0bhzxa%a4vFko;MiDfkui4E0}5EX)g5qxd- z%U#9n8C%1m?~z`r?=ufoPrG^0^V3Vxwxjp>Wl2w-jna)6Y@z)`xHIY*RFO)bc}MBU z(z3?@*u{660!l-;D(s88nNXD;L+7_$vIu$i<4xxUaq)q83Ao6S7@C=sFucbc*gRX? z+mWo{&m#}5FR=JCk^d4Gdb_uN51n~%Q;(c%Ut*t&YO9o$R~w{~Rau#y@{y-(I4>9) z4kQE~Dn!ZZS$gp&O3Ii_@|;#<(`Vq20pi}!q<*}=zrz7(6cj*!_29RpOp~HPR%Q70 z1*YA{uXAH#rID_XoYknnfX6}b9kHdTna^A(J{j4+J*<%oo58iDObgT=@c==!SB;ukBwtQT`Lo7kK&Zr#0Qv=4}J zX>OPp%r7XG41Xm>{IVkYb@LK@x2kz*9*b$HOJD*ndg-X%TcB0cDlZ4rt=)N4sttoZ z_*7(beGwVyIqrAutpUi@D3S2F{-)m-h2n_b^zWk^TP>~lhqZf?5&k{$$=(DjU-U(t zN~;1lAE|IXSs!G)Q^$HBGqJw%O*(Jv^rwzXa{<+ZBFl7(NF~ZxiT&CS-Z#=h*^So2 zDNj^0*lJv7CB)!bI&wPd7H& z&G8DJ?r+y_Z4S>|#=E^z(+F_)gNsV~Jk}sT%OT zTKhgG1Q@c)0WB{yaQ+X7FEI5KvoQqgE-?imGr)JTA5PH~{z4)pbAI^r)O^D79M#?A z;_M>5k(L+qUDQ%OhhJOsAHGHsHOP;H``&bJ7r%UGXhe>uIjzVz)*yXN76Spws*d=h zpNU-U=yB`zsm7@(*1zZP)eA=Zi#@0Hh-9Lt9wB>9FMV|~2j)!aWc4xA+HU4(Lu8(F;W|Vip2%qFj-=%}PHS>zQruh%+O^ zD=$akHuQ)X#poXz|J}$0$7}W3V`tAXkRwmaOwR zX;{6`odrrbx*djT9K3V72 zek!u!k)X7U$kOK1YlFurtvi8wwTuJS;uRCTd{_uRaRy&deyw$WBEiA`O$f{+Uvjzf zE}m{-p+w!No-hbn&;>0oFbKFOx|!zdWgSC9|Kb(+eyq(*Wn|=7&Rnl>g|5v!Vpw$e zCK9q7u;%sA#}Eb+DCHD?%xp-`I%iMK3gzqrPR;mW7k!rlv5P5G=dE6>Tk4fc1mXSt z)Fb=Nbn$$dNZ;`nPIqIi?6^Q`BBF$N;Y8hMtJNkNTW5!g3HCNB3KBBeTn`-J#9>Up zu!ZZd_#nx@U-1K)2M&t$iYHv*;QQ@?7bn-3QVb9P)yC<90hi;;Z?_=&Z7g?;>FuH~ z-SehK^_(X6!Wk)O!6XkZ?rXgchN|9UC0zda%s;9pxrtMu__t5@;lM;bw;qc;7o_{r zq!^?8P=Cfy;B1(qs%q=Q@u1AXA|3GRD3gqAFLVpU!l=Ktz~_sLIC)aDX+oCrGKs2C zQk8gU;iUZud@$j$gwNjWrfn0I{acGxCxvd|S{7#I{G@3(%7ieSvu$xJ4+IFA7)pMm z%e_%r10sk71+PRf2K~K!CEZ#Ut*zoOluRRtBO2kd)w{yEuhWYPo16HITijN9Blz@$ zmbobZ__FJ=?VZZpxZegPzUzm&bY+nVpDsI>hs(j9(fFX38p^8nQ&gp|l5mq5PD^HU zrBxCSsBtEibp6B4UmU{*UmXrIBBd?5tC=5ml^tu|@**`IHmL+h}`+`)NW1}}cn#`w5$YFLkB%>x2N+(53x9RO$JoKTfnfxY8B z!u`|d%U5S>r>Do`3ys`IV!@vbRF{1%zqpfh=kdn4tq&C_#8UGbrgfzys#$!^(oc44 z&*bOl&XLZI&#W{=9aO0x3r0rA)+PcgpMb^hS8 zisN%=!a6(bEEFxiAtEZ*_I&_qD?W|F>P>N(l8RAs(~{gvq<3)6eU4mv^z6G!o>;O% z8@u}V22*;;vD-_u)W<1}3fyA-W<{DHt+w#!9mT!lZ51M&{g7^F0=rzj$8v0bKjwHB|M!AVj?or6K6X1$E2i49GKgF_e9oe@7w*l z8(#iKgh8?e?rpU248>zSJIOp!RP>8rM}u_JT`ae<1jl!0EAJSC&Q=DXK0&8XZZ~L; z2$aEmDDIkBC!X&LL#zFU)7;9qG~e5Mcc!t?#CtmIZdFyjrokgdyC}7%USc#_r)VS= zT&D1mDG)Kz=;dIslIx2H#2a`eGd91|r_MiPwYSi0@ltVcT94oG=MNTTAODs?bA%=K+AI9~}c%Qaiyx9cTH^3nzB$k2W`?}M;y|*{M`-bn<+ICI-`gdVz zVR)IbS!#`qabR!nb50%GWR584+23ypvA6_l=coHxmY+$a18_vZo@FRy9aj-5Hz?GB)BGMfIx6bfZ)MB!Gb-K z?6dbi_sBhW-FM%5e{2>5^L17Kx~jUms(Pk7QuT=(7CJdP006*Jke61!|8Mr=g^GOt z*KsvP698Zw^48RGRfl*09i1J_t!!aHS1(5x5awxR4gh%0Rc2XDJZPDCc?Tsjf;R`I z26J@_AD!G#Bs|v>{XELg=C)fjU`m9Z?iGfpcyOI_=lA(;HT8?8A$z5E#q?KJ{YC-L z@te)rO^c(;n@j)c>l?P~+c#I266=+{qu*}2FDb=5-(G*0yrQJqI6Q1?e6zW|MBpcO z;nZEoDrdBJ2z<+^c>LA>;`X!dbvx-PPSe*Lu?CN*9F)7u!xk>Gwj=W>_H4rE&z^0J zrc7+!bqObmL9HoB)xD}uEuO4Yf8F$d@_9*Vc~tvZhS=LThb6|7$AaVW^X1PnN)E5` zu5Ye8bic1fNM3t=x#-8Mq)573s}>tx>S$Z?dE~(l_A+bnci8E#Y}cj`NFVw3M(gtP z#oMFSj-_{p2jRv_*Be?TUz6VIL=0bG3GQ)rV{P6TK)8A-RLokTF|5VsMi$>eRfV`_ zH`x4qscidGk^MBzkxgr(uR}ZxCr_JoHs1?7nqg)s;oa;vU44CUw|}_w#I<@t1aaxv z2+>-UqGVX!z_v;p4RFPOv%dWj>)>n8-DN6#W`v2?%q z;e*H5?O5%&5znoyL*7jQbp%rl%9@^_V`-}o7A5QHZTGz|E!)tuuB=2ak$ntmny|L1 z+rW-y3f-KHa=}l<{iuB<3`OAB` z5qMp`l5G6fF`ugkZlDVkbys)fO&1=CF6f`{;s*pn4{#E%Y!+@AtbIh9l{v)AB{v8| zl#;1XVn1Hu2wldDZDx3+_+3)ct3N52Nt!f98`D|XrA!eU-MP}rR~w}S8O+-yV+hFF zd#`gx71eH9`5dRezn+kREowW_z|wiecWo%MB(^u4m*sP1?AUdAV4 zkut?q+*wqOUpEWk>l=~WpA<8m5fyW_#EvzL&nD#+2asAB$vjC*32&McaQ zx6iw)3|r`!8=!X_Vm+6_G+jd%#-Xa+KQ_UIqqWZ~kT z#z*k_+^&tzcd&)=O@HvIy5qh93N5W7f02f{rL4VV@Nx2Mp9(~u`lNZYkdO`Yl;NUs z`OaN8#;V|MZ>|9_GQV-gv`12Q#@Jr?2djRO!{#=jP2Z*FFAtkKoDl47X}ilUOg+w+ zeP7_L(XU*v=J7pZkbG>cK9+_FKiZ1}&fhKi_WbI2RqR&jH7T#Uc)S9!ma|A75?s(0*GHhLzLBXFuEG_|~6iu`4tv36U z(GEoh7{DpSM{{)Tr!i{^UE_yJn#OvRWGk7+OR8l0m`c*_yk5YF<03M$XW5wH(5{B$ zFtsmy^Nro@OeR_+YI%zU(*)itymeEkZ4Val>qIRcZr-%oEvcQ`nbDuli-*W}F!?%d zrf{p3Mw3~fwusr1sZiY@Ie6PmT?lw_UI?a?4QPyc5wKVX?{G|VKO~BMp+ZNk^%9$} z4!s`%m=s(YIK2%PwabfPnj_qxpdL2jAJ6Sf*;u}6c)f#sslD9>ykQ{n+!(ItHn2-j z_P9v0`|^<3bu>M|$wc^NTYU0bE2xq{ZwT%vtVmI8lD9K1^3A%!ODH;7@>|StKy1s< z&?yC)dt{Q{EZqBB4*>IbK|0|$)fMKv%lZIfn~JcJ1|^2i*XGJ5+EcT($>kFCL=?p&hwca+Gd;EAB4qB2{Ro zWZotlpylY}!tAJ_n2I!4gvi)E5|JZ{>)M)b+{%Yydon)yWU-DvXyo}+x)03I%2 zM}6X$l)5y$lo~St|1HMq`X29lAzFTsCjz0bz7%6W6`Ki~?d9U<@x%&aPHJgyVq_?1 zU?Q%3M_((R=U;#*x{{Qpqxn>-iC3}Ki@#7o^t~-PjqrjyONLW@#nkYwcth5w%mcgGRR~d(@zv~mo^J$f(UZGK zM#YcvB%e4gcqd;el8De#L3*Cf6TlaK39uC1OAjE{iBE=84S+nUI!t-kJR|c`XxSTJ zn$$vP@f}$h-vaVNjahB^$xi6>S;T9)Dcf)fl)=I^oW$CmSKOZ-U}B*@v5B-UUm)SJ zS~q82W{H6klJm+E#g+MdTxUfAN=hglk@Y%+=T8G5T^*ZtrCaP)8IygFK&W%t3l?G| z4XlQ`^r@`riwu%4Ol1!!bw83Byx(dPpu&6JYK26p}K%tH>by1K#DV0SX?V61S>aZ2Oy- zw_snTNi$?76#`+9QY63cQpaIVNd(xa>`h zz$fjf4-=&qu#WyJX{$bUxBy}G ze@ntDBu$vFYSR@rnyW$3QcLL&%qgBJTk$*KJ}P-v%4Y=o_u>UDz$Oc(D+@rEgW`s zwE@F8b-|G=P+mO3Kn?N&y_K73NrqFi1c%{Yf($kj|O0Hry$wQTmQ}0~6RA zQcy?DJ6UtYR_asq3U}F3FM@`}Mor@NYIn_Jptzc$R(yGHS*{yuq-~3^fakmI*GL5k z{Y05MW_fmrQJ9DjOk!G;7B)9T??X7QQKEo(cq(LiRY%Uonvt>BX~bmcwxYS{>H7?H z)!NKWG-UucAS$^YGroo`F^#oHz;4|3l&;BgM7>^fE?F(HlQ@H9XjV>$Qr=*`vv>g$ z!lJ@Rj*rG^131KeN-qPYevc}r$2Zt-irSxLmWaTD;bBV%$T;62y|XjB2q>Pq$2lB= z-Lzbj+-xy|W4KI?$7Pr#qg$buri4?&c__ zif4s&iYzb6-xgOLcRnU`^E;wb{t(=fa{@CbsS7FXdtsOw=+(J=I1#Hk=%;N77))f# z(wlWj+)|rrJ5p@L)wFXG_=w?XG=M7UNCNW_0s~4J(cBMiFy(2@m{vLEH7vi>yjL9S zC5A`HL9ImPQpL3sW9Lt1XCNyQ9IfFMhGnhC^`iA=d3OqE>ZDrPu<)&{NFxd1ai}{L z#l5M>70w`HZ)4!+D>`!vR2_ngDDA4MB`P?j8j(MEqtdk64;E>=o*OL;lr|$BGxvAz zYA15@(fg46h&ET9*_9nJDzqgp3Sp`nEY90vBdvt_>`iZg_Z3MzE8OYv`kN>D$d3#a zAd0!SM3Gdu+%Mbb%N_AzEg`ngaA*(;WtONN1RK_P5#LUZKJFrcBT}+1iqkt1bz?9u z&y;ITC5S-f)VU;9jBI(^X`LR&6U>vyO1d8-`4mdBS>NneUYewjW*)LPiWoGGQ6s(9 z;pr3FG{FBnpsRWAh%|uuGW|6@uhZK>sl7M>f+5I~N281ZthbEA+OH4YcGV=Q~&8=|~tDuDQswwbEZe(lm!sUj4=RoN0^Q_0$EVZBFFxLqu zbOx?EOgFxdA6o5N&i~j$f`@VihaVK*5r8>>A^kuk>$diQDa0M z3V4vrme|TqoL_FmX{I?grDmrMe8;bH7KF5eniqZ{5q`I0OOuYyH#!Glbg<;(2)U@=a5?)q?jLZ>S;k_VDmM&b7 zf-Dc&7xlt!+7-ly!jxh9m`@hXB1>v{1O)>(XXi{SSr%f=OSWEfEG(hn$%Kp3d{Qty zh*=1l8d$K88+zWmoFbyJ;fr>d{kN-YE+{aU2YI=EuDu{#Uj37Bb2N088HrP>V1G%4FeK>Imt(cq8jCO zK5{{ggl5<$R=N_IVE~YxnQ1tMB>e%CL7}@@+?aZq^#|IBE8!CC2>qIzK?CbYBS0xW zCVmPEy?uCzo5}H@@pm}>y}WnaOD+nen4c9}ReIl_CX>Zc?|-B$SdSq9^FtAX)|BNDHa z-|2^YBRKkdKYkEE(VO^ALM78iZ#4HiLRS}k!R3+0GLxk7F+w^cB5&ewehl59fCGRw zK|xzDmS6xN@XEfpT*fmkP+3p|k~Bmfl%usj+zFm-Y>zxew<3T;+H+Jec#IWg0si zcE30juTXhMgb;}knfnFXN!ij`M| zLrfNk9A}NDjgNm-UDTHs2?5qbeyenEyKLB>t zN)xylP;EK^u(FY9ra=a7I_kO{Q8_v)w@m8sP?wn?{WN?fAhK29zGJ46T`mds^T&AU z=$_pqTO@l}{D1^=P(yBIjjTFz#BmR4@kTp5i(Ex?)hYGqAkxvxkB;;xa)kQU*Id-K zO1Z_vT}(Xhs4LV7y&Ja0b%m`Xglfe_2ZA+_I}`-!6Ko5vg)|IkWr?OyBduYiOn&KF zoy(stScSwQIa(L+8mD$w35_2be$ZxyDB(184pfPwEAI(E2P0^YV?@MXQvemF0;j`X zt-KL0Xp+rqNTSt!OlGnJ9VOz3)hpVN>53H2P~M#^WO0w@R~;~u)yIBKBPpgn3I>*% zzi0Z~@!f2ArzJ4)NaurqL@fzgs!_v>BAhmBTXO^VeMM6++9lQo8dN=4qMjkH`s2_# zYu@lY*3+6Vpjp&TKzhu(IpCsalrpUs$nzYQ|3TcS(#EoGyq7}s_PkN8j}+o%!Mb*Puvqdy<(9) zpHh#eQ!CuNWJPi|#CVCEF?40gPr1xMJg?wuzWy?;BC%YDVk_B!R3%kc7t$Bz9EWN? z2VO&Yq?1e^3%)7e4Mud;$3EEfJ-Qxn93jEh6NA0D_Ps6b$jS9?~R5OmU zn!F$T5S4uUk>kLevQLt}ZQ;li*cYdj8$_618wSR`Dq4P=IFPxh<>%AOvK*RKIH!he zvKPuH#HWf;m_jFw0&-iL`i=tVm$CfRDKyaY8(SzIMUsXq<*zTP}T$JU1xLRNL%hz3J!axi&NU zYfy@m7I6qpMxRwfBm@jMY_%(sz>rf#k&cFEtJfwhrMyts5n!RNAm!fJC!Y}L#Uv!0 zRcau_UitjcQrhj90CC7mY1dG7zBigIImi}68&vg*kH-NcczjATThRUy^!Dgryxm9_bPc4Y6 z7|>uW7;EM07pKYs_#zkp9GUFYqc`$}-Zb~?DLR+=!(*%z;BSiXRl|lA8u17!YD8JNMKm;515wU#00h9)LpZ^gV(-c3i z7%yvz8{KZL6ih>bEftwhgFa>yXbWy|w-5PhFeva+qmX6J1c-6h*iQGyZeV zsuFh8Pm&t&JNgyy7hYii4AaN2C8jL3s$aCwRiT0fWkLFuFtk8q?CAYO1k>kl>BwFH zP>E51IrKLtQzF(65u4si=SQ$Sn`!!{4Ndq;b3QN-ERP6KigppeidTO(moo3W<<>>R zT3UBB1?-N=FxKQGj!p(1DuzJnrAy{nhMzFFW?AOFq}Sar`&f#?UvJ6Y7#IR`ACOuM znq)Db&F-2R32xHhz&C&&I8BJ?OnZ?L20v@<7F`i-GNy1;p|TZ@+t`}gT?|)p$;!f{ zP{A-DUR2s@)Lk)*X;S(EB|d{#PdLg1+b+&?*IlhxIdi!%O&oiF7L8WbUeEoEKVQR_ zh<7=ozAI?hE$b<3EIyd|+bZ6W!=svYz1!B7fBb&Hf`1eX__kITFANksvHXbyZCeB7anLISE`9p@Xy4sKBz#Yid07S z@#^N-m!UFFjuoWUzDY$T^*DtOa+y-C1qUty9wQV7z8j-GibyY?b2W`0WIUB=EEBD+ zeDT$n7^i0N;ckqp8=iP{&uK15h?bum7%&JxvMhSj{<8lB4>&LF z1*UoKuO3-PXO08XY)SZ@X8EXBnO2I!>=U|6#=snx-pA4#95P}Zx^rVhGyy_8OYxv@ z%Iy2!=3vr($xqzO?N}eCkaywiiyv49W4`F@o$(BaG-NC-o?)H+NKUSMg`a_!hu%P= z++C_1ZBAR4UZYf!iM?P)!8v3v5{+ zaCJJCf44~xxnKX(Wia3B*<~J+K*rpgVMD=Oh9vX%DkDLv$A*>Oh{kZK+^fnD@L%lA zY)ACTNFMH}l&`7fRaI<^1Gv-jTeWWw%xitu4q4wm5Cv*i9~F#(WhsN>PPypF-$7R6 z3OFlt`*V3~s`9nPEd!_)1R3_kv8)F%>2?q5qGg4)s60mLl;j`1m!~V{AvA)O38bT6 zuolNc+?d#{6%b`|+vc3G5~gTTXKfi&m9F^lrgA5y$>VCknxJ&BXdMJ`c{$)1VW`pj zmEPjrFk++2tGn%);`3PlDh!gAU_o?8bgtu_OtDD0AZ`^w<@m=I5sn-|4y=9D{kf0q z_JUr0R?+VZJmmGA(TUca?7l3HbukRv-vq+d)fidJ!$VRN6?9KQ!Tp z)1}lQUpbT8+}LQ6carR*b71LxEg|eye=xP{0q6gPDy;ykHO-|GmD8p)qTSszW98LH zJ{IioMzUZ5^;jS%`i(is^Xq(+F`mKH~ ze^OD|SnhVk9Wc|gPm~(F>nQgSe0y-Nmt#o7G=th@Y_|`2v*Byg+-Y{Am;c#8hL%2f z&57V~T)MuSL$DP29mQfKPC3AO22pqF)>VFzF0_-Ds(xX1(rK$q!md;$!YVC0s%l~g zku@~-*}z<5GJ+MHtOC%mjKJ<%g1m2XS`*RQKrANiGP!AS&Z9?QU{n)@JHjV;T+F>7 zm_%P#k{R2$4^B!TQ6CMgd@zjA@5yA?_Cnm8g;QQ8voZc7NhkDD<$*(k0*bQ2*xdZ? z`-OrwVtey4WjgvINqxPw=}=}$!T$6R!;_G?AVdi_l7`q&)r5X(B~>_*I$R$ExiE14 zfQ*hN_=Q@AA_#A~Kprhfe;_mh=&HxwwGpuJ(F`Pn+88xfXZIV+ek9X%Kbr3^mtLraa zx4wQC>8UUJmzg=lP-fBh+*p-db{ZHV9F$NlEdxkV#SRM} zl*LdvMJ5b?6>e-MbA_&CJRJoml3)2$RP_oWsm4Px%b#BE$+NnUccltl*_l13w0`C| zaDp!m-yut2q|Op*CHsygX@UVKQI^yKoyk&iS6aB66)33rZC7W>Hsh<^hXQ+*r{?V& z)D_A#ne+$^13idvXNJPa4M7M4nxdM4a5%}R>!dtf5;4R|yWeH5{GQJUXK#JWxi6&G z$w&1|pHemQ8iCTHoz`^IX)9L==24EI!<&zG{GRN=96p86^Vgaxy(za_)Bi-uD!+%v zj`9fsR)Matkl0`-gL5ICf)-oa7u34eLuD60<_(n6zp|c=5`(~vOfMnhN$|T2*?382 zwoMWCe7B*NCVV78EBY~?;cL~7a8WEUWN!+mzvflU!*2RxH?gL#9=W|-DdPC_(IMN8 zg5^$XNR6kxkr@)+uVnY10ZrEi9-lyVA`uA7JAs%eABV*kP@08eqB7;nPPEwX@C@{> zcJU6*rPfax@Q^O6vB+w_FmAp&D!V&-uP;P!%xc5s4@tVB6}W-RL=@5EHl-AMPkT3X zYb{HXmHlDcu=aAlCiL=D71zji?=g-e(qR^M?`w z`AcdT1uZrylc+PVlB=_IcLjLT89&dqxW9&yy?nTXvU?=&-M#g-9kYrmapak!B$GEG z)>f?dk(q78`u?NNMT#uc4*?$lY}OUd_mah=J7G4GMTLXP+2viQ`7_%)6>t#;cgB0Cw7 z&^SlKPS!I+XlE`mswm0nty;7i+`|Z>efT-JsobVT0zbL79qETJt)6Pf2P{7f6cepC z;bNdzMV+&7P;Pym`oYOKI?8&5*GZgzFg^xRqLHHWcU zk@6j++@-Le`B;cJpOSeYXLFA9{iXP~L3^dZcO^5;>`$KPw?C(o@59tp3rEN5d>iKl-}sADHf5Spj$PskWdWvBBx+1~jB*sgE6oNk1V&Bsbb= ztU2^>PGsksE$K(OmJbzn(}pTN1IM{7<$MncCyvc5bBXFXafDvJcro2H$V^`^mK%O( zF*c`~zwxFKu?!M#qqx*DmQ0f6;CcOdh0n;pm2X${m5wR`H`|2`qBeF;qIm?z9+u9l zqAV8e0u=K8X(>ZTHoEGUURRRG+oE%GEbQ?6$*e*yX0w-Ie7TGV$?!n>M>uISkJY6V zeY9uCtbO{9;itSUlTOw`&pJ#=2g-J$rCwUrRa-@?Rd|Cg*whvtelsYXK*aK2B)f01uX0Z-a+F6EhHoi@CwmIel43|DOv3s?IT6VTrtn`H z+D-RZSUR=Q=wpYnHb@Gzz)d0_!;2xhA=jU~?^4&<6Ks4nqiw7pjQ{p^t`4pOi*WIc zS>r_*fwR`WMEXqf1LvgNhU_V`^{@M+SVSm>&ugd{w>Gp2)*o3lo;uF4m}zdAY8H|U zCM-$GA(^*YA3fYlU!2z9Ztp~2iP&}X#U``zF;gS9th<DglOZKjnXrF1E~-QE{nb$A&{H!sVSdSPP-EXimm-SrQfkxQm?1L)agc29j{1r_x6 zF}(5H^2{Xizq-HXz2jrS$eg$?mGc3HjE~~$9dA+bH0vG7QEWF}WVq8J<^y7sV?Ybf zH-u@K&wwBDy$jFx*z=orVlAa66gLr^f=|{P`z=alCe|X4%7zu~y?u}BqV?nNX3N9j z;P@y$@tR2MmsZ4ZZQy(uZ@9kQH=wV9rq@_+qeWdEk38GWdgv|t8O@G}M71e)T*k0{ z99BtAagD~#VT%`gH}10i?4aS=8=X9Aha*j}VEh|L5uF{K--o^OP4#x>!_*gBJS=wd zH}WHl0xyLeI;l#v9I+hLDVnuDx86Ps{DRU*G(`t@?ip{{fwF~z_+o9c9MH&@CwQB7 z?lzvQhxoK5XTRsnZ{t=Im*i-X(8t)aOf&VC_hsp`Ax10!pJ)R8H48vq^Bro7TYaSF zsO57LN&{+v^g7JWT;g11l~cZ6jz~Q9ndiDu$~fKIIlg2AtKSX;vPSHDL|?wzj1X#O zT`3HWrJ*W%5#=EJfl;Su@C5RpENpiQD6fbC3^DuE)}0c8h6EtL=+Tk6J$I?BB_@4En2YP&abX(<{NP}6gM7mrLC`2r`@*=9~H&oAvT z&{uV%?)-%dCqI+9JkI6S~ac=b8Q*bQ<|Gt9s%8s$*))av9;tOxH zys6{}&Lat8W#ML0x}7(7?EyJ+3Rw8U?*phAM5}F=G^Qgh`|B`1)xW65(m!cXyJC*K zmWfRhnG%^z=1Z-}e*VOs&crwz6L=r(X$T49wuW6z}15COo6M(tBCWLBg zUfi`>u3x@%q^2%WS@_xHbexM?9Qw_)0utJ9TH0N8&;xj~1E^NND8|P`6+^G!FpmHT z!vK?7FgLuUXitFrBTD;kN{Iv)G^hdm9=)sp{@C{5E!U$vg^ZLgl86b!$d5rE2F)Uy zReQ@m1!2DSlkJ_lAmr*{;`%CsLioBpjez9SQQatwaCG|1chG1Z-wjN6a{XaZn#BzI z^$5~q5+^m{)FjZVKFy30QL&TEwH8I@JBT@a08QjRJT|LBZ!rzSagXGJbUPt{g87&= z?k)-`iz4ts-F};_#n;~Sc|g_BL_y}KIq=qE)}CgZxCvpeSrO-@ZL7Yw9&%DDM(65F zvB$Co`mLn{Gv6K8-R9kGAMt;iK9A|! zzGcGs{4%MNuo!)7we|Ic#$>3kw>ffBU*3ZouZTORW#gP4&XAecC$GqS z_pcuf;P_w4ZJyj}5ZpmN=F|(!(x{O?g0p_bl|Y^gzdrjYARiYF-$lG0;bxrwnXdru z+ji9H$i9|4wymYQZrCb)Qs#x=2#79b1plOt_`G)%KNk*89-c)Nz#@*Y1y5^&Z5tr! zh)mf@f*8b!i=+idEDvuLfKw~+=p$;BINC=z_h4&P403S-OE^Yx6ag&ufT3lfW;pv` z6cfal;7t?ccDS#&h!AS9bRZ${sXPWaV3-HsZSyj7YASRa*UxAktMu5 zPpA~_JEahkVL+8+@R+D2VMdUD_+k&LQczh9_!U-WC+0__v*4cP6i1qN@{wSSm3>Dd z101U0`4x;Kw+lWIc(HH`yZ~H0^87GTYRq0NH0k_A#E|$`Qc;PDg_KqjtqDf!4B#Lo z+Cx=RLL?bEvb;UD#nLZK#MZpl56cOk#tH>l%bn)h=gX>bm#SET_0a4B8l|psX~!eC zY+dnM@jpk{OBqWp$;KBfnQ)Sl%c4MokKai{o^#o77Ny;!X$^Y~1I;nHqx(#WYLInM zY=JK#iAsxtHSpn^dROB$?W{FR&=E2DeMc( zjvehwU3qY1cma1U;GYdt9-|h(?M598i49?q#8|;!p) zXIp){U_!fy5mp1915<)+(+2}yr7;XmNhwvAQtOYM~Kj(F%YP@hsTpO@UvPpdKJTu9d=8$bP zk>iC!%3IK#QDD__UP6A2MxNA4B8{S&F_#XP{&B!6ecv|y6#dy_oySqBSvt|h zVs-xcn8j4`RQq&@wVU;g_17JtouO%rDg9|GD_kB@ax`)x^3UYl8RZ#p8J8I!GR_;0 z^e`*wDn<1=^jzkI=J4k9>xJtX-PYZFT~Ayy+$eXRyS;SP-ksT9oaou&`lkNvZ1?k6 z_-W<0q;EFgP%uppY!Irt{DUQ=>hmh8M{5=xKSr3Xn9Z++=duy?k%_P(DE1DvQn*k!o?I(5YfYjbkCB(LSfgW-zyiyn(WT&PNObn& z+99q~lB(h=-&wv{L4M(;2K&v=cpe<*rsw`RWbt1przzt_r$q@wGes@hU$xJ8zC4%p zx$-*vMtP=o2D#+99KM*ls5;$0ro9aP{`5-pc=mkr$^)qr?hRZUJSF?2-aGvnJXCl; zcn_pU=o4sq55GY<83dS`87{0Mbmjf!9hm5O_`X?gWpd8e)YhO3xus&HdW1g?>kr`% z9hGU8OO}g~&XBH(ZKo_E?Tg)sc_$k#$1gitb)@s!r_VFysgm08%M>A27cC>hqGlGi z>2#ez9rL|G0apX*h4E&bVR3U&7rsSCf8%S+q1cA-)2#jBDiaka3V|bZU}2A7B&VwgWhiGr8c7#kAH{NNc2Cy0r| zvxC`GLp#rTC9M1P2cyi)Xu7BinI8SUrYUur|3JMa+XJ>v3=N?ZkUT!@a6!>%!JcDyJ$7I*Huj*rer6i}` zFK?l_xy-zz@!9aq&`yl}&hw&vZaag!*5dsL{s?ilp+KsK{h9B(%WaHEl6S4pHY$Ud zcFzjN=90VTOGT`yq8!G1Zrh?BeJk&`E8MkJ450?Q&GvpB9i!#d`-~MibKfhk=22{s zg&aOEZjl=ZdAbi+ZFMW3XQnz_F0}gleA@349y(lj7)M6gGW15+i{o^0=t}o|lgidJ z!e8fFen;&Kw5b17Z1-kC$W+wXe9Eu>P+=3qqhM!s;6p)&{@W}DmWw)#KgBq2x(uh`6zHE002@` ztNY6#I?75yPzO79h?#>ajNQ}D@&57%03agf=?H<^z+8c*FbgYtQJTZHw=_U2Gf^6C zUS&>YM=6-4mAtnzOvC$$Ce+&oDriO{_6S|XQ|KPR4(190dfM6Ay9jxT()`2~x_|$p znS%!Slf~6WltxEc6)5H43a{LmK7+b+&SJwQ{fr z{=kHoI=H!t($L(~fxm&@Q=u}R_l>^|@Zyo;+Dhr;~>&%HkP3>;uiP5}@n7z7sN z_;dezsv&HFn#9O^I^2RCOZ zOvW8%?@IgUL0w$cVSm``$G4I)IS01Jvz@athLa^LH}` zsFj(}@4^W2K?R^tPJSMcnIOM8h>MF~0Ava_2tP=W3&zFE!^>xGE@=8E2o-0m`-Ka! z{j+R8pv>-}1h{yid|&}62r9_M3*s^7;sZgrp*$cyeqJya48p?&6Xf~{^<&nBBvchd zX~689f3&FDLR`%qobB$Tft9_PgNMr>Buy(jn1(Clhw-@hI0ZTR1-W>51O)_mdHDZe z(t6v7drZjv>aendSim?O?Ja&1ez<{N(*5>X_1E<{Q5qL@IZ2>`j1(W2ARiy- zUcR5aKRiU}-lF$&4EYgH?v?wa{l`kRb^Fo$)ZXe|dhj14oj+)zH2n8Lgp-rwUhv;U z|B0&mZ&~hVOi0QZ262T+-@op$IqxToiwgwi)#L;V@$d@q2(of=3H=86JGXRjWpUA!Cm6e6$@B2D9d;MvA4Vcrfr(fo= zwfdQxfWV(wLI?u=Ebd)flt$u5 z5dc*ETZjeTf3Eby?k58MJ|6U3YOW2QP{4c%o*KGfmkpG2xE)aLve^Cx< z39+|;-B%mGWr}~NG!H*N4?j2LM_lB&kBdA4+#o?HHy8xvG3Dbkhd@jr+`j_M|E<#e ze=NoS50vH=-clzeVg{i2p3r{pSJj7ly z{f{j0KVtsNyZ&D@7y2Jx9Kh`F_wOF}Ukg~Yy!rayoLP~N{OiohUuRbSI&(huXIB31%nH2+vD^K@6lBxKa?*e^Kpy~-wDDl`z6H%uUe^Tx zz##bXf&*k^k={3=xGE^ipsZs)z$RnMt!B^z0Pw;Tq$M;x=k^V~R0*|j@7fO_#p(C= z&>|y{gG+M}A+bZ`P*c-Y?`f?@^#gP0zQb2JzSj#B_V^yb-??RDQ%Hw&5=l+{$0w$z zrPuB+WF2=Wd13?KqoSflNvItNdbeKP+@=LX(&p3isC_Gp#wWjiKixg|$~inW!U<82 zqD+kE6qOo7kdODom9g;1)i#PA`dX!F!x-A(Yt*sg`OW6$^&M|JiV6a9Hmb{b3qBKZ zC3?}R0$V{+25@RiJS|a-!9KiPDpqtgub>@^6XUs`>jpXF+yPSrVP3W$gwa0}@8ueV`*e1+T3nivnY|Y#2HUn1!qp zRpD0HY*I3xU347faL6$&iEgmc2H8moJ;c3Tt{0ZYpPfy|T0!jAeV;b_<|<{CgX5~V z>Hr>9l(SV*Mg4oGLcJ`zxPT(-<sNsDk+m8X*tFluuG#HBc7 znAMKQvA*Vy8VE!1Em8LrKf>W*KWU%tF6>oMl@&msCgG$g!Vx|5FY|(Fl?HARrqEOP zHWsH~J`nH1ZQ<%BiPWMvTz29SqnhU>qoK(19KyqF0e2@Y5G@L9Y8)|ni1#9_m1lKr zMRiN?pJgA3l}HpN1mF>;$l%0OS(?B5F^cO`pg}pu87W-A2FYrx){gYO{QVb+fIanz zFYT`oddkAGXItSx=r2|edOyo+lpSojcM&8t?33I|v zerLh0HU+{l@hg7xFzytVA?TWD4VdFi^7Kut#o_+WlF-Rz0?;I-zdnBxfL1im_3k2( zEnDou{t#g}?Nemvg-9SmKfpUNU!EfnE+HS%#U&ms&($^+0ZJ*ju|8LkLa(tW4QG1M z$pj};NrQ-9XiZvLxw+VG-`g~+f$;2rnZ8gT?&SNJq_1dhNv$T_0Lk}*Nc z)A+P}FG}2L#o-ZYU*`}bZCj%frg`edV>BdncA|D-!lMQBEm2Wb$UKRHIbKnaVIV7K z_aOG>`cHT{VjdYJ!dWA(vT9aNt_W`+)Pg|}bGOH%YPJIV5E&croO<9D z&x+)}i-`%KbL|T?$&vasy^cG#YSx>VVMWs-ri6%83^`|W2jPPycm=?V(kKU%chT|0 z%S9KyxDi0kyrU8B3%O7<#jxd)-tEr=VTc0>tSY;lz@XgoL?@G6lt93~Mk<#&R99ML ziEXuvd+_Xg*dYCY10L7NN*3#&Pc5mH8k?pdv@@3s;J7nr8WY=CuRq0NI$Wlft12$Z zL(cHBYt%eSjq$nvCrmF*8CBba&Q1V4TwR!f^z)2RX}CyuXugip0|S$4WAkL(QLjU9 zk^bCarcYgIU?wVP{@mQdGIK6&BMf*r%x_G5@}8P9LT+qnBjzY3WE2%H=;E##;mA`~ z{jKnBFbk8Xk>;sO;ld1wNK!1yggvxm6>unxnsKsf6{wNwKIx~9`u@(NqHx;!GS&M= zc0{jtvrX=vR>L0@z^UTO%SV~1+V3r-@p>*zc~Nj(N@MCVD$H`aD5kj%oFLQ_j7VzdeUoPGedX5FvPmKJ{&t;{onGrr}K* z`Ujdmxu+t0&8TCxi=?k!Y^Zhwh@K<8s{YQ(Ga*>PtGa@7ym_=Lh2B0U2RCod5q+MF zxrx_p2>7yMc_j|z0c)D{ZHg~y!}vUXrdxCr=fvc@`|Y+(5A;FFF&RnvlwVavSw%_(B@)ilpW$ zBhKEWh)cJ`vkvQ+LXa;l0#P5T=oOLaXzkP?nz*%(*&U5y#Yb1FVW zz)Yc0=X@x0Zba|1XMT86uWXo`l<=|nBXpeX;7NHz9G4t27;mVKl9YEp*77~4VKzhr zq6$^c+7GdC`W}zNvyr|+?8mQ1C4|X7z7q^H*$7P}rOJ%ogBXb0z16br{WNd&@wWHr zmds=Aa5->f z#pebFZqfZuNZJ&g!BwkxMKE~uyEgeVt9YwJ_BWr-A;mf7?GXXvO_YL!wSjUsGGJ!Z8Gfv+z0F(gKillUf>{QnF zC$6G@1i{3-wp}D!$6P^z!$yX~4WfM|Z%$$%QlnVR&L8Em-R!h0$ZrvmU1nKZSvsl+ zlY6(l4qs-FFzeDN``pYOcLlY)gg;&!<@YmiyIvV8CMPENS|Y4WVPu_Lq)x?Ac!~P7LqwpKx_13cI<_m>ZLPwRk_mw0 z_r)j5J*X#lD$B8`0C2Jaq}tSeKh)7%X(%yB_MBCrUc&j>w#as{ia`zUedKC*iop&u zUR#@v{1(yPZizv{$(nRfu#mtZK}Aq)@;@0Fcj7lQoot3P5RRW&H}yD0Qo17efCQkn zjyH->vjkHHwHex1wWBbv!i4uKOzmvN%=iK@#InxeO^!7PV2EY+icRJerr@3HM!Z*H z!mHX8P%xlSVrpD2)GR@6qv-b|n|E)x?W1}kZdhYui9!|(SyBEb^diOE1C=n7A@=im zx6|6~$xZC1#a{%5X4vgL3jwz0TW7bd=lnlYrYToCzmsRsn zG6ZLz_#89r+fj+tkVoK!xICPEVhz+R!N=7+Mu=$l?Db+Fyt%@T$86}{QxCue zo*b8txp9`%iC&~AH(FlUN#Gc8EJ3SCvAmiOXrtW1!AfXYOPZwIC_$h=Vx;wj9g*VG zn>>!!_}6Z&FyT(z`Eh(Vy<~KX-Ndy&2~1*;fMW4sijFKD58&(9K`| zRLs>34RVwEp4XxS6m`+^zdN|Gj)ie??5dutA}D%>HZU>o$Ufu{#}PMKUPrs(>YTHE zX$dVug7hM!+(c8l>J!>ako4Uis&_{)wRU;p4` zA~R0$2=VZlz_L(PXIniCkC)X=SfbIbSViyFm_2w^tcPgboxQ0C+FrQtVTeEM*t~js zkSDQG&}nO&>4hGa_z-uTU$Bt2G>QmbB2ffT)ggQj`!8E}!RY;_`GwXYADn$2q8QA+ z7YjOVlPd$%BVJ_K(fD}~MaG5ga2J7lip&9^+R<)wE+Ab@b!jTUJYxQF>tz>#9P1(& zbQdH#mP!D(J-KK-;weS4f6H1w2i#o&fLnr2TMG~W8>n*t=^`vqYZtGTN(%0~P(i+e z<9JPlpwm`(yJzPyMCPCzY57|{zb$LGn+V)FKjkX3>zL2FBIvZYe7SE=9O6c%AFf{l zlYu%IVprK&Z(;&)P0(rY_+*JdB^MX!m_V@ms?qx-_?j)M>FNVnlkl{J8%VSeXa@=4B5E7rY|zDYsywHkb$Z?Bplja;6*LD3k+d3-bI0eArC+#3Ea|+ z)ReVg&571GZgjG$+Tej1p6o>{fS-JEYr6zP0DxP%vH69aRWmzHRqc*hLL2IM7pV>c z&zl$S05~D&v_X04RX&kAl^|X`aWyjct$Cdg0PYe_?Jt4%l|9EI0JtpZv}YbfMad5k zhkqZ$E!og&-nD+KrgYW5aNS;0^;HGGEo+Ax```|kW&pWdW>#si`y#Y;`Xe7etp5O*Tl}p+8}415w!P%tP~S2# z=k;t+r@iYT2jzI&0^k^znRPLgePZMSL^}h&_}fOY;LMT8qjT1T%x)AdKWW~-B@e!3 zZ?6H^&t+!a3H5NuGg7wzRBPU|alN|#vSj_^3!e|N-MD4mwsZ^J?>w~qZ3J*S96-p^ zhB&Z=Tl9??z*T

J^%*ugZdTi%Nc)WZt`REp2HO+}H`*=gR>0g%b?<0OI~1$eUp@ zTrlta=93%z)S&z{TvATIZ=}-8cRd7vbpW<=nOPUP%q%|KL!pp~dUE9tgIlzY0;o4G zc|B*u?#GrHXJYXK*^ToHa)iUHwGM1>R8J-VXSvL*;?5in8M?h4Uxelst*aJJAJ`Uo z?9EL9+l|syI)2-ly>24#G64VXY%pYK)IIL9xo+OQ;d6EG#qs*|#n1R@#OwI2D>gtB zZ3f&HQ``Y?oXgCr4KBO8JVU5wFeC}w!fXLR0lzJ4zNU1Q&##eH@>3=A?hW72`*$2u z>LP$#06PN$!@bSx4uDXfADmm5O<^)z;CFmIPgD8jZ67=;I%0=nopk-mT`Le0fP4V! zxXi2~E;CDz3lLo)4sj{m!ff8SZ1yoB=exN%ue`Nsa?~1?YcQrGIX7;ncy3Fnb>fv; z)l*|I`{VAn6T4j;;xWB4f2~oxdU4n94*dL1B|lAa2BMOmj**vAPMG&^ISb$}fPVwn z8*DJTH$%KVxN~}C{#xF+e9orim|2?QiPKgB#J*u-


diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 401a4484..08341786 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -15,6 +15,17 @@ MWNP.WPTYPE = { LAND: 8 }; +MWNP.WPTYPE.REV = { + 1: 'WAYPOINT', + 2: 'PH_UNLIM', + 3: 'PH_TIME', + 4: 'RTH', + 5: 'SET_POI', + 6: 'JUMP', + 7: 'SET_HEAD', + 8: 'LAND' +}; + // Dictionary of Parameter1,2,3 depending on type of action selected (refer to MWNP.WPTYPE) var dictOfLabelParameterPoint = { 1: {parameter1: 'Speed (cm/s)', parameter2: '', parameter3: ''}, @@ -325,6 +336,10 @@ TABS.mission_control.initialize = function (callback) { $('#pointP2').val(''); $('#pointP3').val(''); $('[name=Options]').filter('[value=None]').prop('checked', true); + $('#Options_LandRTH').prop('checked', false); + $('#Options_TargetJUMP').val(0); + $('#Options_NumberJUMP').val(0); + $('#Options_HeadingHead').val(-1); $('[name=pointNumber]').val(''); $('#MPeditPoint').fadeOut(300); } @@ -355,6 +370,9 @@ TABS.mission_control.initialize = function (callback) { var poiList; var lengthPoiList; var activatePoi = false; + var activateHead = false; + var oldHeading; + var xmlItemNumber = 0; for (var i in lines) { map.removeLayer(lines[i]); } @@ -368,43 +386,44 @@ TABS.mission_control.initialize = function (callback) { if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined') { var geometry = t.getSource().getFeatures()[0].getGeometry(); var action = t.action; - var number = t.number; + var markerNumber = t.number; var options = t.options; if (action == 5) { // If action is Set_POI, increment counter of POI - poiNumber = number; + poiNumber = markerNumber; lengthPoiList = poiList.push(poiNumber); activatePoi = true; - console.log(lengthPoiList) } - else { + if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead != true){ + paintLine(oldPos, geometry.getCoordinates()); + } + else if (typeof oldPos !== 'undefined' && activatePoi == true && activateHead != true) { + if ((lengthPoiList % 2) == 0) { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); + } + else { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); + } + } + else if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead == true) { + console.log(oldHeading); + paintLine(oldPos, geometry.getCoordinates(), '#1497f1', 0, lineText=String(oldHeading)+"°"); + } if (options.key == "JUMP") { - paintLine(geometry.getCoordinates(), markers[options.targetWP].getSource().getFeatures()[0].getGeometry().getCoordinates(), '#e935d6', 5, "Repeat x"+String(options.numRepeat)); + paintLine(geometry.getCoordinates(), markers[options.targetWP-1].getSource().getFeatures()[0].getGeometry().getCoordinates(), '#e935d6', 5, "Repeat x"+String(options.numRepeat)); } else if (options.key == "SET_HEAD") { - if (options.heading == -1) { + if (options.heading == "-1") { activatePoi = false; - paintLine(oldPos, geometry.getCoordinates()); + activateHead = false; + oldHeading = 'undefined' } - else if (typeof options.heading != 'undefined' && options.heading != -1) { - paintLine(oldPos, geometry.getCoordinates(), lineText=String(options.heading)+" °"); - } - } - else if (options.key == "None") { - if (typeof oldPos !== 'undefined' && activatePoi != true){ //(typeof poiNumber == 'undefined' || number < poiNumber || options.heading == '-1')) { - paintLine(oldPos, geometry.getCoordinates()); - - } - else if (typeof oldPos !== 'undefined' && activatePoi == true) { - if ((lengthPoiList % 2) == 0) { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); - } - else { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); - } + else if (typeof options.heading != 'undefined' && options.heading != "-1") { + activateHead = true; + oldHeading = options.heading } } @@ -457,16 +476,16 @@ TABS.mission_control.initialize = function (callback) { map.addLayer(vectorLayer); } - function getPointIcon(_action, isEdit) { + function getPointIcon(_action, isEdit, markerNumber='') { var dictofPoint = { - 1: '', - 2: '', - 3: '', + 1: 'WP', + 2: 'PH', + 3: 'PH', //4: '', - 5: '_poi', + 5: 'POI', //6: '', - //7: '_head', - 8: '' + //7: 'head', + 8: 'LDG' }; return new ol.style.Style({ @@ -474,7 +493,19 @@ TABS.mission_control.initialize = function (callback) { anchor: [0.5, 1], opacity: 1, scale: 0.5, - src: '../images/icons/cf_icon_position' + dictofPoint[_action] + (isEdit ? '_edit' : '')+ '.png' + src: '../images/icons/cf_icon_position' + (dictofPoint[_action] != '' ? '_'+dictofPoint[_action] : '') + (isEdit ? '_edit' : '')+ '.png' + })), + text: new ol.style.Text(({ + text: String(Number(markerNumber)+1), + font: '12px sans-serif', + offsetY: -15, + offsetX: -2, + fill: new ol.style.Fill({ + color: '#FFFFFF' + }), + stroke: new ol.style.Stroke({ + color: '#FFFFFF' + }), })) }); } @@ -487,7 +518,7 @@ TABS.mission_control.initialize = function (callback) { rainfall: 500 }); - iconFeature.setStyle(getPointIcon(_action)); + iconFeature.setStyle(getPointIcon(_action, false, String(markers.length))); var vectorSource = new ol.source.Vector({ features: [iconFeature] @@ -732,7 +763,7 @@ TABS.mission_control.initialize = function (callback) { map.on('click', function (evt) { if (selectedMarker != null) { try { - selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action)); + selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action, false, selectedMarker.number)); selectedMarker = null; clearEditForm(); } catch (e) { @@ -761,7 +792,7 @@ TABS.mission_control.initialize = function (callback) { var geometry = selectedFeature.getGeometry(); var coord = ol.proj.toLonLat(geometry.getCoordinates()); - selectedFeature.setStyle(getPointIcon(selectedMarker.action, true)); + selectedFeature.setStyle(getPointIcon(selectedMarker.action, true, selectedMarker.number)); var altitudeMeters = app.ConvertCentimetersToMeters(selectedMarker.alt); @@ -775,6 +806,16 @@ TABS.mission_control.initialize = function (callback) { $('#pointP2').val(selectedMarker.parameter2); $('#pointP3').val(selectedMarker.parameter3); $('[name=Options]').filter('[value='+selectedMarker.options['key']+']').prop('checked', true); + if (selectedMarker.options.key == "RTH") { + $('#Options_LandRTH').prop('checked', selectedMarker.options.landAfter); + } + else if (selectedMarker.options.key == "JUMP") { + $('#Options_TargetJUMP').val(selectedMarker.options.targetWP); + $('#Options_NumberJUMP').val(selectedMarker.options.numRepeat); + } + else if (selectedMarker.options.key == "SET_HEAD") { + $('#Options_HeadingHead').val(selectedMarker.options.heading); + } // Selection box update depending on choice of type of waypoint for (var j in dictOfLabelParameterPoint[selectedMarker.action]) { @@ -785,10 +826,10 @@ TABS.mission_control.initialize = function (callback) { } else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} } - if ([1,2,3].includes(selectedMarker.action)) { + if ([1,2,3,8].includes(selectedMarker.action)) { $('#pointOptionclass').fadeIn(300); } - else {$('#pointOptionclass').fadeIn(300);} + else {$('#pointOptionclass').fadeOut(300);} $('#MPeditPoint').fadeIn(300); } } @@ -881,7 +922,7 @@ TABS.mission_control.initialize = function (callback) { } }); - selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action)); + selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action, false, selectedMarker.number)); selectedMarker = null; clearEditForm(); repaint(); @@ -1131,19 +1172,80 @@ TABS.mission_control.initialize = function (callback) { 'mwp': { $: { 'cx': (Math.round(center[0] * 10000000) / 10000000), 'cy': (Math.round(center[1] * 10000000) / 10000000), 'zoom': zoom } }, 'missionitem': [] }; - + // init secondary counter for real marker numbers taking into account JUMP, SET_HEAD, RTH insertion + var j = 1; + var nonMarkerPoint = []; for (var i = 0; i < markers.length; i++) { var geometry = markers[i].getSource().getFeatures()[0].getGeometry(); var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); - var point = { $: { + /*var point = { $: { 'no': (i + 1), 'action': ((markers[i].action == MWNP.WPTYPE.WAYPOINT) ? 'WAYPOINT' : markers[i].action), 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), 'alt': (markers[i].alt / 100) + } };*/ + var point = { $: { + 'no': (j), + 'action': MWNP.WPTYPE.REV[markers[i].action], + 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), + 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), + 'alt': (markers[i].alt / 100), + 'parameter1': markers[i].parameter1, + 'parameter2': markers[i].parameter2, + 'parameter3': markers[i].parameter3, } }; - if ((markers[i].action == MWNP.WPTYPE.WAYPOINT) && (markers[i].parameter1 > 0)) point.$['parameter1'] = markers[i].parameter1; /*parameter1 = SpeedValue in this case*/ - data.missionitem.push(point); + //if ((markers[i].action == MWNP.WPTYPE.WAYPOINT) && (markers[i].parameter1 > 0)) point.$['parameter1'] = markers[i].parameter1; /*parameter1 = SpeedValue in this case*/ + data.missionitem.push(point); + j++; + if (markers[i].options.key == "JUMP") { + nonMarkerPoint.push(i); + console.log(nonMarkerPoint); + console.log(Number(markers[i].options.targetWP)); + console.log(getNumberOfNonMarkerForJump(nonMarkerPoint, Number(markers[i].options.targetWP)-1)); + point = { $: { + 'no': (j), + 'action': 'JUMP', + 'lon': 0, + 'lat': 0, + 'alt': 0, + 'parameter1': String(Number(markers[i].options.targetWP)+getNumberOfNonMarkerForJump(nonMarkerPoint, Number(markers[i].options.targetWP)-1)), + 'parameter2': markers[i].options.numRepeat, + 'parameter3': 0 + } }; + data.missionitem.push(point); + j++; + } + else if (markers[i].options.key == "SET_HEAD") { + point = { $: { + 'no': (j), + 'action': 'SET_HEAD', + 'lon': 0, + 'lat': 0, + 'alt': 0, + 'parameter1': markers[i].options.heading, + 'parameter2': 0, + 'parameter3': 0 + } }; + data.missionitem.push(point); + nonMarkerPoint.push(i); + j++; + } + else if (markers[i].options.key == "RTH") { + point = { $: { + 'no': (j), + 'action': 'RTH', + 'lon': 0, + 'lat': 0, + 'alt': (markers[i].alt / 100), + 'parameter1': (markers[i].options.landAfter) ? 1: 0, + 'parameter2': 0, + 'parameter3': 0 + } }; + data.missionitem.push(point); + nonMarkerPoint.push(i); + j++; + }; } // add last RTH point @@ -1162,6 +1264,20 @@ TABS.mission_control.initialize = function (callback) { }); } + function getNumberOfNonMarkerForJump(nonMarkerPointList, numTargetMarker) { + console.log(nonMarkerPointList.length); + for (i = 0; i < nonMarkerPointList.length; i++) { + console.log(String(nonMarkerPointList[i+1])+" "+String(nonMarkerPointList[i])); + if (numTargetMarker<=nonMarkerPointList[i+1] && numTargetMarker>nonMarkerPointList[i]) { + console.log(i+1); + return i+1; + } + else { + return 0; + } + } + } + function getPointsFromEprom() { pointForSend = 0; MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, getNextPoint); From 63e8825761073e5d618808b5a32b7dbc0ffe9dbd Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Thu, 7 Jan 2021 23:14:21 +0100 Subject: [PATCH 09/58] Code comment & Alert on JUMP&Set_HEAD --- _locales/en/messages.json | 6 +++ tabs/mission_control.js | 100 ++++++++++++++++++++++++++++---------- 2 files changed, 79 insertions(+), 27 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 7be10d82..2d104331 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3585,5 +3585,11 @@ }, "configurationCurrentMeterType": { "message": "Current Meter Type" + }, + "MissionPlannerJumpSettingsCheck": { + "message": "JUMP settings incorrect : Check it again !" + }, + "MissionPlannerHeadSettingsCheck": { + "message": "Heading value is incorrect : Check it again !" } } diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 08341786..98fc36a4 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -15,6 +15,7 @@ MWNP.WPTYPE = { LAND: 8 }; +// Reverse WayPoint type dictionary MWNP.WPTYPE.REV = { 1: 'WAYPOINT', 2: 'PH_UNLIM', @@ -26,7 +27,7 @@ MWNP.WPTYPE.REV = { 8: 'LAND' }; -// Dictionary of Parameter1,2,3 depending on type of action selected (refer to MWNP.WPTYPE) +// Dictionary of Parameter1,2,3 definition depending on type of action selected (refer to MWNP.WPTYPE) var dictOfLabelParameterPoint = { 1: {parameter1: 'Speed (cm/s)', parameter2: '', parameter3: ''}, 2: {parameter1: '', parameter2: '', parameter3: ''}, @@ -328,6 +329,7 @@ TABS.mission_control.initialize = function (callback) { var pointForSend = 0; var settings = { speed: 0, alt: 5000}; + // Function to clear/reinit Jquery variable function clearEditForm() { $('#pointLat').val(''); $('#pointLon').val(''); @@ -349,7 +351,6 @@ TABS.mission_control.initialize = function (callback) { if (result.missionPlanerSettings) { settings = result.missionPlanerSettings; } - refreshSettings(); }); } @@ -363,6 +364,7 @@ TABS.mission_control.initialize = function (callback) { $('#MPdefaultPointSpeed').val(settings.speed); } + // Function to repaint lines between markers function repaint() { var oldPos; var oldAction; @@ -373,16 +375,15 @@ TABS.mission_control.initialize = function (callback) { var activateHead = false; var oldHeading; var xmlItemNumber = 0; + for (var i in lines) { map.removeLayer(lines[i]); } lines = []; poiList = []; $('#missionDistance').text(0); - //console.log(markers) map.getLayers().forEach(function (t) { - //feature.getGeometry().getType() if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined') { var geometry = t.getSource().getFeatures()[0].getGeometry(); var action = t.action; @@ -395,9 +396,11 @@ TABS.mission_control.initialize = function (callback) { activatePoi = true; } else { + // If classic WPs, draw standard line in-between if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead != true){ paintLine(oldPos, geometry.getCoordinates()); } + // If one is POI, draw orange line in-between and modulate dashline each time a new POI is defined else if (typeof oldPos !== 'undefined' && activatePoi == true && activateHead != true) { if ((lengthPoiList % 2) == 0) { paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); @@ -406,15 +409,17 @@ TABS.mission_control.initialize = function (callback) { paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); } } + // If one is SET_HEAD, draw labelled line in-between with heading value else if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead == true) { console.log(oldHeading); paintLine(oldPos, geometry.getCoordinates(), '#1497f1', 0, lineText=String(oldHeading)+"°"); } - + // If classic WPs is defined with a JUMP options, draw pink dashed line in-between if (options.key == "JUMP") { paintLine(geometry.getCoordinates(), markers[options.targetWP-1].getSource().getFeatures()[0].getGeometry().getCoordinates(), '#e935d6', 5, "Repeat x"+String(options.numRepeat)); } + // If classic WPs is defined with a heading = -1, change Boolean for POI to false. If it is defined with a value different from -1, activate Heading boolean else if (options.key == "SET_HEAD") { if (options.heading == "-1") { activatePoi = false; @@ -426,10 +431,8 @@ TABS.mission_control.initialize = function (callback) { oldHeading = options.heading } } - oldPos = geometry.getCoordinates(); } - } }); //reset text position @@ -437,7 +440,8 @@ TABS.mission_control.initialize = function (callback) { textGeom.setCoordinates(map.getCoordinateFromPixel([0,0])); } } - + + // function modified to tale into account optional arguement such color, linedash and line label function paintLine(pos1, pos2, color='#1497f1', lineDash=0, lineText="") { var line = new ol.geom.LineString([pos1, pos2]); @@ -475,7 +479,8 @@ TABS.mission_control.initialize = function (callback) { map.addLayer(vectorLayer); } - + + // Function modified to add action name and marker numbering to help changing icon depending on those items function getPointIcon(_action, isEdit, markerNumber='') { var dictofPoint = { 1: 'WP', @@ -510,6 +515,7 @@ TABS.mission_control.initialize = function (callback) { }); } + // Function modified by adding parameter 1,2,3 needed in MSP, plus options dictionary to take into account WP behavior changer such as JUMP, SET_HEAD, RTH function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0, _options={key: "None"}) { var iconFeature = new ol.Feature({ geometry: new ol.geom.Point(_pos), @@ -826,7 +832,9 @@ TABS.mission_control.initialize = function (callback) { } else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} } - if ([1,2,3,8].includes(selectedMarker.action)) { + console.log(selectedMarker.action); + console.log(typeof selectedMarker.action); + if ([1,2,3,8].includes(selectedMarker.action) || ['1','2','3','8'].includes(selectedMarker.action)) { $('#pointOptionclass').fadeIn(300); } else {$('#pointOptionclass').fadeOut(300);} @@ -905,15 +913,30 @@ TABS.mission_control.initialize = function (callback) { }; } else if ($('input[name=Options]:checked').val() == "JUMP") { - t.options = {key: $('input[name=Options]:checked').val(), + console.log(Array.from({length: markers.length}, (v, i) => i+1)); + console.log($('#Options_TargetJUMP').val()); + console.log(typeof $('#Options_TargetJUMP').val()); + if (!Array.from({length: markers.length}, (v, i) => i+1).includes(Number($('#Options_TargetJUMP').val())) || (Number($('#Options_NumberJUMP').val())<0 || Number($('#Options_NumberJUMP').val())>99)) { + alert(chrome.i18n.getMessage('MissionPlannerJumpSettingsCheck')) + t.options = {key: 'None'} + } + else { + t.options = {key: $('input[name=Options]:checked').val(), targetWP: $('#Options_TargetJUMP').val(), numRepeat: $('#Options_NumberJUMP').val() }; + } } else if ($('input[name=Options]:checked').val() == "SET_HEAD") { - t.options = {key: $('input[name=Options]:checked').val(), + if ($('#Options_HeadingHead').val()>360 || ($('#Options_HeadingHead').val()<0 && $('#Options_HeadingHead').val() !=-1)) { + alert(chrome.i18n.getMessage('MissionPlannerHeadSettingsCheck')) + t.options = {key: 'None'} + } + else { + t.options = {key: $('input[name=Options]:checked').val(), heading: $('#Options_HeadingHead').val() }; + } } else { t.options = {key: $('input[name=Options]:checked').val()} @@ -1128,22 +1151,45 @@ TABS.mission_control.initialize = function (callback) { // draw actual mission removeAllPoints(); + console.log(mission); for (var i = 0; i < mission.points.length; i++) { - //if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND].includes(mission.points[i].action)) { - if (mission.points[i].action == MWNP.WPTYPE.WAYPOINT) { - var coord = ol.proj.fromLonLat([mission.points[i].lon, mission.points[i].lat]); - map.addLayer(addMarker(coord, mission.points[i].alt, mission.points[i].action, mission.points[i].p1)); - if (i == 0) { - map.getView().setCenter(coord); - map.getView().setZoom(16); - } - } else if (mission.points[i].action == MWNP.WPTYPE.RTH) { - $('#rthEndMission').prop('checked', true); - $('#rthSettings').fadeIn(300); - if (mission.points[i].p1 > 0) { - $('#rthLanding').prop('checked', true); - } - } + if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(mission.points[i].action)) { + if (i < mission.points.length-1) { + var coord = ol.proj.fromLonLat([mission.points[i].lon, mission.points[i].lat]); + if (mission.points[i+1].action == MWNP.WPTYPE.SET_HEAD) { + var options = {key: 'SET_HEAD', + heading: mission.points[i+1].p1 + }; + } + else if (mission.points[i+1].action == MWNP.WPTYPE.JUMP) { + var options = {key: 'JUMP', + targetWP: mission.points[i+1].p1, + numRepeat: mission.points[i+1].p2 + }; + } + else if (mission.points[i+1].action == MWNP.WPTYPE.RTH) { + var options = {key: 'RTH', + landAfter: mission.points[i+1].p1 + }; + } + else { + var options = {key: 'None'}; + } + map.addLayer(addMarker(coord, mission.points[i].alt, mission.points[i].action, mission.points[i].p1, mission.points[i].p2, mission.points[i].p3, options)); + if (i == 0) { + map.getView().setCenter(coord); + map.getView().setZoom(16); + } + } + else { + var coord = ol.proj.fromLonLat([mission.points[i].lon, mission.points[i].lat]); + map.addLayer(addMarker(coord, mission.points[i].alt, mission.points[i].action, mission.points[i].p1, mission.points[i].p2, mission.points[i].p3)); + if (i == 0) { + map.getView().setCenter(coord); + map.getView().setZoom(16); + } + } + } } if (mission.center) { From 5fde0022a5235e27fb88e0db236f56bdc3c89682 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 9 Jan 2021 22:58:17 +0100 Subject: [PATCH 10/58] Rearranging RTH selection menu --- src/css/tabs/mission_planer.css | 17 +++++++- tabs/mission_control.html | 12 +++--- tabs/mission_control.js | 72 ++++++++++++++++++++++++++------- 3 files changed, 79 insertions(+), 22 deletions(-) diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index 8adffee8..8863f8de 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -18,7 +18,7 @@ line-height: 28px; margin: 5px; float: left; - width: 90px; + width: 80px; text-align: center; } @@ -43,7 +43,12 @@ opacity: 0.5; } -.tab-mission-control .btn-danger a { +.tab-mission-control .btn-danger_long a { + background-color: #db250e; + border: 1px solid #b5480e; + width: 100%; +} +.tab-mission-control .btn-danger_short a { background-color: #db250e; border: 1px solid #b5480e; } @@ -161,6 +166,14 @@ top: 80px; } +.mission-control-template { + top: 85px; + left: .5em; +} +.ol-touch .mission-control-template { + top: 100px; +} + .tab-mission-control .missionTable { width: 100%; text-align: center; diff --git a/tabs/mission_control.html b/tabs/mission_control.html index d69a1ca5..73beead3 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -44,7 +44,7 @@

-
+

- @@ -142,11 +142,11 @@
-
-
+
+ -
+
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 98fc36a4..cd97373a 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -626,7 +626,41 @@ TABS.mission_control.initialize = function (callback) { }; ol.inherits(app.PlannerSettingsControl, ol.control.Control); + + /** + * @constructor + * @extends {ol.control.Control} + * @param {Object=} opt_options Control options. + */ + app.PlannerTemplateControl = function (opt_options) { + var options = opt_options || {}; + var button = document.createElement('button'); + button.innerHTML = ' '; + button.style = 'background: url(\'../images/CF_settings_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; + + var handleShowSettings = function () { + $('#MPeditPoint, #missionPalnerTotalInfo', '#missionPlanerSettings').hide(); + $('#missionPlanerSettings').fadeIn(300); + }; + + button.addEventListener('click', handleShowSettings, false); + button.addEventListener('touchstart', handleShowSettings, false); + + var element = document.createElement('div'); + element.className = 'mission-control-template ol-unselectable ol-control'; + element.appendChild(button); + element.title = 'MP Template'; + + ol.control.Control.call(this, { + element: element, + target: options.target + }); + + }; + ol.inherits(app.PlannerTemplateControl, ol.control.Control); + + /** * @param {ol.MapBrowserEvent} evt Map browser event. * @return {boolean} `true` to start the drag sequence. @@ -729,7 +763,8 @@ TABS.mission_control.initialize = function (callback) { collapsible: false } }).extend([ - new app.PlannerSettingsControl() + new app.PlannerSettingsControl(), + new app.PlannerTemplateControl() ]), interactions: ol.interaction.defaults().extend([new app.Drag()]), layers: [ @@ -813,6 +848,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointP3').val(selectedMarker.parameter3); $('[name=Options]').filter('[value='+selectedMarker.options['key']+']').prop('checked', true); if (selectedMarker.options.key == "RTH") { + console.log(selectedMarker.options.landAfter); $('#Options_LandRTH').prop('checked', selectedMarker.options.landAfter); } else if (selectedMarker.options.key == "JUMP") { @@ -909,7 +945,7 @@ TABS.mission_control.initialize = function (callback) { t.P3Value = $('#pointP3').val(); if ($('input[name=Options]:checked').val() == "RTH") { t.options = {key: $('input[name=Options]:checked').val(), - landAfter: $('#Options_LandRTH').val() + landAfter: $('#Options_LandRTH').prop('checked') }; } else if ($('input[name=Options]:checked').val() == "JUMP") { @@ -999,13 +1035,13 @@ TABS.mission_control.initialize = function (callback) { MSP.send_message(MSPCodes.MSP_WP_MISSION_SAVE, [0], false); }); - $('#rthEndMission').on('change', function () { + /*$('#rthEndMission').on('change', function () { if ($(this).is(':checked')) { $('#rthSettings').fadeIn(300); } else { $('#rthSettings').fadeOut(300); } - }); + });*/ $('#saveSettings').on('click', function () { settings = { speed: $('#MPdefaultPointSpeed').val(), alt: $('#MPdefaultPointAlt').val() }; @@ -1054,9 +1090,9 @@ TABS.mission_control.initialize = function (callback) { markers = []; clearEditForm(); updateTotalInfo(); - $('#rthEndMission').prop('checked', false); + /*$('#rthEndMission').prop('checked', false); $('#rthSettings').fadeOut(300); - $('#rthLanding').prop('checked', false); + $('#rthLanding').prop('checked', false);*/ repaint(); } @@ -1295,9 +1331,9 @@ TABS.mission_control.initialize = function (callback) { } // add last RTH point - if ($('#rthEndMission').is(':checked')) { + /*if ($('#rthEndMission').is(':checked')) { data.missionitem.push({ $: { 'no': (markers.length + 1), 'action': 'RTH', 'lon': 0, 'lat': 0, 'alt': (settings.alt / 100), 'parameter1': ($('#rthLanding').is(':checked') ? 1 : 0) } }); - } + }*/ var builder = new window.xml2js.Builder({ 'rootName': 'mission', 'renderOpts': { 'pretty': true, 'indent': '\t', 'newline': '\n' } }); var xml = builder.buildObject(data); @@ -1347,7 +1383,7 @@ TABS.mission_control.initialize = function (callback) { // console.log(MISSION_PLANER.bufferPoint.lat); // console.log(MISSION_PLANER.bufferPoint.alt); // console.log(MISSION_PLANER.bufferPoint.action); - if (MISSION_PLANER.bufferPoint.action == 4) { + /*if (MISSION_PLANER.bufferPoint.action == 4) { $('#rthEndMission').prop('checked', true); $('#rthSettings').fadeIn(300); if (MISSION_PLANER.bufferPoint.p1 > 0) { @@ -1359,7 +1395,12 @@ TABS.mission_control.initialize = function (callback) { if (pointForSend === 1) { map.getView().setCenter(coord); } - } + */ + var coord = ol.proj.fromLonLat([MISSION_PLANER.bufferPoint.lon, MISSION_PLANER.bufferPoint.lat]); + map.addLayer(addMarker(coord, MISSION_PLANER.bufferPoint.alt, MISSION_PLANER.bufferPoint.action, MISSION_PLANER.bufferPoint.p1)); + if (pointForSend === 1) { + map.getView().setCenter(coord); + } } if (pointForSend >= MISSION_PLANER.countBusyPoints) { @@ -1375,10 +1416,10 @@ TABS.mission_control.initialize = function (callback) { } function sendNextPoint() { - var isRTH = $('#rthEndMission').is(':checked'); - + //var isRTH = $('#rthEndMission').is(':checked'); + console.log(pointForSend); if (pointForSend >= markers.length) { - if (isRTH) { + /*if (isRTH) { MISSION_PLANER.bufferPoint.number = pointForSend + 1; MISSION_PLANER.bufferPoint.action = 4; MISSION_PLANER.bufferPoint.lon = 0; @@ -1389,7 +1430,8 @@ TABS.mission_control.initialize = function (callback) { MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, endSendPoint); } else { endSendPoint(); - } + }*/ + endSendPoint(); return; } @@ -1403,6 +1445,8 @@ TABS.mission_control.initialize = function (callback) { MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; + MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].parameter2; + MISSION_PLANER.bufferPoint.p3 = markers[pointForSend].parameter3; pointForSend++; if (pointForSend >= markers.length && !isRTH) { MISSION_PLANER.bufferPoint.endMission = 0xA5; From 1169f64adea5618c7da21de578b650ee0ecba098 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sun, 10 Jan 2021 23:06:18 +0100 Subject: [PATCH 11/58] some minor bugs correction --- _locales/en/messages.json | 3 + images/CF_settings_white.png | Bin 0 -> 3782 bytes images/CF_template_white.svg | 85 ++++++++++++++++++++++++++ tabs/mission_control.html | 9 ++- tabs/mission_control.js | 112 +++++++++++++++++++---------------- 5 files changed, 157 insertions(+), 52 deletions(-) create mode 100644 images/CF_settings_white.png create mode 100644 images/CF_template_white.svg diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 2d104331..6ad9b5c1 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3123,6 +3123,9 @@ }, "missionDefaultSettingsHead": { "message": "Default settings" + }, + "missionTemplateHead": { + "message": "Mission template" }, "useOnlyStandalone": { "message": "Use stand-alone application.
Please visit the website to read the release notes and download." diff --git a/images/CF_settings_white.png b/images/CF_settings_white.png new file mode 100644 index 0000000000000000000000000000000000000000..77b560d1a5c9008f374f1f2f050c195c72c20d1f GIT binary patch literal 3782 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 literal 0 HcmV?d00001 diff --git a/images/CF_template_white.svg b/images/CF_template_white.svg new file mode 100644 index 00000000..b5e789d2 --- /dev/null +++ b/images/CF_template_white.svg @@ -0,0 +1,85 @@ + +image/svg+xmlCF_Settings_Icon +CF_Settings_Icon + + + + diff --git a/tabs/mission_control.html b/tabs/mission_control.html index 73beead3..a0d6321b 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -26,7 +26,14 @@
-
+ +
Total information
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index cd97373a..a9bc3625 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -607,7 +607,7 @@ TABS.mission_control.initialize = function (callback) { button.style = 'background: url(\'../images/CF_settings_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; var handleShowSettings = function () { - $('#MPeditPoint, #missionPalnerTotalInfo').hide(); + $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate').hide(); $('#missionPlanerSettings').fadeIn(300); }; @@ -627,25 +627,26 @@ TABS.mission_control.initialize = function (callback) { }; ol.inherits(app.PlannerSettingsControl, ol.control.Control); + /** * @constructor * @extends {ol.control.Control} * @param {Object=} opt_options Control options. */ - app.PlannerTemplateControl = function (opt_options) { + /*app.PlannerTemplateControl = function (opt_options) { var options = opt_options || {}; var button = document.createElement('button'); button.innerHTML = ' '; - button.style = 'background: url(\'../images/CF_settings_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; + button.style = 'background: url(\'../images/CF_template_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; - var handleShowSettings = function () { - $('#MPeditPoint, #missionPalnerTotalInfo', '#missionPlanerSettings').hide(); - $('#missionPlanerSettings').fadeIn(300); + var handleShowTemplate = function () { + $('#MPeditPoint, #missionPlanerTotalInfo', '#missionPlanerSettings').hide(); + $('#missionPlanerTemplate').fadeIn(300); }; - button.addEventListener('click', handleShowSettings, false); - button.addEventListener('touchstart', handleShowSettings, false); + button.addEventListener('click', handleShowTemplate, false); + button.addEventListener('touchstart', handleShowTemplate, false); var element = document.createElement('div'); element.className = 'mission-control-template ol-unselectable ol-control'; @@ -659,7 +660,7 @@ TABS.mission_control.initialize = function (callback) { }; ol.inherits(app.PlannerTemplateControl, ol.control.Control); - + */ /** * @param {ol.MapBrowserEvent} evt Map browser event. @@ -764,7 +765,7 @@ TABS.mission_control.initialize = function (callback) { } }).extend([ new app.PlannerSettingsControl(), - new app.PlannerTemplateControl() + //new app.PlannerTemplateControl() ]), interactions: ol.interaction.defaults().extend([new app.Drag()]), layers: [ @@ -847,6 +848,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointP2').val(selectedMarker.parameter2); $('#pointP3').val(selectedMarker.parameter3); $('[name=Options]').filter('[value='+selectedMarker.options['key']+']').prop('checked', true); + // Manage RTH, JUMP, SET_HEAD options for WP if (selectedMarker.options.key == "RTH") { console.log(selectedMarker.options.landAfter); $('#Options_LandRTH').prop('checked', selectedMarker.options.landAfter); @@ -868,8 +870,6 @@ TABS.mission_control.initialize = function (callback) { } else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} } - console.log(selectedMarker.action); - console.log(typeof selectedMarker.action); if ([1,2,3,8].includes(selectedMarker.action) || ['1','2','3','8'].includes(selectedMarker.action)) { $('#pointOptionclass').fadeIn(300); } @@ -931,7 +931,8 @@ TABS.mission_control.initialize = function (callback) { repaint(); } }); - + + // SavePoint function updated to take into account P1 to P3 parameter and JUMP,RTH, SET_HEAD options for WP $('#savePoint').on('click', function () { if (selectedMarker) { map.getLayers().forEach(function (t) { @@ -940,18 +941,23 @@ TABS.mission_control.initialize = function (callback) { geometry.setCoordinates(ol.proj.fromLonLat([parseFloat($('#pointLon').val()), parseFloat($('#pointLat').val())])); t.alt = $('#pointAlt').val(); t.action = $('#pointType').val(); - t.P1Value = $('#pointP1').val(); - t.P2Value = $('#pointP2').val(); - t.P3Value = $('#pointP3').val(); + console.log(typeof t.action); + if (t.action == '5' || t.action == '2' || t.action == '8') { + t.P1Value = 0; + t.P2Value = 0; + t.P3Value = 0; + } + else { + t.P1Value = $('#pointP1').val(); + t.P2Value = $('#pointP2').val(); + t.P3Value = $('#pointP3').val(); + } if ($('input[name=Options]:checked').val() == "RTH") { t.options = {key: $('input[name=Options]:checked').val(), landAfter: $('#Options_LandRTH').prop('checked') }; } else if ($('input[name=Options]:checked').val() == "JUMP") { - console.log(Array.from({length: markers.length}, (v, i) => i+1)); - console.log($('#Options_TargetJUMP').val()); - console.log(typeof $('#Options_TargetJUMP').val()); if (!Array.from({length: markers.length}, (v, i) => i+1).includes(Number($('#Options_TargetJUMP').val())) || (Number($('#Options_NumberJUMP').val())<0 || Number($('#Options_NumberJUMP').val())>99)) { alert(chrome.i18n.getMessage('MissionPlannerJumpSettingsCheck')) t.options = {key: 'None'} @@ -977,7 +983,6 @@ TABS.mission_control.initialize = function (callback) { else { t.options = {key: $('input[name=Options]:checked').val()} } - console.log(t.options); } }); @@ -1034,7 +1039,8 @@ TABS.mission_control.initialize = function (callback) { GUI.log(chrome.i18n.getMessage('eeprom_saved_ok')); MSP.send_message(MSPCodes.MSP_WP_MISSION_SAVE, [0], false); }); - + + // RTH missions commented as integrated into WP options direclty /*$('#rthEndMission').on('change', function () { if ($(this).is(':checked')) { $('#rthSettings').fadeIn(300); @@ -1054,6 +1060,7 @@ TABS.mission_control.initialize = function (callback) { closeSettingsPanel(); }); + // Add function to update parameter i field in the selected Edit WP Box $('#pointType').on('change', function () { selectedMarker.action = $('#pointType').val(); @@ -1077,7 +1084,7 @@ TABS.mission_control.initialize = function (callback) { function closeSettingsPanel() { $('#missionPlanerSettings').hide(); - $('#missionPalnerTotalInfo').fadeIn(300); + $('#missionPlanerTotalInfo').fadeIn(300); if (selectedMarker !== null) { $('#MPeditPoint').fadeIn(300); } @@ -1090,6 +1097,7 @@ TABS.mission_control.initialize = function (callback) { markers = []; clearEditForm(); updateTotalInfo(); + // RTH section commented as RTH options is integrated into WP box /*$('#rthEndMission').prop('checked', false); $('#rthSettings').fadeOut(300); $('#rthLanding').prop('checked', false);*/ @@ -1187,7 +1195,7 @@ TABS.mission_control.initialize = function (callback) { // draw actual mission removeAllPoints(); - console.log(mission); + // Updated code to take into account WP options (JUMP, SET_HEAD, RTH) for (var i = 0; i < mission.points.length; i++) { if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(mission.points[i].action)) { if (i < mission.points.length-1) { @@ -1260,31 +1268,36 @@ TABS.mission_control.initialize = function (callback) { for (var i = 0; i < markers.length; i++) { var geometry = markers[i].getSource().getFeatures()[0].getGeometry(); var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); - /*var point = { $: { - 'no': (i + 1), - 'action': ((markers[i].action == MWNP.WPTYPE.WAYPOINT) ? 'WAYPOINT' : markers[i].action), - 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), - 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), - 'alt': (markers[i].alt / 100) - } };*/ - var point = { $: { - 'no': (j), - 'action': MWNP.WPTYPE.REV[markers[i].action], - 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), - 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), - 'alt': (markers[i].alt / 100), - 'parameter1': markers[i].parameter1, - 'parameter2': markers[i].parameter2, - 'parameter3': markers[i].parameter3, - } }; - //if ((markers[i].action == MWNP.WPTYPE.WAYPOINT) && (markers[i].parameter1 > 0)) point.$['parameter1'] = markers[i].parameter1; /*parameter1 = SpeedValue in this case*/ - data.missionitem.push(point); - j++; + if (markers[i].action == '5' || markers[i].action == '2' || markers[i].action == '8' ) { + var point = { $: { + 'no': (j), + 'action': MWNP.WPTYPE.REV[markers[i].action], + 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), + 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), + 'alt': (markers[i].alt / 100), + 'parameter1': 0, + 'parameter2': 0, + 'parameter3': 0, + } }; + data.missionitem.push(point); + j++; + } + else { + var point = { $: { + 'no': (j), + 'action': MWNP.WPTYPE.REV[markers[i].action], + 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), + 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), + 'alt': (markers[i].alt / 100), + 'parameter1': markers[i].parameter1, + 'parameter2': markers[i].parameter2, + 'parameter3': markers[i].parameter3, + } }; + data.missionitem.push(point); + j++; + } if (markers[i].options.key == "JUMP") { nonMarkerPoint.push(i); - console.log(nonMarkerPoint); - console.log(Number(markers[i].options.targetWP)); - console.log(getNumberOfNonMarkerForJump(nonMarkerPoint, Number(markers[i].options.targetWP)-1)); point = { $: { 'no': (j), 'action': 'JUMP', @@ -1330,7 +1343,7 @@ TABS.mission_control.initialize = function (callback) { }; } - // add last RTH point + // add last RTH point - Section commented as RTH is directly integrated as a WP options /*if ($('#rthEndMission').is(':checked')) { data.missionitem.push({ $: { 'no': (markers.length + 1), 'action': 'RTH', 'lon': 0, 'lat': 0, 'alt': (settings.alt / 100), 'parameter1': ($('#rthLanding').is(':checked') ? 1 : 0) } }); }*/ @@ -1345,13 +1358,10 @@ TABS.mission_control.initialize = function (callback) { GUI.log('File saved'); }); } - + // New function to get number of Non Marker point such as JUMP, SET_HEAD and RTH function getNumberOfNonMarkerForJump(nonMarkerPointList, numTargetMarker) { - console.log(nonMarkerPointList.length); for (i = 0; i < nonMarkerPointList.length; i++) { - console.log(String(nonMarkerPointList[i+1])+" "+String(nonMarkerPointList[i])); if (numTargetMarker<=nonMarkerPointList[i+1] && numTargetMarker>nonMarkerPointList[i]) { - console.log(i+1); return i+1; } else { From 57d06ccc79d577266e0b06323846b9f6c920116e Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 15 Jan 2021 19:42:15 +0100 Subject: [PATCH 12/58] update SendNextPoint Update SendNextPoint to cope with New WP type --- tabs/mission_control.js | 78 +++++++++++++++++++++++++++++++++++------ 1 file changed, 67 insertions(+), 11 deletions(-) diff --git a/tabs/mission_control.js b/tabs/mission_control.js index a9bc3625..0fda6daf 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1448,17 +1448,73 @@ TABS.mission_control.initialize = function (callback) { var geometry = markers[pointForSend].getSource().getFeatures()[0].getGeometry(); var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); - - MISSION_PLANER.bufferPoint.number = pointForSend + 1; - MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; - MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); - MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); - MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; - MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; - MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].parameter2; - MISSION_PLANER.bufferPoint.p3 = markers[pointForSend].parameter3; - pointForSend++; - if (pointForSend >= markers.length && !isRTH) { + + + if (markers[pointForSend].action == '5' || markers[pointForSend].action == '2' || markers[pointForSend].action == '8' ) { + MISSION_PLANER.bufferPoint.number = pointForSend + 1; + MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; + MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); + MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); + MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; + MISSION_PLANER.bufferPoint.p1 = 0; + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + pointForSend++; + } + else { + MISSION_PLANER.bufferPoint.number = pointForSend + 1; + MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; + MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); + MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); + MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; + MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; + MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].parameter2; + MISSION_PLANER.bufferPoint.p3 = markers[pointForSend].parameter3; + pointForSend++; + } + if (markers[pointForSend].options.key == "JUMP") { + nonMarkerPoint.push(pointForSend); + MISSION_PLANER.bufferPoint.number = pointForSend + 1; + MISSION_PLANER.bufferPoint.action = MWNP.WPTYPE[markers[pointForSend].options.key]; + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = 0; + MISSION_PLANER.bufferPoint.p1 = Number(markers[pointForSend].options.targetWP)+getNumberOfNonMarkerForJump(nonMarkerPoint, Number(markers[pointForSend].options.targetWP)-1); + MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].options.numRepeat; + MISSION_PLANER.bufferPoint.p3 = 0; + pointForSend++; + } + else if (markers[pointForSend].options.key == "SET_HEAD") { + MISSION_PLANER.bufferPoint.number = pointForSend + 1; + MISSION_PLANER.bufferPoint.action = MWNP.WPTYPE[markers[pointForSend].options.key]; + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = 0; + MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].options.heading; + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + pointForSend++; + nonMarkerPoint.push(pointForSend); + } + else if (markers[pointForSend].options.key == "RTH") { + MISSION_PLANER.bufferPoint.number = pointForSend + 1; + MISSION_PLANER.bufferPoint.action = MWNP.WPTYPE[markers[pointForSend].options.key]; + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; + MISSION_PLANER.bufferPoint.p1 = (markers[pointForSend].options.landAfter) ? 1: 0; + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + pointForSend++; + nonMarkerPoint.push(pointForSend); + }; + +/* if (pointForSend >= markers.length && !isRTH) { + MISSION_PLANER.bufferPoint.endMission = 0xA5; + } else { + MISSION_PLANER.bufferPoint.endMission = 0; + } */ + if (pointForSend >= markers.length && !isRTH) { MISSION_PLANER.bufferPoint.endMission = 0xA5; } else { MISSION_PLANER.bufferPoint.endMission = 0; From ea6ac3ec8f754b4bf1a962276e65769d0cdced25 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Mon, 15 Feb 2021 22:27:00 +0100 Subject: [PATCH 13/58] First release of new mission planner All working for saving into FC. Remaining bug on EPROM action --- js/fc.js | 4 +- js/msp/MSPHelper.js | 10 +- tabs/mission_control.js | 273 ++++++++++++++++++++++++---------------- 3 files changed, 174 insertions(+), 113 deletions(-) diff --git a/js/fc.js b/js/fc.js index 09b8c0ed..df3143ea 100644 --- a/js/fc.js +++ b/js/fc.js @@ -245,7 +245,9 @@ var FC = { lon: 0, alt: 0, endMission: 0, - p1: 0 + p1: 0, + p2: 0, + p3: 0 } }; diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index de43f68c..01c1c0d8 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -447,6 +447,8 @@ var mspHelper = (function (gui) { MISSION_PLANER.bufferPoint.lon = data.getInt32(6, true) / 10000000; MISSION_PLANER.bufferPoint.alt = data.getInt32(10, true); MISSION_PLANER.bufferPoint.p1 = data.getInt16(14, true); + MISSION_PLANER.bufferPoint.p2 = data.getInt16(16, true); + MISSION_PLANER.bufferPoint.p3 = data.getInt16(18, true); break; case MSPCodes.MSP_BOXIDS: @@ -2085,10 +2087,10 @@ var mspHelper = (function (gui) { buffer.push(specificByte(MISSION_PLANER.bufferPoint.alt, 3)); buffer.push(lowByte(MISSION_PLANER.bufferPoint.p1)); //sbufReadU16(src); // P1 speed or landing buffer.push(highByte(MISSION_PLANER.bufferPoint.p1)); - buffer.push(lowByte(0)); //sbufReadU16(src); // P2 - buffer.push(highByte(0)); - buffer.push(lowByte(0)); //sbufReadU16(src); // P3 - buffer.push(highByte(0)); + buffer.push(lowByte(MISSION_PLANER.bufferPoint.p2)); //sbufReadU16(src); // P2 + buffer.push(highByte(MISSION_PLANER.bufferPoint.p2)); + buffer.push(lowByte(MISSION_PLANER.bufferPoint.p3)); //sbufReadU16(src); // P3 + buffer.push(highByte(MISSION_PLANER.bufferPoint.p3)); buffer.push(MISSION_PLANER.bufferPoint.endMission); //sbufReadU8(src); // future: to set nav flag break; case MSPCodes.MSP_WP: diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 0fda6daf..7b7f76ed 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -326,7 +326,12 @@ TABS.mission_control.initialize = function (callback) { var lines = []; var map; var selectedMarker = null; + var nonMarkerPoint = []; + var isOptions = false; + var oldMarkers = null; + var pointFromBuffer = {}; var pointForSend = 0; + var actionPointForSend = 0; var settings = { speed: 0, alt: 5000}; // Function to clear/reinit Jquery variable @@ -943,14 +948,15 @@ TABS.mission_control.initialize = function (callback) { t.action = $('#pointType').val(); console.log(typeof t.action); if (t.action == '5' || t.action == '2' || t.action == '8') { - t.P1Value = 0; - t.P2Value = 0; - t.P3Value = 0; + t.parameter1 = 0; + t.parameter2 = 0; + t.parameter3 = 0; } else { - t.P1Value = $('#pointP1').val(); - t.P2Value = $('#pointP2').val(); - t.P3Value = $('#pointP3').val(); + console.log("$('#pointP1').val() : ",$('#pointP1').val()); + t.parameter1 = $('#pointP1').val(); + t.parameter2 = $('#pointP2').val(); + t.parameter3 = $('#pointP3').val(); } if ($('input[name=Options]:checked').val() == "RTH") { t.options = {key: $('input[name=Options]:checked').val(), @@ -987,6 +993,7 @@ TABS.mission_control.initialize = function (callback) { }); selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action, false, selectedMarker.number)); + console.log("selectedMarker", selectedMarker); selectedMarker = null; clearEditForm(); repaint(); @@ -1017,6 +1024,10 @@ TABS.mission_control.initialize = function (callback) { GUI.log('Start get point'); pointForSend = 0; + actionPointForSend = 0; + var nonMarkerPoint = []; + var isOptions = false; + var oldMarkers = null; getNextPoint(); }); @@ -1025,6 +1036,10 @@ TABS.mission_control.initialize = function (callback) { GUI.log('Start send point'); pointForSend = 0; + actionPointForSend = 0; + var nonMarkerPoint = []; + var isOptions = false; + var oldMarkers = null; sendNextPoint(); }); @@ -1268,6 +1283,7 @@ TABS.mission_control.initialize = function (callback) { for (var i = 0; i < markers.length; i++) { var geometry = markers[i].getSource().getFeatures()[0].getGeometry(); var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); + console.log("markers[i].parameter1 : ", markers[i].parameter1); if (markers[i].action == '5' || markers[i].action == '2' || markers[i].action == '8' ) { var point = { $: { 'no': (j), @@ -1372,6 +1388,11 @@ TABS.mission_control.initialize = function (callback) { function getPointsFromEprom() { pointForSend = 0; + actionPointForSend = 0; + nonMarkerPoint = []; + isOptions = false; + oldMarkers = null; + pointFromBuffer = {}; MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, getNextPoint); } @@ -1387,38 +1408,69 @@ TABS.mission_control.initialize = function (callback) { endGetPoint(); return; } - + console.log("countBusyPoints : "+MISSION_PLANER.countBusyPoints); + console.log("POINT : "+pointForSend); + console.log("Mission : "+MISSION_PLANER.bufferPoint.number); + if (pointForSend > 0) { - // console.log(MISSION_PLANER.bufferPoint.lon); - // console.log(MISSION_PLANER.bufferPoint.lat); - // console.log(MISSION_PLANER.bufferPoint.alt); - // console.log(MISSION_PLANER.bufferPoint.action); - /*if (MISSION_PLANER.bufferPoint.action == 4) { - $('#rthEndMission').prop('checked', true); - $('#rthSettings').fadeIn(300); - if (MISSION_PLANER.bufferPoint.p1 > 0) { - $('#rthLanding').prop('checked', true); - } - } else { - var coord = ol.proj.fromLonLat([MISSION_PLANER.bufferPoint.lon, MISSION_PLANER.bufferPoint.lat]); - map.addLayer(addMarker(coord, MISSION_PLANER.bufferPoint.alt, MISSION_PLANER.bufferPoint.action, MISSION_PLANER.bufferPoint.p1)); - if (pointForSend === 1) { - map.getView().setCenter(coord); - } - */ - var coord = ol.proj.fromLonLat([MISSION_PLANER.bufferPoint.lon, MISSION_PLANER.bufferPoint.lat]); - map.addLayer(addMarker(coord, MISSION_PLANER.bufferPoint.alt, MISSION_PLANER.bufferPoint.action, MISSION_PLANER.bufferPoint.p1)); - if (pointForSend === 1) { - map.getView().setCenter(coord); - } + pointFromBuffer[MISSION_PLANER.bufferPoint.number] = { + number : MISSION_PLANER.bufferPoint.number, + lon : MISSION_PLANER.bufferPoint.lon, + lat : MISSION_PLANER.bufferPoint.lat, + action : MISSION_PLANER.bufferPoint.action, + alt : MISSION_PLANER.bufferPoint.alt, + p1 : MISSION_PLANER.bufferPoint.p1, + p2 : MISSION_PLANER.bufferPoint.p2, + p3 : MISSION_PLANER.bufferPoint.p3 + }; } - + console.log(pointFromBuffer); if (pointForSend >= MISSION_PLANER.countBusyPoints) { + Object.keys(pointFromBuffer).forEach(function(key) { + console.log(pointFromBuffer[key]); + console.log("Key : "+key); + if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(pointFromBuffer[key].action)) { + if ((Number(key)+1) <= MISSION_PLANER.countBusyPoints) { + var coord = ol.proj.fromLonLat([pointFromBuffer[key].lon, pointFromBuffer[key].lat]); + if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.SET_HEAD) { + var options = {key: 'SET_HEAD', + heading: pointFromBuffer[Number(key)+1].p1 + }; + } + else if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.JUMP) { + var options = {key: 'JUMP', + targetWP: pointFromBuffer[Number(key)+1].p1, + numRepeat: pointFromBuffer[Number(key)+1].p2 + }; + } + else if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.RTH) { + var options = {key: 'RTH', + landAfter: pointFromBuffer[Number(key)+1].p1 + }; + } + else { + var options = {key: 'None'}; + } + map.addLayer(addMarker(coord, pointFromBuffer[key].alt, pointFromBuffer[key].action, pointFromBuffer[key].p1, pointFromBuffer[key].p2, pointFromBuffer[key].p3, options)); + if (key == 1) { + map.getView().setCenter(coord); + } + } + else { + var coord = ol.proj.fromLonLat([pointFromBuffer[key].lon, pointFromBuffer[key].lat]); + map.addLayer(addMarker(coord, pointFromBuffer[key].alt, pointFromBuffer[key].action, pointFromBuffer[key].p1, pointFromBuffer[key].p2, pointFromBuffer[key].p3)); + if (key == 1) { + map.getView().setCenter(coord); + } + } + } + }); endGetPoint(); return; } MISSION_PLANER.bufferPoint.number = pointForSend; + pointForSend++; @@ -1427,8 +1479,87 @@ TABS.mission_control.initialize = function (callback) { function sendNextPoint() { //var isRTH = $('#rthEndMission').is(':checked'); - console.log(pointForSend); - if (pointForSend >= markers.length) { + console.log("Point : "+ (pointForSend+actionPointForSend)); + + if ((pointForSend) < markers.length) { + var geometry = markers[pointForSend].getSource().getFeatures()[0].getGeometry(); + var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); + if (isOptions == false) { + if (markers[pointForSend].action == '5' || markers[pointForSend].action == '2' || markers[pointForSend].action == '8' ) { + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; + MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); + MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); + MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; + MISSION_PLANER.bufferPoint.p1 = 0; + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + } + else { + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; + MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); + MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); + MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; + MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; + MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].parameter2; + MISSION_PLANER.bufferPoint.p3 = markers[pointForSend].parameter3; + } + if (markers[pointForSend].options.key != "None") { + isOptions = true + } + else { + isOptions = false + pointForSend++; + } + oldMarkers = markers[pointForSend] + MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, sendNextPoint); + } + else if (isOptions == true) { + if ((pointForSend) < markers.length) { + if (oldMarkers.options.key == "JUMP") { + actionPointForSend++; + nonMarkerPoint.push(pointForSend); + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = 0; + MISSION_PLANER.bufferPoint.p1 = Number(oldMarkers.options.targetWP)+getNumberOfNonMarkerForJump(nonMarkerPoint, Number(oldMarkers.options.targetWP)-2); + MISSION_PLANER.bufferPoint.p2 = Number(oldMarkers.options.numRepeat); + MISSION_PLANER.bufferPoint.p3 = 0; + } + else if (oldMarkers.options.key == "SET_HEAD") { + actionPointForSend++; + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = 0; + MISSION_PLANER.bufferPoint.p1 = Number(oldMarkers.options.heading); + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + nonMarkerPoint.push(pointForSend); + } + else if (oldMarkers.options.key == "RTH") { + actionPointForSend++; + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = Number(oldMarkers.alt); + MISSION_PLANER.bufferPoint.p1 = (Number(oldMarkers.options.landAfter)) ? 1: 0; + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + nonMarkerPoint.push(pointForSend); + } + isOptions = false; + pointForSend++; + MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, sendNextPoint); + } + } + } + else { /*if (isRTH) { MISSION_PLANER.bufferPoint.number = pointForSend + 1; MISSION_PLANER.bufferPoint.action = 4; @@ -1441,86 +1572,12 @@ TABS.mission_control.initialize = function (callback) { } else { endSendPoint(); }*/ + MISSION_PLANER.bufferPoint.endMission = 0xA5; + console.log("EndSendPoint"); endSendPoint(); return; } - - var geometry = markers[pointForSend].getSource().getFeatures()[0].getGeometry(); - var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); - - - if (markers[pointForSend].action == '5' || markers[pointForSend].action == '2' || markers[pointForSend].action == '8' ) { - MISSION_PLANER.bufferPoint.number = pointForSend + 1; - MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; - MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); - MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); - MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; - MISSION_PLANER.bufferPoint.p1 = 0; - MISSION_PLANER.bufferPoint.p2 = 0; - MISSION_PLANER.bufferPoint.p3 = 0; - pointForSend++; - } - else { - MISSION_PLANER.bufferPoint.number = pointForSend + 1; - MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; - MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); - MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); - MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; - MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; - MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].parameter2; - MISSION_PLANER.bufferPoint.p3 = markers[pointForSend].parameter3; - pointForSend++; - } - if (markers[pointForSend].options.key == "JUMP") { - nonMarkerPoint.push(pointForSend); - MISSION_PLANER.bufferPoint.number = pointForSend + 1; - MISSION_PLANER.bufferPoint.action = MWNP.WPTYPE[markers[pointForSend].options.key]; - MISSION_PLANER.bufferPoint.lon = 0; - MISSION_PLANER.bufferPoint.lat = 0; - MISSION_PLANER.bufferPoint.alt = 0; - MISSION_PLANER.bufferPoint.p1 = Number(markers[pointForSend].options.targetWP)+getNumberOfNonMarkerForJump(nonMarkerPoint, Number(markers[pointForSend].options.targetWP)-1); - MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].options.numRepeat; - MISSION_PLANER.bufferPoint.p3 = 0; - pointForSend++; - } - else if (markers[pointForSend].options.key == "SET_HEAD") { - MISSION_PLANER.bufferPoint.number = pointForSend + 1; - MISSION_PLANER.bufferPoint.action = MWNP.WPTYPE[markers[pointForSend].options.key]; - MISSION_PLANER.bufferPoint.lon = 0; - MISSION_PLANER.bufferPoint.lat = 0; - MISSION_PLANER.bufferPoint.alt = 0; - MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].options.heading; - MISSION_PLANER.bufferPoint.p2 = 0; - MISSION_PLANER.bufferPoint.p3 = 0; - pointForSend++; - nonMarkerPoint.push(pointForSend); - } - else if (markers[pointForSend].options.key == "RTH") { - MISSION_PLANER.bufferPoint.number = pointForSend + 1; - MISSION_PLANER.bufferPoint.action = MWNP.WPTYPE[markers[pointForSend].options.key]; - MISSION_PLANER.bufferPoint.lon = 0; - MISSION_PLANER.bufferPoint.lat = 0; - MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; - MISSION_PLANER.bufferPoint.p1 = (markers[pointForSend].options.landAfter) ? 1: 0; - MISSION_PLANER.bufferPoint.p2 = 0; - MISSION_PLANER.bufferPoint.p3 = 0; - pointForSend++; - nonMarkerPoint.push(pointForSend); - }; - -/* if (pointForSend >= markers.length && !isRTH) { - MISSION_PLANER.bufferPoint.endMission = 0xA5; - } else { - MISSION_PLANER.bufferPoint.endMission = 0; - } */ - if (pointForSend >= markers.length && !isRTH) { - MISSION_PLANER.bufferPoint.endMission = 0xA5; - } else { - MISSION_PLANER.bufferPoint.endMission = 0; - } - - MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, sendNextPoint); } function endSendPoint() { From 9745aee7180c0a579a48f961f1047c51beee199b Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Tue, 16 Feb 2021 23:59:49 +0100 Subject: [PATCH 14/58] Update mission_control.js Correction made for Jump management on save/LoadMissionFile and save/load to FC Remain an error on Epom --- tabs/mission_control.js | 90 +++++++++++++++++++++++++++++++++-------- 1 file changed, 73 insertions(+), 17 deletions(-) diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 7b7f76ed..ffcec775 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -327,6 +327,7 @@ TABS.mission_control.initialize = function (callback) { var map; var selectedMarker = null; var nonMarkerPoint = []; + var nonMarkerPointListRead = []; var isOptions = false; var oldMarkers = null; var pointFromBuffer = {}; @@ -1025,7 +1026,8 @@ TABS.mission_control.initialize = function (callback) { pointForSend = 0; actionPointForSend = 0; - var nonMarkerPoint = []; + nonMarkerPoint = []; + nonMarkerPointListRead = []; var isOptions = false; var oldMarkers = null; getNextPoint(); @@ -1037,7 +1039,8 @@ TABS.mission_control.initialize = function (callback) { pointForSend = 0; actionPointForSend = 0; - var nonMarkerPoint = []; + nonMarkerPoint = []; + nonMarkerPointListRead = []; var isOptions = false; var oldMarkers = null; sendNextPoint(); @@ -1210,6 +1213,11 @@ TABS.mission_control.initialize = function (callback) { // draw actual mission removeAllPoints(); + var nonMarkerPointListRead =[] + for (var i = 0; i < mission.points.length; i++) { + if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(mission.points[i].action)) {nonMarkerPointListRead.push(mission.points[i].index);}; + } + console.log("nonMarkerPointListRead : ",nonMarkerPointListRead); // Updated code to take into account WP options (JUMP, SET_HEAD, RTH) for (var i = 0; i < mission.points.length; i++) { if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(mission.points[i].action)) { @@ -1222,7 +1230,7 @@ TABS.mission_control.initialize = function (callback) { } else if (mission.points[i+1].action == MWNP.WPTYPE.JUMP) { var options = {key: 'JUMP', - targetWP: mission.points[i+1].p1, + targetWP: getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, mission.points[i+1].p1), numRepeat: mission.points[i+1].p2 }; } @@ -1283,7 +1291,6 @@ TABS.mission_control.initialize = function (callback) { for (var i = 0; i < markers.length; i++) { var geometry = markers[i].getSource().getFeatures()[0].getGeometry(); var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); - console.log("markers[i].parameter1 : ", markers[i].parameter1); if (markers[i].action == '5' || markers[i].action == '2' || markers[i].action == '8' ) { var point = { $: { 'no': (j), @@ -1313,14 +1320,16 @@ TABS.mission_control.initialize = function (callback) { j++; } if (markers[i].options.key == "JUMP") { - nonMarkerPoint.push(i); + nonMarkerPoint.push(j); +/* console.log("nonMarkerPoint : ", nonMarkerPoint); + console.log("getNumberOfNonMarkerForJump : ",getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(markers[i].options.targetWP))); */ point = { $: { 'no': (j), 'action': 'JUMP', 'lon': 0, 'lat': 0, 'alt': 0, - 'parameter1': String(Number(markers[i].options.targetWP)+getNumberOfNonMarkerForJump(nonMarkerPoint, Number(markers[i].options.targetWP)-1)), + 'parameter1': String(getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(markers[i].options.targetWP))), 'parameter2': markers[i].options.numRepeat, 'parameter3': 0 } }; @@ -1339,10 +1348,11 @@ TABS.mission_control.initialize = function (callback) { 'parameter3': 0 } }; data.missionitem.push(point); - nonMarkerPoint.push(i); + nonMarkerPoint.push(j); j++; } else if (markers[i].options.key == "RTH") { + actionPointForSend++; point = { $: { 'no': (j), 'action': 'RTH', @@ -1354,7 +1364,7 @@ TABS.mission_control.initialize = function (callback) { 'parameter3': 0 } }; data.missionitem.push(point); - nonMarkerPoint.push(i); + nonMarkerPoint.push(j); j++; }; } @@ -1385,11 +1395,45 @@ TABS.mission_control.initialize = function (callback) { } } } + + // New function to get number of Non Marker point such as JUMP, SET_HEAD and RTH + function getNumberOfNonMarkerForJump2(nonMarkerPointList, numTargetMarker) { + for (i = 1; i < nonMarkerPointList.length; i++) { + console.log("i : ", i); + console.log("nonMarkerPointList[i-1] : ",nonMarkerPointList[i-1]); + console.log("numTargetMarker : ", numTargetMarker); + if (numTargetMarker>=nonMarkerPointList[i-1]) { + numTargetMarker++ + } + else { + return numTargetMarker; + } + } + } + + // New function to get number of Non Marker point such as JUMP, SET_HEAD and RTH + function getNumberOfNonMarkerForJumpReversed(nonMarkerPointList, numTargetMarker) { + var numTargetMarkerOut = 0; + for (i = 1; i < nonMarkerPointList.length; i++) { + // console.log("i : ", i); + // console.log("nonMarkerPointList[i] : ",nonMarkerPointList[i-1]); + // console.log("numTargetMarker : ", numTargetMarker); + // console.log("numTargetMarkerOut : ", numTargetMarkerOut); + // console.log(numTargetMarker>=nonMarkerPointList[i-1]); + if (numTargetMarker>=nonMarkerPointList[i-1]) { + numTargetMarkerOut++ + } + else { + return numTargetMarker-numTargetMarkerOut; + } + } + } function getPointsFromEprom() { pointForSend = 0; actionPointForSend = 0; nonMarkerPoint = []; + nonMarkerPointListRead = []; isOptions = false; oldMarkers = null; pointFromBuffer = {}; @@ -1408,9 +1452,10 @@ TABS.mission_control.initialize = function (callback) { endGetPoint(); return; } +/* console.log(MISSION_PLANER.bufferPoint); console.log("countBusyPoints : "+MISSION_PLANER.countBusyPoints); console.log("POINT : "+pointForSend); - console.log("Mission : "+MISSION_PLANER.bufferPoint.number); + console.log("Mission : "+MISSION_PLANER.bufferPoint.number); */ if (pointForSend > 0) { pointFromBuffer[MISSION_PLANER.bufferPoint.number] = { @@ -1423,12 +1468,15 @@ TABS.mission_control.initialize = function (callback) { p2 : MISSION_PLANER.bufferPoint.p2, p3 : MISSION_PLANER.bufferPoint.p3 }; + if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(MISSION_PLANER.bufferPoint.action)) {nonMarkerPointListRead.push(MISSION_PLANER.bufferPoint.number);}; } - console.log(pointFromBuffer); +/* console.log(pointFromBuffer); + console.log(nonMarkerPointListRead); */ if (pointForSend >= MISSION_PLANER.countBusyPoints) { Object.keys(pointFromBuffer).forEach(function(key) { - console.log(pointFromBuffer[key]); - console.log("Key : "+key); + // console.log(pointFromBuffer[key]); + // console.log("Key : "+key); + if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(pointFromBuffer[key].action)) { if ((Number(key)+1) <= MISSION_PLANER.countBusyPoints) { var coord = ol.proj.fromLonLat([pointFromBuffer[key].lon, pointFromBuffer[key].lat]); @@ -1438,8 +1486,9 @@ TABS.mission_control.initialize = function (callback) { }; } else if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.JUMP) { + /* console.log("getNumberOfNonMarkerForJumpReversed : ",getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, pointFromBuffer[Number(key)+1].p1)); */ var options = {key: 'JUMP', - targetWP: pointFromBuffer[Number(key)+1].p1, + targetWP: getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, pointFromBuffer[Number(key)+1].p1), numRepeat: pointFromBuffer[Number(key)+1].p2 }; } @@ -1519,18 +1568,24 @@ TABS.mission_control.initialize = function (callback) { if ((pointForSend) < markers.length) { if (oldMarkers.options.key == "JUMP") { actionPointForSend++; - nonMarkerPoint.push(pointForSend); + nonMarkerPoint.push(pointForSend + actionPointForSend+1); + console.log("nonMarkerPoint : ", nonMarkerPoint); + console.log("getNumberOfNonMarkerForJump : ",getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(oldMarkers.options.targetWP))); + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); MISSION_PLANER.bufferPoint.lon = 0; MISSION_PLANER.bufferPoint.lat = 0; MISSION_PLANER.bufferPoint.alt = 0; - MISSION_PLANER.bufferPoint.p1 = Number(oldMarkers.options.targetWP)+getNumberOfNonMarkerForJump(nonMarkerPoint, Number(oldMarkers.options.targetWP)-2); + MISSION_PLANER.bufferPoint.p1 = getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(oldMarkers.options.targetWP)); MISSION_PLANER.bufferPoint.p2 = Number(oldMarkers.options.numRepeat); MISSION_PLANER.bufferPoint.p3 = 0; } else if (oldMarkers.options.key == "SET_HEAD") { actionPointForSend++; + nonMarkerPoint.push(pointForSend + actionPointForSend+1); + console.log("nonMarkerPoint : ", nonMarkerPoint); + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); MISSION_PLANER.bufferPoint.lon = 0; @@ -1539,10 +1594,12 @@ TABS.mission_control.initialize = function (callback) { MISSION_PLANER.bufferPoint.p1 = Number(oldMarkers.options.heading); MISSION_PLANER.bufferPoint.p2 = 0; MISSION_PLANER.bufferPoint.p3 = 0; - nonMarkerPoint.push(pointForSend); } else if (oldMarkers.options.key == "RTH") { actionPointForSend++; + nonMarkerPoint.push(pointForSend + actionPointForSend+1); + console.log("nonMarkerPoint : ", nonMarkerPoint); + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); MISSION_PLANER.bufferPoint.lon = 0; @@ -1551,7 +1608,6 @@ TABS.mission_control.initialize = function (callback) { MISSION_PLANER.bufferPoint.p1 = (Number(oldMarkers.options.landAfter)) ? 1: 0; MISSION_PLANER.bufferPoint.p2 = 0; MISSION_PLANER.bufferPoint.p3 = 0; - nonMarkerPoint.push(pointForSend); } isOptions = false; pointForSend++; From d3a48e0f560210c422131cfcf96e305d5309b066 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Mon, 22 Feb 2021 14:10:52 +0100 Subject: [PATCH 15/58] Code Review Correction on indentation + Mission validation --- _locales/en/messages.json | 6 +- images/icons/cf_icon_MP_save2file.svg | 219 +++++ images/icons/save2file.png | Bin 0 -> 604 bytes js/fc.js | 4 +- js/msp/MSPHelper.js | 24 +- src/css/tabs/mission_planer.css | 11 +- tabs/mission_control.html | 21 +- tabs/mission_control.js | 1235 ++++++++++++------------- 8 files changed, 824 insertions(+), 696 deletions(-) create mode 100644 images/icons/cf_icon_MP_save2file.svg create mode 100644 images/icons/save2file.png diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 6ad9b5c1..d0014f77 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3124,7 +3124,7 @@ "missionDefaultSettingsHead": { "message": "Default settings" }, - "missionTemplateHead": { + "missionTemplateHead": { "message": "Mission template" }, "useOnlyStandalone": { @@ -3589,10 +3589,10 @@ "configurationCurrentMeterType": { "message": "Current Meter Type" }, - "MissionPlannerJumpSettingsCheck": { + "MissionPlannerJumpSettingsCheck": { "message": "JUMP settings incorrect : Check it again !" }, - "MissionPlannerHeadSettingsCheck": { + "MissionPlannerHeadSettingsCheck": { "message": "Heading value is incorrect : Check it again !" } } diff --git a/images/icons/cf_icon_MP_save2file.svg b/images/icons/cf_icon_MP_save2file.svg new file mode 100644 index 00000000..48f1bdd2 --- /dev/null +++ b/images/icons/cf_icon_MP_save2file.svg @@ -0,0 +1,219 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/icons/save2file.png b/images/icons/save2file.png new file mode 100644 index 0000000000000000000000000000000000000000..4254df4a645f29bb50850148e3b758483579cdfc GIT binary patch literal 604 zcmV-i0;BzjP)500009a7bBm000YN z000YN0b6-1rT_o{8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10qIFZ zK~z|U?U*sk+CUh9pG2*aDd6BJNZh&!8Fb9lsk4)td#RIxIJp(XO_y(Rmx7Q#pg|BE zN(&-_4(<^m*v}zvhidssks2e-SMY&@aNNE3T>AtE&q`6eRIBI5sp@_ZVv zCL##{MMUDjXW$*tVFT|K5%~aoicsXtM@2-w0B@r<0lq3C@*Q{+wFz)kM8uEU;*1)# zz)K!7mxy1}s9vwLTCHv##4rrn?e^arUb9=8rs)GW7t=Ja+Lf=$%u94#XEYiq$z<}k z`f|C~!lo~zX=xm->>&kGbIbY@)FWj33!-EPB% z3MVs}Ot5VmRaKczr`Wa~N+#4al}aT_r4j&zLV;ed7fR+X3wW_u;CUX2L?Tq2yDZ@0 zaL9VSrdF$kigTCDq*5um-7bT{faP)-t;~Err_<@6>pJoH?a2<@bGO^!I1cBt$@hKo z`8<|op{gpb>*6>LuImQ3`R`6`%d*I3v%%l=gkcz0wR`-KU*aKi2^Ba-Epg(g0=I9O q_hqR9Pf=T(czRX$Gr;S)x%vSt?n8<4KS>1u0000
-
Total information
@@ -51,20 +44,10 @@

-
Load mission from FC diff --git a/tabs/mission_control.js b/tabs/mission_control.js index ffcec775..92cb25ba 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -29,14 +29,14 @@ MWNP.WPTYPE.REV = { // Dictionary of Parameter1,2,3 definition depending on type of action selected (refer to MWNP.WPTYPE) var dictOfLabelParameterPoint = { - 1: {parameter1: 'Speed (cm/s)', parameter2: '', parameter3: ''}, - 2: {parameter1: '', parameter2: '', parameter3: ''}, - 3: {parameter1: 'Wait time (s)', parameter2: 'Speed (cm/s)', parameter3: ''}, - 4: {parameter1: 'Force land (non zero)', parameter2: '', parameter3: ''}, - 5: {parameter1: '', parameter2: '', parameter3: ''}, - 6: {parameter1: 'Target WP number', parameter2: 'Number of repeat (-1: infinite)', parameter3: ''}, - 7: {parameter1: 'Heading (deg)', parameter2: '', parameter3: ''}, - 8: {parameter1: '', parameter2: '', parameter3: ''} + 1: {parameter1: 'Speed (cm/s)', parameter2: '', parameter3: ''}, + 2: {parameter1: '', parameter2: '', parameter3: ''}, + 3: {parameter1: 'Wait time (s)', parameter2: 'Speed (cm/s)', parameter3: ''}, + 4: {parameter1: 'Force land (non zero)', parameter2: '', parameter3: ''}, + 5: {parameter1: '', parameter2: '', parameter3: ''}, + 6: {parameter1: 'Target WP number', parameter2: 'Number of repeat (-1: infinite)', parameter3: ''}, + 7: {parameter1: 'Heading (deg)', parameter2: '', parameter3: ''}, + 8: {parameter1: '', parameter2: '', parameter3: ''} }; TABS.mission_control = {}; @@ -76,13 +76,6 @@ TABS.mission_control.initialize = function (callback) { loadHtml(); } - function updateTotalInfo() { - if (CONFIGURATOR.connectionValid) { - $('#availablePoints').text(MISSION_PLANER.countBusyPoints + '/' + MISSION_PLANER.maxWaypoints); - $('#missionValid').html(MISSION_PLANER.isValidMission ? chrome.i18n.getMessage('armingCheckPass') : chrome.i18n.getMessage('armingCheckFail')); - } - } - function loadHtml() { GUI.load("./tabs/mission_control.html", process_html); } @@ -119,7 +112,7 @@ TABS.mission_control.initialize = function (callback) { } function get_altitude_data() { - MSP.send_message(MSPCodes.MSP_ALTITUDE, false, false, get_attitude_data); + MSP.send_message(MSPCodes.MSP_ALTITUDE, false, false, get_attitude_data); } @@ -326,32 +319,38 @@ TABS.mission_control.initialize = function (callback) { var lines = []; var map; var selectedMarker = null; - var nonMarkerPoint = []; - var nonMarkerPointListRead = []; - var isOptions = false; - var oldMarkers = null; - var pointFromBuffer = {}; + var nonMarkerPoint = []; + var nonMarkerPointListRead = []; + var isOptions = false; + var oldMarkers = null; + var pointFromBuffer = {}; var pointForSend = 0; - var actionPointForSend = 0; + var actionPointForSend = 0; var settings = { speed: 0, alt: 5000}; - - // Function to clear/reinit Jquery variable + + ///////////////////////////////////////////// + // Reinit Form + ///////////////////////////////////////////// + // Function to clear/reinit Jquery variable function clearEditForm() { $('#pointLat').val(''); $('#pointLon').val(''); $('#pointAlt').val(''); $('#pointP1').val(''); - $('#pointP2').val(''); - $('#pointP3').val(''); - $('[name=Options]').filter('[value=None]').prop('checked', true); - $('#Options_LandRTH').prop('checked', false); - $('#Options_TargetJUMP').val(0); - $('#Options_NumberJUMP').val(0); - $('#Options_HeadingHead').val(-1); + $('#pointP2').val(''); + $('#pointP3').val(''); + $('[name=Options]').filter('[value=None]').prop('checked', true); + $('#Options_LandRTH').prop('checked', false); + $('#Options_TargetJUMP').val(0); + $('#Options_NumberJUMP').val(0); + $('#Options_HeadingHead').val(-1); $('[name=pointNumber]').val(''); $('#MPeditPoint').fadeOut(300); } - + + ///////////////////////////////////////////// + // Manage Settings + ///////////////////////////////////////////// function loadSettings() { chrome.storage.local.get('missionPlanerSettings', function (result) { if (result.missionPlanerSettings) { @@ -369,76 +368,85 @@ TABS.mission_control.initialize = function (callback) { $('#MPdefaultPointAlt').val(settings.alt); $('#MPdefaultPointSpeed').val(settings.speed); } - - // Function to repaint lines between markers + + function closeSettingsPanel() { + $('#missionPlanerSettings').hide(); + $('#missionPlanerTotalInfo').fadeIn(300); + if (selectedMarker !== null) { + $('#MPeditPoint').fadeIn(300); + } + } + + ///////////////////////////////////////////// + // Manage Plotting functions + ///////////////////////////////////////////// + // Function to repaint lines between markers function repaint() { var oldPos; - var oldAction; - var poiNumber; - var poiList; - var lengthPoiList; - var activatePoi = false; - var activateHead = false; - var oldHeading; - var xmlItemNumber = 0; - + var oldAction; + var poiNumber; + var poiList; + var lengthPoiList; + var activatePoi = false; + var activateHead = false; + var oldHeading; + var xmlItemNumber = 0; + for (var i in lines) { map.removeLayer(lines[i]); } lines = []; - poiList = []; + poiList = []; $('#missionDistance').text(0); map.getLayers().forEach(function (t) { if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined') { var geometry = t.getSource().getFeatures()[0].getGeometry(); - var action = t.action; - var markerNumber = t.number; - var options = t.options; - if (action == 5) { - // If action is Set_POI, increment counter of POI - poiNumber = markerNumber; - lengthPoiList = poiList.push(poiNumber); - activatePoi = true; - } - else { - // If classic WPs, draw standard line in-between - if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead != true){ - paintLine(oldPos, geometry.getCoordinates()); - } - // If one is POI, draw orange line in-between and modulate dashline each time a new POI is defined - else if (typeof oldPos !== 'undefined' && activatePoi == true && activateHead != true) { - if ((lengthPoiList % 2) == 0) { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); - } - else { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); - } - } - // If one is SET_HEAD, draw labelled line in-between with heading value - else if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead == true) { - console.log(oldHeading); - paintLine(oldPos, geometry.getCoordinates(), '#1497f1', 0, lineText=String(oldHeading)+"°"); - } - - // If classic WPs is defined with a JUMP options, draw pink dashed line in-between - if (options.key == "JUMP") { - paintLine(geometry.getCoordinates(), markers[options.targetWP-1].getSource().getFeatures()[0].getGeometry().getCoordinates(), '#e935d6', 5, "Repeat x"+String(options.numRepeat)); - } - // If classic WPs is defined with a heading = -1, change Boolean for POI to false. If it is defined with a value different from -1, activate Heading boolean - else if (options.key == "SET_HEAD") { - if (options.heading == "-1") { - activatePoi = false; - activateHead = false; - oldHeading = 'undefined' - } - else if (typeof options.heading != 'undefined' && options.heading != "-1") { - activateHead = true; - oldHeading = options.heading - } - } - oldPos = geometry.getCoordinates(); - } + var action = t.action; + var markerNumber = t.number; + var options = t.options; + if (action == 5) { + // If action is Set_POI, increment counter of POI + poiNumber = markerNumber; + lengthPoiList = poiList.push(poiNumber); + activatePoi = true; + } + else { + // If classic WPs, draw standard line in-between + if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead != true){ + paintLine(oldPos, geometry.getCoordinates()); + } + // If one is POI, draw orange line in-between and modulate dashline each time a new POI is defined + else if (typeof oldPos !== 'undefined' && activatePoi == true && activateHead != true) { + if ((lengthPoiList % 2) == 0) { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); + } + else { + paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); + } + } + // If one is SET_HEAD, draw labelled line in-between with heading value + else if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead == true) { + paintLine(oldPos, geometry.getCoordinates(), '#1497f1', 0, lineText=String(oldHeading)+"°"); + } + // If classic WPs is defined with a JUMP options, draw pink dashed line in-between + if (options.key == "JUMP") { + paintLine(geometry.getCoordinates(), markers[options.targetWP-1].getSource().getFeatures()[0].getGeometry().getCoordinates(), '#e935d6', 5, "Repeat x"+String(options.numRepeat)); + } + // If classic WPs is defined with a heading = -1, change Boolean for POI to false. If it is defined with a value different from -1, activate Heading boolean + else if (options.key == "SET_HEAD") { + if (options.heading == "-1") { + activatePoi = false; + activateHead = false; + oldHeading = 'undefined' + } + else if (typeof options.heading != 'undefined' && options.heading != "-1") { + activateHead = true; + oldHeading = options.heading + } + } + oldPos = geometry.getCoordinates(); + } } }); //reset text position @@ -446,8 +454,8 @@ TABS.mission_control.initialize = function (callback) { textGeom.setCoordinates(map.getCoordinateFromPixel([0,0])); } } - - // function modified to tale into account optional arguement such color, linedash and line label + + // function modified to take into account optional argument such color, linedash and line label function paintLine(pos1, pos2, color='#1497f1', lineDash=0, lineText="") { var line = new ol.geom.LineString([pos1, pos2]); @@ -458,15 +466,15 @@ TABS.mission_control.initialize = function (callback) { stroke: new ol.style.Stroke({ color: color, width: 3, - lineDash: [lineDash] + lineDash: [lineDash] }), - text: new ol.style.Text({ + text: new ol.style.Text({ text: lineText, - placement : 'line', - textBaseline: 'ideographic', - stroke: new ol.style.Stroke({ - color: color - }), + placement : 'line', + textBaseline: 'ideographic', + stroke: new ol.style.Stroke({ + color: color + }), }), })); @@ -485,43 +493,43 @@ TABS.mission_control.initialize = function (callback) { map.addLayer(vectorLayer); } - - // Function modified to add action name and marker numbering to help changing icon depending on those items + + // Function modified to add action name and marker numbering to help changing icon depending on those items function getPointIcon(_action, isEdit, markerNumber='') { - var dictofPoint = { - 1: 'WP', - 2: 'PH', - 3: 'PH', - //4: '', - 5: 'POI', - //6: '', - //7: 'head', - 8: 'LDG' - }; - + var dictofPoint = { + 1: 'WP', + 2: 'PH', + 3: 'PH', + //4: '', + 5: 'POI', + //6: '', + //7: 'head', + 8: 'LDG' + }; + return new ol.style.Style({ - image: new ol.style.Icon(({ + image: new ol.style.Icon(({ anchor: [0.5, 1], opacity: 1, scale: 0.5, src: '../images/icons/cf_icon_position' + (dictofPoint[_action] != '' ? '_'+dictofPoint[_action] : '') + (isEdit ? '_edit' : '')+ '.png' })), - text: new ol.style.Text(({ + text: new ol.style.Text(({ text: String(Number(markerNumber)+1), - font: '12px sans-serif', - offsetY: -15, - offsetX: -2, - fill: new ol.style.Fill({ - color: '#FFFFFF' - }), - stroke: new ol.style.Stroke({ - color: '#FFFFFF' - }), + font: '12px sans-serif', + offsetY: -15, + offsetX: -2, + fill: new ol.style.Fill({ + color: '#FFFFFF' + }), + stroke: new ol.style.Stroke({ + color: '#FFFFFF' + }), })) }); } - // Function modified by adding parameter 1,2,3 needed in MSP, plus options dictionary to take into account WP behavior changer such as JUMP, SET_HEAD, RTH + // Function modified by adding parameter 1,2,3 needed in MSP, plus options dictionary to take into account WP behavior changer such as JUMP, SET_HEAD, RTH function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0, _options={key: "None"}) { var iconFeature = new ol.Feature({ geometry: new ol.geom.Point(_pos), @@ -544,15 +552,18 @@ TABS.mission_control.initialize = function (callback) { vectorLayer.number = markers.length; vectorLayer.action = _action; vectorLayer.parameter1 = _parameter1; - vectorLayer.parameter2 = _parameter2; - vectorLayer.parameter3 = _parameter3; - vectorLayer.options = _options; + vectorLayer.parameter2 = _parameter2; + vectorLayer.parameter3 = _parameter3; + vectorLayer.options = _options; markers.push(vectorLayer); return vectorLayer; } - + + ///////////////////////////////////////////// + // Manage Map construction + ///////////////////////////////////////////// function initMap() { var app = {}; @@ -632,42 +643,7 @@ TABS.mission_control.initialize = function (callback) { }; ol.inherits(app.PlannerSettingsControl, ol.control.Control); - - - /** - * @constructor - * @extends {ol.control.Control} - * @param {Object=} opt_options Control options. - */ - /*app.PlannerTemplateControl = function (opt_options) { - var options = opt_options || {}; - var button = document.createElement('button'); - - button.innerHTML = ' '; - button.style = 'background: url(\'../images/CF_template_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; - - var handleShowTemplate = function () { - $('#MPeditPoint, #missionPlanerTotalInfo', '#missionPlanerSettings').hide(); - $('#missionPlanerTemplate').fadeIn(300); - }; - - button.addEventListener('click', handleShowTemplate, false); - button.addEventListener('touchstart', handleShowTemplate, false); - - var element = document.createElement('div'); - element.className = 'mission-control-template ol-unselectable ol-control'; - element.appendChild(button); - element.title = 'MP Template'; - - ol.control.Control.call(this, { - element: element, - target: options.target - }); - - }; - ol.inherits(app.PlannerTemplateControl, ol.control.Control); - */ - + /** * @param {ol.MapBrowserEvent} evt Map browser event. * @return {boolean} `true` to start the drag sequence. @@ -756,10 +732,10 @@ TABS.mission_control.initialize = function (callback) { maxZoom: 19 }); } else if ( globalSettings.mapProviderType == 'mapproxy' ) { - mapLayer = new ol.source.TileWMS({ - url: globalSettings.proxyURL, + mapLayer = new ol.source.TileWMS({ + url: globalSettings.proxyURL, params: {'LAYERS':globalSettings.proxyLayer} - }) + }) } else { mapLayer = new ol.source.OSM(); } @@ -771,7 +747,7 @@ TABS.mission_control.initialize = function (callback) { } }).extend([ new app.PlannerSettingsControl(), - //new app.PlannerTemplateControl() + //new app.PlannerTemplateControl() ]), interactions: ol.interaction.defaults().extend([new app.Drag()]), layers: [ @@ -827,63 +803,58 @@ TABS.mission_control.initialize = function (callback) { function (feature, layer) { return layer; }); - - - if (selectedFeature) - { - for (var i in markers) - { - if (markers[i] == tempMarker) - { - selectedMarker = tempMarker; + + + if (selectedFeature) { + for (var i in markers) { + if (markers[i] == tempMarker) { + selectedMarker = tempMarker; - var geometry = selectedFeature.getGeometry(); - var coord = ol.proj.toLonLat(geometry.getCoordinates()); + var geometry = selectedFeature.getGeometry(); + var coord = ol.proj.toLonLat(geometry.getCoordinates()); - selectedFeature.setStyle(getPointIcon(selectedMarker.action, true, selectedMarker.number)); + selectedFeature.setStyle(getPointIcon(selectedMarker.action, true, selectedMarker.number)); - var altitudeMeters = app.ConvertCentimetersToMeters(selectedMarker.alt); - - $('#altitudeInMeters').text(` ${altitudeMeters}m`); - $('#pointLon').val(Math.round(coord[0] * 10000000) / 10000000); - $('#pointLat').val(Math.round(coord[1] * 10000000) / 10000000); - $('#pointAlt').val(selectedMarker.alt); - $('#pointType').val(selectedMarker.action); - // Change SpeedValue to Parameter1, 2, 3 - $('#pointP1').val(selectedMarker.parameter1); - $('#pointP2').val(selectedMarker.parameter2); - $('#pointP3').val(selectedMarker.parameter3); - $('[name=Options]').filter('[value='+selectedMarker.options['key']+']').prop('checked', true); - // Manage RTH, JUMP, SET_HEAD options for WP - if (selectedMarker.options.key == "RTH") { - console.log(selectedMarker.options.landAfter); - $('#Options_LandRTH').prop('checked', selectedMarker.options.landAfter); - } - else if (selectedMarker.options.key == "JUMP") { - $('#Options_TargetJUMP').val(selectedMarker.options.targetWP); - $('#Options_NumberJUMP').val(selectedMarker.options.numRepeat); - } - else if (selectedMarker.options.key == "SET_HEAD") { - $('#Options_HeadingHead').val(selectedMarker.options.heading); - } - // Selection box update depending on choice of type of waypoint - for (var j in dictOfLabelParameterPoint[selectedMarker.action]) - { - if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') - { - $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); - $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); - } - else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} - } - if ([1,2,3,8].includes(selectedMarker.action) || ['1','2','3','8'].includes(selectedMarker.action)) { - $('#pointOptionclass').fadeIn(300); - } - else {$('#pointOptionclass').fadeOut(300);} - $('#MPeditPoint').fadeIn(300); + var altitudeMeters = app.ConvertCentimetersToMeters(selectedMarker.alt); + + $('#altitudeInMeters').text(` ${altitudeMeters}m`); + $('#pointLon').val(Math.round(coord[0] * 10000000) / 10000000); + $('#pointLat').val(Math.round(coord[1] * 10000000) / 10000000); + $('#pointAlt').val(selectedMarker.alt); + $('#pointType').val(selectedMarker.action); + // Change SpeedValue to Parameter1, 2, 3 + $('#pointP1').val(selectedMarker.parameter1); + $('#pointP2').val(selectedMarker.parameter2); + $('#pointP3').val(selectedMarker.parameter3); + $('[name=Options]').filter('[value='+selectedMarker.options['key']+']').prop('checked', true); + // Manage RTH, JUMP, SET_HEAD options for WP + if (selectedMarker.options.key == "RTH") { + $('#Options_LandRTH').prop('checked', selectedMarker.options.landAfter); + } + else if (selectedMarker.options.key == "JUMP") { + $('#Options_TargetJUMP').val(selectedMarker.options.targetWP); + $('#Options_NumberJUMP').val(selectedMarker.options.numRepeat); + } + else if (selectedMarker.options.key == "SET_HEAD") { + $('#Options_HeadingHead').val(selectedMarker.options.heading); + } + // Selection box update depending on choice of type of waypoint + for (var j in dictOfLabelParameterPoint[selectedMarker.action]) { + if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') { + $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); + $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); + } + else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} + } + if ([1,2,3,8].includes(selectedMarker.action) || ['1','2','3','8'].includes(selectedMarker.action)) { + $('#pointOptionclass').fadeIn(300); + } + else {$('#pointOptionclass').fadeOut(300);} + $('#MPeditPoint').fadeIn(300); } } - } else { + } + else { map.addLayer(addMarker(evt.coordinate, settings.alt, MWNP.WPTYPE.WAYPOINT, settings.speed)); repaint(); } @@ -937,8 +908,8 @@ TABS.mission_control.initialize = function (callback) { repaint(); } }); - - // SavePoint function updated to take into account P1 to P3 parameter and JUMP,RTH, SET_HEAD options for WP + + // SavePoint function updated to take into account P1 to P3 parameter and JUMP,RTH, SET_HEAD options for WP $('#savePoint').on('click', function () { if (selectedMarker) { map.getLayers().forEach(function (t) { @@ -947,54 +918,59 @@ TABS.mission_control.initialize = function (callback) { geometry.setCoordinates(ol.proj.fromLonLat([parseFloat($('#pointLon').val()), parseFloat($('#pointLat').val())])); t.alt = $('#pointAlt').val(); t.action = $('#pointType').val(); - console.log(typeof t.action); - if (t.action == '5' || t.action == '2' || t.action == '8') { - t.parameter1 = 0; - t.parameter2 = 0; - t.parameter3 = 0; - } - else { - console.log("$('#pointP1').val() : ",$('#pointP1').val()); - t.parameter1 = $('#pointP1').val(); - t.parameter2 = $('#pointP2').val(); - t.parameter3 = $('#pointP3').val(); - } - if ($('input[name=Options]:checked').val() == "RTH") { - t.options = {key: $('input[name=Options]:checked').val(), - landAfter: $('#Options_LandRTH').prop('checked') - }; - } - else if ($('input[name=Options]:checked').val() == "JUMP") { - if (!Array.from({length: markers.length}, (v, i) => i+1).includes(Number($('#Options_TargetJUMP').val())) || (Number($('#Options_NumberJUMP').val())<0 || Number($('#Options_NumberJUMP').val())>99)) { - alert(chrome.i18n.getMessage('MissionPlannerJumpSettingsCheck')) - t.options = {key: 'None'} - } - else { - t.options = {key: $('input[name=Options]:checked').val(), - targetWP: $('#Options_TargetJUMP').val(), - numRepeat: $('#Options_NumberJUMP').val() - }; - } - } - else if ($('input[name=Options]:checked').val() == "SET_HEAD") { - if ($('#Options_HeadingHead').val()>360 || ($('#Options_HeadingHead').val()<0 && $('#Options_HeadingHead').val() !=-1)) { - alert(chrome.i18n.getMessage('MissionPlannerHeadSettingsCheck')) - t.options = {key: 'None'} - } - else { - t.options = {key: $('input[name=Options]:checked').val(), - heading: $('#Options_HeadingHead').val() - }; - } - } - else { - t.options = {key: $('input[name=Options]:checked').val()} - } + // if action is Set_POI, PH_UNLIM, LAND, set parameter_i to 0 + if (t.action == '5' || t.action == '2' || t.action == '8') { + t.parameter1 = 0; + t.parameter2 = 0; + t.parameter3 = 0; + } + // else for other kind of waypoints, set parameter_i to pointP_i value + else { + console.log("$('#pointP1').val() : ",$('#pointP1').val()); + t.parameter1 = $('#pointP1').val(); + t.parameter2 = $('#pointP2').val(); + t.parameter3 = $('#pointP3').val(); + } + // Manage Options + // if RTH options selected, store GUI value in t.options + if ($('input[name=Options]:checked').val() == "RTH") { + t.options = {key: $('input[name=Options]:checked').val(), + landAfter: $('#Options_LandRTH').prop('checked') + }; + } + // if JUMP options selected, store GUI value in t.options + else if ($('input[name=Options]:checked').val() == "JUMP") { + // check if users input values verify the condition i an integer btw [0,99] and within length of Markers + if (!Array.from({length: markers.length}, (v, i) => i+1).includes(Number($('#Options_TargetJUMP').val())) || (Number($('#Options_NumberJUMP').val())<0 || Number($('#Options_NumberJUMP').val())>99)) { + alert(chrome.i18n.getMessage('MissionPlannerJumpSettingsCheck')) + t.options = {key: 'None'} + } + else { + t.options = {key: $('input[name=Options]:checked').val(), + targetWP: $('#Options_TargetJUMP').val(), + numRepeat: $('#Options_NumberJUMP').val() + }; + } + } + // if SET_HEAD options selected, store GUI value in t.options + else if ($('input[name=Options]:checked').val() == "SET_HEAD") { + // Check if Heading is btw [0, 360°] or = -1 + if ($('#Options_HeadingHead').val()>360 || ($('#Options_HeadingHead').val()<0 && $('#Options_HeadingHead').val() !=-1)) { + alert(chrome.i18n.getMessage('MissionPlannerHeadSettingsCheck')) + t.options = {key: 'None'} + } + else { + t.options = {key: $('input[name=Options]:checked').val(), + heading: $('#Options_HeadingHead').val() + }; + } + } + else { + t.options = {key: $('input[name=Options]:checked').val()} + } } }); - selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action, false, selectedMarker.number)); - console.log("selectedMarker", selectedMarker); selectedMarker = null; clearEditForm(); repaint(); @@ -1011,7 +987,6 @@ TABS.mission_control.initialize = function (callback) { }); $('#saveFileMissionButton').on('click', function () { - //if (!markers.length) return; nwdialog.setContext(document); nwdialog.saveFileDialog('', '.mission', function(result) { saveMissionFile(result); @@ -1023,26 +998,26 @@ TABS.mission_control.initialize = function (callback) { removeAllPoints(); $(this).addClass('disabled'); GUI.log('Start get point'); - + // Reinit some internal parameters pointForSend = 0; - actionPointForSend = 0; - nonMarkerPoint = []; - nonMarkerPointListRead = []; - var isOptions = false; - var oldMarkers = null; + actionPointForSend = 0; + nonMarkerPoint = []; + nonMarkerPointListRead = []; + var isOptions = false; + var oldMarkers = null; getNextPoint(); }); $('#saveMissionButton').on('click', function () { $(this).addClass('disabled'); GUI.log('Start send point'); - + // Reinit some internal parameters pointForSend = 0; - actionPointForSend = 0; - nonMarkerPoint = []; - nonMarkerPointListRead = []; - var isOptions = false; - var oldMarkers = null; + actionPointForSend = 0; + nonMarkerPoint = []; + nonMarkerPointListRead = []; + var isOptions = false; + var oldMarkers = null; sendNextPoint(); }); @@ -1057,15 +1032,6 @@ TABS.mission_control.initialize = function (callback) { GUI.log(chrome.i18n.getMessage('eeprom_saved_ok')); MSP.send_message(MSPCodes.MSP_WP_MISSION_SAVE, [0], false); }); - - // RTH missions commented as integrated into WP options direclty - /*$('#rthEndMission').on('change', function () { - if ($(this).is(':checked')) { - $('#rthSettings').fadeIn(300); - } else { - $('#rthSettings').fadeOut(300); - } - });*/ $('#saveSettings').on('click', function () { settings = { speed: $('#MPdefaultPointSpeed').val(), alt: $('#MPdefaultPointAlt').val() }; @@ -1077,37 +1043,30 @@ TABS.mission_control.initialize = function (callback) { loadSettings(); closeSettingsPanel(); }); - - - // Add function to update parameter i field in the selected Edit WP Box - $('#pointType').on('change', function () { - selectedMarker.action = $('#pointType').val(); - for (var j in dictOfLabelParameterPoint[selectedMarker.action]) - { - if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') - { - $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); - $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); - } - else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} - } - if (["1","2","3"].includes(selectedMarker.action)) { - $('#pointOptionclass').fadeIn(300); - } - else {$('#pointOptionclass').fadeOut(300);} + + + // Add function to update parameter i field in the selected Edit WP Box + $('#pointType').on('change', function () { + selectedMarker.action = $('#pointType').val(); + for (var j in dictOfLabelParameterPoint[selectedMarker.action]) { + if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') { + $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); + $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); + } + else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} + } + if (["1","2","3"].includes(selectedMarker.action)) { + $('#pointOptionclass').fadeIn(300); + } + else {$('#pointOptionclass').fadeOut(300);} }); - updateTotalInfo(); } - function closeSettingsPanel() { - $('#missionPlanerSettings').hide(); - $('#missionPlanerTotalInfo').fadeIn(300); - if (selectedMarker !== null) { - $('#MPeditPoint').fadeIn(300); - } - } + ///////////////////////////////////////////// + // Manage Buttons toolbox + ///////////////////////////////////////////// function removeAllPoints() { for (var i in markers) { map.removeLayer(markers[i]); @@ -1115,10 +1074,6 @@ TABS.mission_control.initialize = function (callback) { markers = []; clearEditForm(); updateTotalInfo(); - // RTH section commented as RTH options is integrated into WP box - /*$('#rthEndMission').prop('checked', false); - $('#rthSettings').fadeOut(300); - $('#rthLanding').prop('checked', false);*/ repaint(); } @@ -1213,50 +1168,50 @@ TABS.mission_control.initialize = function (callback) { // draw actual mission removeAllPoints(); - var nonMarkerPointListRead =[] - for (var i = 0; i < mission.points.length; i++) { - if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(mission.points[i].action)) {nonMarkerPointListRead.push(mission.points[i].index);}; - } - console.log("nonMarkerPointListRead : ",nonMarkerPointListRead); - // Updated code to take into account WP options (JUMP, SET_HEAD, RTH) + // Create nonMarkerPointListRead list to store index of non marker point (i.e RTH, SET_HEAD, JUMP) => useful for JUMP part + var nonMarkerPointListRead =[] + for (var i = 0; i < mission.points.length; i++) { + if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(mission.points[i].action)) {nonMarkerPointListRead.push(mission.points[i].index);}; + } + // Updated code to take into account WP options (JUMP, SET_HEAD, RTH) for (var i = 0; i < mission.points.length; i++) { if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(mission.points[i].action)) { - if (i < mission.points.length-1) { - var coord = ol.proj.fromLonLat([mission.points[i].lon, mission.points[i].lat]); - if (mission.points[i+1].action == MWNP.WPTYPE.SET_HEAD) { - var options = {key: 'SET_HEAD', - heading: mission.points[i+1].p1 - }; - } - else if (mission.points[i+1].action == MWNP.WPTYPE.JUMP) { - var options = {key: 'JUMP', - targetWP: getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, mission.points[i+1].p1), - numRepeat: mission.points[i+1].p2 - }; - } - else if (mission.points[i+1].action == MWNP.WPTYPE.RTH) { - var options = {key: 'RTH', - landAfter: mission.points[i+1].p1 - }; - } - else { - var options = {key: 'None'}; - } - map.addLayer(addMarker(coord, mission.points[i].alt, mission.points[i].action, mission.points[i].p1, mission.points[i].p2, mission.points[i].p3, options)); - if (i == 0) { - map.getView().setCenter(coord); - map.getView().setZoom(16); - } - } - else { - var coord = ol.proj.fromLonLat([mission.points[i].lon, mission.points[i].lat]); - map.addLayer(addMarker(coord, mission.points[i].alt, mission.points[i].action, mission.points[i].p1, mission.points[i].p2, mission.points[i].p3)); - if (i == 0) { - map.getView().setCenter(coord); - map.getView().setZoom(16); - } - } - } + if (i < mission.points.length-1) { + var coord = ol.proj.fromLonLat([mission.points[i].lon, mission.points[i].lat]); + if (mission.points[i+1].action == MWNP.WPTYPE.SET_HEAD) { + var options = {key: 'SET_HEAD', + heading: mission.points[i+1].p1 + }; + } + else if (mission.points[i+1].action == MWNP.WPTYPE.JUMP) { + var options = {key: 'JUMP', + targetWP: getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, mission.points[i+1].p1), + numRepeat: mission.points[i+1].p2 + }; + } + else if (mission.points[i+1].action == MWNP.WPTYPE.RTH) { + var options = {key: 'RTH', + landAfter: mission.points[i+1].p1 + }; + } + else { + var options = {key: 'None'}; + } + map.addLayer(addMarker(coord, mission.points[i].alt, mission.points[i].action, mission.points[i].p1, mission.points[i].p2, mission.points[i].p3, options)); + if (i == 0) { + map.getView().setCenter(coord); + map.getView().setZoom(16); + } + } + else { + var coord = ol.proj.fromLonLat([mission.points[i].lon, mission.points[i].lat]); + map.addLayer(addMarker(coord, mission.points[i].alt, mission.points[i].action, mission.points[i].p1, mission.points[i].p2, mission.points[i].p3)); + if (i == 0) { + map.getView().setCenter(coord); + map.getView().setZoom(16); + } + } + } } if (mission.center) { @@ -1285,95 +1240,94 @@ TABS.mission_control.initialize = function (callback) { 'mwp': { $: { 'cx': (Math.round(center[0] * 10000000) / 10000000), 'cy': (Math.round(center[1] * 10000000) / 10000000), 'zoom': zoom } }, 'missionitem': [] }; - // init secondary counter for real marker numbers taking into account JUMP, SET_HEAD, RTH insertion - var j = 1; - var nonMarkerPoint = []; + // init secondary counter for real marker numbers taking into account JUMP, SET_HEAD, RTH insertion + var j = 1; + var nonMarkerPoint = []; for (var i = 0; i < markers.length; i++) { var geometry = markers[i].getSource().getFeatures()[0].getGeometry(); var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); - if (markers[i].action == '5' || markers[i].action == '2' || markers[i].action == '8' ) { - var point = { $: { - 'no': (j), - 'action': MWNP.WPTYPE.REV[markers[i].action], - 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), - 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), - 'alt': (markers[i].alt / 100), - 'parameter1': 0, - 'parameter2': 0, - 'parameter3': 0, - } }; - data.missionitem.push(point); - j++; - } - else { - var point = { $: { - 'no': (j), - 'action': MWNP.WPTYPE.REV[markers[i].action], - 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), - 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), - 'alt': (markers[i].alt / 100), - 'parameter1': markers[i].parameter1, - 'parameter2': markers[i].parameter2, - 'parameter3': markers[i].parameter3, - } }; - data.missionitem.push(point); - j++; - } - if (markers[i].options.key == "JUMP") { - nonMarkerPoint.push(j); -/* console.log("nonMarkerPoint : ", nonMarkerPoint); - console.log("getNumberOfNonMarkerForJump : ",getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(markers[i].options.targetWP))); */ - point = { $: { - 'no': (j), - 'action': 'JUMP', - 'lon': 0, - 'lat': 0, - 'alt': 0, - 'parameter1': String(getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(markers[i].options.targetWP))), - 'parameter2': markers[i].options.numRepeat, - 'parameter3': 0 - } }; - data.missionitem.push(point); - j++; - } - else if (markers[i].options.key == "SET_HEAD") { - point = { $: { - 'no': (j), - 'action': 'SET_HEAD', - 'lon': 0, - 'lat': 0, - 'alt': 0, - 'parameter1': markers[i].options.heading, - 'parameter2': 0, - 'parameter3': 0 - } }; - data.missionitem.push(point); - nonMarkerPoint.push(j); - j++; - } - else if (markers[i].options.key == "RTH") { - actionPointForSend++; - point = { $: { - 'no': (j), - 'action': 'RTH', - 'lon': 0, - 'lat': 0, - 'alt': (markers[i].alt / 100), - 'parameter1': (markers[i].options.landAfter) ? 1: 0, - 'parameter2': 0, - 'parameter3': 0 - } }; - data.missionitem.push(point); - nonMarkerPoint.push(j); - j++; - }; + // if marker is Set_POI, PH_UNLIM, LAND + if (markers[i].action == '5' || markers[i].action == '2' || markers[i].action == '8' ) { + var point = { $: { + 'no': (j), + 'action': MWNP.WPTYPE.REV[markers[i].action], + 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), + 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), + 'alt': (markers[i].alt / 100), + 'parameter1': 0, + 'parameter2': 0, + 'parameter3': 0, + } }; + data.missionitem.push(point); + j++; + } + // else marker is not Set_POI, PH_UNLIM, LAND + else { + var point = { $: { + 'no': (j), + 'action': MWNP.WPTYPE.REV[markers[i].action], + 'lon': (Math.round(coordinate[0] * 10000000) / 10000000), + 'lat': (Math.round(coordinate[1] * 10000000) / 10000000), + 'alt': (markers[i].alt / 100), + 'parameter1': markers[i].parameter1, + 'parameter2': markers[i].parameter2, + 'parameter3': markers[i].parameter3, + } }; + data.missionitem.push(point); + j++; + } + // Manage Options for markers + // If marker has options key = JUMP, provide JUMP data (Waypoint target for Jump and number of repeat) to Parameter1 and Parameter2 + if (markers[i].options.key == "JUMP") { + nonMarkerPoint.push(j); + point = { $: { + 'no': (j), + 'action': 'JUMP', + 'lon': 0, + 'lat': 0, + 'alt': 0, + 'parameter1': String(getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(markers[i].options.targetWP))), + 'parameter2': markers[i].options.numRepeat, + 'parameter3': 0 + } }; + data.missionitem.push(point); + j++; + } + // If marker has options key = SET_HEAD, provide SET_HEAD heading data to Parameter1 + else if (markers[i].options.key == "SET_HEAD") { + point = { $: { + 'no': (j), + 'action': 'SET_HEAD', + 'lon': 0, + 'lat': 0, + 'alt': 0, + 'parameter1': markers[i].options.heading, + 'parameter2': 0, + 'parameter3': 0 + } }; + data.missionitem.push(point); + nonMarkerPoint.push(j); + j++; + } + // If marker has options key = RTH, provide RTH data (whether landing is required) to Parameter1 + else if (markers[i].options.key == "RTH") { + actionPointForSend++; + point = { $: { + 'no': (j), + 'action': 'RTH', + 'lon': 0, + 'lat': 0, + 'alt': (markers[i].alt / 100), + 'parameter1': (markers[i].options.landAfter) ? 1: 0, + 'parameter2': 0, + 'parameter3': 0 + } }; + data.missionitem.push(point); + nonMarkerPoint.push(j); + j++; + }; } - // add last RTH point - Section commented as RTH is directly integrated as a WP options - /*if ($('#rthEndMission').is(':checked')) { - data.missionitem.push({ $: { 'no': (markers.length + 1), 'action': 'RTH', 'lon': 0, 'lat': 0, 'alt': (settings.alt / 100), 'parameter1': ($('#rthLanding').is(':checked') ? 1 : 0) } }); - }*/ - var builder = new window.xml2js.Builder({ 'rootName': 'mission', 'renderOpts': { 'pretty': true, 'indent': '\t', 'newline': '\n' } }); var xml = builder.buildObject(data); fs.writeFile(filename, xml, (err) => { @@ -1384,59 +1338,40 @@ TABS.mission_control.initialize = function (callback) { GUI.log('File saved'); }); } - // New function to get number of Non Marker point such as JUMP, SET_HEAD and RTH - function getNumberOfNonMarkerForJump(nonMarkerPointList, numTargetMarker) { - for (i = 0; i < nonMarkerPointList.length; i++) { - if (numTargetMarker<=nonMarkerPointList[i+1] && numTargetMarker>nonMarkerPointList[i]) { - return i+1; - } - else { - return 0; - } - } - } - - // New function to get number of Non Marker point such as JUMP, SET_HEAD and RTH - function getNumberOfNonMarkerForJump2(nonMarkerPointList, numTargetMarker) { - for (i = 1; i < nonMarkerPointList.length; i++) { - console.log("i : ", i); - console.log("nonMarkerPointList[i-1] : ",nonMarkerPointList[i-1]); - console.log("numTargetMarker : ", numTargetMarker); - if (numTargetMarker>=nonMarkerPointList[i-1]) { - numTargetMarker++ - } - else { - return numTargetMarker; - } - } - } - - // New function to get number of Non Marker point such as JUMP, SET_HEAD and RTH - function getNumberOfNonMarkerForJumpReversed(nonMarkerPointList, numTargetMarker) { - var numTargetMarkerOut = 0; - for (i = 1; i < nonMarkerPointList.length; i++) { - // console.log("i : ", i); - // console.log("nonMarkerPointList[i] : ",nonMarkerPointList[i-1]); - // console.log("numTargetMarker : ", numTargetMarker); - // console.log("numTargetMarkerOut : ", numTargetMarkerOut); - // console.log(numTargetMarker>=nonMarkerPointList[i-1]); - if (numTargetMarker>=nonMarkerPointList[i-1]) { - numTargetMarkerOut++ - } - else { - return numTargetMarker-numTargetMarkerOut; - } - } - } + + // New: function to get number of Non Marker points such as JUMP, SET_HEAD and RTH + function getNumberOfNonMarkerForJump2(nonMarkerPointList, numTargetMarker) { + for (i = 1; i < nonMarkerPointList.length; i++) { + if (numTargetMarker>=nonMarkerPointList[i-1]) { + numTargetMarker++; + } + else { + return numTargetMarker; + } + } + } + + // New: Reversed function to get number of Non Marker points such as JUMP, SET_HEAD and RTH + function getNumberOfNonMarkerForJumpReversed(nonMarkerPointList, numTargetMarker) { + var numTargetMarkerOut = 0; + for (i = 1; i < nonMarkerPointList.length; i++) { + if (numTargetMarker>=nonMarkerPointList[i-1]) { + numTargetMarkerOut++; + } + else { + return numTargetMarker-numTargetMarkerOut; + } + } + } function getPointsFromEprom() { pointForSend = 0; - actionPointForSend = 0; - nonMarkerPoint = []; - nonMarkerPointListRead = []; - isOptions = false; - oldMarkers = null; - pointFromBuffer = {}; + actionPointForSend = 0; + nonMarkerPoint = []; + nonMarkerPointListRead = []; + isOptions = false; + oldMarkers = null; + pointFromBuffer = {}; MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, getNextPoint); } @@ -1452,74 +1387,66 @@ TABS.mission_control.initialize = function (callback) { endGetPoint(); return; } -/* console.log(MISSION_PLANER.bufferPoint); - console.log("countBusyPoints : "+MISSION_PLANER.countBusyPoints); - console.log("POINT : "+pointForSend); - console.log("Mission : "+MISSION_PLANER.bufferPoint.number); */ - + // Populate a dictionary pointFromBuffer which stores all the point values from buffer to be post-treated then (Needed for JUMP option at least) if (pointForSend > 0) { - pointFromBuffer[MISSION_PLANER.bufferPoint.number] = { - number : MISSION_PLANER.bufferPoint.number, - lon : MISSION_PLANER.bufferPoint.lon, - lat : MISSION_PLANER.bufferPoint.lat, - action : MISSION_PLANER.bufferPoint.action, - alt : MISSION_PLANER.bufferPoint.alt, - p1 : MISSION_PLANER.bufferPoint.p1, - p2 : MISSION_PLANER.bufferPoint.p2, - p3 : MISSION_PLANER.bufferPoint.p3 - }; - if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(MISSION_PLANER.bufferPoint.action)) {nonMarkerPointListRead.push(MISSION_PLANER.bufferPoint.number);}; + pointFromBuffer[MISSION_PLANER.bufferPoint.number] = { + number : MISSION_PLANER.bufferPoint.number, + lon : MISSION_PLANER.bufferPoint.lon, + lat : MISSION_PLANER.bufferPoint.lat, + action : MISSION_PLANER.bufferPoint.action, + alt : MISSION_PLANER.bufferPoint.alt, + p1 : MISSION_PLANER.bufferPoint.p1, + p2 : MISSION_PLANER.bufferPoint.p2, + p3 : MISSION_PLANER.bufferPoint.p3 + }; + if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(MISSION_PLANER.bufferPoint.action)) {nonMarkerPointListRead.push(MISSION_PLANER.bufferPoint.number);}; } -/* console.log(pointFromBuffer); - console.log(nonMarkerPointListRead); */ + + // Once all points have been scanned and pointFromBuffer populated, then scan pointFromBuffer to generate the Map Layers Markers if (pointForSend >= MISSION_PLANER.countBusyPoints) { - Object.keys(pointFromBuffer).forEach(function(key) { - // console.log(pointFromBuffer[key]); - // console.log("Key : "+key); - - if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(pointFromBuffer[key].action)) { - if ((Number(key)+1) <= MISSION_PLANER.countBusyPoints) { - var coord = ol.proj.fromLonLat([pointFromBuffer[key].lon, pointFromBuffer[key].lat]); - if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.SET_HEAD) { - var options = {key: 'SET_HEAD', - heading: pointFromBuffer[Number(key)+1].p1 - }; - } - else if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.JUMP) { - /* console.log("getNumberOfNonMarkerForJumpReversed : ",getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, pointFromBuffer[Number(key)+1].p1)); */ - var options = {key: 'JUMP', - targetWP: getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, pointFromBuffer[Number(key)+1].p1), - numRepeat: pointFromBuffer[Number(key)+1].p2 - }; - } - else if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.RTH) { - var options = {key: 'RTH', - landAfter: pointFromBuffer[Number(key)+1].p1 - }; - } - else { - var options = {key: 'None'}; - } - map.addLayer(addMarker(coord, pointFromBuffer[key].alt, pointFromBuffer[key].action, pointFromBuffer[key].p1, pointFromBuffer[key].p2, pointFromBuffer[key].p3, options)); - if (key == 1) { - map.getView().setCenter(coord); - } - } - else { - var coord = ol.proj.fromLonLat([pointFromBuffer[key].lon, pointFromBuffer[key].lat]); - map.addLayer(addMarker(coord, pointFromBuffer[key].alt, pointFromBuffer[key].action, pointFromBuffer[key].p1, pointFromBuffer[key].p2, pointFromBuffer[key].p3)); - if (key == 1) { - map.getView().setCenter(coord); - } - } - } - }); + Object.keys(pointFromBuffer).forEach(function(key) { + if ([MWNP.WPTYPE.WAYPOINT,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.PH_TIME,MWNP.WPTYPE.LAND, MWNP.WPTYPE.SET_POI].includes(pointFromBuffer[key].action)) { + if ((Number(key)+1) <= MISSION_PLANER.countBusyPoints) { + var coord = ol.proj.fromLonLat([pointFromBuffer[key].lon, pointFromBuffer[key].lat]); + if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.SET_HEAD) { + var options = {key: 'SET_HEAD', + heading: pointFromBuffer[Number(key)+1].p1 + }; + } + else if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.JUMP) { + var options = {key: 'JUMP', + targetWP: getNumberOfNonMarkerForJumpReversed(nonMarkerPointListRead, pointFromBuffer[Number(key)+1].p1), + numRepeat: pointFromBuffer[Number(key)+1].p2 + }; + } + else if (pointFromBuffer[Number(key)+1].action == MWNP.WPTYPE.RTH) { + var options = {key: 'RTH', + landAfter: pointFromBuffer[Number(key)+1].p1 + }; + } + else { + var options = {key: 'None'}; + } + map.addLayer(addMarker(coord, pointFromBuffer[key].alt, pointFromBuffer[key].action, pointFromBuffer[key].p1, pointFromBuffer[key].p2, pointFromBuffer[key].p3, options)); + if (key == 1) { + map.getView().setCenter(coord); + } + } + else { + var coord = ol.proj.fromLonLat([pointFromBuffer[key].lon, pointFromBuffer[key].lat]); + map.addLayer(addMarker(coord, pointFromBuffer[key].alt, pointFromBuffer[key].action, pointFromBuffer[key].p1, pointFromBuffer[key].p2, pointFromBuffer[key].p3)); + if (key == 1) { + map.getView().setCenter(coord); + } + } + } + }); endGetPoint(); return; } MISSION_PLANER.bufferPoint.number = pointForSend; - + pointForSend++; @@ -1527,112 +1454,97 @@ TABS.mission_control.initialize = function (callback) { } function sendNextPoint() { - //var isRTH = $('#rthEndMission').is(':checked'); - console.log("Point : "+ (pointForSend+actionPointForSend)); - - if ((pointForSend) < markers.length) { - var geometry = markers[pointForSend].getSource().getFeatures()[0].getGeometry(); - var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); - if (isOptions == false) { - if (markers[pointForSend].action == '5' || markers[pointForSend].action == '2' || markers[pointForSend].action == '8' ) { - MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; - MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; - MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); - MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); - MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; - MISSION_PLANER.bufferPoint.p1 = 0; - MISSION_PLANER.bufferPoint.p2 = 0; - MISSION_PLANER.bufferPoint.p3 = 0; - } - else { - MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; - MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; - MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); - MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); - MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; - MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; - MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].parameter2; - MISSION_PLANER.bufferPoint.p3 = markers[pointForSend].parameter3; - } - if (markers[pointForSend].options.key != "None") { - isOptions = true - } - else { - isOptions = false - pointForSend++; - } - oldMarkers = markers[pointForSend] - MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, sendNextPoint); - } - else if (isOptions == true) { - if ((pointForSend) < markers.length) { - if (oldMarkers.options.key == "JUMP") { - actionPointForSend++; - nonMarkerPoint.push(pointForSend + actionPointForSend+1); - console.log("nonMarkerPoint : ", nonMarkerPoint); - console.log("getNumberOfNonMarkerForJump : ",getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(oldMarkers.options.targetWP))); - - MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; - MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); - MISSION_PLANER.bufferPoint.lon = 0; - MISSION_PLANER.bufferPoint.lat = 0; - MISSION_PLANER.bufferPoint.alt = 0; - MISSION_PLANER.bufferPoint.p1 = getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(oldMarkers.options.targetWP)); - MISSION_PLANER.bufferPoint.p2 = Number(oldMarkers.options.numRepeat); - MISSION_PLANER.bufferPoint.p3 = 0; - } - else if (oldMarkers.options.key == "SET_HEAD") { - actionPointForSend++; - nonMarkerPoint.push(pointForSend + actionPointForSend+1); - console.log("nonMarkerPoint : ", nonMarkerPoint); - - MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; - MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); - MISSION_PLANER.bufferPoint.lon = 0; - MISSION_PLANER.bufferPoint.lat = 0; - MISSION_PLANER.bufferPoint.alt = 0; - MISSION_PLANER.bufferPoint.p1 = Number(oldMarkers.options.heading); - MISSION_PLANER.bufferPoint.p2 = 0; - MISSION_PLANER.bufferPoint.p3 = 0; - } - else if (oldMarkers.options.key == "RTH") { - actionPointForSend++; - nonMarkerPoint.push(pointForSend + actionPointForSend+1); - console.log("nonMarkerPoint : ", nonMarkerPoint); - - MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; - MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); - MISSION_PLANER.bufferPoint.lon = 0; - MISSION_PLANER.bufferPoint.lat = 0; - MISSION_PLANER.bufferPoint.alt = Number(oldMarkers.alt); - MISSION_PLANER.bufferPoint.p1 = (Number(oldMarkers.options.landAfter)) ? 1: 0; - MISSION_PLANER.bufferPoint.p2 = 0; - MISSION_PLANER.bufferPoint.p3 = 0; - } - isOptions = false; - pointForSend++; - MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, sendNextPoint); - } - } - } - else { - /*if (isRTH) { - MISSION_PLANER.bufferPoint.number = pointForSend + 1; - MISSION_PLANER.bufferPoint.action = 4; + if (pointForSend >= markers.length) { + endSendPoint(); + return; + } + var geometry = markers[pointForSend].getSource().getFeatures()[0].getGeometry(); + var coordinate = ol.proj.toLonLat(geometry.getCoordinates()); + // If MISSION_PLANER.bufferPoint do not content any options keys (i.e different from None) => isOptions==false + if (isOptions == false) { + if (markers[pointForSend].action == '5' || markers[pointForSend].action == '2' || markers[pointForSend].action == '8' ) { + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; + MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); + MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); + MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; + MISSION_PLANER.bufferPoint.p1 = 0; + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + } + else { + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = markers[pointForSend].action; + MISSION_PLANER.bufferPoint.lon = parseInt(coordinate[0] * 10000000); + MISSION_PLANER.bufferPoint.lat = parseInt(coordinate[1] * 10000000); + MISSION_PLANER.bufferPoint.alt = markers[pointForSend].alt; + MISSION_PLANER.bufferPoint.p1 = markers[pointForSend].parameter1; + MISSION_PLANER.bufferPoint.p2 = markers[pointForSend].parameter2; + MISSION_PLANER.bufferPoint.p3 = markers[pointForSend].parameter3; + } + if (markers[pointForSend].options.key != "None") { + isOptions = true + } + else { + isOptions = false + pointForSend++; + } + oldMarkers = markers[pointForSend] + if (pointForSend >= markers.length) { + MISSION_PLANER.bufferPoint.endMission = 0xA5; + } + else { + MISSION_PLANER.bufferPoint.endMission = 0; + } + MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, sendNextPoint); + } + // else if MISSION_PLANER.bufferPoint do content any options keys (i.e different from None) => isOptions==true + else if (isOptions == true) { + if (oldMarkers.options.key == "JUMP") { + actionPointForSend++; + nonMarkerPoint.push(pointForSend + actionPointForSend+1); + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); MISSION_PLANER.bufferPoint.lon = 0; MISSION_PLANER.bufferPoint.lat = 0; MISSION_PLANER.bufferPoint.alt = 0; + MISSION_PLANER.bufferPoint.p1 = getNumberOfNonMarkerForJump2(nonMarkerPoint, Number(oldMarkers.options.targetWP)); + MISSION_PLANER.bufferPoint.p2 = Number(oldMarkers.options.numRepeat); + MISSION_PLANER.bufferPoint.p3 = 0; + } + else if (oldMarkers.options.key == "SET_HEAD") { + actionPointForSend++; + nonMarkerPoint.push(pointForSend + actionPointForSend+1); + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = 0; + MISSION_PLANER.bufferPoint.p1 = Number(oldMarkers.options.heading); + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + } + else if (oldMarkers.options.key == "RTH") { + actionPointForSend++; + nonMarkerPoint.push(pointForSend + actionPointForSend+1); + MISSION_PLANER.bufferPoint.number = pointForSend + actionPointForSend + 1; + MISSION_PLANER.bufferPoint.action = String(MWNP.WPTYPE[oldMarkers.options.key]); + MISSION_PLANER.bufferPoint.lon = 0; + MISSION_PLANER.bufferPoint.lat = 0; + MISSION_PLANER.bufferPoint.alt = Number(oldMarkers.alt); + MISSION_PLANER.bufferPoint.p1 = (Number(oldMarkers.options.landAfter)) ? 1: 0; + MISSION_PLANER.bufferPoint.p2 = 0; + MISSION_PLANER.bufferPoint.p3 = 0; + } + isOptions = false; + pointForSend++; + if (pointForSend >= markers.length) { MISSION_PLANER.bufferPoint.endMission = 0xA5; - MISSION_PLANER.bufferPoint.p1 = $('#rthLanding').is(':checked') ? 1 : 0; - MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, endSendPoint); - } else { - endSendPoint(); - }*/ - MISSION_PLANER.bufferPoint.endMission = 0xA5; - console.log("EndSendPoint"); - endSendPoint(); - - return; + } + else { + MISSION_PLANER.bufferPoint.endMission = 0; + } + MSP.send_message(MSPCodes.MSP_SET_WP, mspHelper.crunch(MSPCodes.MSP_SET_WP), false, sendNextPoint); } } @@ -1643,6 +1555,13 @@ TABS.mission_control.initialize = function (callback) { $('#saveMissionButton').removeClass('disabled'); } + + function updateTotalInfo() { + if (CONFIGURATOR.connectionValid) { + $('#availablePoints').text(MISSION_PLANER.countBusyPoints + '/' + MISSION_PLANER.maxWaypoints); + $('#missionValid').html(MISSION_PLANER.isValidMission ? chrome.i18n.getMessage('armingCheckPass') : chrome.i18n.getMessage('armingCheckFail')); + } + } }; From c7e06825c7e0f1cc5806596be8ec43b80f5ce3d3 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Tue, 23 Feb 2021 23:11:35 +0100 Subject: [PATCH 16/58] Undo Icons modification for Mission Planer tab Undo modification for new set of icons buttons on Mission plan tab in order to reduce space used by Textual buttons. --- images/icons/cf_icon_MP_save2file.svg | 219 -------------------------- images/icons/save2file.png | Bin 604 -> 0 bytes src/css/tabs/mission_planer.css | 6 +- tabs/mission_control.html | 4 +- 4 files changed, 3 insertions(+), 226 deletions(-) delete mode 100644 images/icons/cf_icon_MP_save2file.svg delete mode 100644 images/icons/save2file.png diff --git a/images/icons/cf_icon_MP_save2file.svg b/images/icons/cf_icon_MP_save2file.svg deleted file mode 100644 index 48f1bdd2..00000000 --- a/images/icons/cf_icon_MP_save2file.svg +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/icons/save2file.png b/images/icons/save2file.png deleted file mode 100644 index 4254df4a645f29bb50850148e3b758483579cdfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)500009a7bBm000YN z000YN0b6-1rT_o{8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10qIFZ zK~z|U?U*sk+CUh9pG2*aDd6BJNZh&!8Fb9lsk4)td#RIxIJp(XO_y(Rmx7Q#pg|BE zN(&-_4(<^m*v}zvhidssks2e-SMY&@aNNE3T>AtE&q`6eRIBI5sp@_ZVv zCL##{MMUDjXW$*tVFT|K5%~aoicsXtM@2-w0B@r<0lq3C@*Q{+wFz)kM8uEU;*1)# zz)K!7mxy1}s9vwLTCHv##4rrn?e^arUb9=8rs)GW7t=Ja+Lf=$%u94#XEYiq$z<}k z`f|C~!lo~zX=xm->>&kGbIbY@)FWj33!-EPB% z3MVs}Ot5VmRaKczr`Wa~N+#4al}aT_r4j&zLV;ed7fR+X3wW_u;CUX2L?Tq2yDZ@0 zaL9VSrdF$kigTCDq*5um-7bT{faP)-t;~Err_<@6>pJoH?a2<@bGO^!I1cBt$@hKo z`8<|op{gpb>*6>LuImQ3`R`6`%d*I3v%%l=gkcz0wR`-KU*aKi2^Ba-Epg(g0=I9O q_hqR9Pf=T(czRX$Gr;S)x%vSt?n8<4KS>1u0000
Load mission from FC From b689e98620ea41e41294a54b9853dd6642662446 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Thu, 25 Feb 2021 22:37:41 +0100 Subject: [PATCH 17/58] Iconification of Mission planner tab Textual button replaced by icon to optimise space in mission tab --- images/icons/cf_icon_MP_loadFile_grey.svg | 152 +++++++++++ .../icons/cf_icon_MP_loadFromEprom_grey.svg | 240 ++++++++++++++++++ images/icons/cf_icon_MP_loadfromFC_grey.svg | 169 ++++++++++++ images/icons/cf_icon_MP_removeAll_grey.svg | 169 ++++++++++++ images/icons/cf_icon_MP_save2Eprom_grey.svg | 240 ++++++++++++++++++ images/icons/cf_icon_MP_save2FC.svg | 163 ++++++++++++ images/icons/cf_icon_MP_save2FC_grey.svg | 169 ++++++++++++ images/icons/cf_icon_MP_saveFile_grey.svg | 152 +++++++++++ images/icons/cf_icon_MP_save_grey.svg | 152 +++++++++++ src/css/tabs/mission_planer.css | 62 ++++- tabs/mission_control.html | 20 +- 11 files changed, 1669 insertions(+), 19 deletions(-) create mode 100644 images/icons/cf_icon_MP_loadFile_grey.svg create mode 100644 images/icons/cf_icon_MP_loadFromEprom_grey.svg create mode 100644 images/icons/cf_icon_MP_loadfromFC_grey.svg create mode 100644 images/icons/cf_icon_MP_removeAll_grey.svg create mode 100644 images/icons/cf_icon_MP_save2Eprom_grey.svg create mode 100644 images/icons/cf_icon_MP_save2FC.svg create mode 100644 images/icons/cf_icon_MP_save2FC_grey.svg create mode 100644 images/icons/cf_icon_MP_saveFile_grey.svg create mode 100644 images/icons/cf_icon_MP_save_grey.svg diff --git a/images/icons/cf_icon_MP_loadFile_grey.svg b/images/icons/cf_icon_MP_loadFile_grey.svg new file mode 100644 index 00000000..25556841 --- /dev/null +++ b/images/icons/cf_icon_MP_loadFile_grey.svg @@ -0,0 +1,152 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_loadFromEprom_grey.svg b/images/icons/cf_icon_MP_loadFromEprom_grey.svg new file mode 100644 index 00000000..b2e80041 --- /dev/null +++ b/images/icons/cf_icon_MP_loadFromEprom_grey.svg @@ -0,0 +1,240 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_loadfromFC_grey.svg b/images/icons/cf_icon_MP_loadfromFC_grey.svg new file mode 100644 index 00000000..8050651f --- /dev/null +++ b/images/icons/cf_icon_MP_loadfromFC_grey.svg @@ -0,0 +1,169 @@ + +image/svg+xml + + + + + + + + diff --git a/images/icons/cf_icon_MP_removeAll_grey.svg b/images/icons/cf_icon_MP_removeAll_grey.svg new file mode 100644 index 00000000..3e400287 --- /dev/null +++ b/images/icons/cf_icon_MP_removeAll_grey.svg @@ -0,0 +1,169 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_save2Eprom_grey.svg b/images/icons/cf_icon_MP_save2Eprom_grey.svg new file mode 100644 index 00000000..33315941 --- /dev/null +++ b/images/icons/cf_icon_MP_save2Eprom_grey.svg @@ -0,0 +1,240 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_save2FC.svg b/images/icons/cf_icon_MP_save2FC.svg new file mode 100644 index 00000000..f5552455 --- /dev/null +++ b/images/icons/cf_icon_MP_save2FC.svg @@ -0,0 +1,163 @@ + +image/svg+xml + + + + + + + + diff --git a/images/icons/cf_icon_MP_save2FC_grey.svg b/images/icons/cf_icon_MP_save2FC_grey.svg new file mode 100644 index 00000000..46b6a50b --- /dev/null +++ b/images/icons/cf_icon_MP_save2FC_grey.svg @@ -0,0 +1,169 @@ + +image/svg+xml + + + + + + + + diff --git a/images/icons/cf_icon_MP_saveFile_grey.svg b/images/icons/cf_icon_MP_saveFile_grey.svg new file mode 100644 index 00000000..c36b08fb --- /dev/null +++ b/images/icons/cf_icon_MP_saveFile_grey.svg @@ -0,0 +1,152 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_save_grey.svg b/images/icons/cf_icon_MP_save_grey.svg new file mode 100644 index 00000000..e8a87fac --- /dev/null +++ b/images/icons/cf_icon_MP_save_grey.svg @@ -0,0 +1,152 @@ + +image/svg+xml + + diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index 0c0ddfc7..efc9085c 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -8,26 +8,67 @@ border: 1px solid #3394b5; color: #fff; /*float: right;*/ - font-family: 'open_sansbold', Arial, serif; - font-size: 12px; - text-shadow: 0 1px rgba(0, 0, 0, 0.25); display: block; cursor: pointer; transition: all ease 0.2s; - padding: 0 9px; - line-height: 28px; + padding: 0px; margin: 5px; float: left; - width: 80px; - text-align: center; + height: 28px; + line-height: 28px; + width: 28px; } - +.tab-mission-control .btn-text{ + display: none; + font-family: 'open_sansbold', Arial, serif; + font-size: 12px; + text-shadow: 0 1px rgba(0, 0, 0, 0.25); + line-height: 28px; + width: 80px; + text-align: center; +} .tab-mission-control .btn a:hover { background-color: #3394b5; transition: all ease 0.2s; } +.tab-mission-control .ic_save2FC { + background-image: url(../images/icons/cf_icon_MP_save2FC_grey.svg); +} + +.tab-mission-control .ic_loadFromFC { + background-image: url(../images/icons/cf_icon_MP_loadfromFC_grey.svg); +} + +.tab-mission-control .ic_save2File { + background-image: url(../images/icons/cf_icon_MP_saveFile_grey.svg); +} + +.tab-mission-control .ic_loadFromFile { + background-image: url(../images/icons/cf_icon_MP_loadFile_grey.svg); +} + +.tab-mission-control .ic_save2Eprom { + background-image: url(../images/icons/cf_icon_MP_save2Eprom_grey.svg); +} + +.tab-mission-control .ic_loadFromEprom { + background-image: url(../images/icons/cf_icon_MP_loadfromEprom_grey.svg); +} + +.tab-mission-control .ic_removeAll { + background-image: url(../images/icons/cf_icon_MP_removeAll_grey.svg); +} + +.tab-mission-control .ic_save { + background-image: url(../images/icons/cf_icon_MP_save_grey.svg); +} + +.tab-mission-control .btnicon { + background-repeat: no-repeat; + background-position: center; +} .tab-mission-control .btn a:active { background-color: #37a8db; @@ -48,7 +89,10 @@ .tab-mission-control .btn-danger_long a { background-color: #db250e; border: 1px solid #b5480e; - width: 100%; + height: 28px; + margin:5px; + line-height: 28px; + width: 28px; } .tab-mission-control .btn-danger_short a { background-color: #db250e; diff --git a/tabs/mission_control.html b/tabs/mission_control.html index 1daf5d88..c5675ca0 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -46,18 +46,18 @@


@@ -132,12 +132,12 @@
-
+
- Save +
- Remove +
From 2ecac5258155b7c0985dff575281a229a7f9be45 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 26 Feb 2021 22:59:11 +0100 Subject: [PATCH 18/58] End Icon modification --- images/icons/cf_icon_MP_cancel_grey.svg | 153 ++++++++++++++++++++++++ src/css/tabs/mission_planer.css | 5 + tabs/mission_control.html | 4 +- 3 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 images/icons/cf_icon_MP_cancel_grey.svg diff --git a/images/icons/cf_icon_MP_cancel_grey.svg b/images/icons/cf_icon_MP_cancel_grey.svg new file mode 100644 index 00000000..aab51b6d --- /dev/null +++ b/images/icons/cf_icon_MP_cancel_grey.svg @@ -0,0 +1,153 @@ + +image/svg+xml + + diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index efc9085c..e6c74c05 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -65,9 +65,14 @@ background-image: url(../images/icons/cf_icon_MP_save_grey.svg); } +.tab-mission-control .ic_cancel { + background-image: url(../images/icons/cf_icon_MP_cancel_grey.svg); +} + .tab-mission-control .btnicon { background-repeat: no-repeat; background-position: center; + background-size: 24px; } .tab-mission-control .btn a:active { diff --git a/tabs/mission_control.html b/tabs/mission_control.html index c5675ca0..a767d9a6 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -20,8 +20,8 @@
- Save - Cancel + +
From 89586d3ac85700a594dc0e4b717c1d34b90ff4ec Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 26 Feb 2021 23:04:10 +0100 Subject: [PATCH 19/58] Correct Color hover Correction on Css file to correctly color danger button when hovered --- src/css/tabs/mission_planer.css | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index e6c74c05..1c147c71 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -104,7 +104,12 @@ border: 1px solid #b5480e; } -.tab-mission-control .btn-danger a:hover { +.tab-mission-control .btn-danger_long a:hover { + background-color: #b5480e; + transition: all ease 0.2s; +} + +.tab-mission-control .btn-danger_short a:hover { background-color: #b5480e; transition: all ease 0.2s; } From cf80f8c9ab3c224b97e416736f230eec5569fcc4 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Tue, 2 Mar 2021 18:43:29 +0100 Subject: [PATCH 20/58] Add Safehome tab --- _locales/en/messages.json | 18 +++ images/icons/cf_icon_MP_safehome_green.svg | 159 +++++++++++++++++++++ images/icons/cf_icon_MP_safehome_grey.svg | 152 ++++++++++++++++++++ images/icons/cf_icon_MP_safehome_red.svg | 159 +++++++++++++++++++++ images/icons/cf_icon_MP_safehome_white.svg | 159 +++++++++++++++++++++ images/icons/cf_icon_safehome_white.svg | 60 ++++++++ js/fc.js | 10 +- js/msp/MSPCodes.js | 5 +- js/msp/MSPHelper.js | 14 +- src/css/tabs/mission_planer.css | 8 +- tabs/mission_control.html | 28 ++++ tabs/mission_control.js | 66 ++++++++- 12 files changed, 826 insertions(+), 12 deletions(-) create mode 100644 images/icons/cf_icon_MP_safehome_green.svg create mode 100644 images/icons/cf_icon_MP_safehome_grey.svg create mode 100644 images/icons/cf_icon_MP_safehome_red.svg create mode 100644 images/icons/cf_icon_MP_safehome_white.svg create mode 100644 images/icons/cf_icon_safehome_white.svg diff --git a/_locales/en/messages.json b/_locales/en/messages.json index d0014f77..8c294646 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3124,6 +3124,9 @@ "missionDefaultSettingsHead": { "message": "Default settings" }, + "missionSafehomeHead": { + "message": "Safe Home manager" + }, "missionTemplateHead": { "message": "Mission template" }, @@ -3594,5 +3597,20 @@ }, "MissionPlannerHeadSettingsCheck": { "message": "Heading value is incorrect : Check it again !" + }, + "SafehomeSelected": { + "message": "" + }, + "SafehomeId": { + "message": "#" + }, + "SafehomeEnabled": { + "message": "Enabled" + }, + "SafehomeLon": { + "message": "Lon" + }, + "SafehomeLat": { + "message": "Lat" } } diff --git a/images/icons/cf_icon_MP_safehome_green.svg b/images/icons/cf_icon_MP_safehome_green.svg new file mode 100644 index 00000000..327dc99d --- /dev/null +++ b/images/icons/cf_icon_MP_safehome_green.svg @@ -0,0 +1,159 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_safehome_grey.svg b/images/icons/cf_icon_MP_safehome_grey.svg new file mode 100644 index 00000000..8bb9a326 --- /dev/null +++ b/images/icons/cf_icon_MP_safehome_grey.svg @@ -0,0 +1,152 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_safehome_red.svg b/images/icons/cf_icon_MP_safehome_red.svg new file mode 100644 index 00000000..f4df0751 --- /dev/null +++ b/images/icons/cf_icon_MP_safehome_red.svg @@ -0,0 +1,159 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_MP_safehome_white.svg b/images/icons/cf_icon_MP_safehome_white.svg new file mode 100644 index 00000000..9ed25ce9 --- /dev/null +++ b/images/icons/cf_icon_MP_safehome_white.svg @@ -0,0 +1,159 @@ + +image/svg+xml + + diff --git a/images/icons/cf_icon_safehome_white.svg b/images/icons/cf_icon_safehome_white.svg new file mode 100644 index 00000000..1f92d3bc --- /dev/null +++ b/images/icons/cf_icon_safehome_white.svg @@ -0,0 +1,60 @@ + +image/svg+xml + + diff --git a/js/fc.js b/js/fc.js index ce650393..4b3a744a 100644 --- a/js/fc.js +++ b/js/fc.js @@ -60,7 +60,8 @@ var CONFIG, BATTERY_CONFIG, OUTPUT_MAPPING, SETTINGS, - BRAKING_CONFIG; + BRAKING_CONFIG, + SAFEHOME; var FC = { MAX_SERVO_RATE: 125, @@ -544,6 +545,13 @@ var FC = { OUTPUT_MAPPING = new OutputMappingCollection(); SETTINGS = {}; + + SAFEHOME = { + number: 0, + enabled: 0, + lon: 0, + lat: 0 + }; }, getOutputUsages: function() { return { diff --git a/js/msp/MSPCodes.js b/js/msp/MSPCodes.js index 028386f6..5e3f2732 100644 --- a/js/msp/MSPCodes.js +++ b/js/msp/MSPCodes.js @@ -215,5 +215,8 @@ var MSPCodes = { MSP2_PID: 0x2030, MSP2_SET_PID: 0x2031, - MSP2_INAV_OPFLOW_CALIBRATION: 0x2032 + MSP2_INAV_OPFLOW_CALIBRATION: 0x2032, + + MSP2_INAV_SAFEHOME: 0x2038, + MSP2_INAV_SET_SAFEHOME: 0x2039 }; diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 9107e1f5..cc183618 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -65,8 +65,7 @@ var mspHelper = (function (gui) { flags, colorCount, color; - - if (!dataHandler.unsupported) switch (dataHandler.code) { + if (!dataHandler.unsupported || dataHandler.unsupported) switch (dataHandler.code) { case MSPCodes.MSP_IDENT: //FIXME remove this frame when proven not needed console.log('Using deprecated msp command: MSP_IDENT'); @@ -1462,7 +1461,13 @@ var mspHelper = (function (gui) { SENSOR_DATA.temperature[i] = temp_decidegrees / 10; // °C } break; - + case MSPCodes.MSP2_INAV_SAFEHOME: + console.log(MSPCodes.MSP2_INAV_SAFEHOME); + SAFEHOME.number = data.getUint8(0); + SAFEHOME.enable = data.getUint8(1); + SAFEHOME.lon = data.getInt32(2); + SAFEHOME.lat = data.getInt32(3); + break; default: console.log('Unknown code detected: ' + dataHandler.code); } else { @@ -2138,6 +2143,9 @@ var mspHelper = (function (gui) { buffer.push(BRAKING_CONFIG.bankAngle); break; + + case MSPCodes.MSP2_INAV_SET_SAFEHOME: + break; default: return false; diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index 1c147c71..a8fe1f35 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -221,7 +221,13 @@ .ol-touch .mission-control-settings { top: 80px; } - +.mission-control-safehome { + top: 85px; + left: .5em; +} +.ol-touch .mission-control-safehome { + top: 100px; +} .mission-control-template { top: 85px; left: .5em; diff --git a/tabs/mission_control.html b/tabs/mission_control.html index a767d9a6..29786174 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -26,6 +26,34 @@ +
Total information
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 92cb25ba..ef8d9b67 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -377,6 +377,17 @@ TABS.mission_control.initialize = function (callback) { } } + ///////////////////////////////////////////// + // Manage Safehome + ///////////////////////////////////////////// + function getSafeHomePointFromFC() { + console.log("Test"); + } + + function loadSafehome() { + MSP.send_message(MSPCodes.MSP2_INAV_SAFEHOME, false, false, getSafeHomePointFromFC); + } + ///////////////////////////////////////////// // Manage Plotting functions ///////////////////////////////////////////// @@ -624,7 +635,7 @@ TABS.mission_control.initialize = function (callback) { button.style = 'background: url(\'../images/CF_settings_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; var handleShowSettings = function () { - $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate').hide(); + $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate', '#missionPlanerSafeHome').hide(); $('#missionPlanerSettings').fadeIn(300); }; @@ -644,6 +655,41 @@ TABS.mission_control.initialize = function (callback) { }; ol.inherits(app.PlannerSettingsControl, ol.control.Control); + + /** + * @constructor + * @extends {ol.control.Control} + * @param {Object=} opt_options Control options. + */ + app.PlannerSafehomeControl = function (opt_options) { + var options = opt_options || {}; + var button = document.createElement('button'); + + button.innerHTML = ' '; + button.style = 'background: url(\'../images/icons/cf_icon_safehome_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; + + var handleShowSafehome = function () { + $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate', '#missionPlanerSettings').hide(); + $('#missionPlanerSafeHome').fadeIn(300); + loadSafehome(); + }; + + button.addEventListener('click', handleShowSafehome, false); + button.addEventListener('touchstart', handleShowSafehome, false); + + var element = document.createElement('div'); + element.className = 'mission-control-safehome ol-unselectable ol-control'; + element.appendChild(button); + element.title = 'MP Safehome'; + + ol.control.Control.call(this, { + element: element, + target: options.target + }); + + }; + ol.inherits(app.PlannerSafehomeControl, ol.control.Control); + /** * @param {ol.MapBrowserEvent} evt Map browser event. * @return {boolean} `true` to start the drag sequence. @@ -739,16 +785,24 @@ TABS.mission_control.initialize = function (callback) { } else { mapLayer = new ol.source.OSM(); } - + + if (CONFIGURATOR.connectionValid) { + control_list = [ + new app.PlannerSettingsControl(), + new app.PlannerSafehomeControl() + ] + } + else { + control_list = [ + new app.PlannerSettingsControl() + ] + } map = new ol.Map({ controls: ol.control.defaults({ attributionOptions: { collapsible: false } - }).extend([ - new app.PlannerSettingsControl(), - //new app.PlannerTemplateControl() - ]), + }).extend(control_list), interactions: ol.interaction.defaults().extend([new app.Drag()]), layers: [ new ol.layer.Tile({ From a81050d121c7872cfb2e938db902ca03db362897 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Mon, 22 Mar 2021 21:47:02 +0100 Subject: [PATCH 21/58] Safehome : read --- gulpfile.js | 2 + images/icons/cf_icon_safehome.png | Bin 0 -> 4422 bytes images/icons/cf_icon_safehome_used.png | Bin 0 -> 4353 bytes js/fc.js | 9 +- js/msp/MSPCodes.js | 6 ++ js/msp/MSPHelper.js | 50 +++++++-- js/safeHome.js | 68 ++++++++++++ js/safehomeCollection.js | 86 +++++++++++++++ src/css/tabs/mission_planer.css | 14 +-- tabs/mission_control.html | 2 +- tabs/mission_control.js | 140 +++++++++++++++++++++++-- 11 files changed, 347 insertions(+), 30 deletions(-) create mode 100644 images/icons/cf_icon_safehome.png create mode 100644 images/icons/cf_icon_safehome_used.png create mode 100644 js/safeHome.js create mode 100644 js/safehomeCollection.js diff --git a/gulpfile.js b/gulpfile.js index ce98ee23..a841329f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -120,6 +120,8 @@ sources.js = [ './js/appUpdater.js', './js/feature_framework.js', './js/defaults_dialog.js', + './js/safehomeCollection.js', + './js/safehome.js', './node_modules/openlayers/dist/ol.js' ]; diff --git a/images/icons/cf_icon_safehome.png b/images/icons/cf_icon_safehome.png new file mode 100644 index 0000000000000000000000000000000000000000..ff342372df14eeeede8e9cce6ceef6f5901720cc GIT binary patch literal 4422 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 M07*qoM6N<$f`biu*#H0l literal 0 HcmV?d00001 diff --git a/images/icons/cf_icon_safehome_used.png b/images/icons/cf_icon_safehome_used.png new file mode 100644 index 0000000000000000000000000000000000000000..e58f62e815451ffdce2b42ddf6fec5810a127c56 GIT binary patch literal 4353 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 literal 0 HcmV?d00001 diff --git a/js/fc.js b/js/fc.js index 4b3a744a..b4baeb52 100644 --- a/js/fc.js +++ b/js/fc.js @@ -61,7 +61,7 @@ var CONFIG, OUTPUT_MAPPING, SETTINGS, BRAKING_CONFIG, - SAFEHOME; + SAFEHOMES; var FC = { MAX_SERVO_RATE: 125, @@ -546,12 +546,15 @@ var FC = { SETTINGS = {}; - SAFEHOME = { +/* SAFEHOME = { + bufferPoint : { number: 0, enabled: 0, lon: 0, lat: 0 - }; + } + }; */ + SAFEHOMES = new SafehomeCollection(); }, getOutputUsages: function() { return { diff --git a/js/msp/MSPCodes.js b/js/msp/MSPCodes.js index 5e3f2732..97062c09 100644 --- a/js/msp/MSPCodes.js +++ b/js/msp/MSPCodes.js @@ -217,6 +217,12 @@ var MSPCodes = { MSP2_INAV_OPFLOW_CALIBRATION: 0x2032, + MSP2_INAV_FWUPDT_PREPARE: 0x2033, + MSP2_INAV_FWUPDT_STORE: 0x2034, + MSP2_INAV_FWUPDT_EXEC: 0x2035, + MSP2_INAV_FWUPDT_ROLLBACK_PREPARE: 0x2036, + MSP2_INAV_FWUPDT_ROLLBACK_EXEC: 0x2037, + MSP2_INAV_SAFEHOME: 0x2038, MSP2_INAV_SET_SAFEHOME: 0x2039 }; diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index cc183618..d3ccb651 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -440,6 +440,7 @@ var mspHelper = (function (gui) { } break; case MSPCodes.MSP_WP: + console.log("data : ",data); MISSION_PLANER.bufferPoint.number = data.getUint8(0); MISSION_PLANER.bufferPoint.action = data.getUint8(1); MISSION_PLANER.bufferPoint.lat = data.getInt32(2, true) / 10000000; @@ -1461,13 +1462,21 @@ var mspHelper = (function (gui) { SENSOR_DATA.temperature[i] = temp_decidegrees / 10; // °C } break; + /* case MSPCodes.MSP2_INAV_SAFEHOME: + SAFEHOME.bufferPoint.number = data.getUint8(0); + SAFEHOME.bufferPoint.enabled = data.getUint8(1); + SAFEHOME.bufferPoint.lon = data.getInt32(2, true); + SAFEHOME.bufferPoint.lat = data.getInt32(6, true); + break; */ case MSPCodes.MSP2_INAV_SAFEHOME: - console.log(MSPCodes.MSP2_INAV_SAFEHOME); - SAFEHOME.number = data.getUint8(0); - SAFEHOME.enable = data.getUint8(1); - SAFEHOME.lon = data.getInt32(2); - SAFEHOME.lat = data.getInt32(3); - break; + SAFEHOMES.put(new Safehome( + data.getUint8(0), + data.getUint8(1), + data.getInt32(2, true) / 1e7, + data.getInt32(6, true) / 1e7 + )); + break; + default: console.log('Unknown code detected: ' + dataHandler.code); } else { @@ -2099,8 +2108,9 @@ var mspHelper = (function (gui) { buffer.push(MISSION_PLANER.bufferPoint.endMission); //sbufReadU8(src); // future: to set nav flag break; case MSPCodes.MSP_WP: - console.log(MISSION_PLANER.bufferPoint.number); + console.log("MISSION_PLANER.bufferPoint.number : ",MISSION_PLANER.bufferPoint.number); buffer.push(MISSION_PLANER.bufferPoint.number+1); + console.log("buffer ", buffer); break; case MSPCodes.MSP_WP_MISSION_SAVE: @@ -2144,8 +2154,12 @@ var mspHelper = (function (gui) { buffer.push(BRAKING_CONFIG.bankAngle); break; - case MSPCodes.MSP2_INAV_SET_SAFEHOME: +/* case MSPCodes.MSP2_INAV_SAFEHOME: + console.log("SAFEHOME.bufferPoint.number : ",SAFEHOME.bufferPoint.number); + buffer.push(SAFEHOME.bufferPoint.number+1); break; + case MSPCodes.MSP2_INAV_SET_SAFEHOME: + break; */ default: return false; @@ -2913,6 +2927,26 @@ var mspHelper = (function (gui) { self.getMissionInfo = function (callback) { MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, callback); }; + +/* self.getSafehomeInfo = function (callback) { + MSP.send_message(MSPCodes.MSP2_INAV_SAFEHOME, false, false, callback); + }; */ + + self.loadSafehomes = function (callback) { + SAFEHOMES.flush(); + let safehomeId = 0; + MSP.send_message(MSPCodes.MSP2_INAV_SAFEHOME, [safehomeId], false, nextSafehome); + + function nextSafehome() { + safehomeId++; + if (safehomeId < SAFEHOMES.getMaxSafehomeCount()-1) { + MSP.send_message(MSPCodes.MSP2_INAV_SAFEHOME, [safehomeId], false, nextSafehome); + } + else { + MSP.send_message(MSPCodes.MSP2_INAV_SAFEHOME, [safehomeId], false, callback); + } + }; + }; self._getSetting = function (name) { if (SETTINGS[name]) { diff --git a/js/safeHome.js b/js/safeHome.js new file mode 100644 index 00000000..5c275c6b --- /dev/null +++ b/js/safeHome.js @@ -0,0 +1,68 @@ +/*global $*/ +'use strict'; + +let Safehome = function (number, enabled, lat, lon) { + + var self = {}; + + self.getNumber = function () { + return number; + }; + + self.setNumber = function (data) { + number = data; + }; + + self.getLon = function () { + return lon; + }; + + self.setLon = function (data) { + lon = data; + }; + + self.getLonToMap = function () { + return lon / 1e7; + }; + + self.setLonFromMap = function (data) { + lon = data * 1e7; + }; + + self.getLat = function () { + return lat; + }; + + self.setLat = function (data) { + lat = data; + }; + + self.getLatToMap = function () { + return lat / 1e7; + }; + + self.setLatFromMap = function (data) { + lat = data * 1e7; + }; + + self.isUsed = function () { + return enabled == 1; + }; + + self.getEnabled = function () { + return enabled; + }; + + self.setEnabled = function (data) { + enabled = data; + }; + + self.cleanup = function () { + number = 0; + enabled = 0; + lon = 0; + lat = 0; + }; + + return self; +}; \ No newline at end of file diff --git a/js/safehomeCollection.js b/js/safehomeCollection.js new file mode 100644 index 00000000..4a8fd6ee --- /dev/null +++ b/js/safehomeCollection.js @@ -0,0 +1,86 @@ +/*global ServoMixRule*/ +'use strict'; + +let SafehomeCollection = function () { + + let self = {}, + data = [], + maxSafehomeCount = 8; + + self.setMaxSafehomeCount = function (value) { + maxSafehomeCount = value; + }; + + self.getMaxSafehomeCount = function () { + return maxSafehomeCount; + } + + self.put = function (element) { + data.push(element); + }; + + self.get = function () { + return data; + }; + + self.clean = function (index){ + data[index].cleanup(); + }; + + self.flush = function () { + data = []; + }; + + self.inflate = function () { + while (self.hasFreeSlots()) { + self.put(new Safehome(0, 0, 0, 0)); + } + }; + + self.hasFreeSlots = function () { + return data.length < self.getMaxSafehomeCount(); + }; + + self.isSafehomeConfigured = function(safehomeId) { + + for (let safehomeIndex in data) { + if (data.hasOwnProperty(safehomeIndex)) { + let safehome = data[safehomeIndex]; + + if (safehome.getNumber() == safehomeId && safehome.isUsed()) { + return true; + } + } + } + return false; + }; + + self.getNumberOfConfiguredSafehome = function () { + let count = 0; + for (let i = 0; i < self.getMaxSafehomeCount(); i ++) { + if (self.isSafehomeConfigured(i)) { + count++; + } + } + return count; + }; + + self.getUsedSafehomeIndexes = function () { + let out = []; + + for (let safehomeIndex in data) { + if (data.hasOwnProperty(safehomeIndex)) { + let safehome = data[safehomeIndex]; + out.push(safehome.getNumber()); + } + } + + let unique = [...new Set(out)]; + + return unique.sort(function(a, b) { + return a-b; + }); + } + + return self; +}; \ No newline at end of file diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index a8fe1f35..40494421 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -236,29 +236,29 @@ top: 100px; } -.tab-mission-control .missionTable { +.tab-mission-control .safehomesTable { width: 100%; text-align: center; } -.tab-mission-control .missionTable thead { +.tab-mission-control .safehomesTable thead { display: table-header-group !important; } -.tab-mission-control .missionTable thead tr { +.tab-mission-control .safehomesTable thead tr { border-left: 1px solid #e4e4e4; border-right: 1px solid #e4e4e4; background-color: #828885; color: #FFF; } -.tab-mission-control .missionTable td, -.tab-mission-control .missionTable th { +.tab-mission-control .safehomesTable td, +.tab-mission-control .safehomesTable th { padding: 2px; height: 2.5em; } -.tab-mission-control .missionTable tr:nth-child(even) td, -.tab-mission-control .missionTable tr:nth-child(even) th { +.tab-mission-control .safehomesTable tr:nth-child(even) td, +.tab-mission-control .safehomesTable tr:nth-child(even) th { background-color: #ebe7e7; } diff --git a/tabs/mission_control.html b/tabs/mission_control.html index 29786174..2e4f6490 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -32,7 +32,7 @@
- +
diff --git a/tabs/mission_control.js b/tabs/mission_control.js index ef8d9b67..d07790d8 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -66,7 +66,8 @@ TABS.mission_control.initialize = function (callback) { if (CONFIGURATOR.connectionValid) { var loadChainer = new MSPChainerClass(); loadChainer.setChain([ - mspHelper.getMissionInfo + mspHelper.getMissionInfo, + mspHelper.loadSafehomes ]); loadChainer.setExitPoint(loadHtml); loadChainer.execute(); @@ -92,6 +93,10 @@ TABS.mission_control.initialize = function (callback) { $('#saveEepromMissionButton').hide(); isOffline = true; } + + $safehomesTable = $('.safehomesTable'); + $safehomesTableBody = $safehomesTable.find('tbody'); + if (typeof require !== "undefined") { loadSettings(); @@ -327,6 +332,7 @@ TABS.mission_control.initialize = function (callback) { var pointForSend = 0; var actionPointForSend = 0; var settings = { speed: 0, alt: 5000}; + var safehomeFromBuffer = []; ///////////////////////////////////////////// // Reinit Form @@ -379,15 +385,65 @@ TABS.mission_control.initialize = function (callback) { ///////////////////////////////////////////// // Manage Safehome - ///////////////////////////////////////////// - function getSafeHomePointFromFC() { - console.log("Test"); + ///////////////////////////////////////////// + function renderSafehomesTable() { + /* + * Process safehome table UI + */ + let safehomes = SAFEHOMES.get(); + $safehomesTableBody.find("*").remove(); + for (let safehomeIndex in safehomes) { + if (safehomes.hasOwnProperty(safehomeIndex)) { + const safehome = safehomes[safehomeIndex]; + console.log(safehome.getEnabled()); + + $safehomesTableBody.append('\ + \ + \ + \ + \ + \ + \ + \ + '); + + const $row = $safehomesTableBody.find('tr:last'); + +/* $row.find(".safehome-view-value").prop('checked',true)).change(function () { + + }); */ + + $row.find(".safehome-number").text(safehome.getNumber()+1); + + $row.find(".safehome-enabled-value").prop('checked',safehome.isUsed()).change(function () { + safehome.setEnabled($(this).val()); + }); + + $row.find(".safehome-lon").val(safehome.getLon()).change(function () { + safehome.setLon($(this).val()); + }); + + $row.find(".safehome-lat").val(safehome.getLat()).change(function () { + safehome.setLat($(this).val()); + }); + + $row.find("[data-role='role-servo-delete']").attr("data-index", safehomeIndex); + } + } + GUI.switchery(); + localize(); } - function loadSafehome() { - MSP.send_message(MSPCodes.MSP2_INAV_SAFEHOME, false, false, getSafeHomePointFromFC); - } + function renderSafehomesOnMap(safehomes) { + /* + * Process safehome on Map + */ + safehomes.get().forEach(function (safehome) { + console.log(safehome.getNumber()); + map.addLayer(addSafeHomeMarker(safehome)); + }); + } ///////////////////////////////////////////// // Manage Plotting functions ///////////////////////////////////////////// @@ -411,7 +467,7 @@ TABS.mission_control.initialize = function (callback) { $('#missionDistance').text(0); map.getLayers().forEach(function (t) { - if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined') { + if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined' && t.kind == "marker") { var geometry = t.getSource().getFeatures()[0].getGeometry(); var action = t.action; var markerNumber = t.number; @@ -548,7 +604,7 @@ TABS.mission_control.initialize = function (callback) { population: 4000, rainfall: 500 }); - + console.log(_pos); iconFeature.setStyle(getPointIcon(_action, false, String(markers.length))); var vectorSource = new ol.source.Vector({ @@ -558,7 +614,8 @@ TABS.mission_control.initialize = function (callback) { var vectorLayer = new ol.layer.Vector({ source: vectorSource }); - + + vectorLayer.kind = "marker"; vectorLayer.alt = _alt; vectorLayer.number = markers.length; vectorLayer.action = _action; @@ -572,6 +629,55 @@ TABS.mission_control.initialize = function (callback) { return vectorLayer; } + function getSafehomeIcon(safehome) { + return new ol.style.Style({ + image: new ol.style.Icon(({ + anchor: [0.5, 1], + opacity: 1, + scale: 0.5, + src: '../images/icons/cf_icon_safehome' + (safehome.isUsed() ? '_used' : '')+ '.png' + })), + text: new ol.style.Text(({ + text: String(Number(safehome.getNumber())+1), + font: '12px sans-serif', + offsetY: -15, + offsetX: -2, + fill: new ol.style.Fill({ + color: '#FFFFFF' + }), + stroke: new ol.style.Stroke({ + color: '#FFFFFF' + }), + })) + }); + } + + function addSafeHomeMarker(safehome) { + + var coord = ol.proj.fromLonLat([safehome.getLon(), safehome.getLat()]); + console.log(coord); + var iconFeature = new ol.Feature({ + geometry: new ol.geom.Point(coord), + name: 'Null Island', + population: 4000, + rainfall: 500 + }); + + iconFeature.setStyle(getSafehomeIcon(safehome)); + + var vectorSource = new ol.source.Vector({ + features: [iconFeature] + }); + + var vectorLayer = new ol.layer.Vector({ + source: vectorSource + }); + + vectorLayer.kind = "safehome"; + + return vectorLayer; + } + ///////////////////////////////////////////// // Manage Map construction ///////////////////////////////////////////// @@ -671,7 +777,8 @@ TABS.mission_control.initialize = function (callback) { var handleShowSafehome = function () { $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate', '#missionPlanerSettings').hide(); $('#missionPlanerSafeHome').fadeIn(300); - loadSafehome(); + renderSafehomesTable(); + renderSafehomesOnMap(SAFEHOMES); }; button.addEventListener('click', handleShowSafehome, false); @@ -1098,6 +1205,17 @@ TABS.mission_control.initialize = function (callback) { closeSettingsPanel(); }); + $('#saveSafehome').on('click', function () { + //settings = { speed: $('#MPdefaultPointSpeed').val(), alt: $('#MPdefaultPointAlt').val() }; + //saveSettings(); + //closeSettingsPanel(); + }); + + $('#cancelSafehome').on('click', function () { + loadSettings(); + closeSettingsPanel(); + }); + // Add function to update parameter i field in the selected Edit WP Box $('#pointType').on('change', function () { From 3f0208e96a12e63987182f2e442ef63fe31d3093 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Mon, 22 Mar 2021 22:39:02 +0100 Subject: [PATCH 22/58] Safehome : panel open/close --- src/css/tabs/mission_planer.css | 8 ++- tabs/mission_control.html | 6 +- tabs/mission_control.js | 122 +++++++++++++++++--------------- 3 files changed, 75 insertions(+), 61 deletions(-) diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index 40494421..2c3a0085 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -239,6 +239,12 @@ .tab-mission-control .safehomesTable { width: 100%; text-align: center; + font-size: 8px; +} + +.tab-mission-control .safehomesTable input[type="text"] { + font-size: 8px; + width: 100%; } .tab-mission-control .safehomesTable thead { @@ -254,7 +260,7 @@ .tab-mission-control .safehomesTable td, .tab-mission-control .safehomesTable th { padding: 2px; - height: 2.5em; + /* height: 2.5em; */ } .tab-mission-control .safehomesTable tr:nth-child(even) td, diff --git a/tabs/mission_control.html b/tabs/mission_control.html index 2e4f6490..31d2f0af 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -26,7 +26,7 @@ - diff --git a/tabs/mission_control.js b/tabs/mission_control.js index d07790d8..0ab18997 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -385,7 +385,16 @@ TABS.mission_control.initialize = function (callback) { ///////////////////////////////////////////// // Manage Safehome - ///////////////////////////////////////////// + ///////////////////////////////////////////// + + function closeSafehomePanel() { + $('#missionPlanerSafehome').hide(); + $('#missionPlanerTotalInfo').fadeIn(300); + if (selectedMarker !== null) { + $('#MPeditPoint').fadeIn(300); + } + } + function renderSafehomesTable() { /* * Process safehome table UI @@ -399,11 +408,11 @@ TABS.mission_control.initialize = function (callback) { $safehomesTableBody.append('\ \ - \ + \ \ - \ - \ - \ + \ + \ + \ \ '); @@ -440,10 +449,57 @@ TABS.mission_control.initialize = function (callback) { * Process safehome on Map */ safehomes.get().forEach(function (safehome) { - console.log(safehome.getNumber()); map.addLayer(addSafeHomeMarker(safehome)); }); } + + function getSafehomeIcon(safehome) { + return new ol.style.Style({ + image: new ol.style.Icon(({ + anchor: [0.5, 1], + opacity: 1, + scale: 0.5, + src: '../images/icons/cf_icon_safehome' + (safehome.isUsed() ? '_used' : '')+ '.png' + })), + text: new ol.style.Text(({ + text: String(Number(safehome.getNumber())+1), + font: '12px sans-serif', + offsetY: -15, + offsetX: -2, + fill: new ol.style.Fill({ + color: '#FFFFFF' + }), + stroke: new ol.style.Stroke({ + color: '#FFFFFF' + }), + })) + }); + } + + function addSafeHomeMarker(safehome) { + var coord = ol.proj.fromLonLat([safehome.getLon(), safehome.getLat()]); + console.log(coord); + var iconFeature = new ol.Feature({ + geometry: new ol.geom.Point(coord), + name: 'Null Island', + population: 4000, + rainfall: 500 + }); + + iconFeature.setStyle(getSafehomeIcon(safehome)); + + var vectorSource = new ol.source.Vector({ + features: [iconFeature] + }); + + var vectorLayer = new ol.layer.Vector({ + source: vectorSource + }); + + vectorLayer.kind = "safehome"; + + return vectorLayer; + } ///////////////////////////////////////////// // Manage Plotting functions ///////////////////////////////////////////// @@ -629,54 +685,7 @@ TABS.mission_control.initialize = function (callback) { return vectorLayer; } - function getSafehomeIcon(safehome) { - return new ol.style.Style({ - image: new ol.style.Icon(({ - anchor: [0.5, 1], - opacity: 1, - scale: 0.5, - src: '../images/icons/cf_icon_safehome' + (safehome.isUsed() ? '_used' : '')+ '.png' - })), - text: new ol.style.Text(({ - text: String(Number(safehome.getNumber())+1), - font: '12px sans-serif', - offsetY: -15, - offsetX: -2, - fill: new ol.style.Fill({ - color: '#FFFFFF' - }), - stroke: new ol.style.Stroke({ - color: '#FFFFFF' - }), - })) - }); - } - - function addSafeHomeMarker(safehome) { - - var coord = ol.proj.fromLonLat([safehome.getLon(), safehome.getLat()]); - console.log(coord); - var iconFeature = new ol.Feature({ - geometry: new ol.geom.Point(coord), - name: 'Null Island', - population: 4000, - rainfall: 500 - }); - iconFeature.setStyle(getSafehomeIcon(safehome)); - - var vectorSource = new ol.source.Vector({ - features: [iconFeature] - }); - - var vectorLayer = new ol.layer.Vector({ - source: vectorSource - }); - - vectorLayer.kind = "safehome"; - - return vectorLayer; - } ///////////////////////////////////////////// // Manage Map construction @@ -741,7 +750,7 @@ TABS.mission_control.initialize = function (callback) { button.style = 'background: url(\'../images/CF_settings_white.svg\') no-repeat 1px -1px;background-color: rgba(0,60,136,.5);'; var handleShowSettings = function () { - $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate', '#missionPlanerSafeHome').hide(); + $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate', '#missionPlanerSafehome').hide(); $('#missionPlanerSettings').fadeIn(300); }; @@ -776,7 +785,7 @@ TABS.mission_control.initialize = function (callback) { var handleShowSafehome = function () { $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate', '#missionPlanerSettings').hide(); - $('#missionPlanerSafeHome').fadeIn(300); + $('#missionPlanerSafehome').fadeIn(300); renderSafehomesTable(); renderSafehomesOnMap(SAFEHOMES); }; @@ -1212,8 +1221,7 @@ TABS.mission_control.initialize = function (callback) { }); $('#cancelSafehome').on('click', function () { - loadSettings(); - closeSettingsPanel(); + closeSafehomePanel(); }); From ef5c999428af3c32178518bbc5b48f1f23854a5a Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Wed, 24 Mar 2021 00:37:50 +0100 Subject: [PATCH 23/58] Waypoint Class --- gulpfile.js | 2 + js/fc.js | 6 ++- js/msp/MSPHelper.js | 45 +++++++++++++------- js/safehomeCollection.js | 1 - js/waypoint.js | 89 ++++++++++++++++++++++++++++++++++++++++ js/waypointCollection.js | 75 +++++++++++++++++++++++++++++++++ tabs/mission_control.js | 33 ++++++++------- 7 files changed, 220 insertions(+), 31 deletions(-) create mode 100644 js/waypoint.js create mode 100644 js/waypointCollection.js diff --git a/gulpfile.js b/gulpfile.js index a841329f..ede98db1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -122,6 +122,8 @@ sources.js = [ './js/defaults_dialog.js', './js/safehomeCollection.js', './js/safehome.js', + './js/waypointCollection.js', + './js/waypoint.js', './node_modules/openlayers/dist/ol.js' ]; diff --git a/js/fc.js b/js/fc.js index b4baeb52..71dcfa3a 100644 --- a/js/fc.js +++ b/js/fc.js @@ -235,7 +235,7 @@ var FC = { packetCount: 0 }; - MISSION_PLANER = { + /* MISSION_PLANER = { maxWaypoints: 0, isValidMission: 0, countBusyPoints: 0, @@ -250,7 +250,9 @@ var FC = { p2: 0, p3: 0 } - }; + }; */ + + MISSION_PLANER = new waypointCollection(); ANALOG = { voltage: 0, diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index d3ccb651..6ae41bbe 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -441,14 +441,24 @@ var mspHelper = (function (gui) { break; case MSPCodes.MSP_WP: console.log("data : ",data); - MISSION_PLANER.bufferPoint.number = data.getUint8(0); + MISSION_PLANER.put(new Waypoint( + data.getUint8(0), + data.getUint8(1), + data.getInt32(2, true) / 10000000, + data.getInt32(6, true) / 10000000, + data.getInt32(10, true), + data.getInt16(14, true), + data.getInt16(16, true), + data.getInt16(18, true) + )); + /* MISSION_PLANER.bufferPoint.number = data.getUint8(0); MISSION_PLANER.bufferPoint.action = data.getUint8(1); MISSION_PLANER.bufferPoint.lat = data.getInt32(2, true) / 10000000; MISSION_PLANER.bufferPoint.lon = data.getInt32(6, true) / 10000000; MISSION_PLANER.bufferPoint.alt = data.getInt32(10, true); MISSION_PLANER.bufferPoint.p1 = data.getInt16(14, true); MISSION_PLANER.bufferPoint.p2 = data.getInt16(16, true); - MISSION_PLANER.bufferPoint.p3 = data.getInt16(18, true); + MISSION_PLANER.bufferPoint.p3 = data.getInt16(18, true); */ break; case MSPCodes.MSP_BOXIDS: @@ -1380,9 +1390,9 @@ var mspHelper = (function (gui) { break; case MSPCodes.MSP_WP_GETINFO: // Reserved for waypoint capabilities data.getUint8(0); - MISSION_PLANER.maxWaypoints = data.getUint8(1); - MISSION_PLANER.isValidMission = data.getUint8(2); - MISSION_PLANER.countBusyPoints = data.getUint8(3); + MISSION_PLANER.setMaxWaypoints(data.getUint8(1)); + MISSION_PLANER.setValidMission(data.getUint8(2)); + MISSION_PLANER.setCountBusyPoints(data.getUint8(3)); break; case MSPCodes.MSP_SET_WP: console.log('Point saved'); @@ -1462,12 +1472,6 @@ var mspHelper = (function (gui) { SENSOR_DATA.temperature[i] = temp_decidegrees / 10; // °C } break; - /* case MSPCodes.MSP2_INAV_SAFEHOME: - SAFEHOME.bufferPoint.number = data.getUint8(0); - SAFEHOME.bufferPoint.enabled = data.getUint8(1); - SAFEHOME.bufferPoint.lon = data.getInt32(2, true); - SAFEHOME.bufferPoint.lat = data.getInt32(6, true); - break; */ case MSPCodes.MSP2_INAV_SAFEHOME: SAFEHOMES.put(new Safehome( data.getUint8(0), @@ -2928,9 +2932,22 @@ var mspHelper = (function (gui) { MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, callback); }; -/* self.getSafehomeInfo = function (callback) { - MSP.send_message(MSPCodes.MSP2_INAV_SAFEHOME, false, false, callback); - }; */ + self.loadWaypoints = function (callback) { + MISSION_PLANER.flush(); + getMissionInfo(); + let waypointId = 0; + MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, nextWaypoint); + + function nextWaypoint() { + waypointId++; + if (waypointId < SAFEHOMES.getMaxSafehomeCount()-1) { + MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, nextWaypoint); + } + else { + MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, callback); + } + }; + }; self.loadSafehomes = function (callback) { SAFEHOMES.flush(); diff --git a/js/safehomeCollection.js b/js/safehomeCollection.js index 4a8fd6ee..b22f9891 100644 --- a/js/safehomeCollection.js +++ b/js/safehomeCollection.js @@ -1,4 +1,3 @@ -/*global ServoMixRule*/ 'use strict'; let SafehomeCollection = function () { diff --git a/js/waypoint.js b/js/waypoint.js new file mode 100644 index 00000000..156011d5 --- /dev/null +++ b/js/waypoint.js @@ -0,0 +1,89 @@ +/*global $*/ +'use strict'; + +let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endMission=0, isUsed=true) { + + var self = {}; + + self.getNumber = function () { + return number; + }; + + self.setNumber = function (data) { + number = data; + }; + + self.isUsed = function () { + return isUsed; + }; + + self.setUsed = function (data) { + isUsed = data; + }; + + self.getLon = function () { + return lon; + }; + + self.setLon = function (data) { + lon = data; + }; + + self.getLat = function () { + return lat; + }; + + self.setLat = function (data) { + lat = data; + }; + + self.getAction = function () { + return action; + }; + + self.setAction = function (data) { + action = data; + }; + + self.getAlt = function () { + return alt; + }; + + self.setAlt = function (data) { + alt = data; + }; + + self.getP1 = function () { + return p1; + }; + + self.setP1 = function (data) { + p1 = data; + }; + + self.getP2 = function () { + return p2; + }; + + self.setP2 = function (data) { + p2 = data; + }; + + self.getP3 = function () { + return p3; + }; + + self.setP3 = function (data) { + p3 = data; + }; + + self.getEndMission = function () { + return endMission; + }; + + self.setEndMission = function (data) { + endMission = data; + }; + + return self; +}; \ No newline at end of file diff --git a/js/waypointCollection.js b/js/waypointCollection.js new file mode 100644 index 00000000..1198e909 --- /dev/null +++ b/js/waypointCollection.js @@ -0,0 +1,75 @@ +'use strict'; + +let WaypointCollection = function () { + + let self = {}, + data = [], + maxWaypoints = 0, + isValidMission = 0, + countBusyPoints = 0 + + self.getMaxWaypoints = function () { + return maxWaypoints; + }; + + self.setMaxWaypoints = function (data) { + maxWaypoints = data; + }; + + self.isValidMission = function () { + return maxWaypoints == 1; + }; + + self.setValidMission = function (data) { + isValidMission = data; + }; + + self.getCountBusyPoints = function () { + return countBusyPoints; + }; + + self.setCountBusyPoints = function (data) { + countBusyPoints = data; + }; + + self.put = function (element) { + data.push(element); + }; + + self.get = function () { + return data; + }; + + self.flush = function () { + data = []; + }; + + self.getWaypoint = function(waypointId) { + for (let waypointIndex in data) { + if (data.hasOwnProperty(waypointIndex)) { + let waypoint = data[waypointIndex]; + + if (waypoint.getNumber() == waypointId ) { + return waypoint; + } + } + } + }; + + self.drop = function (waypointId) { + self.getWaypoint(waypointId).setUsed(false); + var tmpData = []; + let idx = 0; + data.forEach(function (element) { + if (element.isUsed()) { + element.setNumber(idx) + tmpData.push(element); + idx++; + } + }); + + data = tmpData; + }; + + return self; +}; \ No newline at end of file diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 0ab18997..02ceedcb 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -16,16 +16,15 @@ MWNP.WPTYPE = { }; // Reverse WayPoint type dictionary -MWNP.WPTYPE.REV = { - 1: 'WAYPOINT', - 2: 'PH_UNLIM', - 3: 'PH_TIME', - 4: 'RTH', - 5: 'SET_POI', - 6: 'JUMP', - 7: 'SET_HEAD', - 8: 'LAND' -}; +function swap(dict) { + let rev_dict = {}; + for (let key in dict) { + rev_dict[dict[key]] = key; + } + return rev_dict; +} + +MWNP.WPTYPE.REV = swap(MWNP.WPTYPE); // Dictionary of Parameter1,2,3 definition depending on type of action selected (refer to MWNP.WPTYPE) var dictOfLabelParameterPoint = { @@ -67,6 +66,7 @@ TABS.mission_control.initialize = function (callback) { var loadChainer = new MSPChainerClass(); loadChainer.setChain([ mspHelper.getMissionInfo, + //mspHelper.loadWaypoints, mspHelper.loadSafehomes ]); loadChainer.setExitPoint(loadHtml); @@ -345,12 +345,12 @@ TABS.mission_control.initialize = function (callback) { $('#pointP1').val(''); $('#pointP2').val(''); $('#pointP3').val(''); - $('[name=Options]').filter('[value=None]').prop('checked', true); +/* $('[name=Options]').filter('[value=None]').prop('checked', true); $('#Options_LandRTH').prop('checked', false); $('#Options_TargetJUMP').val(0); $('#Options_NumberJUMP').val(0); $('#Options_HeadingHead').val(-1); - $('[name=pointNumber]').val(''); + $('[name=pointNumber]').val(''); */ $('#MPeditPoint').fadeOut(300); } @@ -386,7 +386,6 @@ TABS.mission_control.initialize = function (callback) { ///////////////////////////////////////////// // Manage Safehome ///////////////////////////////////////////// - function closeSafehomePanel() { $('#missionPlanerSafehome').hide(); $('#missionPlanerTotalInfo').fadeIn(300); @@ -453,7 +452,10 @@ TABS.mission_control.initialize = function (callback) { }); } - function getSafehomeIcon(safehome) { + function getSafehomeIcon(safehome) { + /* + * Process Safehome Icon + */ return new ol.style.Style({ image: new ol.style.Icon(({ anchor: [0.5, 1], @@ -477,6 +479,9 @@ TABS.mission_control.initialize = function (callback) { } function addSafeHomeMarker(safehome) { + /* + * add safehome on Map + */ var coord = ol.proj.fromLonLat([safehome.getLon(), safehome.getLat()]); console.log(coord); var iconFeature = new ol.Feature({ From 525943baf1ea9dc2ffccfafcaded113b429d4bd5 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Wed, 31 Mar 2021 19:32:58 +0200 Subject: [PATCH 24/58] Waypoint OOP migration 1.0 --- js/mission_control_module.mjs | 40 +++ js/waypoint.js | 27 +- js/waypointCollection.js | 108 +++++++- tabs/mission_control.js | 456 ++++++++++++++++++++++++++-------- 4 files changed, 531 insertions(+), 100 deletions(-) create mode 100644 js/mission_control_module.mjs diff --git a/js/mission_control_module.mjs b/js/mission_control_module.mjs new file mode 100644 index 00000000..d16c70b4 --- /dev/null +++ b/js/mission_control_module.mjs @@ -0,0 +1,40 @@ +'use strict'; + +// MultiWii NAV Protocol +exports.MWNP = MWNP || {}; + +// WayPoint type +MWNP.WPTYPE = { + WAYPOINT: 1, + PH_UNLIM: 2, + PH_TIME: 3, + RTH: 4, + SET_POI: 5, + JUMP: 6, + SET_HEAD: 7, + LAND: 8 +}; + +// Reverse WayPoint type dictionary +function swap(dict) { + let rev_dict = {}; + for (let key in dict) { + rev_dict[dict[key]] = key; + } + return rev_dict; +} + +MWNP.WPTYPE.REV = swap(MWNP.WPTYPE); + +// Dictionary of Parameter1,2,3 definition depending on type of action selected (refer to MWNP.WPTYPE) +exports.dictOfLabelParameterPoint = { + 1: {parameter1: 'Speed (cm/s)', parameter2: '', parameter3: ''}, + 2: {parameter1: '', parameter2: '', parameter3: ''}, + 3: {parameter1: 'Wait time (s)', parameter2: 'Speed (cm/s)', parameter3: ''}, + 4: {parameter1: 'Force land (non zero)', parameter2: '', parameter3: ''}, + 5: {parameter1: '', parameter2: '', parameter3: ''}, + 6: {parameter1: 'Target WP number', parameter2: 'Number of repeat (-1: infinite)', parameter3: ''}, + 7: {parameter1: 'Heading (deg)', parameter2: '', parameter3: ''}, + 8: {parameter1: '', parameter2: '', parameter3: ''} +}; + diff --git a/js/waypoint.js b/js/waypoint.js index 156011d5..dd6c2a7c 100644 --- a/js/waypoint.js +++ b/js/waypoint.js @@ -1,9 +1,10 @@ /*global $*/ 'use strict'; -let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endMission=0, isUsed=true) { +let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endMission=0, isUsed=true, isAttached=false, attachedId="") { var self = {}; + let layerNumber = "undefined"; self.getNumber = function () { return number; @@ -13,6 +14,14 @@ let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endM number = data; }; + self.getLayerNumber = function () { + return layerNumber; + }; + + self.setLayerNumber = function (data) { + layerNumber = data; + }; + self.isUsed = function () { return isUsed; }; @@ -20,6 +29,14 @@ let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endM self.setUsed = function (data) { isUsed = data; }; + + self.isAttached = function () { + return isAttached; + }; + + self.setAttached = function (data) { + isAttached = data; + }; self.getLon = function () { return lon; @@ -84,6 +101,14 @@ let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endM self.setEndMission = function (data) { endMission = data; }; + + self.getAttachedId = function () { + return attachedId; + }; + + self.setAttachedId = function (data) { + attachedId = data; + }; return self; }; \ No newline at end of file diff --git a/js/waypointCollection.js b/js/waypointCollection.js index 1198e909..50735e7e 100644 --- a/js/waypointCollection.js +++ b/js/waypointCollection.js @@ -1,4 +1,7 @@ 'use strict'; +//import { MWNP.WPTYPE, MWNP.WPTYPE.REV } from '/js/mission_control_module.mjs'; +//const { MWNP } = require('./js/mission_control_module.mjs') + let WaypointCollection = function () { @@ -6,7 +9,9 @@ let WaypointCollection = function () { data = [], maxWaypoints = 0, isValidMission = 0, - countBusyPoints = 0 + countBusyPoints = 0, + version = 0, + center = {} self.getMaxWaypoints = function () { return maxWaypoints; @@ -31,6 +36,30 @@ let WaypointCollection = function () { self.setCountBusyPoints = function (data) { countBusyPoints = data; }; + + self.getVersion = function () { + return version; + }; + + self.setVersion = function (data) { + version = data; + }; + + self.getCenter = function () { + return center; + }; + + self.setCenterZoom = function (data) { + center.zoom = data; + }; + + self.setCenterLon = function (data) { + center.lon = data; + }; + + self.setCenterLat = function (data) { + center.lat = data; + }; self.put = function (element) { data.push(element); @@ -39,6 +68,10 @@ let WaypointCollection = function () { self.get = function () { return data; }; + + self.isEmpty = function () { + return data == []; + }; self.flush = function () { data = []; @@ -56,6 +89,41 @@ let WaypointCollection = function () { } }; + self.updateWaypoint = function(newWaypoint) { + if (newWaypoint.isUsed()) { + data[newWaypoint.getNumber()] = newWaypoint; + } + }; + + self.dropWaypoint = function(newWaypoint) { + self.getWaypoint(newWaypoint.getNumber()).setUsed(false); + var tmpData = []; + let idx = 0; + data.forEach(function (element) { + if (element.isUsed()) { + element.setNumber(idx) + tmpData.push(element); + idx++; + } + }); + + data = tmpData; + + }; + + self.insertWaypoint = function (newWaypoint, indexId) { + data.forEach(function (wp) { + if (wp.getNumber() >= indexId) { + wp.setNumber(wp.getNumber()+1); + } + if (wp.getAction() == MWNP.WPTYPE.JUMP && wp.getP1()>=indexId) { + wp.setP1(wp.getP1()+1); + } + }); + data.splice(indexId, 0, newWaypoint); + }; + + self.drop = function (waypointId) { self.getWaypoint(waypointId).setUsed(false); var tmpData = []; @@ -70,6 +138,44 @@ let WaypointCollection = function () { data = tmpData; }; + + self.update = function (bMWPfile=false) { + let oldWPNumber = 0; + let idx = 0; + data.forEach(function (element) { + if (element.isUsed()) { + if (bMWPfile) { + element.setNumber(element.getNumber()-1); + if (element.getAction() == MWNP.WPTYPE.JUMP) { + element.setP1(element.getP1()-1); + } + } + if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(element.getAction())) { + element.setAttachedId(oldWPNumber); + element.setAttached(true); + } + else { + oldWPNumber = element.getNumber(); + element.setLayerNumber(idx); + idx++; + } + } + }); + }; + + + + self.getAttachedList = function () { + let tmpData = []; + data.forEach(function (element) { + if (element.isAttached()) { + tmpData.push(element); + } + }); + + return tmpData; + } + return self; }; \ No newline at end of file diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 02ceedcb..945a5088 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1,4 +1,6 @@ 'use strict'; +//import { MWNP.WPTYPE, MWNP.WPTYPE.REV } from './js/mission_control_module.mjs'; +//const { MWNP } = require('./js/mission_control_module.mjs') // MultiWii NAV Protocol var MWNP = MWNP || {}; @@ -333,6 +335,7 @@ TABS.mission_control.initialize = function (callback) { var actionPointForSend = 0; var settings = { speed: 0, alt: 5000}; var safehomeFromBuffer = []; + var mission = new WaypointCollection(); ///////////////////////////////////////////// // Reinit Form @@ -482,7 +485,7 @@ TABS.mission_control.initialize = function (callback) { /* * add safehome on Map */ - var coord = ol.proj.fromLonLat([safehome.getLon(), safehome.getLat()]); + let coord = ol.proj.fromLonLat([safehome.getLon(), safehome.getLat()]); console.log(coord); var iconFeature = new ol.Feature({ geometry: new ol.geom.Point(coord), @@ -509,7 +512,7 @@ TABS.mission_control.initialize = function (callback) { // Manage Plotting functions ///////////////////////////////////////////// // Function to repaint lines between markers - function repaint() { +/* function repaint() { var oldPos; var oldAction; var poiNumber; @@ -582,48 +585,12 @@ TABS.mission_control.initialize = function (callback) { textGeom.setCoordinates(map.getCoordinateFromPixel([0,0])); } } - + */ // function modified to take into account optional argument such color, linedash and line label - function paintLine(pos1, pos2, color='#1497f1', lineDash=0, lineText="") { - var line = new ol.geom.LineString([pos1, pos2]); - var feature = new ol.Feature({ - geometry: line - }); - feature.setStyle(new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: color, - width: 3, - lineDash: [lineDash] - }), - text: new ol.style.Text({ - text: lineText, - placement : 'line', - textBaseline: 'ideographic', - stroke: new ol.style.Stroke({ - color: color - }), - }), - })); - - var vectorSource = new ol.source.Vector({ - features: [feature] - }); - - var vectorLayer = new ol.layer.Vector({ - source: vectorSource - }); - - lines.push(vectorLayer); - - var length = ol.Sphere.getLength(line) + parseFloat($('#missionDistance').text()); - $('#missionDistance').text(length.toFixed(3)); - - map.addLayer(vectorLayer); - } // Function modified to add action name and marker numbering to help changing icon depending on those items - function getPointIcon(_action, isEdit, markerNumber='') { +/* function getPointIcon(_action, isEdit, markerNumber='') { var dictofPoint = { 1: 'WP', 2: 'PH', @@ -655,10 +622,10 @@ TABS.mission_control.initialize = function (callback) { }), })) }); - } + } */ // Function modified by adding parameter 1,2,3 needed in MSP, plus options dictionary to take into account WP behavior changer such as JUMP, SET_HEAD, RTH - function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0, _options={key: "None"}) { +/* function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0, _options={key: "None"}) { var iconFeature = new ol.Feature({ geometry: new ol.geom.Point(_pos), name: 'Null Island', @@ -688,9 +655,229 @@ TABS.mission_control.initialize = function (callback) { markers.push(vectorLayer); return vectorLayer; + } */ + + ///////////////////////////////////////////// + // Manage Waypoint + ///////////////////////////////////////////// + + function removeAllWaypoints() { + mission = new WaypointCollection(); + cleanLayers(); + clearEditForm(); + updateTotalInfo(); } + function addWaypointMarker(waypoint) { + let coord = ol.proj.fromLonLat([waypoint.getLon(), waypoint.getLat()]); + var iconFeature = new ol.Feature({ + geometry: new ol.geom.Point(coord), + name: 'Null Island', + population: 4000, + rainfall: 500 + }); + iconFeature.setStyle(getWaypointIcon(waypoint, false)); + var vectorSource = new ol.source.Vector({ + features: [iconFeature] + }); + + var vectorLayer = new ol.layer.Vector({ + source: vectorSource + }); + + vectorLayer.kind = "waypoint"; + vectorLayer.number = waypoint.getNumber(); + vectorLayer.layerNumber = waypoint.getLayerNumber(); +/* vectorLayer.alt = _alt; + vectorLayer.number = markers.length; + vectorLayer.action = _action; + vectorLayer.parameter1 = _parameter1; + vectorLayer.parameter2 = _parameter2; + vectorLayer.parameter3 = _parameter3; + vectorLayer.options = _options;*/ + + markers.push(vectorLayer); + + return vectorLayer; + } + + function getWaypointIcon(waypoint, isEdit) { + var dictofPointIcon = { + 1: 'WP', + 2: 'PH', + 3: 'PH', + 5: 'POI', + 8: 'LDG' + }; + + return new ol.style.Style({ + image: new ol.style.Icon(({ + anchor: [0.5, 1], + opacity: 1, + scale: 0.5, + src: '../images/icons/cf_icon_position' + (dictofPointIcon[waypoint.getAction()] != '' ? '_'+dictofPointIcon[waypoint.getAction()] : '') + (isEdit ? '_edit' : '')+ '.png' + })), + text: new ol.style.Text(({ + text: String(Number(waypoint.getLayerNumber()+1)), + font: '12px sans-serif', + offsetY: -15, + offsetX: -2, + fill: new ol.style.Fill({ + color: '#FFFFFF' + }), + stroke: new ol.style.Stroke({ + color: '#FFFFFF' + }), + })) + }); + } + + + function repaintLine4Waypoints(mission) { + let oldPos, + oldAction, + poiList = [], + oldHeading; + let activatePoi = false; + let activateHead = false; + $('#missionDistance').text(0); + cleanLines(); + mission.get().forEach(function (element) { + console.log(element.getNumber()); + if (!element.isAttached()) { + /* console.log("Not Attached"); + console.log("element.getAction() : ",MWNP.WPTYPE.REV[element.getAction()]); + console.log("element.getP1() : ",element.getP1()); */ + let coord = ol.proj.fromLonLat([element.getLon(), element.getLat()]); + if (element.getAction() == 5) { + // If action is Set_POI, increment counter of POI + poiList.push(element.getNumber()); + activatePoi = true; + } + else { + // If classic WPs, draw standard line in-between + if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead != true){ + paintLine(oldPos, coord, element.getNumber()); + } + // If one is POI, draw orange line in-between and modulate dashline each time a new POI is defined + else if (typeof oldPos !== 'undefined' && activatePoi == true && activateHead != true) { + if ((poiList % 2) == 0) { + paintLine(oldPos, coord, element.getNumber(), color='#ffb725', lineDash=5); + } + else { + paintLine(oldPos, coord, element.getNumber(), color='#ffb725'); + } + } + // If one is SET_HEAD, draw labelled line in-between with heading value + else if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead == true) { + paintLine(oldPos, coord, element.getNumber(), color='#1497f1', lineDash=0, lineText=String(oldHeading)+"°"); + } + oldPos = coord; + } + } + else if (element.isAttached()) { + /* console.log("Attached"); + console.log("element.getAction() : ",MWNP.WPTYPE.REV[element.getAction()]); + console.log("e lement.getP1() : ",element.getP1());*/ + // If classic WPs is defined with a JUMP options, draw pink dashed line in-between + if (element.getAction() == MWNP.WPTYPE.JUMP) { + let coord = ol.proj.fromLonLat([mission.getWaypoint(element.getP1()).getLon(), mission.getWaypoint(element.getP1()).getLat()]); + paintLine(oldPos, coord, element.getNumber(), color='#e935d6', lineDash=5, lineText="Repeat x"+String(element.getP2()), selection=false); + } + // If classic WPs is defined with a heading = -1, change Boolean for POI to false. If it is defined with a value different from -1, activate Heading boolean + else if (element.getAction() == MWNP.WPTYPE.SET_HEAD) { + if (element.getP1() == -1) { + activatePoi = false; + activateHead = false; + oldHeading = 'undefined' + } + else if (typeof element.getP1() != 'undefined' && element.getP1() != -1) { + activateHead = true; + oldHeading = String(element.getP1()); + } + } + } + }); + //reset text position + if (textGeom) { + textGeom.setCoordinates(map.getCoordinateFromPixel([0,0])); + } + } + + function paintLine(pos1, pos2, pos2ID, color='#1497f1', lineDash=0, lineText="", selection=true) { + var line = new ol.geom.LineString([pos1, pos2]); + + var feature = new ol.Feature({ + geometry: line + }); + feature.setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: color, + width: 3, + lineDash: [lineDash] + }), + text: new ol.style.Text({ + text: lineText, + placement : 'line', + textBaseline: 'ideographic', + stroke: new ol.style.Stroke({ + color: color + }), + }), + })); + + var vectorSource = new ol.source.Vector({ + features: [feature] + }); + + var vectorLayer = new ol.layer.Vector({ + source: vectorSource + }); + + + vectorLayer.kind = "line"; + vectorLayer.selection = selection; + vectorLayer.number = pos2ID; + //console.log("pos2ID : ",pos2ID); + + lines.push(vectorLayer); + + var length = ol.Sphere.getLength(line) + parseFloat($('#missionDistance').text()); + $('#missionDistance').text(length.toFixed(3)); + + map.addLayer(vectorLayer); + } + + function cleanLayers() { + for (var i in lines) { + map.removeLayer(lines[i]); + } + lines = []; + + for (var i in markers) { + map.removeLayer(markers[i]); + } + markers = []; + } + + function cleanLines() { + for (var i in lines) { + map.removeLayer(lines[i]); + } + lines = []; + } + + function redrawLayers() { + if (!mission.isEmpty()) { + mission.get().forEach(function (element) { + if (!element.isAttached()) { + map.addLayer(addWaypointMarker(element)); + } + }); + } + repaintLine4Waypoints(mission); + } ///////////////////////////////////////////// // Manage Map construction @@ -841,6 +1028,10 @@ TABS.mission_control.initialize = function (callback) { function (feature, layer) { return feature; }); + var tempMarker = map.forEachFeatureAtPixel(evt.pixel, + function (feature, layer) { + return layer; + }); var deltaX = evt.coordinate[0] - this.coordinate_[0]; var deltaY = evt.coordinate[1] - this.coordinate_[1]; @@ -851,7 +1042,15 @@ TABS.mission_control.initialize = function (callback) { this.coordinate_[0] = evt.coordinate[0]; this.coordinate_[1] = evt.coordinate[1]; - repaint(); + + let coord = ol.proj.toLonLat(geometry.getCoordinates()); + if (tempMarker.kind == "waypoint") { + let tempWp = mission.getWaypoint(tempMarker.number); + tempWp.setLon(coord[0]); + tempWp.setLat(coord[1]); + mission.updateWaypoint(tempWp); + } + repaintLine4Waypoints(mission); }; /** @@ -960,6 +1159,66 @@ TABS.mission_control.initialize = function (callback) { }); map.on('click', function (evt) { + if (selectedMarker != null) { + try { + //selectedFeature.getSource().getFeatures()[0].setStyle(getWaypointIcon(selectedMarker, false)); + selectedMarker = null; + clearEditForm(); + } catch (e) { + GUI.log(e); + } + } + var selectedFeature = map.forEachFeatureAtPixel(evt.pixel, + function (feature, layer) { + return feature; + }); + var tempMarker = map.forEachFeatureAtPixel(evt.pixel, + function (feature, layer) { + return layer; + }); + if (selectedFeature && tempMarker.kind == "waypoint") { + selectedMarker = mission.getWaypoint(tempMarker.number); + var geometry = selectedFeature.getGeometry(); + var coord = ol.proj.toLonLat(geometry.getCoordinates()); + + selectedFeature.setStyle(getWaypointIcon(selectedMarker, true)); + + var altitudeMeters = app.ConvertCentimetersToMeters(selectedMarker.getAlt()); + + $('#altitudeInMeters').text(` ${altitudeMeters}m`); + $('#pointLon').val(Math.round(coord[0] * 10000000) / 10000000); + $('#pointLat').val(Math.round(coord[1] * 10000000) / 10000000); + $('#pointAlt').val(selectedMarker.getAlt()); + $('#pointType').val(selectedMarker.getAction()); + // Change SpeedValue to Parameter1, 2, 3 + $('#pointP1').val(selectedMarker.getP1()); + $('#pointP2').val(selectedMarker.getP2()); + $('#pointP3').val(selectedMarker.getP3()); + $('#MPeditPoint').fadeIn(300); + } + else if (selectedFeature && tempMarker.kind == "line" && tempMarker.selection) { + let tempWpCoord = ol.proj.toLonLat(evt.coordinate); + let tempWp = new Waypoint(tempMarker.number, MWNP.WPTYPE.WAYPOINT, tempWpCoord[1], tempWpCoord[0], alt=settings.alt, p1=settings.speed); + //console.log("tempMarker.number : ",tempMarker.number); + //console.log("mission : ",mission.getWaypoint(tempMarker.number), mission.getWaypoint(tempMarker.number)); + mission.insertWaypoint(tempWp, tempMarker.number); + mission.update(); + cleanLayers(); + redrawLayers(); + } + else { + let tempWpCoord = ol.proj.toLonLat(evt.coordinate); + let tempWp = new Waypoint(mission.get().length, MWNP.WPTYPE.WAYPOINT, tempWpCoord[1], tempWpCoord[0], alt=settings.alt, p1=settings.speed); + mission.put(tempWp); + mission.update(); + cleanLayers(); + redrawLayers(); + } + + }); + + + /* map.on('click', function (evt) { if (selectedMarker != null) { try { selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action, false, selectedMarker.number)); @@ -1033,7 +1292,7 @@ TABS.mission_control.initialize = function (callback) { map.addLayer(addMarker(evt.coordinate, settings.alt, MWNP.WPTYPE.WAYPOINT, settings.speed)); repaint(); } - }); + }); */ // change mouse cursor when over marker $(map.getViewport()).on('mousemove', function (e) { @@ -1062,25 +1321,18 @@ TABS.mission_control.initialize = function (callback) { $('#removeAllPoints').on('click', function () { if (markers.length && confirm(chrome.i18n.getMessage('confirm_delete_all_points'))) { - removeAllPoints(); + removeAllWaypoints(); } }); $('#removePoint').on('click', function () { if (selectedMarker) { - - var tmp = []; - for (var i in markers) { - if (markers[i] !== selectedMarker && typeof markers[i].action !== "undefined") { - tmp.push(markers[i]); - } - } - map.removeLayer(selectedMarker); - markers = tmp; + mission.dropWaypoint(selectedMarker); selectedMarker = null; - + mission.update(); + cleanLayers(); + redrawLayers(); clearEditForm(); - repaint(); } }); @@ -1154,7 +1406,7 @@ TABS.mission_control.initialize = function (callback) { $('#loadFileMissionButton').on('click', function () { if (markers.length && !confirm(chrome.i18n.getMessage('confirm_delete_all_points'))) return; - removeAllPoints(); + removeAllWaypoints(); nwdialog.setContext(document); nwdialog.openFileDialog(function(result) { loadMissionFile(result); @@ -1170,7 +1422,7 @@ TABS.mission_control.initialize = function (callback) { $('#loadMissionButton').on('click', function () { if (markers.length && !confirm(chrome.i18n.getMessage('confirm_delete_all_points'))) return; - removeAllPoints(); + removeAllWaypoints(); $(this).addClass('disabled'); GUI.log('Start get point'); // Reinit some internal parameters @@ -1198,7 +1450,7 @@ TABS.mission_control.initialize = function (callback) { $('#loadEepromMissionButton').on('click', function () { if (markers.length && !confirm(chrome.i18n.getMessage('confirm_delete_all_points'))) return; - removeAllPoints(); + removeAllWaypoints(); GUI.log(chrome.i18n.getMessage('eeprom_load_ok')); MSP.send_message(MSPCodes.MSP_WP_MISSION_LOAD, [0], getPointsFromEprom); @@ -1252,15 +1504,7 @@ TABS.mission_control.initialize = function (callback) { ///////////////////////////////////////////// // Manage Buttons toolbox ///////////////////////////////////////////// - function removeAllPoints() { - for (var i in markers) { - map.removeLayer(markers[i]); - } - markers = []; - clearEditForm(); - updateTotalInfo(); - repaint(); - } + function loadMissionFile(filename) { const fs = require('fs'); @@ -1279,7 +1523,7 @@ TABS.mission_control.initialize = function (callback) { } // parse mission file - var mission = { points: [] }; + removeAllWaypoints(); var node = null; var nodemission = null; for (var noderoot in result) { @@ -1291,69 +1535,85 @@ TABS.mission_control.initialize = function (callback) { if (node['#name'].match(/version/i) && node.$) { for (var attr in node.$) { if (attr.match(/value/i)) { - mission.version = node.$[attr] + mission.setVersion(node.$[attr]); } } } else if (node['#name'].match(/mwp/i) && node.$) { - mission.center = {}; for (var attr in node.$) { if (attr.match(/zoom/i)) { - mission.center.zoom = parseInt(node.$[attr]); + mission.setCenterZoom(parseInt(node.$[attr])); } else if (attr.match(/cx/i)) { - mission.center.lon = parseFloat(node.$[attr]); + mission.setCenterLon(parseFloat(node.$[attr])); } else if (attr.match(/cy/i)) { - mission.center.lat = parseFloat(node.$[attr]); + mission.setCenterLat(parseFloat(node.$[attr])); } } } else if (node['#name'].match(/missionitem/i) && node.$) { - var point = {}; + //var point = {}; + var point = new Waypoint(0,0,0,0); for (var attr in node.$) { if (attr.match(/no/i)) { - point.index = parseInt(node.$[attr]); + point.setNumber(parseInt(node.$[attr])); } else if (attr.match(/action/i)) { if (node.$[attr].match(/WAYPOINT/i)) { - point.action = MWNP.WPTYPE.WAYPOINT; + point.setAction(MWNP.WPTYPE.WAYPOINT); } else if (node.$[attr].match(/PH_UNLIM/i) || node.$[attr].match(/POSHOLD_UNLIM/i)) { - point.action = MWNP.WPTYPE.PH_UNLIM; + point.setAction(MWNP.WPTYPE.PH_UNLIM); } else if (node.$[attr].match(/PH_TIME/i) || node.$[attr].match(/POSHOLD_TIME/i)) { - point.action = MWNP.WPTYPE.PH_TIME; + point.setAction(MWNP.WPTYPE.PH_TIME); } else if (node.$[attr].match(/RTH/i)) { - point.action = MWNP.WPTYPE.RTH; + point.setAction(MWNP.WPTYPE.RTH); } else if (node.$[attr].match(/SET_POI/i)) { - point.action = MWNP.WPTYPE.SET_POI; + point.setAction(MWNP.WPTYPE.SET_POI); } else if (node.$[attr].match(/JUMP/i)) { - point.action = MWNP.WPTYPE.JUMP; + point.setAction(MWNP.WPTYPE.JUMP); } else if (node.$[attr].match(/SET_HEAD/i)) { - point.action = MWNP.WPTYPE.SET_HEAD; + point.setAction(MWNP.WPTYPE.SET_HEAD); } else if (node.$[attr].match(/LAND/i)) { - point.action = MWNP.WPTYPE.LAND; + point.setAction(MWNP.WPTYPE.LAND); } else { - point.action = 0; + point.setAction(0); } } else if (attr.match(/lat/i)) { - point.lat = parseFloat(node.$[attr]); + point.setLat(parseFloat(node.$[attr])); } else if (attr.match(/lon/i)) { - point.lon = parseFloat(node.$[attr]); + point.setLon(parseFloat(node.$[attr])); } else if (attr.match(/alt/i)) { - point.alt = (parseInt(node.$[attr]) * 100); + point.setAlt((parseInt(node.$[attr]) * 100)); } else if (attr.match(/parameter1/i)) { - point.p1 = parseInt(node.$[attr]); + point.setP1(parseInt(node.$[attr])); } else if (attr.match(/parameter2/i)) { - point.p2 = parseInt(node.$[attr]); + point.setP2(parseInt(node.$[attr])); } else if (attr.match(/parameter3/i)) { - point.p3 = parseInt(node.$[attr]); + point.setP3(parseInt(node.$[attr])); } } - mission.points.push(point); + mission.put(point); } } } } } - // draw actual mission - removeAllPoints(); - // Create nonMarkerPointListRead list to store index of non marker point (i.e RTH, SET_HEAD, JUMP) => useful for JUMP part + + + // update Attached Waypoints (i.e non Map Markers) + mission.update(true); + if (mission.getCenter() != {}) { + var coord = ol.proj.fromLonLat([mission.getCenter().lon, mission.getCenter().lat]); + map.getView().setCenter(coord); + if (mission.getCenter().zoom) map.getView().setZoom(mission.getCenter().zoom); + } + else { + var coord = ol.proj.fromLonLat([mission.getWaypoint(0).getCenter().lon, mission.getWaypoint(0).getCenter().lat]); + map.getView().setCenter(coord); + map.getView().setZoom(16); + } + + redrawLayers(); + updateTotalInfo(); + + /* // Create nonMarkerPointListRead list to store index of non marker point (i.e RTH, SET_HEAD, JUMP) => useful for JUMP part var nonMarkerPointListRead =[] for (var i = 0; i < mission.points.length; i++) { if ([MWNP.WPTYPE.JUMP,MWNP.WPTYPE.SET_HEAD,MWNP.WPTYPE.RTH].includes(mission.points[i].action)) {nonMarkerPointListRead.push(mission.points[i].index);}; @@ -1403,10 +1663,10 @@ TABS.mission_control.initialize = function (callback) { var coord = ol.proj.fromLonLat([mission.center.lon, mission.center.lat]); map.getView().setCenter(coord); if (mission.center.zoom) map.getView().setZoom(mission.center.zoom); - } + } */ - repaint(); - updateTotalInfo(); + //repaint(); + //updateTotalInfo(); }); From 65fa753b983ed2a9d6e0fcd604a0d02191027af7 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 2 Apr 2021 00:53:03 +0200 Subject: [PATCH 25/58] Waypoint OOP version 1.1 --- _locales/en/messages.json | 15 + images/icons/cf_icon_position.svg | 495 +++--------------------------- js/waypointCollection.js | 27 +- src/css/tabs/mission_planer.css | 31 ++ tabs/mission_control.html | 24 +- tabs/mission_control.js | 83 ++++- 6 files changed, 200 insertions(+), 475 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 8c294646..da909fde 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3612,5 +3612,20 @@ }, "SafehomeLat": { "message": "Lat" + }, + "WaypointOptionSelected": { + "message": "" + }, + "WaypointOptionId": { + "message": "#" + }, + "WaypointOptionAction": { + "message": "Type" + }, + "WaypointOptionP1": { + "message": "P1" + }, + "WaypointOptionP2": { + "message": "P2" } } diff --git a/images/icons/cf_icon_position.svg b/images/icons/cf_icon_position.svg index 737334dc..4d28ec01 100644 --- a/images/icons/cf_icon_position.svg +++ b/images/icons/cf_icon_position.svg @@ -15,7 +15,7 @@ id="svg8" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" sodipodi:docname="cf_icon_position.svg" - inkscape:export-filename="C:\Users\arnau\Documents\GitHub\inav-configurator\images\icons\cf_icon_position_PH_edit.png" + inkscape:export-filename="C:\Users\arnau\Documents\GitHub\inav-configurator\images\icons\cf_icon_safehome_used.png" inkscape:export-xdpi="74.705879" inkscape:export-ydpi="74.705879"> image/svg+xml - + @@ -199,451 +199,7 @@ width="35.277775" height="35.277775" preserveAspectRatio="none" - xlink:href="data:image/png;base64,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 -P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4 -bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1 -LjYtYzA2NyA3OS4xNTc3NDcsIDIwMTUvMDMvMzAtMjM6NDA6NDIgICAgICAgICI+CiAgIDxyZGY6 -UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z -IyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z -OnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9 -Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBN -TT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RF -dnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAg -ICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S -ZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2Jl -LmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFk -b2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9i -ZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3No -b3AgQ0MgMjAxNSAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNy -ZWF0ZURhdGU+MjAxNS0xMS0yNVQwMjo0NTo0OSswMTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAg -ICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTYtMDUtMjRUMTc6MDk6NDUrMDI6MDA8L3htcDpNZXRh -ZGF0YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE2LTA1LTI0VDE3OjA5OjQ1KzAy -OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZv -cm1hdD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo1ZjZhNWNhMC0xOTA1LTRm -YjAtYmM4Mi0wNzI5MzlhMDU3MGY8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpE -b2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2YzhjYzA3NC1kOTdmLTExNzgtYjJiMS1m -OGMyYWUyOWIyYTU8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERv -Y3VtZW50SUQ+eG1wLmRpZDo4MTVjNjI4Yy1jOTE1LTRmMTYtYTNjNC02NzUyMWVhNDFlOTE8L3ht -cE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAg -ICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291 -cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rp -b24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ODE1YzYyOGMt -YzkxNS00ZjE2LWEzYzQtNjc1MjFlYTQxZTkxPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAg -ICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTExLTI1VDAyOjQ1OjQ5KzAxOjAwPC9zdEV2dDp3aGVu -PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3Ag -Q0MgMjAxNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAg -PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui -PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAg -ICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NDc3NDczYTEtYmU0Ni00 -NDgzLTljMzItYzRiNjZmYWFiYTM0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAg -ICA8c3RFdnQ6d2hlbj4yMDE1LTExLTI1VDAyOjQ3OjQ5KzAxOjAwPC9zdEV2dDp3aGVuPgogICAg -ICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAx -NSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0 -RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAg -ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg -ICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAg -ICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NTkxMTkzNmYtYzdhOS00YzNkLThhMTEtMjIy -MzE4YWJkNzg1PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hl -bj4yMDE1LTEyLTAzVDE4OjAwOjEzKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAg -ICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoTWFjaW50b3No -KTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+ -Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg -IDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RF -dnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RF -dnQ6cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1h -Z2UvcG5nPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg -ICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAg -ICAgIDxzdEV2dDphY3Rpb24+ZGVyaXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAg -ICA8c3RFdnQ6cGFyYW1ldGVycz5jb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUu -cGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAg -PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui -PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAg -ICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MjVjNTk3ZDYtZTNiMy00 -ZmQ2LWFhNzYtNTY1ZDZmODMxOTAxPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAg -ICA8c3RFdnQ6d2hlbj4yMDE1LTEyLTAzVDE4OjAwOjEzKzAxOjAwPC9zdEV2dDp3aGVuPgogICAg -ICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAx -NSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0 -RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAg -ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg -ICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAg -ICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NWY2YTVjYTAtMTkwNS00ZmIwLWJjODItMDcy -OTM5YTA1NzBmPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hl -bj4yMDE2LTA1LTI0VDE3OjA5OjQ1KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAg -ICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAyMiAoTWFjaW50b3No -KTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+ -Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwv -cmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZl -ZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFu -Y2VJRD54bXAuaWlkOjU5MTE5MzZmLWM3YTktNGMzZC04YTExLTIyMjMxOGFiZDc4NTwvc3RSZWY6 -aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhv -dG9zaG9wOmI2OGM2MzhhLWQzYTQtMTE3OC1hOGI3LTlmMjljMjNkOGU3NDwvc3RSZWY6ZG9jdW1l -bnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjgxNWM2 -MjhjLWM5MTUtNGYxNi1hM2M0LTY3NTIxZWE0MWU5MTwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE -PgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9y -TW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2Zp -bGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8dGlm -ZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1 -dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNv -bHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVz -b2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JT -cGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4x -MDA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+ -MTAwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwv -cmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9 -InciPz4ipShiAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABS6 -SURBVHja7J17lBTVncc/Vf2YmveLYWZgAEUcB6K4xOy6anIMGuWEKIlZdzVrTNbNi+OaxKwbI+rm -4SuJyUnIMkHUiOKKQECXh6LBByCCQcUBwXGA4TnDvJuZnp6Z7q6uunf/qJ6hZ6Z7+kH3TGO459Tp -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 -jcr/DwCztQ1d6Rhy0wAAAABJRU5ErkJggg== -" + xlink:href="data:image/png;base64,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 P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4 bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1 LjYtYzA2NyA3OS4xNTc3NDcsIDIwMTUvMDMvMzAtMjM6NDA6NDIgICAgICAgICI+CiAgIDxyZGY6 UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z OnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9 Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBN TT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RF dnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAg ICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S ZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2Jl LmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFk b2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9i ZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3No b3AgQ0MgMjAxNSAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNy ZWF0ZURhdGU+MjAxNS0xMS0yNVQwMjo0NTo0OSswMTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAg ICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTYtMDUtMjRUMTc6MDk6NDUrMDI6MDA8L3htcDpNZXRh ZGF0YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE2LTA1LTI0VDE3OjA5OjQ1KzAy OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZv cm1hdD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo1ZjZhNWNhMC0xOTA1LTRm YjAtYmM4Mi0wNzI5MzlhMDU3MGY8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpE b2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2YzhjYzA3NC1kOTdmLTExNzgtYjJiMS1m OGMyYWUyOWIyYTU8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERv Y3VtZW50SUQ+eG1wLmRpZDo4MTVjNjI4Yy1jOTE1LTRmMTYtYTNjNC02NzUyMWVhNDFlOTE8L3ht cE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAg ICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291 cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rp b24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ODE1YzYyOGMt YzkxNS00ZjE2LWEzYzQtNjc1MjFlYTQxZTkxPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAg ICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTExLTI1VDAyOjQ1OjQ5KzAxOjAwPC9zdEV2dDp3aGVu PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3Ag Q0MgMjAxNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAg PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAg ICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NDc3NDczYTEtYmU0Ni00 NDgzLTljMzItYzRiNjZmYWFiYTM0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAg ICA8c3RFdnQ6d2hlbj4yMDE1LTExLTI1VDAyOjQ3OjQ5KzAxOjAwPC9zdEV2dDp3aGVuPgogICAg ICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAx NSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0 RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAg ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg ICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAg ICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NTkxMTkzNmYtYzdhOS00YzNkLThhMTEtMjIy MzE4YWJkNzg1PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hl bj4yMDE1LTEyLTAzVDE4OjAwOjEzKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAg ICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoTWFjaW50b3No KTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+ Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg IDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RF dnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RF dnQ6cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1h Z2UvcG5nPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg ICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAg ICAgIDxzdEV2dDphY3Rpb24+ZGVyaXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAg ICA8c3RFdnQ6cGFyYW1ldGVycz5jb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUu cGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAg PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAg ICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MjVjNTk3ZDYtZTNiMy00 ZmQ2LWFhNzYtNTY1ZDZmODMxOTAxPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAg ICA8c3RFdnQ6d2hlbj4yMDE1LTEyLTAzVDE4OjAwOjEzKzAxOjAwPC9zdEV2dDp3aGVuPgogICAg ICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAx NSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0 RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAg ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg ICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAg ICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NWY2YTVjYTAtMTkwNS00ZmIwLWJjODItMDcy OTM5YTA1NzBmPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hl bj4yMDE2LTA1LTI0VDE3OjA5OjQ1KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAg ICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAyMiAoTWFjaW50b3No KTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+ Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwv cmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZl ZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFu Y2VJRD54bXAuaWlkOjU5MTE5MzZmLWM3YTktNGMzZC04YTExLTIyMjMxOGFiZDc4NTwvc3RSZWY6 aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhv dG9zaG9wOmI2OGM2MzhhLWQzYTQtMTE3OC1hOGI3LTlmMjljMjNkOGU3NDwvc3RSZWY6ZG9jdW1l bnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjgxNWM2 MjhjLWM5MTUtNGYxNi1hM2M0LTY3NTIxZWE0MWU5MTwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE PgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9y TW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2Zp bGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8dGlm ZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1 dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNv bHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVz b2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JT cGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4x MDA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+ MTAwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwv cmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9 InciPz4ipShiAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABS6 SURBVHja7J17lBTVncc/Vf2YmveLYWZgAEUcB6K4xOy6anIMGuWEKIlZdzVrTNbNi+OaxKwbI+rm 4SuJyUnIMkHUiOKKQECXh6LBByCCQcUBwXGA4TnDvJuZnp6Z7q6uunf/qJ6hZ6Z7+kH3TGO459Tp 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 jcr/DwCztQ1d6Rhy0wAAAABJRU5ErkJggg== " id="image1328" x="12.599216" y="19.402775" @@ -669,7 +225,7 @@ jcr/DwCztQ1d6Rhy0wAAAABJRU5ErkJggg== inkscape:label="fond uni rouge" inkscape:groupmode="layer" id="g2815" - style="display:inline;opacity:1;mix-blend-mode:normal" + style="display:none;opacity:1;mix-blend-mode:normal" transform="translate(-18.709808,-20.180163)">
+ + + + + + + + + + + +
- diff --git a/tabs/mission_control.js b/tabs/mission_control.js index a513ee7c..b411b27b 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -42,6 +42,7 @@ var dictOfLabelParameterPoint = { var waypointOptions = ['JUMP','SET_HEAD','RTH']; + TABS.mission_control = {}; TABS.mission_control.isYmapLoad = false; TABS.mission_control.initialize = function (callback) { @@ -99,7 +100,7 @@ TABS.mission_control.initialize = function (callback) { } $safehomesTable = $('.safehomesTable'); - $safehomesTableBody = $safehomesTable.find('tbody'); + $safehomesTableBody = $('#safehomesTableBody'); $waypointOptionsTable = $('.waypointOptionsTable'); $waypointOptionsTableBody = $('#waypointOptionsTableBody'); @@ -327,6 +328,8 @@ TABS.mission_control.initialize = function (callback) { var markers = []; var lines = []; + var safehomeMarkers =[]; + var map; var selectedMarker = null; var selectedFeature = null; @@ -341,6 +344,11 @@ TABS.mission_control.initialize = function (callback) { var safehomeFromBuffer = []; var mission = new WaypointCollection(); + var SAFEHOMES = new SafehomeCollection(); // TO DELETE FOR SAFEHOMES RELEASE + SAFEHOMES.inflate(); // TO DELETE FOR SAFEHOMES RELEASE + var safehomeRangeRadius = 200; //meters + var safehomeSafeRadius = 50; //meters + ///////////////////////////////////////////// // Reinit Form ///////////////////////////////////////////// @@ -385,10 +393,6 @@ TABS.mission_control.initialize = function (callback) { function closeSettingsPanel() { $('#missionPlanerSettings').hide(); - $('#missionPlanerTotalInfo').fadeIn(300); - if (selectedMarker !== null) { - $('#MPeditPoint').fadeIn(300); - } } ///////////////////////////////////////////// @@ -396,10 +400,7 @@ TABS.mission_control.initialize = function (callback) { ///////////////////////////////////////////// function closeSafehomePanel() { $('#missionPlanerSafehome').hide(); - $('#missionPlanerTotalInfo').fadeIn(300); - if (selectedMarker !== null) { - $('#MPeditPoint').fadeIn(300); - } + cleanSafehomeLayers(); } function renderSafehomesTable() { @@ -415,7 +416,11 @@ TABS.mission_control.initialize = function (callback) { $safehomesTableBody.append('\ \ - \ +
\ + \ + \ +
\ + \ \ \ \ @@ -430,20 +435,30 @@ TABS.mission_control.initialize = function (callback) { }); */ $row.find(".safehome-number").text(safehome.getNumber()+1); - + $row.find(".safehome-enabled-value").prop('checked',safehome.isUsed()).change(function () { - safehome.setEnabled($(this).val()); + safehome.setEnabled((($(this).prop('checked')) ? true : false)); + SAFEHOMES.updateSafehome(safehome); + cleanSafehomeLayers(); + renderSafehomesOnMap(); }); $row.find(".safehome-lon").val(safehome.getLon()).change(function () { - safehome.setLon($(this).val()); + safehome.setLon(Number($(this).val())); + SAFEHOMES.updateSafehome(safehome); + cleanSafehomeLayers(); + renderSafehomesOnMap(); }); $row.find(".safehome-lat").val(safehome.getLat()).change(function () { - safehome.setLat($(this).val()); + safehome.setLat(Number($(this).val())); + SAFEHOMES.updateSafehome(safehome); + cleanSafehomeLayers(); + renderSafehomesOnMap(); }); - $row.find("[data-role='role-servo-delete']").attr("data-index", safehomeIndex); + $row.find("[data-role='safehome-view']").attr("data-index", safehomeIndex); + $row.find("[data-role='safehome-center']").attr("data-index", safehomeIndex); } } GUI.switchery(); @@ -451,15 +466,22 @@ TABS.mission_control.initialize = function (callback) { } - function renderSafehomesOnMap(safehomes) { + function renderSafehomesOnMap() { /* * Process safehome on Map */ - safehomes.get().forEach(function (safehome) { + SAFEHOMES.get().forEach(function (safehome) { map.addLayer(addSafeHomeMarker(safehome)); }); } + function cleanSafehomeLayers() { + for (var i in safehomeMarkers) { + map.removeLayer(safehomeMarkers[i]); + } + safehomeMarkers = []; + } + function getSafehomeIcon(safehome) { /* * Process Safehome Icon @@ -499,168 +521,67 @@ TABS.mission_control.initialize = function (callback) { rainfall: 500 }); - iconFeature.setStyle(getSafehomeIcon(safehome)); - - var vectorSource = new ol.source.Vector({ - features: [iconFeature] + iconFeature.setStyle(getSafehomeIcon(safehome, safehome.isUsed())); + + var circleFeature = new ol.Feature({ + geometry: new ol.geom.Circle(coord, safehomeRangeRadius), + name: 'Null Island', + population: 4000, + rainfall: 500 }); + + circleFeature.setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: 'rgba(255, 163, 46, 1)', + width: 3, + lineDash : [10] + }), + // fill: new ol.style.Fill({ + // color: 'rgba(251, 225, 155, 0.1)' + // }) + })); + + var circleSafeFeature = new ol.Feature({ + geometry: new ol.geom.Circle(coord, safehomeSafeRadius), + name: 'Null Island', + population: 4000, + rainfall: 500 + }); + + circleSafeFeature.setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: 'rgba(136, 204, 62, 1)', + width: 3, + lineDash : [10] + }), +/* fill: new ol.style.Fill({ + color: 'rgba(136, 204, 62, 0.1)' + }) */ + })); + + if (safehome.isUsed()) { + var vectorSource = new ol.source.Vector({ + features: [iconFeature, circleFeature, circleSafeFeature] + }); + } + else { + var vectorSource = new ol.source.Vector({ + features: [iconFeature] + }); + } var vectorLayer = new ol.layer.Vector({ source: vectorSource }); vectorLayer.kind = "safehome"; + vectorLayer.number = safehome.getNumber(); + + safehomeMarkers.push(vectorLayer); return vectorLayer; } - ///////////////////////////////////////////// - // Manage Plotting functions - ///////////////////////////////////////////// - // Function to repaint lines between markers -/* function repaint() { - var oldPos; - var oldAction; - var poiNumber; - var poiList; - var lengthPoiList; - var activatePoi = false; - var activateHead = false; - var oldHeading; - var xmlItemNumber = 0; - - for (var i in lines) { - map.removeLayer(lines[i]); - } - lines = []; - poiList = []; - $('#missionDistance').text(0); - map.getLayers().forEach(function (t) { - if (t instanceof ol.layer.Vector && typeof t.alt !== 'undefined' && t.kind == "marker") { - var geometry = t.getSource().getFeatures()[0].getGeometry(); - var action = t.action; - var markerNumber = t.number; - var options = t.options; - if (action == 5) { - // If action is Set_POI, increment counter of POI - poiNumber = markerNumber; - lengthPoiList = poiList.push(poiNumber); - activatePoi = true; - } - else { - // If classic WPs, draw standard line in-between - if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead != true){ - paintLine(oldPos, geometry.getCoordinates()); - } - // If one is POI, draw orange line in-between and modulate dashline each time a new POI is defined - else if (typeof oldPos !== 'undefined' && activatePoi == true && activateHead != true) { - if ((lengthPoiList % 2) == 0) { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725', 5); - } - else { - paintLine(oldPos, geometry.getCoordinates(), '#ffb725'); - } - } - // If one is SET_HEAD, draw labelled line in-between with heading value - else if (typeof oldPos !== 'undefined' && activatePoi != true && activateHead == true) { - paintLine(oldPos, geometry.getCoordinates(), '#1497f1', 0, lineText=String(oldHeading)+"°"); - } - // If classic WPs is defined with a JUMP options, draw pink dashed line in-between - if (options.key == "JUMP") { - paintLine(geometry.getCoordinates(), markers[options.targetWP-1].getSource().getFeatures()[0].getGeometry().getCoordinates(), '#e935d6', 5, "Repeat x"+String(options.numRepeat)); - } - // If classic WPs is defined with a heading = -1, change Boolean for POI to false. If it is defined with a value different from -1, activate Heading boolean - else if (options.key == "SET_HEAD") { - if (options.heading == "-1") { - activatePoi = false; - activateHead = false; - oldHeading = 'undefined' - } - else if (typeof options.heading != 'undefined' && options.heading != "-1") { - activateHead = true; - oldHeading = options.heading - } - } - oldPos = geometry.getCoordinates(); - } - } - }); - //reset text position - if (textGeom) { - textGeom.setCoordinates(map.getCoordinateFromPixel([0,0])); - } - } - */ - // function modified to take into account optional argument such color, linedash and line label - - - // Function modified to add action name and marker numbering to help changing icon depending on those items -/* function getPointIcon(_action, isEdit, markerNumber='') { - var dictofPoint = { - 1: 'WP', - 2: 'PH', - 3: 'PH', - //4: '', - 5: 'POI', - //6: '', - //7: 'head', - 8: 'LDG' - }; - - return new ol.style.Style({ - image: new ol.style.Icon(({ - anchor: [0.5, 1], - opacity: 1, - scale: 0.5, - src: '../images/icons/cf_icon_position' + (dictofPoint[_action] != '' ? '_'+dictofPoint[_action] : '') + (isEdit ? '_edit' : '')+ '.png' - })), - text: new ol.style.Text(({ - text: String(Number(markerNumber)+1), - font: '12px sans-serif', - offsetY: -15, - offsetX: -2, - fill: new ol.style.Fill({ - color: '#FFFFFF' - }), - stroke: new ol.style.Stroke({ - color: '#FFFFFF' - }), - })) - }); - } */ - - // Function modified by adding parameter 1,2,3 needed in MSP, plus options dictionary to take into account WP behavior changer such as JUMP, SET_HEAD, RTH -/* function addMarker(_pos, _alt, _action, _parameter1=0, _parameter2=0, _parameter3=0, _options={key: "None"}) { - var iconFeature = new ol.Feature({ - geometry: new ol.geom.Point(_pos), - name: 'Null Island', - population: 4000, - rainfall: 500 - }); - console.log(_pos); - iconFeature.setStyle(getPointIcon(_action, false, String(markers.length))); - - var vectorSource = new ol.source.Vector({ - features: [iconFeature] - }); - - var vectorLayer = new ol.layer.Vector({ - source: vectorSource - }); - - vectorLayer.kind = "marker"; - vectorLayer.alt = _alt; - vectorLayer.number = markers.length; - vectorLayer.action = _action; - vectorLayer.parameter1 = _parameter1; - vectorLayer.parameter2 = _parameter2; - vectorLayer.parameter3 = _parameter3; - vectorLayer.options = _options; - - markers.push(vectorLayer); - - return vectorLayer; - } */ ///////////////////////////////////////////// // Manage Waypoint @@ -937,8 +858,8 @@ TABS.mission_control.initialize = function (callback) { } } mission.updateWaypoint(element); - cleanLayers(); - redrawLayers(); + cleanLines(); + redrawLayer(); }); $row.find(".waypointOptions-number").text(element.getAttachedNumber()+1); @@ -959,17 +880,31 @@ TABS.mission_control.initialize = function (callback) { alert(chrome.i18n.getMessage('MissionPlannerRTHSettingsCheck')); } } + else if (MWNP.WPTYPE.REV[element.getAction()] == "JUMP") { + if ($(this).val() > mission.get().length || $(this).val() < 0) + { + $(this).val(0); + alert(chrome.i18n.getMessage('MissionPlannerJumpSettingsCheck')); + } + } element.setP1(Number($(this).val())); mission.updateWaypoint(element); - cleanLayers(); - redrawLayers(); + cleanLines(); + redrawLayer(); }); $row.find(".waypointOptions-p2").val(element.getP2()).change(function () { + if (MWNP.WPTYPE.REV[element.getAction()] == "JUMP") { + if ($(this).val() > 10 || $(this).val() < 0) + { + $(this).val(0); + alert(chrome.i18n.getMessage('MissionPlannerJump2SettingsCheck')); + } + } element.setP2(Number($(this).val())); mission.updateWaypoint(element); - cleanLayers(); - redrawLayers(); + cleanLines(); + redrawLayer(); }); $row.find("[data-role='waypointOptions-delete']").attr("data-index", element.getAttachedNumber()+1); @@ -1079,8 +1014,9 @@ TABS.mission_control.initialize = function (callback) { var handleShowSafehome = function () { $('#MPeditPoint, #missionPlanerTotalInfo','#missionPlanerTemplate', '#missionPlanerSettings').hide(); $('#missionPlanerSafehome').fadeIn(300); + cleanSafehomeLayers(); renderSafehomesTable(); - renderSafehomesOnMap(SAFEHOMES); + renderSafehomesOnMap(); }; button.addEventListener('click', handleShowSafehome, false); @@ -1152,8 +1088,20 @@ TABS.mission_control.initialize = function (callback) { $('#pointLon').val(Math.round(coord[0] * 10000000) / 10000000); $('#pointLat').val(Math.round(coord[1] * 10000000) / 10000000); mission.updateWaypoint(tempWp); + repaintLine4Waypoints(mission); } - repaintLine4Waypoints(mission); + else if (tempMarker.kind == "safehome") { + let tempSH = SAFEHOMES.getSafehome(tempMarker.number); + tempSH.setLon(coord[0]); + tempSH.setLat(coord[1]); + SAFEHOMES.updateSafehome(tempSH); + //renderSafehomesTable(); +/* cleanSafehomeLayers(); + renderSafehomesOnMap(); */ + $safehomesTableBody.find('tr:nth-child('+String(tempMarker.number+1)+') > td > .safehome-lon').val(Math.round(coord[0] * 10000000) / 10000000); + $safehomesTableBody.find('tr:nth-child('+String(tempMarker.number+1)+') > td > .safehome-lat').val(Math.round(coord[1] * 10000000) / 10000000); + } + }; /** @@ -1217,7 +1165,8 @@ TABS.mission_control.initialize = function (callback) { } else { control_list = [ - new app.PlannerSettingsControl() + new app.PlannerSettingsControl(), + new app.PlannerSafehomeControl() // TO DELETE FOR RELEASE SAFEHOMES ] } map = new ol.Map({ @@ -1308,6 +1257,7 @@ TABS.mission_control.initialize = function (callback) { } selectedMarker = renderWaypointOptionsTable(selectedMarker); $('#MPeditPoint').fadeIn(300); + redrawLayer(); } else if (selectedFeature && tempMarker.kind == "line" && tempMarker.selection) { let tempWpCoord = ol.proj.toLonLat(evt.coordinate); @@ -1317,6 +1267,14 @@ TABS.mission_control.initialize = function (callback) { cleanLayers(); redrawLayers(); } + else if (selectedFeature && tempMarker.kind == "safehome") { + selectedMarker = SAFEHOMES.getSafehome(tempMarker.number); + var geometry = selectedFeature.getGeometry(); + var coord = ol.proj.toLonLat(geometry.getCoordinates()); + $safehomesTableBody.find('tr:nth-child('+String(tempMarker.number+1)+') > td > .safehome-enabled-value').val(selectedMarker.isUsed()); + $safehomesTableBody.find('tr:nth-child('+String(tempMarker.number+1)+') > td > .safehome-lon').val(Math.round(coord[0] * 10000000) / 10000000); + $safehomesTableBody.find('tr:nth-child('+String(tempMarker.number+1)+') > td > .safehome-lat').val(Math.round(coord[1] * 10000000) / 10000000); + } else { let tempWpCoord = ol.proj.toLonLat(evt.coordinate); let tempWp = new Waypoint(mission.get().length, MWNP.WPTYPE.WAYPOINT, tempWpCoord[1], tempWpCoord[0], alt=settings.alt, p1=settings.speed); @@ -1460,6 +1418,19 @@ TABS.mission_control.initialize = function (callback) { } }); + $('#showHideSafehomeButton').on('click', function () { + var src = ($(this).children().attr('class') === 'ic_hide') + ? 'ic_show' + : 'ic_hide'; + $(this).children().attr('class', src); + if ($(this).children().attr('class') === 'ic_hide') { + $('#SafehomeContent').fadeIn(300); + } + else { + $('#SafehomeContent').fadeOut(300); + } + }); + ///////////////////////////////////////////// // Callback for Waypoint edition ///////////////////////////////////////////// @@ -1553,26 +1524,41 @@ TABS.mission_control.initialize = function (callback) { if (selectedMarker) { mission.dropAttachedFromWaypoint(selectedMarker, $(event.currentTarget).attr("data-index")-1); renderWaypointOptionsTable(selectedMarker); - cleanLayers(); - redrawLayers(); + cleanLines(); + redrawLayer(); } }); $("[data-role='waypointOptions-add']").click(function () { if (selectedMarker) { - /* let tmpListWP = mission.getAttachedFromWaypoint(selectedMarker); - console.log("1 ", mission.getAttachedFromWaypoint(selectedMarker)); - if (tmpListWP.length !=0) { - console.log("1.1 ", tmpListWP[tmpListWP.length-1].getAttachedNumber()); - } - else { - console.log("tmpListWP empty"); - } */ mission.addAttachedFromWaypoint(selectedMarker); - //console.log("2 ", mission.getAttachedFromWaypoint(selectedMarker)); renderWaypointOptionsTable(selectedMarker); - cleanLayers(); - redrawLayers(); + cleanLines(); + redrawLayer(); + } + }); + + ///////////////////////////////////////////// + // Callback for SAFEHOMES Table + ///////////////////////////////////////////// + $safehomesTableBody.on('click', "[data-role='safehome-center']", function (event) { + let mapCenter = map.getView().getCenter(); + let tmpSH = SAFEHOMES.getSafehome($(event.currentTarget).attr("data-index")); + tmpSH.setLon(ol.proj.toLonLat(mapCenter)[0]); + tmpSH.setLat(ol.proj.toLonLat(mapCenter)[1]); + SAFEHOMES.updateSafehome(tmpSH); + renderSafehomesTable(); + cleanSafehomeLayers(); + renderSafehomesOnMap(); + + }); + + $safehomesTableBody.on('click', "[data-role='safehome-view']", function (event) { + if (selectedMarker) { + mission.addAttachedFromWaypoint(selectedMarker); + renderWaypointOptionsTable(selectedMarker); + cleanLines(); + redrawLayer(); } }); From 26f21b2880dc7cbaad2de341b199f878162dae16 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Wed, 7 Apr 2021 00:28:51 +0200 Subject: [PATCH 29/58] waypoint OOP version 1.4 --- images/icons/cf_icon_position.svg | 28 +-- js/mission_control_module.mjs | 40 ----- js/waypointCollection.js | 2 - tabs/mission_control.js | 286 ++++++++---------------------- 4 files changed, 92 insertions(+), 264 deletions(-) delete mode 100644 js/mission_control_module.mjs diff --git a/images/icons/cf_icon_position.svg b/images/icons/cf_icon_position.svg index 6ca6ada3..4a963253 100644 --- a/images/icons/cf_icon_position.svg +++ b/images/icons/cf_icon_position.svg @@ -15,22 +15,22 @@ id="svg8" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" sodipodi:docname="cf_icon_position.svg" - inkscape:export-filename="C:\Users\arnau\Documents\GitHub\inav-configurator\images\icons\cf_icon_safehome_used.png" + inkscape:export-filename="C:\Users\arnau\Documents\GitHub\inav-configurator\images\icons\cf_icon_safehome.png" inkscape:export-xdpi="74.705879" inkscape:export-ydpi="74.705879"> + id="linearGradient1488"> + id="stop1484" /> + id="stop1486" /> + xlink:href="#linearGradient1488" + id="linearGradient1490" + x1="21.733617" + y1="37.017226" + x2="45.786218" + y2="37.017226" + gradientUnits="userSpaceOnUse" /> diff --git a/js/mission_control_module.mjs b/js/mission_control_module.mjs deleted file mode 100644 index d16c70b4..00000000 --- a/js/mission_control_module.mjs +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -// MultiWii NAV Protocol -exports.MWNP = MWNP || {}; - -// WayPoint type -MWNP.WPTYPE = { - WAYPOINT: 1, - PH_UNLIM: 2, - PH_TIME: 3, - RTH: 4, - SET_POI: 5, - JUMP: 6, - SET_HEAD: 7, - LAND: 8 -}; - -// Reverse WayPoint type dictionary -function swap(dict) { - let rev_dict = {}; - for (let key in dict) { - rev_dict[dict[key]] = key; - } - return rev_dict; -} - -MWNP.WPTYPE.REV = swap(MWNP.WPTYPE); - -// Dictionary of Parameter1,2,3 definition depending on type of action selected (refer to MWNP.WPTYPE) -exports.dictOfLabelParameterPoint = { - 1: {parameter1: 'Speed (cm/s)', parameter2: '', parameter3: ''}, - 2: {parameter1: '', parameter2: '', parameter3: ''}, - 3: {parameter1: 'Wait time (s)', parameter2: 'Speed (cm/s)', parameter3: ''}, - 4: {parameter1: 'Force land (non zero)', parameter2: '', parameter3: ''}, - 5: {parameter1: '', parameter2: '', parameter3: ''}, - 6: {parameter1: 'Target WP number', parameter2: 'Number of repeat (-1: infinite)', parameter3: ''}, - 7: {parameter1: 'Heading (deg)', parameter2: '', parameter3: ''}, - 8: {parameter1: '', parameter2: '', parameter3: ''} -}; - diff --git a/js/waypointCollection.js b/js/waypointCollection.js index 3f90c43b..12073fc0 100644 --- a/js/waypointCollection.js +++ b/js/waypointCollection.js @@ -1,6 +1,4 @@ 'use strict'; -//import { MWNP.WPTYPE, MWNP.WPTYPE.REV } from '/js/mission_control_module.mjs'; -//const { MWNP } = require('./js/mission_control_module.mjs') let WaypointCollection = function () { diff --git a/tabs/mission_control.js b/tabs/mission_control.js index b411b27b..4477b790 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1,6 +1,4 @@ 'use strict'; -//import { MWNP.WPTYPE, MWNP.WPTYPE.REV } from './js/mission_control_module.mjs'; -//const { MWNP } = require('./js/mission_control_module.mjs') // MultiWii NAV Protocol var MWNP = MWNP || {}; @@ -333,6 +331,8 @@ TABS.mission_control.initialize = function (callback) { var map; var selectedMarker = null; var selectedFeature = null; + var tempMarker = null; + var nonMarkerPoint = []; var nonMarkerPointListRead = []; var isOptions = false; @@ -361,12 +361,6 @@ TABS.mission_control.initialize = function (callback) { $('#pointP2').val(''); $('#pointP3').val(''); $('#missionDistance').text(0); -/* $('[name=Options]').filter('[value=None]').prop('checked', true); - $('#Options_LandRTH').prop('checked', false); - $('#Options_TargetJUMP').val(0); - $('#Options_NumberJUMP').val(0); - $('#Options_HeadingHead').val(-1); - $('[name=pointNumber]').val(''); */ $('#MPeditPoint').fadeOut(300); } @@ -525,7 +519,7 @@ TABS.mission_control.initialize = function (callback) { var circleFeature = new ol.Feature({ geometry: new ol.geom.Circle(coord, safehomeRangeRadius), - name: 'Null Island', + name: 'circleFeature', population: 4000, rainfall: 500 }); @@ -543,7 +537,7 @@ TABS.mission_control.initialize = function (callback) { var circleSafeFeature = new ol.Feature({ geometry: new ol.geom.Circle(coord, safehomeSafeRadius), - name: 'Null Island', + name: 'circleSafeFeature', population: 4000, rainfall: 500 }); @@ -558,7 +552,7 @@ TABS.mission_control.initialize = function (callback) { color: 'rgba(136, 204, 62, 0.1)' }) */ })); - + if (safehome.isUsed()) { var vectorSource = new ol.source.Vector({ features: [iconFeature, circleFeature, circleSafeFeature] @@ -615,13 +609,6 @@ TABS.mission_control.initialize = function (callback) { vectorLayer.kind = "waypoint"; vectorLayer.number = waypoint.getNumber(); vectorLayer.layerNumber = waypoint.getLayerNumber(); -/* vectorLayer.alt = _alt; - vectorLayer.number = markers.length; - vectorLayer.action = _action; - vectorLayer.parameter1 = _parameter1; - vectorLayer.parameter2 = _parameter2; - vectorLayer.parameter3 = _parameter3; - vectorLayer.options = _options;*/ markers.push(vectorLayer); @@ -765,7 +752,6 @@ TABS.mission_control.initialize = function (callback) { vectorLayer.kind = "line"; vectorLayer.selection = selection; vectorLayer.number = pos2ID; - //console.log("pos2ID : ",pos2ID); lines.push(vectorLayer); @@ -1046,10 +1032,15 @@ TABS.mission_control.initialize = function (callback) { function (feature, layer) { return feature; }); + tempMarker = map.forEachFeatureAtPixel(evt.pixel, + function (feature, layer) { + return layer; + }); if (feature) { this.coordinate_ = evt.coordinate; this.feature_ = feature; + this.layer_ = tempMarker; } return !!feature; @@ -1065,20 +1056,24 @@ TABS.mission_control.initialize = function (callback) { function (feature, layer) { return feature; }); - var tempMarker = map.forEachFeatureAtPixel(evt.pixel, + /* tempMarker = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) { return layer; - }); + }); */ var deltaX = evt.coordinate[0] - this.coordinate_[0]; var deltaY = evt.coordinate[1] - this.coordinate_[1]; var geometry = /** @type {ol.geom.SimpleGeometry} */ (this.feature_.getGeometry()); + geometry.translate(deltaX, deltaY); this.coordinate_[0] = evt.coordinate[0]; - this.coordinate_[1] = evt.coordinate[1]; + this.coordinate_[1] = evt.coordinate[1]; + + + let coord = ol.proj.toLonLat(geometry.getCoordinates()); if (tempMarker.kind == "waypoint") { @@ -1090,14 +1085,15 @@ TABS.mission_control.initialize = function (callback) { mission.updateWaypoint(tempWp); repaintLine4Waypoints(mission); } - else if (tempMarker.kind == "safehome") { + else if (tempMarker.kind == "safehome") { let tempSH = SAFEHOMES.getSafehome(tempMarker.number); tempSH.setLon(coord[0]); tempSH.setLat(coord[1]); SAFEHOMES.updateSafehome(tempSH); - //renderSafehomesTable(); -/* cleanSafehomeLayers(); - renderSafehomesOnMap(); */ + if (tempSH.isUsed()) { + this.layer_.getSource().getFeatures()[1].getGeometry().translate(deltaX, deltaY); + this.layer_.getSource().getFeatures()[0].getGeometry().translate(deltaX, deltaY); + } $safehomesTableBody.find('tr:nth-child('+String(tempMarker.number+1)+') > td > .safehome-lon').val(Math.round(coord[0] * 10000000) / 10000000); $safehomesTableBody.find('tr:nth-child('+String(tempMarker.number+1)+') > td > .safehome-lat').val(Math.round(coord[1] * 10000000) / 10000000); } @@ -1169,6 +1165,8 @@ TABS.mission_control.initialize = function (callback) { new app.PlannerSafehomeControl() // TO DELETE FOR RELEASE SAFEHOMES ] } + + map = new ol.Map({ controls: ol.control.defaults({ attributionOptions: { @@ -1211,6 +1209,7 @@ TABS.mission_control.initialize = function (callback) { }); map.on('click', function (evt) { + console.log("click"); if (selectedMarker != null && selectedFeature != null) { try { selectedFeature.setStyle(getWaypointIcon(selectedMarker, false)); @@ -1225,7 +1224,7 @@ TABS.mission_control.initialize = function (callback) { function (feature, layer) { return feature; }); - var tempMarker = map.forEachFeatureAtPixel(evt.pixel, + tempMarker = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) { return layer; }); @@ -1286,83 +1285,6 @@ TABS.mission_control.initialize = function (callback) { }); - - /* map.on('click', function (evt) { - if (selectedMarker != null) { - try { - selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action, false, selectedMarker.number)); - selectedMarker = null; - clearEditForm(); - } catch (e) { - GUI.log(e); - } - } - - var selectedFeature = map.forEachFeatureAtPixel(evt.pixel, - function (feature, layer) { - return feature; - }); - var tempMarker = map.forEachFeatureAtPixel(evt.pixel, - function (feature, layer) { - return layer; - }); - - - if (selectedFeature) { - for (var i in markers) { - if (markers[i] == tempMarker) { - selectedMarker = tempMarker; - - var geometry = selectedFeature.getGeometry(); - var coord = ol.proj.toLonLat(geometry.getCoordinates()); - - selectedFeature.setStyle(getPointIcon(selectedMarker.action, true, selectedMarker.number)); - - var altitudeMeters = app.ConvertCentimetersToMeters(selectedMarker.alt); - - $('#altitudeInMeters').text(` ${altitudeMeters}m`); - $('#pointLon').val(Math.round(coord[0] * 10000000) / 10000000); - $('#pointLat').val(Math.round(coord[1] * 10000000) / 10000000); - $('#pointAlt').val(selectedMarker.alt); - $('#pointType').val(selectedMarker.action); - // Change SpeedValue to Parameter1, 2, 3 - $('#pointP1').val(selectedMarker.parameter1); - $('#pointP2').val(selectedMarker.parameter2); - $('#pointP3').val(selectedMarker.parameter3); - $('[name=Options]').filter('[value='+selectedMarker.options['key']+']').prop('checked', true); - // Manage RTH, JUMP, SET_HEAD options for WP - if (selectedMarker.options.key == "RTH") { - $('#Options_LandRTH').prop('checked', selectedMarker.options.landAfter); - } - else if (selectedMarker.options.key == "JUMP") { - $('#Options_TargetJUMP').val(selectedMarker.options.targetWP); - $('#Options_NumberJUMP').val(selectedMarker.options.numRepeat); - } - else if (selectedMarker.options.key == "SET_HEAD") { - $('#Options_HeadingHead').val(selectedMarker.options.heading); - } - // Selection box update depending on choice of type of waypoint - for (var j in dictOfLabelParameterPoint[selectedMarker.action]) { - if (dictOfLabelParameterPoint[selectedMarker.action][j] != '') { - $('#pointP'+String(j).slice(-1)+'class').fadeIn(300); - $('label[for=pointP'+String(j).slice(-1)+']').html(dictOfLabelParameterPoint[selectedMarker.action][j]); - } - else {$('#pointP'+String(j).slice(-1)+'class').fadeOut(300);} - } - if ([1,2,3,8].includes(selectedMarker.action) || ['1','2','3','8'].includes(selectedMarker.action)) { - $('#pointOptionclass').fadeIn(300); - } - else {$('#pointOptionclass').fadeOut(300);} - $('#MPeditPoint').fadeIn(300); - } - } - } - else { - map.addLayer(addMarker(evt.coordinate, settings.alt, MWNP.WPTYPE.WAYPOINT, settings.speed)); - repaint(); - } - }); */ - // change mouse cursor when over marker $(map.getViewport()).on('mousemove', function (e) { var pixel = map.getEventPixel(e.originalEvent); @@ -1391,7 +1313,6 @@ TABS.mission_control.initialize = function (callback) { ///////////////////////////////////////////// // Callback to show/hide menu boxes ///////////////////////////////////////////// - $('#showHideActionButton').on('click', function () { var src = ($(this).children().attr('class') === 'ic_hide') ? 'ic_show' @@ -1438,9 +1359,9 @@ TABS.mission_control.initialize = function (callback) { if (selectedMarker) { selectedMarker.setAction($('#pointType').val()); if ([MWNP.WPTYPE.SET_POI,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.LAND].includes(selectedMarker.getAction())) { - selectedMarker.setP1(0); - selectedMarker.setP2(0); - selectedMarker.setP3(0); + selectedMarker.setP1(0.0); + selectedMarker.setP2(0.0); + selectedMarker.setP3(0.0); } mission.updateWaypoint(selectedMarker); mission.update(); @@ -1452,7 +1373,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointLat').on('keypress', function (event) { if (selectedMarker && event.which == 13) { - selectedMarker.setLat($('#pointLat').val()); + selectedMarker.setLat(Number($('#pointLat').val())); mission.updateWaypoint(selectedMarker); mission.update(); redrawLayer(); @@ -1463,7 +1384,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointLon').on('keypress', function (event) { if (selectedMarker && event.which == 13) { - selectedMarker.setLon($('#pointLon').val()); + selectedMarker.setLon(Number($('#pointLon').val())); mission.updateWaypoint(selectedMarker); mission.update(); redrawLayer(); @@ -1474,7 +1395,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointAlt').on('keypress', function (event) { if (selectedMarker && event.which == 13) { - selectedMarker.setAlt($('#pointAlt').val()); + selectedMarker.setAlt(Number($('#pointAlt').val())); mission.updateWaypoint(selectedMarker); mission.update(); redrawLayer(); @@ -1485,7 +1406,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointP1').on('keypress', function (event) { if (selectedMarker && event.which == 13) { - selectedMarker.setP1($('#pointP1').val()); + selectedMarker.setP1(Number($('#pointP1').val())); mission.updateWaypoint(selectedMarker); mission.update(); redrawLayer(); @@ -1496,7 +1417,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointP2').on('keypress', function (event) { if (selectedMarker && event.which == 13) { - selectedMarker.setP2($('#pointP2').val()); + selectedMarker.setP2(Number($('#pointP2').val())); mission.updateWaypoint(selectedMarker); mission.update(); redrawLayer(); @@ -1507,7 +1428,7 @@ TABS.mission_control.initialize = function (callback) { $('#pointP3').on('keypress', function (event) { if (selectedMarker && event.which == 13) { - selectedMarker.setP3($('#pointP3').val()); + selectedMarker.setP3(Number($('#pointP3').val())); mission.updateWaypoint(selectedMarker); mission.update(); redrawLayer(); @@ -1520,7 +1441,6 @@ TABS.mission_control.initialize = function (callback) { // Callback for Waypoint Options Table ///////////////////////////////////////////// $waypointOptionsTableBody.on('click', "[data-role='waypointOptions-delete']", function (event) { - //console.log($(event.currentTarget).attr("data-index")); if (selectedMarker) { mission.dropAttachedFromWaypoint(selectedMarker, $(event.currentTarget).attr("data-index")-1); renderWaypointOptionsTable(selectedMarker); @@ -1584,98 +1504,9 @@ TABS.mission_control.initialize = function (callback) { }); - // SavePoint function updated to take into account P1 to P3 parameter and JUMP,RTH, SET_HEAD options for WP - $('#savePoint').on('click', function () { - if (selectedMarker) { - selectedMarker.setAction($('#pointType').val()); - selectedMarker.setAlt($('#pointAlt').val()); - if ([MWNP.WPTYPE.SET_POI,MWNP.WPTYPE.PH_UNLIM,MWNP.WPTYPE.LAND].includes(selectedMarker.getAction())) { - selectedMarker.setP1(0); - selectedMarker.setP2(0); - selectedMarker.setP3(0); - } - else { - selectedMarker.setP1($('#pointP1').val()); - selectedMarker.setP2($('#pointP2').val()); - selectedMarker.setP3($('#pointP3').val()); - } - mission.updateWaypoint(selectedMarker); - mission.update(); - selectedFeature.setStyle(getWaypointIcon(selectedMarker, false)); - selectedMarker = null; - selectedFeature = null; - clearEditForm(); - cleanLayers(); - redrawLayers(); - - } - - /* if (selectedMarker) { - map.getLayers().forEach(function (t) { - if (t === selectedMarker) { - var geometry = t.getSource().getFeatures()[0].getGeometry(); - geometry.setCoordinates(ol.proj.fromLonLat([parseFloat($('#pointLon').val()), parseFloat($('#pointLat').val())])); - t.alt = $('#pointAlt').val(); - t.action = $('#pointType').val(); - // if action is Set_POI, PH_UNLIM, LAND, set parameter_i to 0 - if (t.action == '5' || t.action == '2' || t.action == '8') { - t.parameter1 = 0; - t.parameter2 = 0; - t.parameter3 = 0; - } - // else for other kind of waypoints, set parameter_i to pointP_i value - else { - console.log("$('#pointP1').val() : ",$('#pointP1').val()); - t.parameter1 = $('#pointP1').val(); - t.parameter2 = $('#pointP2').val(); - t.parameter3 = $('#pointP3').val(); - } - // Manage Options - // if RTH options selected, store GUI value in t.options - if ($('input[name=Options]:checked').val() == "RTH") { - t.options = {key: $('input[name=Options]:checked').val(), - landAfter: $('#Options_LandRTH').prop('checked') - }; - } - // if JUMP options selected, store GUI value in t.options - else if ($('input[name=Options]:checked').val() == "JUMP") { - // check if users input values verify the condition i an integer btw [0,99] and within length of Markers - if (!Array.from({length: markers.length}, (v, i) => i+1).includes(Number($('#Options_TargetJUMP').val())) || (Number($('#Options_NumberJUMP').val())<0 || Number($('#Options_NumberJUMP').val())>99)) { - alert(chrome.i18n.getMessage('MissionPlannerJumpSettingsCheck')) - t.options = {key: 'None'} - } - else { - t.options = {key: $('input[name=Options]:checked').val(), - targetWP: $('#Options_TargetJUMP').val(), - numRepeat: $('#Options_NumberJUMP').val() - }; - } - } - // if SET_HEAD options selected, store GUI value in t.options - else if ($('input[name=Options]:checked').val() == "SET_HEAD") { - // Check if Heading is btw [0, 360°] or = -1 - if ($('#Options_HeadingHead').val()>360 || ($('#Options_HeadingHead').val()<0 && $('#Options_HeadingHead').val() !=-1)) { - alert(chrome.i18n.getMessage('MissionPlannerHeadSettingsCheck')) - t.options = {key: 'None'} - } - else { - t.options = {key: $('input[name=Options]:checked').val(), - heading: $('#Options_HeadingHead').val() - }; - } - } - else { - t.options = {key: $('input[name=Options]:checked').val()} - } - } - }); - selectedMarker.getSource().getFeatures()[0].setStyle(getPointIcon(selectedMarker.action, false, selectedMarker.number)); - selectedMarker = null; - clearEditForm(); - repaint(); - } */ - }); - + ///////////////////////////////////////////// + // Callback for Save/load buttons + ///////////////////////////////////////////// $('#loadFileMissionButton').on('click', function () { if (markers.length && !confirm(chrome.i18n.getMessage('confirm_delete_all_points'))) return; removeAllWaypoints(); @@ -1952,6 +1783,45 @@ TABS.mission_control.initialize = function (callback) { var center = ol.proj.toLonLat(map.getView().getCenter()); var zoom = map.getView().getZoom(); + var data = { + 'version': { $: { 'value': '2.3-pre8' } }, + 'mwp': { $: { 'cx': (Math.round(center[0] * 10000000) / 10000000), 'cy': (Math.round(center[1] * 10000000) / 10000000), 'zoom': zoom } }, + 'missionitem': [] + }; + + mission.get().forEach(function (waypoint) { + var point = { $: { + 'no': waypoint.getNumber()+1, + 'action': MWNP.WPTYPE.REV[waypoint.getAction()], + 'lat': (Math.round(waypoint.getLat() * 10000000) / 10000000), + 'lon': (Math.round(waypoint.getLon() * 10000000) / 10000000), + 'alt': (waypoint.getAlt() / 100), + 'parameter1': (MWNP.WPTYPE.REV[waypoint.getAction()] == "JUMP" ? waypoint.getP1()+1 : waypoint.getP1()), + 'parameter2': waypoint.getP2(), + 'parameter3': waypoint.getP3(), + } }; + data.missionitem.push(point); + }); + + var builder = new window.xml2js.Builder({ 'rootName': 'mission', 'renderOpts': { 'pretty': true, 'indent': '\t', 'newline': '\n' } }); + var xml = builder.buildObject(data); + fs.writeFile(filename, xml, (err) => { + if (err) { + GUI.log('Error writing file'); + return console.error(err); + } + GUI.log('File saved'); + }); + } + + + /* function saveMissionFile(filename) { + const fs = require('fs'); + if (!window.xml2js) return GUI.log('Error writing file (xml2js not found)'); + + var center = ol.proj.toLonLat(map.getView().getCenter()); + var zoom = map.getView().getZoom(); + var data = { 'version': { $: { 'value': '2.3-pre8' } }, 'mwp': { $: { 'cx': (Math.round(center[0] * 10000000) / 10000000), 'cy': (Math.round(center[1] * 10000000) / 10000000), 'zoom': zoom } }, @@ -2054,7 +1924,7 @@ TABS.mission_control.initialize = function (callback) { } GUI.log('File saved'); }); - } + } */ // New: function to get number of Non Marker points such as JUMP, SET_HEAD and RTH function getNumberOfNonMarkerForJump2(nonMarkerPointList, numTargetMarker) { From 949e511d28540931ca32190d78edccef226626b1 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 9 Apr 2021 01:22:36 +0200 Subject: [PATCH 30/58] Waypoint OOP version 1.5 --- js/fc.js | 2 +- js/msp/MSPHelper.js | 28 ++- js/safehomeCollection.js | 1 + js/waypointCollection.js | 38 +++- tabs/mission_control.html | 11 +- tabs/mission_control.js | 447 ++++++++++++++------------------------ 6 files changed, 237 insertions(+), 290 deletions(-) diff --git a/js/fc.js b/js/fc.js index 71dcfa3a..f0e8ebe1 100644 --- a/js/fc.js +++ b/js/fc.js @@ -252,7 +252,7 @@ var FC = { } }; */ - MISSION_PLANER = new waypointCollection(); + MISSION_PLANER = new WaypointCollection(); ANALOG = { voltage: 0, diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 6ae41bbe..36ab3f69 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -2934,13 +2934,13 @@ var mspHelper = (function (gui) { self.loadWaypoints = function (callback) { MISSION_PLANER.flush(); - getMissionInfo(); + mspHelper.getMissionInfo(); let waypointId = 0; MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, nextWaypoint); function nextWaypoint() { waypointId++; - if (waypointId < SAFEHOMES.getMaxSafehomeCount()-1) { + if (waypointId < MISSION_PLANER.get().length-1) { MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, nextWaypoint); } else { @@ -2949,6 +2949,30 @@ var mspHelper = (function (gui) { }; }; + self.saveWaypoints = function (callback) { + let waypointId = 0; + console.log("saveWaypoints legth ",MISSION_PLANER.get().length); + console.log("WP Number : ",MISSION_PLANER.getWaypoint(waypointId).getNumber()); + MSP.send_message(MSPCodes.MSP_SET_WP, MISSION_PLANER.extractBuffer(waypointId), false, nextWaypoint) + + function nextWaypoint() { + waypointId++; + console.log("WP Number : ",MISSION_PLANER.getWaypoint(waypointId).getNumber()); + console.log("End mission : ",MISSION_PLANER.getWaypoint(waypointId).getEndMission()); + if (waypointId < MISSION_PLANER.get().length-1) { + MSP.send_message(MSPCodes.MSP_SET_WP, MISSION_PLANER.extractBuffer(waypointId), false, nextWaypoint); + } + else { + MSP.send_message(MSPCodes.MSP_SET_WP, MISSION_PLANER.extractBuffer(waypointId), false, endMission); + } + }; + + function endMission() { + GUI.log('End send point'); + MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, callback); + } + }; + self.loadSafehomes = function (callback) { SAFEHOMES.flush(); let safehomeId = 0; diff --git a/js/safehomeCollection.js b/js/safehomeCollection.js index 01efb73b..dd15a443 100644 --- a/js/safehomeCollection.js +++ b/js/safehomeCollection.js @@ -95,6 +95,7 @@ let SafehomeCollection = function () { self.updateSafehome = function(newSafehome) { data[newSafehome.getNumber()] = newSafehome; }; + return self; }; \ No newline at end of file diff --git a/js/waypointCollection.js b/js/waypointCollection.js index 12073fc0..5c02fc84 100644 --- a/js/waypointCollection.js +++ b/js/waypointCollection.js @@ -5,7 +5,7 @@ let WaypointCollection = function () { let self = {}, data = [], - maxWaypoints = 0, + maxWaypoints = 60, isValidMission = 0, countBusyPoints = 0, version = 0, @@ -160,6 +160,12 @@ let WaypointCollection = function () { optionIdx = 0; idx++; } + if (element.getNumber() == self.get().length-1) { + element.setEndMission(0xA5); + } + else { + element.setEndMission(0); + } } }); }; @@ -194,7 +200,6 @@ let WaypointCollection = function () { if (tmpData != 'undefined' && tmpData.length !=0) { tmpNumber = tmpData.length; } - console.log("tmpNumber : ",tmpNumber); let tempWp = new Waypoint(waypoint.getNumber()+tmpNumber+1, MWNP.WPTYPE.JUMP, 0, 0); tempWp.setAttached(true); tempWp.setAttachedId(waypoint.getNumber()); @@ -211,6 +216,35 @@ let WaypointCollection = function () { }); } + + self.extractBuffer = function(waypointId) { + let buffer = []; + let waypoint = self.getWaypoint(waypointId); + console.log("waypoint.getNumber() ",waypoint.getNumber()); + buffer.push(waypoint.getNumber()); // sbufReadU8(src); // number + buffer.push(waypoint.getAction()); // sbufReadU8(src); // action + buffer.push(specificByte(waypoint.getLat(), 0)); // sbufReadU32(src); // lat + buffer.push(specificByte(waypoint.getLat(), 1)); + buffer.push(specificByte(waypoint.getLat(), 2)); + buffer.push(specificByte(waypoint.getLat(), 3)); + buffer.push(specificByte(waypoint.getLon(), 0)); // sbufReadU32(src); // lon + buffer.push(specificByte(waypoint.getLon(), 1)); + buffer.push(specificByte(waypoint.getLon(), 2)); + buffer.push(specificByte(waypoint.getLon(), 3)); + buffer.push(specificByte(waypoint.getAlt(), 0)); // sbufReadU32(src); // to set altitude (cm) + buffer.push(specificByte(waypoint.getAlt(), 1)); + buffer.push(specificByte(waypoint.getAlt(), 2)); + buffer.push(specificByte(waypoint.getAlt(), 3)); + buffer.push(lowByte(waypoint.getP1())); //sbufReadU16(src); // P1 speed or landing + buffer.push(highByte(waypoint.getP1())); + buffer.push(lowByte(waypoint.getP2())); //sbufReadU16(src); // P2 + buffer.push(highByte(waypoint.getP2())); + buffer.push(lowByte(waypoint.getP3())); //sbufReadU16(src); // P3 + buffer.push(highByte(waypoint.getP3())); + buffer.push(waypoint.getEndMission()); //sbufReadU8(src); // future: to set nav flag + + return buffer; + } return self; }; \ No newline at end of file diff --git a/tabs/mission_control.html b/tabs/mission_control.html index 865445c6..58752f66 100644 --- a/tabs/mission_control.html +++ b/tabs/mission_control.html @@ -110,11 +110,16 @@ +
+ + +
+
From 8fc9da3288bbe32195e1fe2e99aebe3bffcd8a6c Mon Sep 17 00:00:00 2001 From: Alexander van Saase Date: Thu, 15 Apr 2021 10:37:33 +0200 Subject: [PATCH 39/58] climb first setting --- _locales/en/messages.json | 3 +++ tabs/advanced_tuning.html | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 0fbfee27..f608fa60 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2494,6 +2494,9 @@ "rthClimbFirst": { "message": "Climb before RTH" }, + "rthClimbFirstHelp": { + "message": "If set to ON or ON_FW_SPIRAL, aircraft will climb to nav_rth_altitude first before turning to head home. If set to OFF, aircraft will turn and head home immediately climbing on the way. For a fixed wing, ON will use a linear climb, ON_FW_SPIRAL will use a loiter turning climb with climb rate set by nav_auto_climb_rate and turn rate set by nav_fw_loiter_radius (ON_FW_SPIRAL is a fixed wing setting and behaves the same as ON for a multirotor)." + }, "rthClimbIgnoreEmergency": { "message": "Climb regardless of position sensors health" }, diff --git a/tabs/advanced_tuning.html b/tabs/advanced_tuning.html index 77c44936..dc79a9cf 100644 --- a/tabs/advanced_tuning.html +++ b/tabs/advanced_tuning.html @@ -335,9 +335,10 @@
-
- +
+ +
From 26aeb5e40c8245fcba86b7f272f6fc76195cd9a4 Mon Sep 17 00:00:00 2001 From: Alexander van Saase Date: Thu, 15 Apr 2021 10:47:16 +0200 Subject: [PATCH 40/58] rth override --- _locales/en/messages.json | 6 ++++++ tabs/advanced_tuning.html | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index f608fa60..72b3552e 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2500,6 +2500,12 @@ "rthClimbIgnoreEmergency": { "message": "Climb regardless of position sensors health" }, + "rthAltControlOverride": { + "message": "Override RTH altitude and climb setting with roll/pitch stick" + }, + "rthAltControlOverrideHELP": { + "message": "When enabled, the climb on RTH can be canceled by holding full pitch down for >1 second so aircraft will fly home at the current altitude. The climb first setting can be overriden by holding full roll left or right for >1 second (this only applies to fixed wing aircraft). " + }, "rthTailFirst": { "message": "Tail first" }, diff --git a/tabs/advanced_tuning.html b/tabs/advanced_tuning.html index dc79a9cf..439ee515 100644 --- a/tabs/advanced_tuning.html +++ b/tabs/advanced_tuning.html @@ -345,6 +345,12 @@
+ +
+ + +
+
From 4ed90d5aaaf3cf3114f7e95aaf3017c5a04a89d4 Mon Sep 17 00:00:00 2001 From: Alexander van Saase Date: Thu, 15 Apr 2021 10:50:02 +0200 Subject: [PATCH 41/58] text --- _locales/en/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 72b3552e..c7650d38 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2504,7 +2504,7 @@ "message": "Override RTH altitude and climb setting with roll/pitch stick" }, "rthAltControlOverrideHELP": { - "message": "When enabled, the climb on RTH can be canceled by holding full pitch down for >1 second so aircraft will fly home at the current altitude. The climb first setting can be overriden by holding full roll left or right for >1 second (this only applies to fixed wing aircraft). " + "message": "When enabled, the climb on RTH can be canceled by holding full pitch down for >1 second so aircraft will fly home at the current altitude. On fixed wing aircraft, the 'Climb before RTH' setting can be overriden by holding full roll left or right for >1 second so that the plane will turn towards home immediately." }, "rthTailFirst": { "message": "Tail first" From 2426cac5bb9a381cac4a08cb425c8fbcfdebd2b6 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:04:11 +0200 Subject: [PATCH 42/58] Waypoint OOP version 2.0 Correction of PH_TIME to POSHOLD_TIME to be compliant with XSD specification. Increase of Font size for text on line for Jump and Set_HEAD. Renaming of safeHome.js to safehome.js to be compliant to Case-Sensitive check for Blob. --- tabs/mission_control.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/tabs/mission_control.js b/tabs/mission_control.js index c719df2c..1cc3c05b 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -12,14 +12,14 @@ var MWNP = MWNP || {}; // WayPoint type MWNP.WPTYPE = { - WAYPOINT: 1, - PH_UNLIM: 2, - PH_TIME: 3, - RTH: 4, - SET_POI: 5, - JUMP: 6, - SET_HEAD: 7, - LAND: 8 + WAYPOINT: 1, + POSHOLD_UNLIM: 2, + POSHOLD_TIME: 3, + RTH: 4, + SET_POI: 5, + JUMP: 6, + SET_HEAD: 7, + LAND: 8 }; // Reverse WayPoint type dictionary @@ -745,6 +745,7 @@ TABS.mission_control.initialize = function (callback) { }), text: new ol.style.Text({ text: lineText, + font: '14px sans-serif', placement : 'line', textBaseline: 'ideographic', stroke: new ol.style.Stroke({ @@ -1674,9 +1675,9 @@ TABS.mission_control.initialize = function (callback) { if (node.$[attr].match(/WAYPOINT/i)) { point.setAction(MWNP.WPTYPE.WAYPOINT); } else if (node.$[attr].match(/PH_UNLIM/i) || node.$[attr].match(/POSHOLD_UNLIM/i)) { - point.setAction(MWNP.WPTYPE.PH_UNLIM); + point.setAction(MWNP.WPTYPE.POSHOLD_UNLIM); } else if (node.$[attr].match(/PH_TIME/i) || node.$[attr].match(/POSHOLD_TIME/i)) { - point.setAction(MWNP.WPTYPE.PH_TIME); + point.setAction(MWNP.WPTYPE.POSHOLD_TIME); } else if (node.$[attr].match(/RTH/i)) { point.setAction(MWNP.WPTYPE.RTH); } else if (node.$[attr].match(/SET_POI/i)) { From 188399d7d99c5938c092785a12080fccec5080ae Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 16 Apr 2021 21:57:04 +0200 Subject: [PATCH 43/58] Waypoint OOP version 2.1 correction of Non-sensitive case on the call of background-image: url(../images/icons/cf_icon_MP_loadFile_grey.svg); Add Alert message on action aiming at removing a Jump target WP. Need to remove first the Jump defintion prior to remove the target WP. --- _locales/en/messages.json | 3 +++ js/waypointCollection.js | 11 +++++++++++ src/css/tabs/mission_planer.css | 2 +- tabs/mission_control.js | 17 +++++++++++------ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 38291b77..7afe1a8d 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3607,6 +3607,9 @@ "MissionPlannerRTHSettingsCheck": { "message": "RTH option is incorrect : Should be 0 or 1. Check it again! Being forced by default to 0, i.e no LAND after RTH!" }, + "MissionPlannerJumpTargetRemoval": { + "message": "You can't remove a Waypoint which is defined as a JUMP target! You first need to remove the target on the waypoint triggering the JUMP." + }, "SafehomeSelected": { "message": "" }, diff --git a/js/waypointCollection.js b/js/waypointCollection.js index 24fabb9a..9f845a38 100644 --- a/js/waypointCollection.js +++ b/js/waypointCollection.js @@ -310,6 +310,17 @@ let WaypointCollection = function () { }); return outputNumber; } + + self.isJumpTargetAttached = function(waypoint) { + let lJumptTargetAttached = []; + data.forEach(function (element) { + if (element.getAction() == MWNP.WPTYPE.JUMP && element.getP1() == waypoint.getNumber()) { + lJumptTargetAttached.push(element.getNumber()); + } + }); + console.log("lJumptTargetAttached ", lJumptTargetAttached); + return (lJumptTargetAttached.length != 0 && lJumptTargetAttached != 'undefined') + } return self; }; \ No newline at end of file diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index dba465b4..f572a646 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -38,7 +38,7 @@ } .tab-mission-control .ic_loadFromFC { - background-image: url(../images/icons/cf_icon_MP_loadfromFC_grey.svg); + background-image: url(../images/icons/cf_icon_MP_loadFromFC_grey.svg); } .tab-mission-control .ic_save2File { diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 1cc3c05b..b4d19bff 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1531,12 +1531,17 @@ TABS.mission_control.initialize = function (callback) { $('#removePoint').on('click', function () { if (selectedMarker) { - mission.dropWaypoint(selectedMarker); - selectedMarker = null; - mission.update(); - clearEditForm(); - cleanLayers(); - redrawLayers(); + if (mission.isJumpTargetAttached(selectedMarker)) { + alert(chrome.i18n.getMessage('MissionPlannerJumpTargetRemoval')); + } + else { + mission.dropWaypoint(selectedMarker); + selectedMarker = null; + mission.update(); + clearEditForm(); + cleanLayers(); + redrawLayers(); + } } }); From 5f357cc34dd2a4574174a82b04dc3a2187a70e0c Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 16 Apr 2021 22:09:23 +0200 Subject: [PATCH 44/58] waypoint OOP version 2.2 Add confirm pop-up when user want to delete WP with Non-Geo options attached. Accepting to remove this WP will remove the Attached Non-Geo options in the mission. --- _locales/en/messages.json | 3 +++ tabs/mission_control.js | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 7afe1a8d..767692c2 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3142,6 +3142,9 @@ "confirm_delete_all_points": { "message": "Do you really want to delete all points?" }, + "confirm_delete_point_with_options": { + "message": "Do you really want to delete this Waypoint with non-Geo JUMP/SET_HEAD/RTH options? If yes, Non-Geo options attached will be removed also!" + }, "servoMixer": { "message": "Servo mixer" }, diff --git a/tabs/mission_control.js b/tabs/mission_control.js index b4d19bff..ddf3c6c6 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1534,6 +1534,20 @@ TABS.mission_control.initialize = function (callback) { if (mission.isJumpTargetAttached(selectedMarker)) { alert(chrome.i18n.getMessage('MissionPlannerJumpTargetRemoval')); } + else if (mission.getAttachedFromWaypoint(selectedMarker) && mission.getAttachedFromWaypoint(selectedMarker).length != 0) { + if (confirm(chrome.i18n.getMessage('confirm_delete_point_with_options'))) { + mission.getAttachedFromWaypoint(selectedMarker).forEach(function (element) { + mission.dropWaypoint(element); + mission.update(); + }); + mission.dropWaypoint(selectedMarker); + selectedMarker = null; + mission.update(); + clearEditForm(); + cleanLayers(); + redrawLayers(); + } + } else { mission.dropWaypoint(selectedMarker); selectedMarker = null; From 8eac13be9a5ea8607d5b6756322f459c7a7a69df Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 16 Apr 2021 22:32:45 +0200 Subject: [PATCH 45/58] Waypoint OOP version 2.3 --- js/{safeHome.js => safehome_old.js} | 1 + 1 file changed, 1 insertion(+) rename js/{safeHome.js => safehome_old.js} (99%) diff --git a/js/safeHome.js b/js/safehome_old.js similarity index 99% rename from js/safeHome.js rename to js/safehome_old.js index c8bf8ac0..b0c655d9 100644 --- a/js/safeHome.js +++ b/js/safehome_old.js @@ -1,6 +1,7 @@ /*global $*/ 'use strict'; + let Safehome = function (number, enabled, lat, lon) { var self = {}; From 8b6e4cb93492841fc830b641595aa172c908c478 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Fri, 16 Apr 2021 22:33:07 +0200 Subject: [PATCH 46/58] Waypoint OOP version 2.4 --- js/{safehome_old.js => safehome.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename js/{safehome_old.js => safehome.js} (100%) diff --git a/js/safehome_old.js b/js/safehome.js similarity index 100% rename from js/safehome_old.js rename to js/safehome.js From 4ddbc9a82335b84776454c222b9368f74ee09a1f Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 11:46:57 +0200 Subject: [PATCH 47/58] Waypoint OOP version 2.5 --- _locales/en/messages.json | 3 +++ ...romFC_grey.svg => cf_icon_MP_loadFromFC_grey_2.svg} | 0 js/waypoint.js | 9 +++++++++ js/waypointCollection.js | 10 ++++++++++ src/css/tabs/mission_planer.css | 2 +- tabs/mission_control.js | 8 ++++++++ 6 files changed, 31 insertions(+), 1 deletion(-) rename images/icons/{cf_icon_MP_loadfromFC_grey.svg => cf_icon_MP_loadFromFC_grey_2.svg} (100%) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 767692c2..3ccb1a6e 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3604,6 +3604,9 @@ "MissionPlannerJump2SettingsCheck": { "message": "JUMP settings incorrect : Repeat should not exceed 10! Check it again! Being forced to number of repeat equal 0!" }, + "MissionPlannerJump3SettingsCheck": { + "message": "JUMP settings incorrect : not able to Jump to a POI! Being forced to WP 1!" + }, "MissionPlannerHeadSettingsCheck": { "message": "Heading value is incorrect : Check it again! Being forced by default to -1 thence!" }, diff --git a/images/icons/cf_icon_MP_loadfromFC_grey.svg b/images/icons/cf_icon_MP_loadFromFC_grey_2.svg similarity index 100% rename from images/icons/cf_icon_MP_loadfromFC_grey.svg rename to images/icons/cf_icon_MP_loadFromFC_grey_2.svg diff --git a/js/waypoint.js b/js/waypoint.js index a2c7653f..9985404b 100644 --- a/js/waypoint.js +++ b/js/waypoint.js @@ -6,6 +6,7 @@ let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endM var self = {}; let layerNumber = "undefined"; let attachedNumber = "undefined"; + let poiNumber = "undefined"; self.getNumber = function () { return number; @@ -23,6 +24,14 @@ let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endM layerNumber = data; }; + self.getPoiNumber = function () { + return poiNumber; + }; + + self.setPoiNumber = function (data) { + poiNumber = data; + }; + self.isUsed = function () { return isUsed; }; diff --git a/js/waypointCollection.js b/js/waypointCollection.js index 9f845a38..59df8335 100644 --- a/js/waypointCollection.js +++ b/js/waypointCollection.js @@ -321,6 +321,16 @@ let WaypointCollection = function () { console.log("lJumptTargetAttached ", lJumptTargetAttached); return (lJumptTargetAttached.length != 0 && lJumptTargetAttached != 'undefined') } + + self.getPoiList = function() { + let poiList = []; + data.forEach(function (element) { + if (element.getAction() == MWNP.WPTYPE.SET_POI) { + poiList.push(element.getNumber()); + } + }); + return poiList; + } return self; }; \ No newline at end of file diff --git a/src/css/tabs/mission_planer.css b/src/css/tabs/mission_planer.css index f572a646..0c74ef53 100644 --- a/src/css/tabs/mission_planer.css +++ b/src/css/tabs/mission_planer.css @@ -54,7 +54,7 @@ } .tab-mission-control .ic_loadFromEprom { - background-image: url(../images/icons/cf_icon_MP_loadfromEprom_grey.svg); + background-image: url(../images/icons/cf_icon_MP_loadFromEprom_grey.svg); } .tab-mission-control .ic_removeAll { diff --git a/tabs/mission_control.js b/tabs/mission_control.js index ddf3c6c6..ea025f7a 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -884,6 +884,14 @@ TABS.mission_control.initialize = function (callback) { $(this).val(1); alert(chrome.i18n.getMessage('MissionPlannerJumpSettingsCheck')); } + else if (mission.getPoiList().length != 0 && mission.getPoiList()) { + console.log("mission.getPoiList() ",mission.getPoiList()); + console.log(mission.convertJumpNumberToWaypoint(Number($(this).val())-1)); + if (mission.getPoiList().includes(mission.convertJumpNumberToWaypoint(Number($(this).val())-1))) { + $(this).val(1); + alert(chrome.i18n.getMessage('MissionPlannerJump3SettingsCheck')); + } + } } element.setP1((MWNP.WPTYPE.REV[element.getAction()] == "JUMP" ? mission.convertJumpNumberToWaypoint(Number($(this).val())-1) : Number($(this).val()))); mission.updateWaypoint(element); From 3e7dc4a22695f80920f4570ec145fc3a549dd731 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 11:48:31 +0200 Subject: [PATCH 48/58] waypoint OOP version 2.6 Correction on Icon filename due to Non-sensitive case Add Alert Message when user try to target a Jump on a POI --- ...on_MP_loadFromFC_grey_2.svg => cf_icon_MP_loadFromFC_grey.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename images/icons/{cf_icon_MP_loadFromFC_grey_2.svg => cf_icon_MP_loadFromFC_grey.svg} (100%) diff --git a/images/icons/cf_icon_MP_loadFromFC_grey_2.svg b/images/icons/cf_icon_MP_loadFromFC_grey.svg similarity index 100% rename from images/icons/cf_icon_MP_loadFromFC_grey_2.svg rename to images/icons/cf_icon_MP_loadFromFC_grey.svg From 9bdda9bd871b1f9fd98093f13084fc586da408da Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 11:57:41 +0200 Subject: [PATCH 49/58] Waypoint OOP version 2.7 Add some break lines on Alert/Confirm message to ease readability --- _locales/en/messages.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 3ccb1a6e..eab1f55d 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3143,7 +3143,7 @@ "message": "Do you really want to delete all points?" }, "confirm_delete_point_with_options": { - "message": "Do you really want to delete this Waypoint with non-Geo JUMP/SET_HEAD/RTH options? If yes, Non-Geo options attached will be removed also!" + "message": "Do you really want to delete this Waypoint with non-Geo JUMP/SET_HEAD/RTH options? \nIf yes, Non-Geo options attached will be removed also!" }, "servoMixer": { "message": "Servo mixer" @@ -3599,22 +3599,22 @@ "message": "Current Meter Type" }, "MissionPlannerJumpSettingsCheck": { - "message": "JUMP settings incorrect : Check it again! Being forced to WP 1!" + "message": "JUMP settings incorrect : Check it again! \nBeing forced to WP 1!" }, "MissionPlannerJump2SettingsCheck": { - "message": "JUMP settings incorrect : Repeat should not exceed 10! Check it again! Being forced to number of repeat equal 0!" + "message": "JUMP settings incorrect : Repeat should not exceed 10! \nCheck it again! Being forced to number of repeat equal 0!" }, "MissionPlannerJump3SettingsCheck": { - "message": "JUMP settings incorrect : not able to Jump to a POI! Being forced to WP 1!" + "message": "JUMP settings incorrect : not able to Jump to a POI! \nBeing forced to WP 1!" }, "MissionPlannerHeadSettingsCheck": { "message": "Heading value is incorrect : Check it again! Being forced by default to -1 thence!" }, "MissionPlannerRTHSettingsCheck": { - "message": "RTH option is incorrect : Should be 0 or 1. Check it again! Being forced by default to 0, i.e no LAND after RTH!" + "message": "RTH option is incorrect : Should be 0 or 1. Check it again! \nBeing forced by default to 0, i.e no LAND after RTH!" }, "MissionPlannerJumpTargetRemoval": { - "message": "You can't remove a Waypoint which is defined as a JUMP target! You first need to remove the target on the waypoint triggering the JUMP." + "message": "You can't remove a Waypoint which is defined as a JUMP target! \nYou first need to remove the target on the waypoint triggering the JUMP." }, "SafehomeSelected": { "message": "" From 049ff8501617c99f7006393dc3e8cc2203322a2a Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 12:59:20 +0200 Subject: [PATCH 50/58] Waypoint OOP version 2.8 --- ..._position_poi.png => cf_icon_position_POI_2.png} | Bin tabs/mission_control.js | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) rename images/icons/{cf_icon_position_poi.png => cf_icon_position_POI_2.png} (100%) diff --git a/images/icons/cf_icon_position_poi.png b/images/icons/cf_icon_position_POI_2.png similarity index 100% rename from images/icons/cf_icon_position_poi.png rename to images/icons/cf_icon_position_POI_2.png diff --git a/tabs/mission_control.js b/tabs/mission_control.js index ea025f7a..93b74f02 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1088,11 +1088,11 @@ TABS.mission_control.initialize = function (callback) { var geometry = /** @type {ol.geom.SimpleGeometry} */ (this.feature_.getGeometry()); - - geometry.translate(deltaX, deltaY); - - this.coordinate_[0] = evt.coordinate[0]; - this.coordinate_[1] = evt.coordinate[1]; + if (tempMarker.kind == "waypoint" ||tempMarker.kind == "safehome") { + geometry.translate(deltaX, deltaY); + this.coordinate_[0] = evt.coordinate[0]; + this.coordinate_[1] = evt.coordinate[1]; + } let coord = ol.proj.toLonLat(geometry.getCoordinates()); if (tempMarker.kind == "waypoint") { From 48b925a42b7f84789d0d09f2df11e6efe8589ae8 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 13:00:17 +0200 Subject: [PATCH 51/58] Waypoint OOP version 2.9 Correction of POI icon name (Sensitive issue) Remove Draggable selection for Line between WP --- ..._position_POI_2.png => cf_icon_position_POI.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename images/icons/{cf_icon_position_POI_2.png => cf_icon_position_POI.png} (100%) diff --git a/images/icons/cf_icon_position_POI_2.png b/images/icons/cf_icon_position_POI.png similarity index 100% rename from images/icons/cf_icon_position_POI_2.png rename to images/icons/cf_icon_position_POI.png From bbc0b014c87570d945ff73fa381198f4a095bac9 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 13:35:28 +0200 Subject: [PATCH 52/58] Waypoint OOP Version 3.0 Correction on a bug found when you add a non-geo options and when you want to move next WP. Before correction, Next WP was then disappearing and the line was frozen, unless you add a new WP after. Thus, modification done on Add/remove Non-Geo point to force Cleaning and Redraw of the WP icon and lines --- tabs/mission_control.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 93b74f02..bdba8eb9 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1474,8 +1474,9 @@ TABS.mission_control.initialize = function (callback) { if (selectedMarker) { mission.dropAttachedFromWaypoint(selectedMarker, $(event.currentTarget).attr("data-index")-1); renderWaypointOptionsTable(selectedMarker); - cleanLines(); - redrawLayer(); + //cleanLines(); + cleanLayers(); + redrawLayers(); } }); @@ -1483,8 +1484,9 @@ TABS.mission_control.initialize = function (callback) { if (selectedMarker) { mission.addAttachedFromWaypoint(selectedMarker); renderWaypointOptionsTable(selectedMarker); - cleanLines(); - redrawLayer(); + //cleanLines(); + cleanLayers(); + redrawLayers(); } }); From 325a01d4171198330836ca29d2a6b234d699f520 Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 20:07:40 +0200 Subject: [PATCH 53/58] Waypoint OOP version 3.1 Add possibility to Jump -1 + change Text on the line to indicate that it is an infinite loop Correction of Bug on Saving to FC & EPROM Correction of bug when Non-Geo options is added => Icon of the selected WP was not in Red anymore --- tabs/mission_control.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tabs/mission_control.js b/tabs/mission_control.js index bdba8eb9..5f6f4e35 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -708,7 +708,7 @@ TABS.mission_control.initialize = function (callback) { else if (element.isAttached()) { if (element.getAction() == MWNP.WPTYPE.JUMP) { let coord = ol.proj.fromLonLat([mission.getWaypoint(element.getP1()).getLonMap(), mission.getWaypoint(element.getP1()).getLatMap()]); - paintLine(oldPos, coord, element.getNumber(), color='#e935d6', lineDash=5, lineText="Repeat x"+String(element.getP2()), selection=false); + paintLine(oldPos, coord, element.getNumber(), color='#e935d6', lineDash=5, lineText="Repeat x"+(element.getP2() == -1 ? " infinite" : String(element.getP2())), selection=false); } // If classic WPs is defined with a heading = -1, change Boolean for POI to false. If it is defined with a value different from -1, activate Heading boolean else if (element.getAction() == MWNP.WPTYPE.SET_HEAD) { @@ -901,7 +901,7 @@ TABS.mission_control.initialize = function (callback) { $row.find(".waypointOptions-p2").val(element.getP2()).change(function () { if (MWNP.WPTYPE.REV[element.getAction()] == "JUMP") { - if ($(this).val() > 10 || $(this).val() < 0) + if ($(this).val() > 10 || ($(this).val() < 0 && $(this).val() != -1)) { $(this).val(0); alert(chrome.i18n.getMessage('MissionPlannerJump2SettingsCheck')); @@ -1477,6 +1477,8 @@ TABS.mission_control.initialize = function (callback) { //cleanLines(); cleanLayers(); redrawLayers(); + selectedFeature = markers[selectedMarker.getLayerNumber()].getSource().getFeatures()[0]; + selectedFeature.setStyle(getWaypointIcon(selectedMarker, true)); } }); @@ -1487,6 +1489,8 @@ TABS.mission_control.initialize = function (callback) { //cleanLines(); cleanLayers(); redrawLayers(); + selectedFeature = markers[selectedMarker.getLayerNumber()].getSource().getFeatures()[0]; + selectedFeature.setStyle(getWaypointIcon(selectedMarker, true)); } }); @@ -1605,6 +1609,7 @@ TABS.mission_control.initialize = function (callback) { sendWaypointsToFC(); GUI.log('End send point'); $('#saveMissionButton').removeClass('disabled'); + }); $('#loadEepromMissionButton').on('click', function () { @@ -1823,6 +1828,12 @@ TABS.mission_control.initialize = function (callback) { mission.setValidMission(MISSION_PLANER.getValidMission()); mission.setCountBusyPoints(MISSION_PLANER.getCountBusyPoints()); updateTotalInfo(); + mission.reinit(); + mission.copy(MISSION_PLANER); + mission.update(true); + cleanLayers(); + redrawLayers(); + $('#MPeditPoint').fadeOut(300); }, 2000); } From bc4abc1661b67c994b597d0732d2b357fef8532b Mon Sep 17 00:00:00 2001 From: ArnoTlse <76259684+ArnoTlse@users.noreply.github.com> Date: Sat, 17 Apr 2021 20:42:26 +0200 Subject: [PATCH 54/58] Waypoint OOP version 3.2 correction on MWP file loading. When MWP tag is absent, it trigger an empty map without WP. It has been corrected now --- tabs/mission_control.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tabs/mission_control.js b/tabs/mission_control.js index 5f6f4e35..3f3a9b23 100644 --- a/tabs/mission_control.js +++ b/tabs/mission_control.js @@ -1747,13 +1747,21 @@ TABS.mission_control.initialize = function (callback) { } // update Attached Waypoints (i.e non Map Markers) mission.update(true); - if (mission.getCenter() != {}) { + console.log("test ",Object.keys(mission.getCenter()).length !== 0); + if (Object.keys(mission.getCenter()).length !== 0) { + console.log("toto"); var coord = ol.proj.fromLonLat([mission.getCenter().lon / 10000000 , mission.getCenter().lat / 10000000]); map.getView().setCenter(coord); - if (mission.getCenter().zoom) map.getView().setZoom(mission.getCenter().zoom); + console.log("mission.getCenter().zoom ", mission.getCenter().zoom); + if (mission.getCenter().zoom) { + map.getView().setZoom(mission.getCenter().zoom); + } + else { + map.getView().setZoom(16); + } } else { - var coord = ol.proj.fromLonLat([mission.getWaypoint(0).getCenter().lon / 10000000, mission.getWaypoint(0).getCenter().lat / 10000000]); + var coord = ol.proj.fromLonLat([mission.getWaypoint(0).getLonMap(), mission.getWaypoint(0).getLatMap()]); map.getView().setCenter(coord); map.getView().setZoom(16); } From f7c7ad382f74abb9948e65219cdf512dae04a90e Mon Sep 17 00:00:00 2001 From: Michel Pastor Date: Mon, 19 Apr 2021 23:43:07 +0200 Subject: [PATCH 55/58] Copter: add new setting for final landing vspeed instead of being hardcoded to 25% of set landing vspeed (#1235) --- _locales/en/messages.json | 7 +++++-- js/msp/MSPHelper.js | 16 ++++++++++------ tabs/advanced_tuning.html | 9 +++++++-- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 18f87e65..4f177b83 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2536,8 +2536,11 @@ "rthHomeAltitudeHelp": { "message": "Used when not landing at the home point. Upon arriving at home, the plane will loiter and change altitude to the RTH Home Altitude. Default is 0, which is feature disabled." }, - "landDescentRate": { - "message": "Landing vertical speed [cm/s]" + "landMinAltVspd": { + "message": "Vertical descent velocity under min. vertical landing speed altitude [cm/s]" + }, + "landMaxAltVspd": { + "message": "Vertical descent velocity above slowdown altitude [cm/s]" }, "landSlowdownMinAlt": { "message": "Min. vertical landing speed at altitude [cm]" diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 179d4a1f..fba34acf 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -1327,10 +1327,11 @@ var mspHelper = (function (gui) { RTH_AND_LAND_CONFIG.rthAltControlMode = data.getUint8(6); RTH_AND_LAND_CONFIG.rthAbortThreshold = data.getUint16(7, true); RTH_AND_LAND_CONFIG.rthAltitude = data.getUint16(9, true); - RTH_AND_LAND_CONFIG.landDescentRate = data.getUint16(11, true); - RTH_AND_LAND_CONFIG.landSlowdownMinAlt = data.getUint16(13, true); - RTH_AND_LAND_CONFIG.landSlowdownMaxAlt = data.getUint16(15, true); - RTH_AND_LAND_CONFIG.emergencyDescentRate = data.getUint16(17, true); + RTH_AND_LAND_CONFIG.landMinAltVspd = data.getUint16(11, true); + RTH_AND_LAND_CONFIG.landMaxAltVspd = data.getUint16(13, true); + RTH_AND_LAND_CONFIG.landSlowdownMinAlt = data.getUint16(15, true); + RTH_AND_LAND_CONFIG.landSlowdownMaxAlt = data.getUint16(17, true); + RTH_AND_LAND_CONFIG.emergencyDescentRate = data.getUint16(19, true); break; case MSPCodes.MSP_SET_RTH_AND_LAND_CONFIG: @@ -2007,8 +2008,11 @@ var mspHelper = (function (gui) { buffer.push(lowByte(RTH_AND_LAND_CONFIG.rthAltitude)); buffer.push(highByte(RTH_AND_LAND_CONFIG.rthAltitude)); - buffer.push(lowByte(RTH_AND_LAND_CONFIG.landDescentRate)); - buffer.push(highByte(RTH_AND_LAND_CONFIG.landDescentRate)); + buffer.push(lowByte(RTH_AND_LAND_CONFIG.landMinAltVspd)); + buffer.push(highByte(RTH_AND_LAND_CONFIG.landMinAltVspd)); + + buffer.push(lowByte(RTH_AND_LAND_CONFIG.landMaxAltVspd)); + buffer.push(highByte(RTH_AND_LAND_CONFIG.landMaxAltVspd)); buffer.push(lowByte(RTH_AND_LAND_CONFIG.landSlowdownMinAlt)); buffer.push(highByte(RTH_AND_LAND_CONFIG.landSlowdownMinAlt)); diff --git a/tabs/advanced_tuning.html b/tabs/advanced_tuning.html index 439ee515..2dca16a9 100644 --- a/tabs/advanced_tuning.html +++ b/tabs/advanced_tuning.html @@ -363,8 +363,13 @@
- - + + +
+ +
+ +
From 516c80f1d8b1f26b4019104c735026a9d6d09836 Mon Sep 17 00:00:00 2001 From: "Pawel Spychalski (DzikuVx)" Date: Tue, 20 Apr 2021 12:14:26 +0200 Subject: [PATCH 56/58] Bump NW.js to 0.52.3 --- package-lock.json | 8908 +-------------------------------------------- package.json | 2 +- 2 files changed, 71 insertions(+), 8839 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88f6ad89..05873085 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8666 +1,8 @@ { "name": "inav-configurator", - "version": "2.7.0", + "version": "3.0.0", "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "version": "2.7.0", - "license": "GPL-3.0", - "dependencies": { - "archiver": "^2.0.3", - "bluebird": "3.4.1", - "del": "^3.0.0", - "fs": "0.0.1-security", - "graceful-fs": "^4.2.0", - "gulp": "^4.0.2", - "gulp-concat": "^2.6.1", - "inflection": "1.12.0", - "jquery": "2.1.4", - "jquery-ui-npm": "1.12.0", - "marked": "^0.3.17", - "minimist": "^1.2.0", - "nw": "^0.42.2-sdk", - "nw-dialog": "^1.0.7", - "openlayers": "^4.6.5", - "temp": "^0.8.3", - "three": "0.72.0", - "xml2js": "^0.4.19" - }, - "devDependencies": { - "nw-builder": "^3.5.7", - "semver": "6.3.0" - } - }, - "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==" - }, - "node_modules/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dependencies": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, - "node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/align-text/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "dependencies": { - "string-width": "^2.0.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/archiver": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", - "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", - "dependencies": { - "archiver-utils": "^1.3.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "zip-stream": "^1.2.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/archiver-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", - "dependencies": { - "glob": "^7.0.0", - "graceful-fs": "^4.1.0", - "lazystream": "^1.0.0", - "lodash": "^4.8.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dependencies": { - "lodash": "^4.17.11" - } - }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/async-done/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==" - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "node_modules/async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dependencies": { - "async-done": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "node_modules/babylon": { - "version": "7.0.0-beta.19", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", - "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", - "bin": { - "babylon": "bin/babylon.js" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" - }, - "node_modules/base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dependencies": { - "callsite": "1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, - "node_modules/bluebird": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "integrity": "sha1-tzHd9I4t077awudeEhWhG8uR+gc=" - }, - "node_modules/boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dependencies": { - "hoek": "2.x.x" - }, - "engines": { - "node": ">=0.10.40" - } - }, - "node_modules/boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "dependencies": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/boxen/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/boxen/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/boxen/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/boxen/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/boxen/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/boxen/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/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/builtin-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", - "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "engines": { - "node": "*" - } - }, - "node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", - "dependencies": { - "underscore-contrib": "~0.3.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "dependencies": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "optional": true, - "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - } - }, - "node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/charm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", - "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" - }, - "node_modules/chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", - "dev": true - }, - "node_modules/ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "node_modules/cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/closure-util": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/closure-util/-/closure-util-1.26.0.tgz", - "integrity": "sha512-zpWABEochWrY48soiEttuqJk/OSYscS9PcvKgHvKUefM29+R8rqx5Bp8KIZHR0Nsq1JrNgxg2VTmJ/IsqN5VOA==", - "dependencies": { - "acorn": "5.2.1", - "async": "2.6.0", - "fs-extra": "4.0.2", - "gaze": "1.1.2", - "get-down": "1.2.0", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "handlebars": "4.0.11", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nomnom": "1.8.1", - "npmlog": "4.1.2", - "rimraf": "2.6.2", - "send": "0.16.1", - "socket.io": "2.0.4", - "temp": "0.8.3" - }, - "bin": { - "closure-util": "bin/closure-util.js" - } - }, - "node_modules/closure-util/node_modules/async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dependencies": { - "lodash": "^4.14.0" - } - }, - "node_modules/closure-util/node_modules/fs-extra": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", - "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/closure-util/node_modules/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "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": "*" - } - }, - "node_modules/closure-util/node_modules/graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/closure-util/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/closure-util/node_modules/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "node_modules/closure-util/node_modules/rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dependencies": { - "glob": "^7.0.5" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/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==", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dependencies": { - "graceful-readlink": ">= 1.0.0" - }, - "engines": { - "node": ">= 0.6.x" - } - }, - "node_modules/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "node_modules/component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, - "node_modules/compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", - "dependencies": { - "buffer-crc32": "^0.2.1", - "crc32-stream": "^2.0.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "dependencies": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "node_modules/convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "dependencies": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dependencies": { - "buffer": "^5.1.0" - } - }, - "node_modules/crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", - "dependencies": { - "crc": "^3.4.4", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dependencies": { - "capture-stack-trace": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dependencies": { - "boom": "2.x.x" - }, - "engines": { - "node": ">=0.10.40" - } - }, - "node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", - "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", - "dependencies": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "dependencies": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "dependencies": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tarbz2/node_modules/file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "dependencies": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", - "dependencies": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-unzip/node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-unzip/node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-unzip/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", - "dependencies": { - "binary": "^0.3.0", - "graceful-fs": "^4.1.3", - "mkpath": "^0.1.0", - "nopt": "^3.0.1", - "q": "^1.1.2", - "readable-stream": "^1.1.8", - "touch": "0.0.3" - }, - "bin": { - "decompress-zip": "bin/decompress-zip" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-zip/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/decompress-zip/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/decompress-zip/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "node_modules/decompress/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-compare/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dependencies": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/deprecate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", - "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", - "dev": true - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "dependencies": { - "is-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/download": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/download/-/download-5.0.3.tgz", - "integrity": "sha1-Y1N/l3+ZJmow64oqL70fILgAD3o=", - "dependencies": { - "caw": "^2.0.0", - "decompress": "^4.0.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^6.3.0", - "mkdirp": "^0.5.1", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", - "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", - "dependencies": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "uws": "~9.14.0", - "ws": "~3.3.1" - }, - "optionalDependencies": { - "uws": "~9.14.0" - } - }, - "node_modules/engine.io-client": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", - "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", - "dependencies": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "node_modules/engine.io/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "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==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dependencies": { - "fill-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range/node_modules/fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dependencies": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range/node_modules/is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", - "dev": true, - "dependencies": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" - }, - "bin": { - "extract-zip": "cli.js" - } - }, - "node_modules/extract-zip/node_modules/fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/extract-zip/node_modules/yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true, - "dependencies": { - "fd-slicer": "~1.0.1" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/file-exists": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-exists/-/file-exists-2.0.0.tgz", - "integrity": "sha1-okFQZlFQ5i1VvFRJKB2I0rCBDco=" - }, - "node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "engines": { - "node": ">=4" - } - }, - "node_modules/filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "dependencies": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/findup-sync/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "bundleDependencies": [ - "node-pre-gyp" - ], - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/fsevents/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==", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/fsevents/node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/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==", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fsevents/node_modules/chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/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": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/fsevents/node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fsevents/node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "inBundle": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/fsevents/node_modules/fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/fsevents/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "inBundle": true, - "license": "ISC", - "optional": 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": "*" - } - }, - "node_modules/fsevents/node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/fsevents/node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "inBundle": true, - "license": "ISC", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/fsevents/node_modules/minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fsevents/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/needle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", - "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/fsevents/node_modules/node-pre-gyp": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", - "inBundle": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/fsevents/node_modules/nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/fsevents/node_modules/npm-bundled": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/npm-packlist": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "node_modules/fsevents/node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/fsevents/node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/fsevents/node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "inBundle": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/fsevents/node_modules/rc/node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "inBundle": true, - "license": "MIT", - "optional": 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/fsevents/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/fsevents/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==", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "inBundle": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/fsevents/node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/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==", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fsevents/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/tar": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/fsevents/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/fsevents/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "inBundle": true, - "license": "ISC", - "optional": 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==" - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "node_modules/get-down": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-down/-/get-down-1.2.0.tgz", - "integrity": "sha512-SbpdXn+fNmGN6pp/vBALveh3oCbWYTR3wb5qifauPSFhAfAVQ7TMOnAkVzQm4YZD2KABzJB3sA2kmMLaOylA2A==", - "dependencies": { - "decompress-zip": "0.3.0", - "graceful-fs": "4.1.11", - "junk": "2.1.0", - "mout": "1.0.0", - "q": "1.5.0", - "request": "2.81.0", - "request-progress": "3.0.0", - "retry": "0.10.1", - "tar": "3.1.5", - "tmp": "0.0.31" - } - }, - "node_modules/get-down/node_modules/ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dependencies": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "node_modules/get-down/node_modules/assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/get-down/node_modules/aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "engines": { - "node": "*" - } - }, - "node_modules/get-down/node_modules/form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/get-down/node_modules/graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/get-down/node_modules/har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-down/node_modules/har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dependencies": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-down/node_modules/http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dependencies": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/get-down/node_modules/oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "engines": { - "node": "*" - } - }, - "node_modules/get-down/node_modules/performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" - }, - "node_modules/get-down/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "node_modules/get-down/node_modules/qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/get-down/node_modules/request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dependencies": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/get-down/node_modules/tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dependencies": { - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/get-down/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "dependencies": { - "npm-conf": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "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": "*" - } - }, - "node_modules/glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dependencies": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-base/node_modules/glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dependencies": { - "is-glob": "^2.0.0" - } - }, - "node_modules/glob-base/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-base/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", - "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "object.defaults": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "dependencies": { - "ini": "^1.3.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "dependencies": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dependencies": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" - }, - "node_modules/graceful-fs-extra": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs-extra/-/graceful-fs-extra-2.0.0.tgz", - "integrity": "sha1-fR5X/Mcm4rDMcH14tKzqVC+pvk4=", - "dev": true, - "dependencies": { - "fs-extra": "^0.30.0", - "graceful-ncp": "^3.0.0", - "proxyquire": "^1.4.0" - } - }, - "node_modules/graceful-ncp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/graceful-ncp/-/graceful-ncp-3.0.0.tgz", - "integrity": "sha1-WAXqJVhe+YTMyqgIajxTDuQSioo=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.4", - "ncp": "^2.0.0", - "proxyquire": "^1.4.0" - } - }, - "node_modules/graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", - "dependencies": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp/node_modules/gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dependencies": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^2.6" - } - }, - "node_modules/handlebars/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "dependencies": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dependencies": { - "isarray": "2.0.1" - } - }, - "node_modules/has-binary2/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "node_modules/has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "engines": { - "node": "*" - } - }, - "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dependencies": { - "has-symbol-support-x": "^1.4.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dependencies": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" - }, - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "engines": { - "node": ">=0.10.40" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, - "node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "node_modules/inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", - "engines": [ - "node >= 0.4.0" - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "engines": { - "node": "*" - } - }, - "node_modules/interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "dependencies": { - "ci-info": "^1.5.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dependencies": { - "is-primitive": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "dependencies": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, - "node_modules/is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dependencies": { - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dependencies": { - "path-is-inside": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dependencies": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/jquery": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", - "integrity": "sha1-IoveaYoMYUMdwmMKahVPFYkNIxc=" - }, - "node_modules/jquery-ui-npm": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/jquery-ui-npm/-/jquery-ui-npm-1.12.0.tgz", - "integrity": "sha1-PyyuiBlcfUis83hs+pANBAOBTk0=" - }, - "node_modules/js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", - "dependencies": { - "xmlcreate": "^1.0.1" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/jsdoc": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", - "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", - "dependencies": { - "babylon": "7.0.0-beta.19", - "bluebird": "~3.5.0", - "catharsis": "~0.8.9", - "escape-string-regexp": "~1.0.5", - "js2xmlparser": "~3.0.0", - "klaw": "~2.0.0", - "marked": "~0.3.6", - "mkdirp": "~0.5.1", - "requizzle": "~0.2.1", - "strip-json-comments": "~2.0.1", - "taffydb": "2.6.2", - "underscore": "~1.8.3" - }, - "bin": { - "jsdoc": "jsdoc.js" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/jsdoc/node_modules/bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" - }, - "node_modules/jsdoc/node_modules/klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/jsdoc/node_modules/underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dependencies": { - "jsonify": "~0.0.0" - } - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/junk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-2.1.0.tgz", - "integrity": "sha1-9DG0t/By3FAKXxDOf07HGTDnATQ=", - "engines": { - "node": ">=4" - } - }, - "node_modules/just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=" - }, - "node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "dependencies": { - "package-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lazy-req": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz", - "integrity": "sha1-yUUKNj7N2i5vDHATKtTzf48G8rQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "dependencies": { - "vlq": "^0.2.2" - } - }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/marked": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" - }, - "node_modules/merge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", - "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "bin": { - "mime": "cli.js" - } - }, - "node_modules/mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dependencies": { - "mime-db": "~1.37.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "node_modules/minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" - }, - "node_modules/minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "node_modules/mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" - }, - "node_modules/module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, - "node_modules/mout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mout/-/mout-1.0.0.tgz", - "integrity": "sha1-m98dSvV9ZtR8s1OmM1oygQmOFQE=" - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multimeter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/multimeter/-/multimeter-0.1.1.tgz", - "integrity": "sha1-+FbID8PPDx1K2Os2rWhzXj7Vs+o=", - "dependencies": { - "charm": "~0.1.1" - } - }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "dev": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node_modules/nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", - "dependencies": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" - } - }, - "node_modules/nomnom/node_modules/ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/nomnom/node_modules/chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dependencies": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/nomnom/node_modules/strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "bin": { - "strip-ansi": "cli.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "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==", - "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/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nw": { - "version": "0.42.2-sdk", - "resolved": "https://registry.npmjs.org/nw/-/nw-0.42.2-sdk.tgz", - "integrity": "sha512-9xVCsQgKM6ycZ+3gtLzloasSaASHL2BPXupqdPEiWKttewomvEalcNJXuJUhQDKrWEBm1FRLFmijlKt/2yUXXw==", - "dependencies": { - "chalk": "~1.1.3", - "decompress": "^4.2.0", - "download": "^5.0.3", - "file-exists": "^2.0.0", - "merge": "^1.2.0", - "multimeter": "^0.1.1", - "rimraf": "^2.2.8", - "semver": "^5.1.0", - "yargs": "^3.2.1" - }, - "bin": { - "nw": "bin/nw" - } - }, - "node_modules/nw-builder": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/nw-builder/-/nw-builder-3.5.7.tgz", - "integrity": "sha512-7LTQu8oom56xdDeyoUygZytxvyWuh+pw4nY4eFMGUd7/m/eOdAs/6UZjav6CbjnyIg8n4FtwnjCXXLsFI6Ooug==", - "dev": true, - "dependencies": { - "archiver": "^2.1.1", - "boxen": "^1.1.0", - "chalk": "^2.3.2", - "deprecate": "~1.0.0", - "extract-zip": "^1.6.5", - "graceful-fs-extra": "^2.0.0", - "graceful-ncp": "^3.0.0", - "inherits": "~2.0.1", - "lazy-req": "^2.0.0", - "lodash": "~4.17.4", - "optimist": "^0.6.1", - "plist": "^3.0.1", - "progress": "~2.0.0", - "rcedit": "^1.0.0", - "recursive-readdir-sync": "^1.0.6", - "request": "^2.88.0", - "rimraf": "^2.5.2", - "semver": "^5.5.0", - "simple-glob": "~0.2.0", - "tar-fs": "^1.13.0", - "temp": "github:adam-lynch/node-temp#remove_tmpdir_dep", - "thenify": "^3.3.0", - "update-notifier": "^2.4.0", - "winresourcer": "^0.9.0" - }, - "bin": { - "nwbuild": "bin/nwbuild" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/nw-builder/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/nw-builder/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/nw-builder/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/nw-builder/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/nw-builder/node_modules/temp": { - "resolved": "git+ssh://git@github.com/adam-lynch/node-temp.git#279c1350cb7e4f02515d91da9e35d39a40774016", - "dev": true, - "engines": [ - "node >=4.0.0" - ], - "dependencies": { - "rimraf": "~2.2.6" - } - }, - "node_modules/nw-builder/node_modules/temp/node_modules/rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/nw-dialog": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/nw-dialog/-/nw-dialog-1.0.7.tgz", - "integrity": "sha1-NTNALQ/btlzHkxE5WQhPe6RTsRM=" - }, - "node_modules/nw/node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nw/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nw/node_modules/yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dependencies": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dependencies": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.omit/node_modules/for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/openlayers": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/openlayers/-/openlayers-4.6.5.tgz", - "integrity": "sha512-RH1jqHJA8/d4ZuMYewBMfbFvmriplQ3GvDSLpqxad3S55PFyMWkbg3lKSt2zHRhijiFq4PpsCsJQLDqmSDGSOQ==", - "dependencies": { - "async": "2.6.0", - "closure-util": "1.26.0", - "fs-extra": "4.0.3", - "jsdoc": "3.5.5", - "nomnom": "1.8.1", - "pbf": "3.1.0", - "pixelworks": "1.1.0", - "rbush": "2.0.1", - "rollup": "^0.52.0", - "rollup-plugin-cleanup": "^2.0.0", - "rollup-plugin-commonjs": "^8.2.6", - "rollup-plugin-node-resolve": "^3.0.0", - "temp": "0.8.3", - "walk": "2.3.9" - } - }, - "node_modules/openlayers/node_modules/async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dependencies": { - "lodash": "^4.14.0" - } - }, - "node_modules/openlayers/node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/openlayers/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "node_modules/optimist/node_modules/minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "dependencies": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/package-json/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/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dependencies": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-glob/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-glob/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dependencies": { - "better-assert": "~1.0.0" - } - }, - "node_modules/parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dependencies": { - "better-assert": "~1.0.0" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pbf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.1.0.tgz", - "integrity": "sha512-/hYJmIsTmh7fMkHAWWXJ5b8IKLWdjdlAFb3IHkRBn1XUhIYBChVGfVwmHEAV3UfXTxsP/AKfYTXTS/dCPxJd5w==", - "dependencies": { - "ieee754": "^1.1.6", - "resolve-protobuf-schema": "^2.0.0" - }, - "bin": { - "pbf": "bin/pbf" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pixelworks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pixelworks/-/pixelworks-1.1.0.tgz", - "integrity": "sha1-Hwla1I3Ki/ihyCWOAJIDGkTyLKU=" - }, - "node_modules/plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", - "dev": true, - "dependencies": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "node_modules/protocol-buffers-schema": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz", - "integrity": "sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==" - }, - "node_modules/proxyquire": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", - "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", - "dev": true, - "dependencies": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.1.7" - } - }, - "node_modules/proxyquire/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "node_modules/psl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", - "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", - "dev": true - }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/quickselect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", - "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" - }, - "node_modules/randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dependencies": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/randomatic/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/rbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.1.tgz", - "integrity": "sha1-TPrKKMMGS8DudUMaG3mZDode76k=", - "dependencies": { - "quickselect": "^1.0.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rcedit": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.2.tgz", - "integrity": "sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir-sync": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", - "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", - "dev": true - }, - "node_modules/regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dependencies": { - "is-equal-shallow": "^0.1.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dev": true, - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "dependencies": { - "rc": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "node_modules/requizzle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", - "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", - "dependencies": { - "underscore": "~1.6.0" - } - }, - "node_modules/resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dependencies": { - "path-parse": "^1.0.6" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve-protobuf-schema": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", - "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", - "dependencies": { - "protocol-buffers-schema": "^3.3.1" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", - "engines": { - "node": "*" - } - }, - "node_modules/right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "optional": true, - "dependencies": { - "align-text": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rollup": { - "version": "0.52.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.52.3.tgz", - "integrity": "sha512-cw+vb9NqaTXlwJyb8G+Ve+uhhlVTcl1NKBkfANdeQqVcpZFilQgeNnAnNiu7MwfeXrqiKEGz+3R03a3zeFkmEQ==", - "bin": { - "rollup": "bin/rollup" - } - }, - "node_modules/rollup-plugin-cleanup": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-2.0.1.tgz", - "integrity": "sha512-Z2UpMe3l2Oo8jzoB2gAWcb3UqIyiGxlh8kKlcs/W53yTPtwdF8RGfhuTx+/kjRlkSc5TC03t3sX3Lj3B40k9Eg==", - "dependencies": { - "acorn": "4.x", - "magic-string": "^0.22.4", - "rollup-pluginutils": "^2.0.1" - }, - "engines": { - "node": ">=4.2" - } - }, - "node_modules/rollup-plugin-cleanup/node_modules/acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz", - "integrity": "sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==", - "dependencies": { - "acorn": "^5.2.1", - "estree-walker": "^0.5.0", - "magic-string": "^0.22.4", - "resolve": "^1.4.0", - "rollup-pluginutils": "^2.0.1" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", - "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", - "dependencies": { - "builtin-modules": "^2.0.0", - "is-module": "^1.0.0", - "resolve": "^1.1.6" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz", - "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==", - "dependencies": { - "estree-walker": "^0.5.2", - "micromatch": "^2.3.11" - } - }, - "node_modules/rollup-pluginutils/node_modules/arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dependencies": { - "arr-flatten": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dependencies": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dependencies": { - "is-posix-bracket": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-pluginutils/node_modules/micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dependencies": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", - "dependencies": { - "commander": "~2.8.1" - }, - "bin": { - "seek-bunzip": "bin/seek-bunzip", - "seek-table": "bin/seek-bzip-table" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "dependencies": { - "semver": "^5.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/semver-diff/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/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.1", - "destroy": "~1.0.4", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.3.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "node_modules/simple-glob": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/simple-glob/-/simple-glob-0.2.0.tgz", - "integrity": "sha512-CnCJ+SEDIWYviwBUp7pGxdq4QZgaR5xVzoxL/gujEwn2/vOJ4PVQrmd8Z0spH1cPsLxgF83cNjNcy4zYvSWiZA==", - "dev": true, - "dependencies": { - "glob": "^7.1.2", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.union": "^4.6.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dependencies": { - "hoek": "2.x.x" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/socket.io": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", - "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", - "dependencies": { - "debug": "~2.6.6", - "engine.io": "~3.1.0", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.0.4", - "socket.io-parser": "~3.1.1" - } - }, - "node_modules/socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" - }, - "node_modules/socket.io-client": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", - "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", - "dependencies": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~2.6.4", - "engine.io-client": "~3.1.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.1.1", - "to-array": "0.1.4" - } - }, - "node_modules/socket.io-parser": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", - "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", - "dependencies": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "has-binary2": "~1.0.2", - "isarray": "2.0.1" - } - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/socket.io-parser/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dependencies": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "node_modules/stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" - }, - "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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "dependencies": { - "is-natural-number": "^4.0.1" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" - }, - "node_modules/tar": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-3.1.5.tgz", - "integrity": "sha512-TKJKz1fqBOZBaIQ/MGRKU0EnTGmKMLy4ReTRgP10AgtfOWBbj9PBg4MgY80GFpqGbs2EzcIctW5gbwbP4woDYg==", - "dependencies": { - "minipass": "^2.0.2", - "minizlib": "^1.0.3", - "mkdirp": "^0.5.0", - "yallist": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tar-fs": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", - "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", - "dev": true, - "dependencies": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" - } - }, - "node_modules/tar-fs/node_modules/pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" - }, - "node_modules/temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "engines": [ - "node >=0.8.0" - ], - "dependencies": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "dependencies": { - "execa": "^0.7.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/three": { - "version": "0.72.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.72.0.tgz", - "integrity": "sha1-rE65X9TlsVnA/6u2CWF/7JCjNrI=", - "engines": { - "node": "*" - } - }, - "node_modules/throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "node_modules/to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", - "dependencies": { - "nopt": "~1.0.10" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "node_modules/type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", - "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==" - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "node_modules/uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "optional": true, - "dependencies": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-js/node_modules/cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "optional": true, - "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "node_modules/uglify-js/node_modules/window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "optional": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/uglify-js/node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/uglify-js/node_modules/yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "optional": true, - "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "node_modules/ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "node_modules/unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" - }, - "node_modules/underscore-contrib": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", - "dependencies": { - "underscore": "1.6.0" - } - }, - "node_modules/undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "engines": { - "node": ">=4" - } - }, - "node_modules/upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "dependencies": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/update-notifier/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/update-notifier/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/update-notifier/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/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "engines": { - "node": ">= 4" - } - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uws": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", - "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" - }, - "node_modules/walk": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", - "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", - "dependencies": { - "foreachasync": "^3.0.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "dependencies": { - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/winresourcer": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/winresourcer/-/winresourcer-0.9.0.tgz", - "integrity": "sha1-CvyjDzxudFgFjSigtnPJ3aYiubU=", - "dev": true, - "bin": { - "winresourcer": "lib/WinResourcer" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/write-file-atomic/node_modules/graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "node_modules/ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "node_modules/xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=" - }, - "node_modules/xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true, - "engines": { - "node": ">=0.1" - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "node_modules/yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "node_modules/yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dependencies": { - "camelcase": "^3.0.0" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, - "node_modules/zip-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", - "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", - "dependencies": { - "archiver-utils": "^1.3.0", - "compress-commons": "^1.2.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 0.10.0" - } - } - }, "dependencies": { "abbrev": { "version": "1.1.1", @@ -8702,6 +44,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -8712,6 +55,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -9471,11 +815,6 @@ "supports-color": "^2.0.0" } }, - "charm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", - "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" - }, "chokidar": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", @@ -9717,12 +1056,9 @@ } }, "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "requires": { - "graceful-readlink": ">= 1.0.0" - } + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "component-bind": { "version": "1.0.0", @@ -9927,9 +1263,9 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", - "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "requires": { "decompress-tar": "^4.0.0", "decompress-tarbz2": "^4.0.0", @@ -10850,26 +2186,21 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "bundled": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "bundled": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "bundled": true, "optional": true, "requires": { @@ -10879,13 +2210,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10893,34 +2224,31 @@ }, "chownr": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "bundled": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "bundled": true, "optional": true }, "debug": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "bundled": true, "optional": true, "requires": { @@ -10929,29 +2257,21 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "bundled": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "bundled": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "bundled": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "bundled": true, "optional": true, "requires": { @@ -10960,15 +2280,11 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "bundled": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "bundled": true, "optional": true, "requires": { @@ -10984,8 +2300,6 @@ }, "glob": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "bundled": true, "optional": true, "requires": { @@ -10999,15 +2313,11 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "bundled": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "bundled": true, "optional": true, "requires": { @@ -11016,8 +2326,6 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "bundled": true, "optional": true, "requires": { @@ -11026,8 +2334,6 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "bundled": true, "optional": true, "requires": { @@ -11037,49 +2343,44 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "bundled": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "bundled": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -11087,8 +2388,6 @@ }, "minizlib": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "bundled": true, "optional": true, "requires": { @@ -11097,24 +2396,19 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "bundled": true, "optional": true }, "needle": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", - "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", "bundled": true, "optional": true, "requires": { @@ -11125,8 +2419,6 @@ }, "node-pre-gyp": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", "bundled": true, "optional": true, "requires": { @@ -11144,8 +2436,6 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "bundled": true, "optional": true, "requires": { @@ -11155,15 +2445,11 @@ }, "npm-bundled": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "bundled": true, "optional": true }, "npm-packlist": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "bundled": true, "optional": true, "requires": { @@ -11173,8 +2459,6 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "bundled": true, "optional": true, "requires": { @@ -11186,42 +2470,34 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "bundled": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "bundled": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "bundled": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "bundled": true, "optional": true, "requires": { @@ -11231,22 +2507,16 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "bundled": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "bundled": true, "optional": true }, "rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "bundled": true, "optional": true, "requires": { @@ -11258,8 +2528,6 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "bundled": true, "optional": true } @@ -11267,8 +2535,6 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "bundled": true, "optional": true, "requires": { @@ -11283,8 +2549,6 @@ }, "rimraf": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "bundled": true, "optional": true, "requires": { @@ -11293,56 +2557,36 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "bundled": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "bundled": true, "optional": true }, "semver": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "bundled": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "bundled": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "bundled": true, "optional": 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==", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "bundled": true, "optional": true, "requires": { @@ -11351,26 +2595,29 @@ "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "bundled": true, "optional": true }, "tar": { "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "bundled": true, "optional": true, "requires": { @@ -11385,15 +2632,11 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "bundled": true, "optional": true }, "wide-align": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "bundled": true, "optional": true, "requires": { @@ -11402,11 +2645,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -11815,11 +3060,6 @@ "proxyquire": "^1.4.0" } }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, "gulp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", @@ -12684,7 +3924,8 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "optional": true }, "lowercase-keys": { "version": "1.0.1", @@ -12921,14 +4162,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "multimeter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/multimeter/-/multimeter-0.1.1.tgz", - "integrity": "sha1-+FbID8PPDx1K2Os2rWhzXj7Vs+o=", - "requires": { - "charm": "~0.1.1" - } - }, "mute-stdout": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", @@ -13082,16 +4315,16 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nw": { - "version": "0.42.2-sdk", - "resolved": "https://registry.npmjs.org/nw/-/nw-0.42.2-sdk.tgz", - "integrity": "sha512-9xVCsQgKM6ycZ+3gtLzloasSaASHL2BPXupqdPEiWKttewomvEalcNJXuJUhQDKrWEBm1FRLFmijlKt/2yUXXw==", + "version": "0.50.3-sdk", + "resolved": "https://registry.npmjs.org/nw/-/nw-0.50.3-sdk.tgz", + "integrity": "sha512-sYwPNdTx5svGcDBlkRBF2382ebtptFNt4Y9I6nSOl0MhU9PLt4M3bo7dqHnb2A4qvmI1XwMkCCgIhNLKloPXiQ==", "requires": { "chalk": "~1.1.3", "decompress": "^4.2.0", "download": "^5.0.3", "file-exists": "^2.0.0", "merge": "^1.2.0", - "multimeter": "^0.1.1", + "progress": "^2.0.3", "rimraf": "^2.2.8", "semver": "^5.1.0", "yargs": "^3.2.1" @@ -13149,7 +4382,7 @@ "semver": "^5.5.0", "simple-glob": "~0.2.0", "tar-fs": "^1.13.0", - "temp": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "temp": "temp@github:adam-lynch/node-temp#remove_tmpdir_dep", "thenify": "^3.3.0", "update-notifier": "^2.4.0", "winresourcer": "^0.9.0" @@ -13192,8 +4425,8 @@ }, "temp": { "version": "git+ssh://git@github.com/adam-lynch/node-temp.git#279c1350cb7e4f02515d91da9e35d39a40774016", - "dev": true, "from": "temp@github:adam-lynch/node-temp#remove_tmpdir_dep", + "dev": true, "requires": { "rimraf": "~2.2.6" }, @@ -13691,8 +4924,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "proto-list": { "version": "1.2.4", @@ -14244,11 +5476,11 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", "requires": { - "commander": "~2.8.1" + "commander": "^2.8.1" } }, "semver": { @@ -14651,14 +5883,6 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -14669,6 +5893,14 @@ "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "stringstream": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", @@ -15080,9 +6312,9 @@ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, "unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "requires": { "buffer": "^5.2.1", "through": "^2.3.8" diff --git a/package.json b/package.json index 66309781..a1151248 100755 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "jquery-ui-npm": "1.12.0", "marked": "^0.3.17", "minimist": "^1.2.0", - "nw": "^0.42.2-sdk", + "nw": "^0.50.3-sdk", "nw-dialog": "^1.0.7", "openlayers": "^4.6.5", "temp": "^0.8.3", From 07af49856e49d678838c6f16e4a0b5a60893164f Mon Sep 17 00:00:00 2001 From: Darren Lines Date: Tue, 20 Apr 2021 23:22:16 +0100 Subject: [PATCH 57/58] Updated mode re-ordering to fix highlighting --- tabs/auxiliary.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/tabs/auxiliary.js b/tabs/auxiliary.js index 9af87e50..1e86ea7e 100644 --- a/tabs/auxiliary.js +++ b/tabs/auxiliary.js @@ -1,5 +1,7 @@ 'use strict'; +var ORIG_AUX_CONFIG_IDS = []; + TABS.auxiliary = {}; TABS.auxiliary.initialize = function (callback) { @@ -31,7 +33,9 @@ TABS.auxiliary.initialize = function (callback) { sort_modes_for_display(); GUI.load("./tabs/auxiliary.html", process_html); } - + + MSP.send_message(MSPCodes.MSP_BOXNAMES, false, false, get_mode_ranges); + function sort_modes_for_display() { // This array defines the order that the modes are displayed in the configurator modes page configuratorBoxOrder = [ @@ -66,7 +70,9 @@ TABS.auxiliary.initialize = function (callback) { for(j=0; j Date: Wed, 21 Apr 2021 16:02:00 +0200 Subject: [PATCH 58/58] Update fonts (#1239) * Update fonts * Update fonts * Update Wh/km unit in osd.js --- resources/osd/bold.mcm | 630 ++++---- resources/osd/bold/008.png | Bin 141 -> 288 bytes resources/osd/bold/009.png | Bin 155 -> 284 bytes resources/osd/bold/010-011.png | Bin 0 -> 322 bytes resources/osd/bold/010.png | Bin 159 -> 0 bytes resources/osd/bold/172.png | Bin 0 -> 281 bytes resources/osd/bold/173.png | Bin 0 -> 280 bytes resources/osd/bold/239.png | Bin 0 -> 236 bytes resources/osd/clarity.mcm | 630 ++++---- resources/osd/clarity/008.png | Bin 141 -> 288 bytes resources/osd/clarity/009.png | Bin 155 -> 284 bytes resources/osd/clarity/010-011.png | Bin 0 -> 322 bytes resources/osd/clarity/010.png | Bin 159 -> 0 bytes resources/osd/clarity/172.png | Bin 0 -> 281 bytes resources/osd/clarity/173.png | Bin 0 -> 280 bytes resources/osd/clarity/239.png | Bin 0 -> 236 bytes resources/osd/clarity_medium.mcm | 630 ++++---- resources/osd/clarity_medium/008.png | Bin 141 -> 288 bytes resources/osd/clarity_medium/009.png | Bin 155 -> 284 bytes resources/osd/clarity_medium/010-011.png | Bin 0 -> 322 bytes resources/osd/clarity_medium/010.png | Bin 159 -> 0 bytes resources/osd/clarity_medium/172.png | Bin 0 -> 281 bytes resources/osd/clarity_medium/173.png | Bin 0 -> 280 bytes resources/osd/clarity_medium/239.png | Bin 0 -> 236 bytes resources/osd/default.mcm | 664 ++++----- resources/osd/default/008.png | Bin 124 -> 288 bytes resources/osd/default/009.png | Bin 156 -> 284 bytes resources/osd/default/010-011.png | Bin 0 -> 322 bytes resources/osd/default/010.png | Bin 158 -> 0 bytes resources/osd/default/011.png | Bin 117 -> 0 bytes resources/osd/default/172-173.png | Bin 273 -> 0 bytes resources/osd/default/172.png | Bin 0 -> 281 bytes resources/osd/default/173.png | Bin 0 -> 280 bytes resources/osd/default/239.png | Bin 0 -> 236 bytes resources/osd/font_version.yaml | 2 +- resources/osd/impact.mcm | 1658 +++++++++++----------- resources/osd/impact/008.png | Bin 0 -> 286 bytes resources/osd/impact/009.png | Bin 0 -> 286 bytes resources/osd/impact/010-011.png | Bin 0 -> 343 bytes resources/osd/impact/034.png | Bin 264 -> 254 bytes resources/osd/impact/053.png | Bin 219 -> 223 bytes resources/osd/impact/063.png | Bin 270 -> 269 bytes resources/osd/impact/066.png | Bin 231 -> 216 bytes resources/osd/impact/075.png | Bin 215 -> 238 bytes resources/osd/impact/077.png | Bin 207 -> 235 bytes resources/osd/impact/082.png | Bin 225 -> 218 bytes resources/osd/impact/087.png | Bin 212 -> 229 bytes resources/osd/impact/137.png | Bin 281 -> 273 bytes resources/osd/impact/138.png | Bin 314 -> 309 bytes resources/osd/impact/144.png | Bin 205 -> 221 bytes resources/osd/impact/145.png | Bin 216 -> 222 bytes resources/osd/impact/146.png | Bin 222 -> 229 bytes resources/osd/impact/147.png | Bin 212 -> 217 bytes resources/osd/impact/148.png | Bin 225 -> 228 bytes resources/osd/impact/149.png | Bin 212 -> 224 bytes resources/osd/impact/150.png | Bin 208 -> 215 bytes resources/osd/impact/152.png | Bin 313 -> 277 bytes resources/osd/impact/157-158.png | Bin 327 -> 355 bytes resources/osd/impact/161.png | Bin 265 -> 258 bytes resources/osd/impact/172-173.png | Bin 294 -> 0 bytes resources/osd/impact/172.png | Bin 0 -> 273 bytes resources/osd/impact/173.png | Bin 0 -> 275 bytes resources/osd/impact/174.png | Bin 236 -> 243 bytes resources/osd/impact/176.png | Bin 261 -> 256 bytes resources/osd/impact/187.png | Bin 243 -> 244 bytes resources/osd/impact/197.png | Bin 220 -> 230 bytes resources/osd/impact/213.png | Bin 222 -> 230 bytes resources/osd/impact/239.png | Bin 0 -> 265 bytes resources/osd/impact_mini.mcm | 1420 +++++++++--------- resources/osd/impact_mini/006.png | Bin 241 -> 254 bytes resources/osd/impact_mini/008.png | Bin 227 -> 270 bytes resources/osd/impact_mini/009.png | Bin 216 -> 273 bytes resources/osd/impact_mini/010-011.png | Bin 0 -> 332 bytes resources/osd/impact_mini/010.png | Bin 215 -> 0 bytes resources/osd/impact_mini/011.png | Bin 200 -> 0 bytes resources/osd/impact_mini/034.png | Bin 264 -> 254 bytes resources/osd/impact_mini/038.png | Bin 224 -> 224 bytes resources/osd/impact_mini/039.png | Bin 214 -> 209 bytes resources/osd/impact_mini/052.png | Bin 248 -> 250 bytes resources/osd/impact_mini/053.png | Bin 253 -> 250 bytes resources/osd/impact_mini/072.png | Bin 239 -> 237 bytes resources/osd/impact_mini/128.png | Bin 180 -> 195 bytes resources/osd/impact_mini/129.png | Bin 183 -> 198 bytes resources/osd/impact_mini/130.png | Bin 184 -> 201 bytes resources/osd/impact_mini/131.png | Bin 184 -> 199 bytes resources/osd/impact_mini/132.png | Bin 181 -> 198 bytes resources/osd/impact_mini/133.png | Bin 183 -> 199 bytes resources/osd/impact_mini/134.png | Bin 183 -> 199 bytes resources/osd/impact_mini/135.png | Bin 183 -> 197 bytes resources/osd/impact_mini/136.png | Bin 179 -> 195 bytes resources/osd/impact_mini/137.png | Bin 284 -> 282 bytes resources/osd/impact_mini/138.png | Bin 313 -> 312 bytes resources/osd/impact_mini/144.png | Bin 222 -> 236 bytes resources/osd/impact_mini/145.png | Bin 239 -> 244 bytes resources/osd/impact_mini/146.png | Bin 229 -> 237 bytes resources/osd/impact_mini/147.png | Bin 233 -> 234 bytes resources/osd/impact_mini/148.png | Bin 232 -> 238 bytes resources/osd/impact_mini/149.png | Bin 229 -> 232 bytes resources/osd/impact_mini/150.png | Bin 208 -> 225 bytes resources/osd/impact_mini/154.png | Bin 239 -> 240 bytes resources/osd/impact_mini/155.png | Bin 276 -> 275 bytes resources/osd/impact_mini/156.png | Bin 274 -> 270 bytes resources/osd/impact_mini/157-158.png | Bin 0 -> 326 bytes resources/osd/impact_mini/157.png | Bin 262 -> 0 bytes resources/osd/impact_mini/158.png | Bin 263 -> 0 bytes resources/osd/impact_mini/159.png | Bin 281 -> 282 bytes resources/osd/impact_mini/161.png | Bin 262 -> 266 bytes resources/osd/impact_mini/172.png | Bin 262 -> 280 bytes resources/osd/impact_mini/173.png | Bin 263 -> 279 bytes resources/osd/impact_mini/174.png | Bin 247 -> 242 bytes resources/osd/impact_mini/176.png | Bin 254 -> 258 bytes resources/osd/impact_mini/178.png | Bin 268 -> 271 bytes resources/osd/impact_mini/196.png | Bin 248 -> 247 bytes resources/osd/impact_mini/197.png | Bin 248 -> 247 bytes resources/osd/impact_mini/212.png | Bin 259 -> 256 bytes resources/osd/impact_mini/213.png | Bin 255 -> 251 bytes resources/osd/impact_mini/224.png | Bin 172 -> 200 bytes resources/osd/impact_mini/225.png | Bin 178 -> 199 bytes resources/osd/impact_mini/226.png | Bin 178 -> 209 bytes resources/osd/impact_mini/227.png | Bin 178 -> 204 bytes resources/osd/impact_mini/228.png | Bin 178 -> 199 bytes resources/osd/impact_mini/229.png | Bin 173 -> 189 bytes resources/osd/impact_mini/239.png | Bin 0 -> 250 bytes resources/osd/large.mcm | 664 ++++----- resources/osd/large/008.png | Bin 0 -> 288 bytes resources/osd/large/009.png | Bin 0 -> 284 bytes resources/osd/large/010-011.png | Bin 0 -> 322 bytes resources/osd/large/172.png | Bin 0 -> 281 bytes resources/osd/large/173.png | Bin 0 -> 280 bytes resources/osd/large/239.png | Bin 0 -> 236 bytes resources/osd/vision.mcm | 642 ++++----- resources/osd/vision/008.png | Bin 0 -> 262 bytes resources/osd/vision/009.png | Bin 0 -> 279 bytes resources/osd/vision/010-011.png | Bin 0 -> 336 bytes resources/osd/vision/157-158.png | Bin 977 -> 322 bytes resources/osd/vision/172-173.png | Bin 258 -> 0 bytes resources/osd/vision/172.png | Bin 0 -> 269 bytes resources/osd/vision/173.png | Bin 0 -> 272 bytes resources/osd/vision/239.png | Bin 0 -> 254 bytes tabs/osd.js | 6 +- 140 files changed, 3473 insertions(+), 3473 deletions(-) create mode 100644 resources/osd/bold/010-011.png delete mode 100644 resources/osd/bold/010.png create mode 100644 resources/osd/bold/172.png create mode 100644 resources/osd/bold/173.png create mode 100644 resources/osd/bold/239.png create mode 100644 resources/osd/clarity/010-011.png delete mode 100644 resources/osd/clarity/010.png create mode 100644 resources/osd/clarity/172.png create mode 100644 resources/osd/clarity/173.png create mode 100644 resources/osd/clarity/239.png create mode 100644 resources/osd/clarity_medium/010-011.png delete mode 100644 resources/osd/clarity_medium/010.png create mode 100644 resources/osd/clarity_medium/172.png create mode 100644 resources/osd/clarity_medium/173.png create mode 100644 resources/osd/clarity_medium/239.png create mode 100644 resources/osd/default/010-011.png delete mode 100644 resources/osd/default/010.png delete mode 100644 resources/osd/default/011.png delete mode 100644 resources/osd/default/172-173.png create mode 100644 resources/osd/default/172.png create mode 100644 resources/osd/default/173.png create mode 100644 resources/osd/default/239.png create mode 100644 resources/osd/impact/008.png create mode 100644 resources/osd/impact/009.png create mode 100644 resources/osd/impact/010-011.png delete mode 100644 resources/osd/impact/172-173.png create mode 100644 resources/osd/impact/172.png create mode 100644 resources/osd/impact/173.png create mode 100644 resources/osd/impact/239.png create mode 100644 resources/osd/impact_mini/010-011.png delete mode 100644 resources/osd/impact_mini/010.png delete mode 100644 resources/osd/impact_mini/011.png create mode 100644 resources/osd/impact_mini/157-158.png delete mode 100644 resources/osd/impact_mini/157.png delete mode 100644 resources/osd/impact_mini/158.png create mode 100644 resources/osd/impact_mini/239.png create mode 100644 resources/osd/large/008.png create mode 100644 resources/osd/large/009.png create mode 100644 resources/osd/large/010-011.png create mode 100644 resources/osd/large/172.png create mode 100644 resources/osd/large/173.png create mode 100644 resources/osd/large/239.png create mode 100644 resources/osd/vision/008.png create mode 100644 resources/osd/vision/009.png create mode 100644 resources/osd/vision/010-011.png mode change 100755 => 100644 resources/osd/vision/157-158.png delete mode 100755 resources/osd/vision/172-173.png create mode 100644 resources/osd/vision/172.png create mode 100644 resources/osd/vision/173.png create mode 100644 resources/osd/vision/239.png diff --git a/resources/osd/bold.mcm b/resources/osd/bold.mcm index 9a7d2128..5a2d160c 100644 --- a/resources/osd/bold.mcm +++ b/resources/osd/bold.mcm @@ -515,178 +515,181 @@ MAX7456 01010101 01010101 01010101 -01010000 -00000101 01010101 -01001010 -10100001 -01010101 -01001010 -10100001 01010101 01010000 -00000101 -01010101 -01010101 -01010101 -01010101 -01010101 +01010001 01010101 +01001010 +00001000 01010101 +00100000 +10001000 +00010101 +00101010 +10001010 +10000101 +00100000 +10001000 +00100001 +00100000 +10001000 +00100001 +01000000 00000000 00000101 -01010100 -10101010 -10100001 -01010100 +00101010 10101010 10100001 +01000000 +00000000 +00000001 +00100000 +10000010 +00100001 +00100010 +00001000 +10001000 +00101000 +00001000 +10001000 +00101010 +00001000 +00001000 +00100000 +10001000 +00001000 +01000000 +00010001 +01010001 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010000 +01010001 +01010101 +01001010 +00001000 +01010101 +00100000 +10001000 +00010101 +00101010 +10001010 +10000101 +00100000 +10001000 +00100001 +00100000 +10001000 +00100001 +01000000 00000000 00000101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010000 -00000101 -01010101 -01001010 -10100001 -01010101 -01001010 -10100001 -01010101 -01010000 -00000101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01011010 -10100101 -01010101 -01010000 -00010101 -01010101 -01010010 -00000101 -01010101 -01010010 -10000001 -01010101 -01010010 -10100000 -01010101 -01010010 -10101000 -00010101 -01010010 +00101010 10101010 -00010101 -01010010 -10101000 -00010101 -01010010 -10100000 -01010101 -01010010 -10000001 -01010101 -01010010 -00000101 -01010101 -01010000 -00010101 -01010101 -01011010 -10100101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01011010 -10100101 -01010101 -01010100 -00000101 -01010101 -01010000 -10000101 -01010101 -01000010 -10000101 -01010101 +10100001 +01000000 +00000000 +00000001 00001010 10000101 -01010100 -00101010 +00010101 +00100010 +00100000 10000101 +00100010 +00100000 +10000101 +00100000 +00100000 +10000101 +00100000 +00100000 +10000101 +01000101 +01000101 +00010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01000000 +01010100 +01010101 +00100010 +00010010 +01010100 +10001000 +10001000 +01010100 +10001000 +10001010 +01010100 +10000000 +10001000 +01010101 +00010101 +00010001 +01010101 +00000000 +00000000 01010100 10101010 -10000101 -01010100 -00101010 -10000101 +10101010 01010101 -00001010 -10000101 +00000000 +00000000 01010101 -01000010 -10000101 01010101 -01010000 -10000101 +00010001 01010101 01010100 -00000101 +10001000 01010101 -01011010 -10100101 +01010010 +00100010 +01010101 +01010010 +00000010 +01010101 +01010010 +00010010 +01010101 +01010100 +01010100 01010101 01010101 01010101 @@ -701,20 +704,54 @@ MAX7456 01010101 01010101 01010101 +00010101 +01010101 +01010100 +10000101 +01010101 +00010100 +10000001 +01010101 +10000100 +10001000 +00010101 +00100000 +10100010 +00010101 +10100000 +10000010 +00010101 +00100000 +10000010 +00010101 +01000101 +00010100 +01010101 +00000000 +00000000 +01010101 +10101010 +10101010 +00010101 +00000000 +00000000 +01010101 +01010001 01010101 01010101 -01010101 -01000001 +01001000 01010101 01010101 -00101000 +00001000 01010101 01010101 -01000001 +00001000 01010101 01010101 +00001000 01010101 01010101 +01010001 01010101 01010101 01010101 @@ -725,43 +762,6 @@ MAX7456 01010101 01010101 01010101 -01000001 -01010101 -01010101 -00101000 -01010101 -01010101 -01000001 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01000001 -01010101 -01010101 -00101000 -01010101 -01010101 -01000001 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 01010101 01010101 01010101 @@ -11008,120 +11008,120 @@ MAX7456 01010101 01010101 01010101 -01010001 -01010100 01010101 -01001000 -01010010 -01010101 -01001000 -01010010 -01010101 -01001000 -00000010 -01010101 -01001000 -10100010 -01010101 -01010010 -10101000 -01010101 -01010010 -00001000 -01010101 -01010100 -01010001 -01010101 -00000000 -00000000 -01010100 -10101010 -10101010 -01010101 -00000000 -00000000 -01010101 -01010100 -00010000 -01010101 -01010010 -00001000 -01010101 -01010010 -00100000 -01010101 -01010010 -10100000 -01010101 -01010010 -00001000 -01010101 -01010100 -00000000 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01000001 -01010101 -01010101 -00100001 -01010101 -01010101 -00100000 -01010101 -01010101 -00100010 -00010101 -01010101 -00101000 -10000101 -01010101 -00100000 -10000101 -01010101 -00100000 -10000101 01010101 01000101 -00010101 -01010101 -00000000 -00000000 -01010101 -10101010 -10101010 -00010101 -00000000 -00000000 -01010101 -00000100 -00010101 +01000100 01010101 +00100001 00100010 00010101 -01010101 +00100000 +00100010 +00000101 +00100010 +00100010 +00100001 +00101010 +10100010 10001000 -10000101 -01010101 +00001000 +10000010 +00001000 +01001000 +10000010 +00001000 +01010001 +00010100 +01010001 +01000000 +00000000 +00000001 +00101010 +10101010 +10101000 +01000000 +00000000 +00000001 +00100000 +10000010 +00100001 +00100010 +00001000 10001000 -10000101 +00101010 +00001000 +00001000 +00100000 +10001000 +00001000 +01000000 +00010001 +01010001 01010101 -10000000 -10000101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01000101 +01000100 +01010101 +00100001 +00100010 00010101 -00010101 -01010101 +00100000 +00100010 +00000101 +00100010 +00100010 +00100001 +00101010 +10100010 +10001000 +00001000 +10000010 +00001000 +01001000 +10000010 +00001000 +01010001 +00010100 +01010001 +01000000 +00000000 +00000001 +00101010 +10101010 +10101000 +01000000 +00000000 +00000001 +01000010 +00100001 +00100001 +01001000 +10001000 +00100001 +01001000 +00001000 +00100001 +01001000 +00001000 +00100001 +01010001 +01010001 +01000101 01010101 01010101 01010101 @@ -15319,27 +15319,27 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 +00000001 +00000001 +01000000 +00100000 +00100001 +01001000 +00100010 +00100000 +00001000 +00100010 +00100010 +10001000 +00101000 +00001010 +10100000 +00100010 +00001000 +00100001 +00000000 +00000000 +00000001 01010101 01010101 01010101 @@ -16323,7 +16323,7 @@ MAX7456 01001110 01000001 01010110 -00000001 +00000010 01010101 01010101 01010101 @@ -16387,7 +16387,7 @@ MAX7456 01001110 01000001 01010110 -00000001 +00000010 01010101 01010101 01010101 diff --git a/resources/osd/bold/008.png b/resources/osd/bold/008.png index 29dd76cd81e2043a89b7ea94368cdfdc0762f59f..e510d2268cb166feb7d9945791dd0a74fdeb20bd 100644 GIT binary patch delta 272 zcmeBWT);FzvYw5BfgyjTJr9slNcITwWnidMWngG%W?=aFA4tDsU???UV0e|lz+g3l zfk8ZfQv6XjpjyrXkH}&M2EHR8%s5q>PZ}t=%+tj&#KM2-L`ETIK^|Ab>ijt|w!e%M zx8B}2Q((S}#~I7*AJ{t;k5w3N%vN5oRm@BCaJ|dgQkf)vVR7c!LQ^|U>-2A4JCOJN zx!Q^Evzij7u*e*+xfCK7!O-NQ*sHMjJX4)&;QaGC_1C}fU8#Fq{9Yu*+-9c7KK6o7 z-?@HOX_(D7IqNO|=j!~3eWhxVHz(hbD(CtXv)s<(@_pv)U9!JF*gl;M1& delta 123 zcmV->0EGXb0*wKX8FT^w007|2s9OL408~jtK~#90)R937z#t3+yTymk&(lMolr<2V zn{!gpOx7&m>R9{H_gSv}5)cvZRuXWxuDX(>MrS=G|8;u}*IBM)l+JS1y0WKa^qI%Z d?g;<@|NjXDDo7FiLMi|N002ovPDHLkV1nMoHW~l` diff --git a/resources/osd/bold/009.png b/resources/osd/bold/009.png index 0f3a82468db2903964e2f775e77ac57d15cda6d7..af518bb85e7b7dea55f0a824855f59c2db6bbc88 100644 GIT binary patch delta 268 zcmV+n0rUQw0h|Jm8Gi-<003{PKMVi>03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C010qNS#tmY4#WTe4#WYKD-Ig~005#%L_t(IPnD5@5(5zo z1-ZHZ#+R$ru2DBrwKE}JM1q)7s^Nf(A;$PHS+$-}YYjQ)Zhulr>6?gQax)NA^d#2! zt>v)>qRoE?L4Vdvg5DCa0h>{?Js1fHilRo6_ZtcSa?#&>vi_=h57bt1|92*h3Okct z0cWnl23z2T^kKBbrga8=lg?l1Gj}}o7snNDU+L>&)A|u>U%vl@2A2;Zgck?!W__i=G00960BE2UyjW7_i00000NkvXXt^-0~g0%xYTmS$7 diff --git a/resources/osd/bold/010-011.png b/resources/osd/bold/010-011.png new file mode 100644 index 0000000000000000000000000000000000000000..24bd062c3a6bdff3b6764d80798f6e03c2b49963 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^5IPKHS>O>_%)r2R1cVuu^kIK$OcWaq0doFXD)Fu_~XRJI^C{8!eNdnZ;O)m4bg{(F>TJA>K= z&A2|7pXJ@=5*?vW=e+0Op22=bQ-=FX{B~x4nZVDpl&!99Dq$1&;G!TWDE2|EkX^eZ zo#DO00=Z4=f6mM|+Qa;{j6M2*?UTuA;x|McN^?Fh`MdQ*lW3xl^2Wa%4;N}~;n7Y` zF??$;7#Hj>BluHvnVi&-@|ju&k4s%D*aSlRbL02V=g6P9mG$5H$(Pu*rW{%q8N&7n P=qCnGS3j3^P6(dm2+Obc>sQ!WHp5?CfZ=|p^u`AfuL9OR<6~g>|NnB0uHL&9HP?YQGI+ZB KxvX`yK{)1^?D3Gm7JO9XR%XnVQ^nrhLiWn>mx}tGCOC X7R-&CH(9q8=u`$zS3j3^P6B literal 0 HcmV?d00001 diff --git a/resources/osd/bold/173.png b/resources/osd/bold/173.png new file mode 100644 index 0000000000000000000000000000000000000000..2f226bcc2430ff91cefdc92f92766d67bffd81a3 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*=Xts~hFJJdoz%#8 zSb@W3>CO7p@$W3QZC;)n{ac8Y^UH#)t=9tc3KCxL6*r#EoqnwR%=H4Li&vF8(|ac` zZFs}l;CfNW(TVL*PQKQg0LR)J0Sn&bHU4^Vp>f@Z18qt*p1K~j_b zuJ3Yk#?71`k~6idKda3SFX*?-=s9khv48cBt?`DeeTx?!2@Tk{MC1UgPZ}t=%+tj&#KM2-L`ETIK^|Ab>ijt|w!e%M zx8B}2Q((S}#~I7*AJ{t;k5w3N%vN5oRm@BCaJ|dgQkf)vVR7c!LQ^|U>-2A4JCOJN zx!Q^Evzij7u*e*+xfCK7!O-NQ*sHMjJX4)&;QaGC_1C}fU8#Fq{9Yu*+-9c7KK6o7 z-?@HOX_(D7IqNO|=j!~3eWhxVHz(hbD(CtXv)s<(@_pv)U9!JF*gl;M1& delta 123 zcmV->0EGXb0*wKX8FT^w007|2s9OL408~jtK~#90)R937z#t3+yTymk&(lMolr<2V zn{!gpOx7&m>R9{H_gSv}5)cvZRuXWxuDX(>MrS=G|8;u}*IBM)l+JS1y0WKa^qI%Z d?g;<@|NjXDDo7FiLMi|N002ovPDHLkV1nMoHW~l` diff --git a/resources/osd/clarity/009.png b/resources/osd/clarity/009.png index 0f3a82468db2903964e2f775e77ac57d15cda6d7..af518bb85e7b7dea55f0a824855f59c2db6bbc88 100644 GIT binary patch delta 268 zcmV+n0rUQw0h|Jm8Gi-<003{PKMVi>03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C010qNS#tmY4#WTe4#WYKD-Ig~005#%L_t(IPnD5@5(5zo z1-ZHZ#+R$ru2DBrwKE}JM1q)7s^Nf(A;$PHS+$-}YYjQ)Zhulr>6?gQax)NA^d#2! zt>v)>qRoE?L4Vdvg5DCa0h>{?Js1fHilRo6_ZtcSa?#&>vi_=h57bt1|92*h3Okct z0cWnl23z2T^kKBbrga8=lg?l1Gj}}o7snNDU+L>&)A|u>U%vl@2A2;Zgck?!W__i=G00960BE2UyjW7_i00000NkvXXt^-0~g0%xYTmS$7 diff --git a/resources/osd/clarity/010-011.png b/resources/osd/clarity/010-011.png new file mode 100644 index 0000000000000000000000000000000000000000..24bd062c3a6bdff3b6764d80798f6e03c2b49963 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^5IPKHS>O>_%)r2R1cVuu^kIK$OcWaq0doFXD)Fu_~XRJI^C{8!eNdnZ;O)m4bg{(F>TJA>K= z&A2|7pXJ@=5*?vW=e+0Op22=bQ-=FX{B~x4nZVDpl&!99Dq$1&;G!TWDE2|EkX^eZ zo#DO00=Z4=f6mM|+Qa;{j6M2*?UTuA;x|McN^?Fh`MdQ*lW3xl^2Wa%4;N}~;n7Y` zF??$;7#Hj>BluHvnVi&-@|ju&k4s%D*aSlRbL02V=g6P9mG$5H$(Pu*rW{%q8N&7n P=qCnGS3j3^P6(dm2+Obc>sQ!WHp5?CfZ=|p^u`AfuL9OR<6~g>|NnB0uHL&9HP?YQGI+ZB KxvX`yK{)1^?D3Gm7JO9XR%XnVQ^nrhLiWn>mx}tGCOC X7R-&CH(9q8=u`$zS3j3^P6B literal 0 HcmV?d00001 diff --git a/resources/osd/clarity/173.png b/resources/osd/clarity/173.png new file mode 100644 index 0000000000000000000000000000000000000000..2f226bcc2430ff91cefdc92f92766d67bffd81a3 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*=Xts~hFJJdoz%#8 zSb@W3>CO7p@$W3QZC;)n{ac8Y^UH#)t=9tc3KCxL6*r#EoqnwR%=H4Li&vF8(|ac` zZFs}l;CfNW(TVL*PQKQg0LR)J0Sn&bHU4^Vp>f@Z18qt*p1K~j_b zuJ3Yk#?71`k~6idKda3SFX*?-=s9khv48cBt?`DeeTx?!2@Tk{MC1UgPZ}t=%+tj&#KM2-L`ETIK^|Ab>ijt|w!e%M zx8B}2Q((S}#~I7*AJ{t;k5w3N%vN5oRm@BCaJ|dgQkf)vVR7c!LQ^|U>-2A4JCOJN zx!Q^Evzij7u*e*+xfCK7!O-NQ*sHMjJX4)&;QaGC_1C}fU8#Fq{9Yu*+-9c7KK6o7 z-?@HOX_(D7IqNO|=j!~3eWhxVHz(hbD(CtXv)s<(@_pv)U9!JF*gl;M1& delta 123 zcmV->0EGXb0*wKX8FT^w007|2s9OL408~jtK~#90)R937z#t3+yTymk&(lMolr<2V zn{!gpOx7&m>R9{H_gSv}5)cvZRuXWxuDX(>MrS=G|8;u}*IBM)l+JS1y0WKa^qI%Z d?g;<@|NjXDDo7FiLMi|N002ovPDHLkV1nMoHW~l` diff --git a/resources/osd/clarity_medium/009.png b/resources/osd/clarity_medium/009.png index 0f3a82468db2903964e2f775e77ac57d15cda6d7..af518bb85e7b7dea55f0a824855f59c2db6bbc88 100644 GIT binary patch delta 268 zcmV+n0rUQw0h|Jm8Gi-<003{PKMVi>03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C010qNS#tmY4#WTe4#WYKD-Ig~005#%L_t(IPnD5@5(5zo z1-ZHZ#+R$ru2DBrwKE}JM1q)7s^Nf(A;$PHS+$-}YYjQ)Zhulr>6?gQax)NA^d#2! zt>v)>qRoE?L4Vdvg5DCa0h>{?Js1fHilRo6_ZtcSa?#&>vi_=h57bt1|92*h3Okct z0cWnl23z2T^kKBbrga8=lg?l1Gj}}o7snNDU+L>&)A|u>U%vl@2A2;Zgck?!W__i=G00960BE2UyjW7_i00000NkvXXt^-0~g0%xYTmS$7 diff --git a/resources/osd/clarity_medium/010-011.png b/resources/osd/clarity_medium/010-011.png new file mode 100644 index 0000000000000000000000000000000000000000..24bd062c3a6bdff3b6764d80798f6e03c2b49963 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^5IPKHS>O>_%)r2R1cVuu^kIK$OcWaq0doFXD)Fu_~XRJI^C{8!eNdnZ;O)m4bg{(F>TJA>K= z&A2|7pXJ@=5*?vW=e+0Op22=bQ-=FX{B~x4nZVDpl&!99Dq$1&;G!TWDE2|EkX^eZ zo#DO00=Z4=f6mM|+Qa;{j6M2*?UTuA;x|McN^?Fh`MdQ*lW3xl^2Wa%4;N}~;n7Y` zF??$;7#Hj>BluHvnVi&-@|ju&k4s%D*aSlRbL02V=g6P9mG$5H$(Pu*rW{%q8N&7n P=qCnGS3j3^P6(dm2+Obc>sQ!WHp5?CfZ=|p^u`AfuL9OR<6~g>|NnB0uHL&9HP?YQGI+ZB KxvX`yK{)1^?D3Gm7JO9XR%XnVQ^nrhLiWn>mx}tGCOC X7R-&CH(9q8=u`$zS3j3^P6B literal 0 HcmV?d00001 diff --git a/resources/osd/clarity_medium/173.png b/resources/osd/clarity_medium/173.png new file mode 100644 index 0000000000000000000000000000000000000000..2f226bcc2430ff91cefdc92f92766d67bffd81a3 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*=Xts~hFJJdoz%#8 zSb@W3>CO7p@$W3QZC;)n{ac8Y^UH#)t=9tc3KCxL6*r#EoqnwR%=H4Li&vF8(|ac` zZFs}l;CfNW(TVL*PQKQg0LR)J0Sn&bHU4^Vp>f@Z18qt*p1K~j_b zuJ3Yk#?71`k~6idKda3SFX*?-=s9khv48cBt?`DeeTx?!2@Tk{MC1UgWF9#_Na{5dhUzl;;N z-rhG;V7`mT8O!Y-*gF-ERTyu~R$j1G%uDldz02BCnIwK;apu`VQ#(!T^lx4}koWz$ z+KKP8ni8h4$Q-b_6e1VF(Bz`ntFZSxQ=Mwy{PQ~X*T3*xse4@fUL?ibW~RqJ_JU8} zxqek?n9Vmi>n;E1>imd(rD~BkC*P4O=lT@0+|J|jedg?4vcEsrKAl}z%%LAWp<%_` TinZn-e=vBu`njxgN@xNAus~(n delta 105 zcmZ3$R5L*`nTdgc;lb$@(Ll=C)5S5QVop+KMn-}H%M6ZH3SolW%K~a^ZRgy*aib$v z(51;NPwDQ%8HsFyj)pJo*$yPhDzhn^vJ#T9OL@#Ez`*eTKYN>^03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C010qNS#tmY4#WTe4#WYKD-Ig~005#%L_t(IPnD5@5(5zo z1-ZHZ#+R$ru2DBrwKE}JM1q)7s^Nf(A;$PHS+$-}YYjQ)Zhulr>6?gQax)NA^d#2! zt>v)>qRoE?L4Vdvg5DCa0h>{?Js1fHilRo6_ZtcSa?#&>vi_=h57bt1|92*h3Okct z0cWnl23z2T^kKBbrga8=lg?l1Gj}}o7snNDU+L>&)A|u>U%vl@2A2;Zgck?!W=#P71xBM43-01XO4pe!Pi t;)N=4)IPKHS>O>_%)r2R1cVuu^kIK$OcWaq0doFXD)Fu_~XRJI^C{8!eNdnZ;O)m4bg{(F>TJA>K= z&A2|7pXJ@=5*?vW=e+0Op22=bQ-=FX{B~x4nZVDpl&!99Dq$1&;G!TWDE2|EkX^eZ zo#DO00=Z4=f6mM|+Qa;{j6M2*?UTuA;x|McN^?Fh`MdQ*lW3xl^2Wa%4;N}~;n7Y` zF??$;7#Hj>BluHvnVi&-@|ju&k4s%D*aSlRbL02V=g6P9mG$5H$(Pu*rW{%q8N&7n P=qCnGS3j3^P6ed{NTIW z`&^ry%-pHnnXz@eKWBuoH^fh0EgFAug{pD%{depBKbcwo>zopr0D?3<0ssI2 diff --git a/resources/osd/default/011.png b/resources/osd/default/011.png deleted file mode 100644 index 053198cb8680e77998b7c49a1affb8463df4aaf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!2~29oL&(Pq-;E0978JRBxPn~Bsee$=*?0P zp4Ig~pCo-U3d7N@s{I0_w6;AobWpEp0< zzvK?jwgq=%-ULWXdloQkVPW8Li0a<8@4P|S6P2@f>rX5a%Vw3gKCrDxt8>+zAcspH zdM7=<@iP?Eu4!q!UiIKz>ZUM$C)X3}ZI;`wuv}rWIJs-$&;Kl|GE%O8GH2bD==U)z z$0qi5?&RkRXU*RB^juo8L-{_}tV#11$e7r!$Z9*jKy%@(4YFIde`J;4P=D%#(cwiv Pmoj*|`njxgN@xNAJJV(& diff --git a/resources/osd/default/172.png b/resources/osd/default/172.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9e2148ef735e6572b63f336ab605488a760a74 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*=X<(1hFJJdoyf^| zM1jNg=$Cu1PRiPyP1jiJ`CBMOb9U%4iQTme9!F%G3Klk=uW$?5megr=cG8RE7CS{I z#4tppXbY-@D4hFR`yK{)1^?D3Gm7JO9XR%XnVQ^nrhLiWn>mx}tGCOC X7R-&CH(9q8=u`$zS3j3^P6B literal 0 HcmV?d00001 diff --git a/resources/osd/default/173.png b/resources/osd/default/173.png new file mode 100644 index 0000000000000000000000000000000000000000..2f226bcc2430ff91cefdc92f92766d67bffd81a3 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*=Xts~hFJJdoz%#8 zSb@W3>CO7p@$W3QZC;)n{ac8Y^UH#)t=9tc3KCxL6*r#EoqnwR%=H4Li&vF8(|ac` zZFs}l;CfNW(TVL*PQKQg0LR)J0Sn&bHU4^Vp>f@Z18qt*p1K~j_b zuJ3Yk#?71`k~6idKda3SFX*?-=s9khv48cBt?`DeeTx?!2@Tk{MC1UgLE(mDv$t{?*fjz0l&;vun4`SS~*?XY#f4is4Th?pfuq+#)NOyn*vyBIlL2v#)*=nEAgZfMMa@%^@EgK4dTG zbCQl>^vt)EtXX&9M8HP(qx0Tg*yr%*#*@EW=XKn5ysA5Qjl&*0zu6K0oo$|I#!q4S f@K<2_{7dZV4DqL@yUb<+x|hMz)z4*}Q$iB}8Fp<7 literal 0 HcmV?d00001 diff --git a/resources/osd/impact/009.png b/resources/osd/impact/009.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ab71f7be4478f98ca4e2b436938e2509746553 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*mw383hFJLbPG;mg zqQJp&_0ImQ)2sDfR%Ar2n;hW~G4>D#~Y2sW?AuX0`wT literal 0 HcmV?d00001 diff --git a/resources/osd/impact/010-011.png b/resources/osd/impact/010-011.png new file mode 100644 index 0000000000000000000000000000000000000000..e42889bd0e076533d1551ba6441ad06ee7290ddc GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^5IPKHS>O>_%)r2R1cVuvdx7z%)6>J9SdyKQJ7j)zW$rQGxIYg)`Uwq_$hK-p&cSU`Cp;5)AinhE5 zp_Sr$AHVvXwYvD4oI-;@p7f$?j`!QL+fud$-bt>QoOn!Y!--Rjt(?4PWMzJGW*aS5 zeRq+!q}Ax(p)1t}&G!roc}u>EI2=(=nf7nvY5!8bN!69KpHiPDH zbwRq?A;rPxw;~Th=HB(^G(@5;LG9NRi6T1L2G8`Yz8PnhZyNrG?jmvk-k3r@yTdKR P00000NkvXXu0mjfWyefI delta 171 zcmV;c0960}0f+*SWq*!IL_t(IPsNkb4uBvCMWglK&M!9)O4+S8d+KZ&1Q)`YrIgAt zftmSp^?ia;THR>@Alka^ diff --git a/resources/osd/impact/053.png b/resources/osd/impact/053.png index 8a4f3333776ae5a28baba4adbc54322a747102a9..aa82b7c8489093da6c1f25283867e344beacd3a4 100644 GIT binary patch delta 144 zcmV;B0B`@>0p9_T83+ad003{PKMavJFOeh_dSyvOK~y+TwUbc}z#s@iVcEgGIkO8c z4lt=7zJy@VrsYFzt(k0ad8auqxV^vhef*Recb@|WX11&(U?~Nvnrh2o-mMg@@&n4D yTpEKadxUbB`8mYws0ihNX!H)K@fe)`4NIkIr|{# zR5sia`BGEbCkm2nSG|3xb0X8~5iSl*8+Xql03?6LsWrz{PNH0$MzR39ok%W0(Jqg67&uL}7_;V8FbixD^g0000X(X-d5r|+27hwgE95z}ARt1- zJ`fTiME|9jiz%km5)(M}RnLd%D^fv5 erQ5R;i-=s(v{}7n=k)3T0000A c?*AZC0fPZPBTuz<^8f$<07*qoM6N<$f)yk^Kpb?p_xF1cIRT7ZP$9=!I70vc O3IG5}MNUMnLSTYjNI$dy delta 136 zcmV;30C)fH0oMVL83+OZ007|2s9TXu7?C6_a$QM8K~#9!tkO{mz#t3*P#bpe+`Rh` zN@*K(u>Oh9L_{OGPJ?wZ9}!7ajS%kc?xT}+IT%XhU?_2@3t?t+QWx@0Sx8jg0zIQU qj9taePY`a;Q#SU|vb5j+(>nm0wm%>6e*k{~00009EUT()$3tZ-u+aAzLt{NmsDp_B~{{5v2%A-t0S0000< L2SrXqu0mjf?wmt- delta 128 zcmV-`0Du4M0nY)D83+OZ007|2s9TXu7?C6_YE?-@K~#9!v{JzeKp_Zg(TDHP*Flh4 z(R+vTAWVlFDoB>EsO3kzAdwvXO)!BZNl`J_Y_cQ((LQ-H#?uu5$b6b)j6G?+<~`#r iCBjN*8N{`J>H`35=_{gG81+s70000^{d?1SK&=bZYqV$2o z@;3c~Vfp6rW7U(`_X%jKY8t7aB8pN0GkdK3bEUXHz@&1eiqga6)il6^KGPL0m@CAK eWWDbHKy(5I1~?;trHI@B0000%mND> z)<3gfa9VHNdF(Xf=fgpVA`(_8sPLjtfQX}>qz+l0P@pRiQR|92l`B=089J|_6}_+& lI^(~fui#%Kn(h7%02fb&I3vHEKy3g3002ovPDHLkV1h}?IY|Hj diff --git a/resources/osd/impact/087.png b/resources/osd/impact/087.png index 7ce94087343b3cab76a1875af02459662d3d531c..d51856ea2047499226bdb435795f1fcb581ee999 100644 GIT binary patch delta 150 zcmV;H0BQf!0p$UZSAPz~000ie0hKEb8vp=$AP9tW?7h_|cT>8M z^2hdL>jMewjyxd}5o<3v`uUh24R@9(Gm8S~gD_;Fs>X$r`!H<^?PKM+Go=A@S1g7s ztW29i6H!#f+0TIsnR%Gz9Pxs$5CVwjKGyv8e`xIjhiW{a3J;sZ=l}o!07*qoM6N<$ Ef=%T>CjbBd delta 132 zcmV-~0DJ%C0n`DISA7c;000XU0RWnu7ytkOT1iAfR5(w?lTiu)AP7UXlY4W^$go&Y zAJssLu?H@QMMUX9sh!(;43s`~qGqoHW~yo(49}{)60p6IAmCvHeJst)?KTPm m7PePHPzOBV;gxs$KM-XUlrJG)!u)ao0000Ap zawb{teF}Kp+tcOimJ&y^Qi`?K#@T}%mIS{?u#+@K0^bF6_BNOayULN7a7U~TnYm*7 z7>KS*XE_;XCxY1d4k$apFXkO&R7LGR7~9`Vd-RyUu?GCypfz8I@oqcd5DFHLBgJk@ qg5HFx?9wGeKb>od2VQ@r3$p_i@^%pQ*Rd-A00009uD;xHE5k`+Eg0;9QRaohg`Bg> z1ga_kWNYURFMLG0;I1I%cP>6rN@=@FN~!HCmzG#;FIvP0y1D%PDHLkV1fWbI_CfY delta 126 zcmV-^0D=GA0nGuBR(E1aL_t(IPt}rv3V<*OL^b;F%`dmksSJrID5wYG=5dN_++d_@^}oDB gYb}3i4QKBLe4?i{RrXtQl2of*PRC%+iVtIyF6F{gvM0ud+Px yy@wG$1aLSrte34*(Geh0E@L=+8TbswJp9d?9S+Z7j% sB>I{2g4t`XxOj&cqy17J>@@%i_i{U#h;j3l00000NkvXXt^-0~f^NM&xc~qF diff --git a/resources/osd/impact/146.png b/resources/osd/impact/146.png index cac4d586b40ccb86be49ace2a0fe72603f1e4147..208de751dc6e083fd1b4001d597d93514f692503 100644 GIT binary patch delta 151 zcmV;I0BHZ-0p$UZR)2a)L_t(IPoXXyXJf>uG)VE!v<4267l%hv~ z)UBbalROsi=HT~FJjRV$Yk#}RIX4R*5t)w!XJ({)0t=usvW)UUkEVAdWQY*2(5=B{ zDbN23J3;|CV!Q%APK570V95MfP#nOv#t*c*?-e3)T=v^m4iK9*gv0;<002ovPDHLk FV1mMOMa=*J delta 144 zcmV;B0B`^00p0X%d3gfVO-4|O&MiWg+cwN{}7 z`|!qDU_=*jy$w$y(v$GsbWiC5Y_!%a!OY!2%vlFT4+0-6li-cKzz?*-)By#&MShrJ y_+?T8%#`nN_nJ?9I|FWGf>Mh8(rCzC5FKuqKAE!8^>F|I00{s|MNUMnLSTZGMnK2_ diff --git a/resources/osd/impact/147.png b/resources/osd/impact/147.png index 048f59f49e66115e71341946087eda7cbf971bed..73aa250be7a9897d769291ac87ebdf52a8dbc183 100644 GIT binary patch delta 139 zcmV;60CfM<0oehNR)20uL_t(IPt{Y=3cw%;?8g4P`f|s$F3K8XFJn76)bK>bkW#Yn z09&;UW;W2H39b_QciLT!kaMoyi5O$C${AW>vMP$cKock#z`$O_cpCZ+e-QK=B0WAf t16zEtB_5eS3sDDHVt%02`c?oC4sY{T3$2p|J^%m!07*qoL#AAABBHdw z*?n*~=uu-{AKjCxnh2lG_dLf65Y$>jU}iHgYjJ|(i6F<$qu>iPSSkR2D8Tb&o7wCR n7;&?ahObddv5hx_)*!k7rQ$xBbyM#N00000NkvXXu0mjf@eVtM diff --git a/resources/osd/impact/148.png b/resources/osd/impact/148.png index b65b989f4930f74bd521a5567fe6edf140e292c7..feb24b8d1dd0b1bb60e0d3e6825ac67891decbed 100644 GIT binary patch delta 150 zcmV;H0BQf>0ptOYR)2X(L_t(IPqmYQ3cw%;L^Jl^)t5WYb;Cj!ZtTHPXy+81^xm~3 zsPi;bH57B;HZTx@oQT-{V1SG<=Ix@jW+zQcOL&Zg*IwW@@G+`*?WT%AhNYz^P&{P- zc>@N^@VzAr=C$+h(3toA7qDc0CA_$Rz_Z;k^lez delta 147 zcmV;E0Brx{0pS6VR)2O$L_t(IPqmVP3cw%;L^bx`)t5W2c_A&fV(fufou)=wN-^2s zaNjU9skQpX$FhJkiZ4gP;eeBD+m-N=iw? z0$ZIMsyfKh3|9emf5*^oaf4iDvKUiVa%8&Fs=EhNe&7@duvpL7*QC rDw4g(A&X<-@&P0`E_0g&0MZVueozaiGxWm%0000X(y8;;tsT-c}kN2dI=%H2olt zHKesRb`RSGh*kBKbgb~@!mHM5AB>2YJJvqui1v67DuOG*gl`4!-Hot!O-7ItT_uXz^426J-W7CR_&i<^a#4Re84Js7~JulgMW`Aez^8 z-P51g_p?;aIXy@;K(x6iMI6~Dw|yg?N9-JB90n-wSCp&AHP zsVKbo6|<8;gg5lhBfbo-EdGUN5LG#g(Q&nTrIk7NULYXEZGR(r9r_+zGm^Va;t}=W7Wq-{{L_t(IPqmeS4#FS|M2qpi$G#lB$<2Bzqs!t;$W>;0P==OT zYqLM{=(^L|#}Ddb@?KDnzOkQEo?U;45|(ALbzL{JQpz^Rm>T6BcEBP!d~s-&g8|_x zsYHv<%!URd)KEVwmkq8G8fbg6Iz4230X@Al)Z}1*)!Z3sFk`&Q+zpZdV<^yA3zO6# zdn3Z)GeQHO%;LDogl1|QG2H=*zyvq>jM0u#Eux7hvw9Hz*dZA$q3Rr806#w>^?$%~ kh&X!&(k&Ws_RP%e1=_Z>EIS9S-~a#s07*qoM6N<$g138YivR!s diff --git a/resources/osd/impact/161.png b/resources/osd/impact/161.png index bbd39b67f6ae5c6a9ab4d66cf12a763ded25e88b..d4d02a38d6eed12374265f7567450cc15e115c8c 100644 GIT binary patch delta 165 zcmV;W09yZv0)hgNWq*iCL_t(IPoV&o8~&4QF@S6;R3%-%5&^L>}j&Gs?UF;XY2a;Q`FZ>KzR7H(i#|V#yt|$$$?@VdX>m@7xYe{#aucmJw`R#xB aoYr0m%64{JF(C;60000IPKHS>O>_%)r2R1cVu5Vrw#jO@L>+OtFE{6G*$eTh#qZWM-HmFu|6JcXXks%j=HBl(Wq+;;6sxq^S) zd69x5v8Ov8)hrd^-^6;6{q)4V6?clZ|C+QpaaQrh1Fbu>KCf?!e=YI&{aFL?+6`}= z`wm`e4?dW{^+9p{4E5$*`86l5|DG}T*zp|38eNCr<=KbLh*2~7YO1Y;ur literal 0 HcmV?d00001 diff --git a/resources/osd/impact/174.png b/resources/osd/impact/174.png index 452006dee473fa5c926b6de1a571e0a8470e9191..66511d7cdf7bdeb580590ce6e9132ea3e03d16d5 100644 GIT binary patch delta 150 zcmV;H0BQg10rLTnWq)}|L_t(IPu-Kz4uBvCMWr8Czudaib%?s?wX-#aaYWpbQc6o7 zIG#1kZ-mz357j$Bx}JEFeZC8|R!wr{XY*h?0}DJ$!JlfG1Qc3)+yx9KBD!Z0SLAcf zy5G(~nJ``oJkd*F5Lm?ajB#C}|AW2j8`>dKc$3lzUgS*`)(>yYD*ylh07*qoM6N<$ Ef>;|u-v9sr delta 143 zcmV;A0C4~F0qg;gWq)!>L_t(IPvw)*4uv2LL$~|mz?VD%PDHLkV1jLuLz(~p diff --git a/resources/osd/impact/176.png b/resources/osd/impact/176.png index f6dc6a6addeb12f2c8a8e653f328b308a9e36ff0..06c08d17938229b3922fa9320382d3683d483077 100644 GIT binary patch delta 163 zcmV;U09^lt0)PULWq*cAL_t(IPpy)R4uBvCMWr8Czq~vpiDa+U*%*S57nZ~r=kS85 z`sdUa4(9X3m=F|->k$zyYP7|rp-CcPJ=h$@@Op-C4OR~54EUV$dY;hc3$1oFoq?O- zmOM12l-dh-MjapSehqZ4$x@(Rr6~Wb^=hVJ15(cTCP_DDy&PxXl5Xaj5Eg;_O&0be RlFa}B002ovPDHLkV1hBnOGW?y delta 168 zcmV;Z09XHj0)+yQWq*rFL_t(IPo-Np_O@UZ16rQJSY zJNZ4%8>-EG#h4Qm6f$#nf{PD`OG7Uy766LG6ob|f4_ElSbk{IWmqa+{T>TAgV_}ph z(+-@J0sXQg)Bv{|R;K9;t~-#3$;iqJ|6WO0?R49K?iv0`(jkjQ9?^av3ZA})nb`s3 WZBv78it-fz0000n-v=s(Tff8J@v%HVry)w)UPvb)Cd*N-@Qh9fP*pyPbpMi*Wt3T8U{_=|VTQWw~ zL6?9&J+_2uXzbjE0b=eW4Ime)3m!PY?BBMgRZ+07*qoM6N<$ Ef?t6}DF6Tf diff --git a/resources/osd/impact/197.png b/resources/osd/impact/197.png index 7c2cf785681f4dcc9d7fb0296eaa39775db4a6a7..8bae0f7a2fef39a171b0b2c55a1f168710d31be4 100644 GIT binary patch delta 152 zcmV;J0B8T)0pEp6D%4@wHD zX%w>AS4s*7F8wL2vm-pnOA3Cp`83Q!h8ga@T5|J05PidpPL_0}xF`Ss002ovPDHLk G0$_rqpE^wd delta 141 zcmV;80CNB40o(zQ83+OZ007|2s9TXu7?C6_cVbCIK~#9!tWrq|05J%w#fRtT&LNO4 z4t56W$x6&3H302Yy?v;AAXoQljziZYA~ML#0Q{8GYL=^*0#03irPGdj38clv`4 zGAh`j2V$A}brCVMj02|nHunpb`j@?ro+9@4DIg#srG#BJ@3+AIemEU(+iyhFfgwbrV<1?B;3#H5UmR8PKk?2E;3wG;Z&3Ye}L z2qtZR@vmJt?~L^Bf_G;Mh2EREf42>Jy;}GBq_-BGt}b#6m%9&?`q(W6I*q~8)z4*} HQ$iB}wP{>I literal 0 HcmV?d00001 diff --git a/resources/osd/impact_mini.mcm b/resources/osd/impact_mini.mcm index 799ea1ae..e9c84585 100644 --- a/resources/osd/impact_mini.mcm +++ b/resources/osd/impact_mini.mcm @@ -404,9 +404,6 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010101 -01010101 01010100 01010100 01010101 @@ -459,6 +456,9 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 01000001 00000101 00000101 @@ -520,6 +520,45 @@ MAX7456 01010101 01010101 01010101 +01010100 +01010001 +00010101 +01010010 +00001000 +10000101 +01001000 +10001000 +10000101 +01001010 +10001010 +10000101 +01001000 +10001000 +10000101 +01000000 +00000000 +00000101 +00101010 +10101010 +10100001 +01000000 +00000000 +00000101 +00100010 +00101000 +10100001 +00101000 +00101010 +10100001 +00100010 +00100010 +00100001 +00100010 +00100000 +00100001 +01000100 +01000101 +01000101 01010101 01010101 01010101 @@ -545,6 +584,45 @@ MAX7456 01010101 01010101 01010101 +01010100 +01010001 +00010101 +01010010 +00001000 +10000101 +01001000 +10001000 +10000101 +01001010 +10001010 +10000101 +01001000 +10001000 +10000101 +01000000 +00000000 +00000101 +00101010 +10101010 +10100001 +01000000 +00000000 +00000101 +00101000 +10100010 +10100001 +00101010 +10100000 +10000101 +00100010 +00100000 +10000101 +00100000 +00100010 +10100001 +01000101 +01000100 +00000101 01010101 01010101 01010101 @@ -568,6 +646,44 @@ MAX7456 01010101 01010101 01010101 +01010100 +00000100 +01000000 +00000010 +10100010 +00101010 +10100010 +00100010 +00100010 +00100010 +10100010 +00100010 +00100010 +00100010 +01000000 +00000000 +00000000 +00101010 +10101010 +10101010 +01000000 +00000000 +00000000 +01010010 +10001010 +00101010 +01010010 +10101010 +00001000 +01010010 +00100010 +00001000 +01010010 +00000010 +00101010 +01010100 +01010100 +01000000 01010101 01010101 01010101 @@ -593,22 +709,31 @@ MAX7456 01010101 01010101 01010101 +01000101 01010101 01010101 +00100001 01010101 01010101 +00100001 01010101 01010101 +10100001 01010101 01010101 +00100001 01010101 01010101 +00000101 01010101 01010101 +10100001 01010101 01010101 +00000101 01010101 01010101 +00010101 01010101 01010101 01010101 @@ -617,132 +742,7 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 +00010101 01010101 01010101 01010101 @@ -2187,44 +2187,44 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +00010101 +01010101 +01010100 +10000101 01010100 00000000 -01010101 +10100001 01010010 10101010 -00010101 -01001000 +10101000 +01010100 00000000 -10000101 -00100001 -01010101 -00100001 -00100001 -01010101 -00100001 -00100001 -01010101 -00100001 -00100001 -01000101 -00100001 -00100001 -00100001 -00100001 -00100000 -10100000 10100001 -01000010 +01010100 +01010100 +10000101 +01010010 +00010101 +00010101 +01001010 +00000000 +00010101 +00101010 10101010 10000101 -01010100 -10100000 +01001010 +00000000 +00010101 +01010010 00010101 01010101 -00100001 +01010100 +01010101 +01010101 01010101 01010101 -01000101 01010101 01010101 01010101 @@ -2457,13 +2457,13 @@ MAX7456 01010101 01010101 01010101 -00000000 -01010101 -01010100 -10101010 +01010000 01010101 01010101 -00000000 +01001010 +01010101 +01010101 +01010000 01010101 01010101 01010101 @@ -2519,13 +2519,13 @@ MAX7456 01010101 01010101 01010101 -00000001 +00010101 01010101 01010101 -10101000 +10000101 01010101 01010101 -00000001 +00010101 01010101 01010101 01010101 @@ -3343,35 +3343,35 @@ MAX7456 01010101 01010101 01010101 -01010100 -00010101 +01010000 01010101 -01010010 -10000101 01010101 01001010 -10000101 +00010101 01010101 00101010 -10000101 -01010100 -10100010 -10000101 -01010100 -10101010 -10100001 -01010100 -10101010 -10100001 -01010101 -00000010 -10000101 -01010101 -01010010 -10000101 -01010101 -01010100 00010101 +01010100 +10101010 +00010101 +01010010 +10001010 +00010101 +01010010 +10101010 +10000101 +01010010 +10101010 +10000101 +01010100 +00001010 +00010101 +01010101 +01001010 +00010101 +01010101 +01010000 +01010101 01010101 01010101 01010101 @@ -3421,8 +3421,8 @@ MAX7456 01010100 10101010 00010101 -01010101 -00101010 +01010100 +10101010 10000101 01010101 00000010 @@ -4650,7 +4650,7 @@ MAX7456 10100010 10000101 01010101 -00000000 +00000100 00010101 01010101 01010101 @@ -8191,16 +8191,14 @@ MAX7456 01010101 01010101 01010101 -01010100 +01010101 00000000 -00010101 -01010010 +01010101 +01010100 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8261,16 +8259,16 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8331,16 +8329,16 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8401,16 +8399,16 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8471,16 +8469,16 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8541,16 +8539,16 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8611,16 +8609,16 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8681,16 +8679,16 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 01010101 01010101 01010101 @@ -8748,16 +8746,18 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +00000000 +01010101 01010100 -00000000 -00010101 -01010010 10101010 -10000101 -01010100 -00000000 00010101 01010101 +00000000 +01010101 +01010101 01010101 01010101 01010101 @@ -8794,12 +8794,12 @@ MAX7456 01000000 00000000 00000101 -01001010 +00101010 10101010 -10000101 -01010000 +10100001 +01000000 00000000 -00010101 +00000101 01010100 10001000 01010001 @@ -8860,10 +8860,10 @@ MAX7456 00000101 00101010 10101010 -10000101 +10100001 01000000 00000000 -00010101 +00000101 01010100 10001000 01010001 @@ -9222,64 +9222,6 @@ MAX7456 01010101 01010101 01010101 -01000000 -01010101 -01010101 -00101010 -00010101 -01010100 -10000000 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010101 -00000000 -00010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 01010101 01010101 01010101 @@ -9295,76 +9237,6 @@ MAX7456 10000000 10000101 01010100 -10000000 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010100 -10101010 -10000101 -01010101 -00000000 -00010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01000000 -01010101 -01010101 -00101010 -00010101 -01010100 -10000000 -10000101 -01010100 -10000000 -10000101 -01010100 -10000000 -10000101 -01010100 10101010 10000101 01010100 @@ -9414,6 +9286,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01000000 01010101 01010101 @@ -9426,6 +9304,64 @@ MAX7456 10000000 10000101 01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010101 +00000000 +00010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01000000 +01010101 +01010101 +00101010 +00010101 +01010100 10000000 10000101 01010100 @@ -9478,6 +9414,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01000000 01010101 01010101 @@ -9499,12 +9441,6 @@ MAX7456 10000000 10000101 01010100 -10000000 -10000101 -01010100 -10000000 -10000101 -01010100 10101010 10000101 01010100 @@ -9542,6 +9478,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01000000 01010101 01010101 @@ -9566,6 +9508,64 @@ MAX7456 10000000 10000101 01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010100 +10101010 +10000101 +01010101 +00000000 +00010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01000000 +01010101 +01010101 +00101010 +00010101 +01010100 +10000000 +10000101 +01010100 +10000000 +10000101 +01010100 +10000000 +10000101 +01010100 +10000000 +10000101 +01010100 10000000 10000101 01010100 @@ -9606,6 +9606,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01000000 01010101 01010101 @@ -9636,13 +9642,7 @@ MAX7456 10000000 10000101 01010100 -10000000 -10000101 -01010100 -10000000 -10000101 -01010100 -10000000 +10101010 10000101 01010101 00000000 @@ -9877,9 +9877,6 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010101 -01010101 01000001 01010101 01010101 @@ -9931,6 +9928,9 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 01010100 00000100 00010101 @@ -9948,7 +9948,7 @@ MAX7456 00100001 01010100 00000000 -00000101 +01000101 01010101 00101010 00010101 @@ -9956,10 +9956,10 @@ MAX7456 10100010 10000101 01010100 -10100000 +10100010 10000101 01010100 -10101010 +10101000 10000101 01010101 00101010 @@ -10020,10 +10020,10 @@ MAX7456 10100010 10000101 01010100 -10100000 +10100010 10000101 01010100 -10101010 +10101000 10000101 01010101 00101010 @@ -10054,44 +10054,44 @@ MAX7456 01010101 01010101 01010101 -01010101 01010100 -01010101 +00000100 01000000 00000010 -01010101 +10100010 00101010 10100010 -01010101 00100010 00100010 -01010101 +00100010 +10100010 00100010 00100010 -01010101 +00100010 +01000000 00000000 00000000 -01010100 +00101010 10101010 10101010 -01010101 +01000000 00000000 00000000 -01010101 01010010 00000010 -01010101 +10001010 01010010 00100010 -01010101 +10101010 01010010 10000010 -01010101 +00100010 01010010 00100010 -01010101 -01010000 -01000000 +00000010 +01010100 +01000100 +01010100 01010101 01010101 01010101 @@ -10117,43 +10117,43 @@ MAX7456 01010101 01010101 01010101 -00000100 01000101 01010101 -10100010 +01010101 00100001 01010101 -00100010 +01010101 00100001 01010101 -10100010 +01010101 10100001 01010101 -00100010 +01010101 00100001 01010101 -00000000 -00000000 01010101 -10101010 -10101010 -00010101 -00000000 -00000000 +00000101 +01010101 +01010101 +10100001 +01010101 +01010101 +00000101 +01010101 01010101 -10001010 00010101 01010101 -10101010 +01010101 00010101 01010101 -00100010 +01010101 00010101 01010101 -00100010 +01010101 00010101 01010101 -01000100 +01010101 +01010101 01010101 01010101 01010101 @@ -10182,13 +10182,13 @@ MAX7456 01010101 01010101 01010100 -00010000 +00000000 01010101 01010010 -10001010 +10101010 00010101 01010010 -10101010 +00100010 00010101 01010010 00100010 @@ -10211,9 +10211,9 @@ MAX7456 01010100 10000000 01010101 -01010100 -10101010 -00010101 +01010101 +00101000 +01010101 01010101 00000010 00010101 @@ -10330,12 +10330,12 @@ MAX7456 01000000 00000000 00000101 -01001010 +00101010 10101010 -10000101 -01010000 +10100001 +01000000 00000000 -00010101 +00000101 01010100 10001000 01010101 @@ -11013,173 +11013,173 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010100 -01010100 -01010101 -01010010 -00000010 -01010101 -01010010 -00100010 -01010101 -01010100 -10101000 -01010101 -01010100 -10001000 -01010101 -00000000 -00000000 -01010100 -10101010 -10101010 -01010101 -00000000 -00000000 -01010101 -01010010 -00000010 -01010101 -01010010 -00100010 -01010101 -01010010 -10000010 -01010101 -01010010 -00100010 -01010101 -01010100 +01000101 01000100 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01000100 -01010101 -01010101 +01000101 +00100000 00100010 -00010101 -01010101 +00100001 00100010 -00010101 -01010101 -00101010 -00010101 -01010101 00100010 -00010101 -01010101 -00000000 -00000000 -01010101 -10101010 -10101010 -00010101 -00000000 -00000000 -01010101 -10001010 -00010101 -01010101 -10101010 -00010101 -01010101 -00100010 -00010101 -01010101 -00100010 -00010101 -01010101 -01000100 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010001 -01010101 -00010101 -01001000 -01010100 -10000101 -01001000 -01000100 -10000101 +00100001 01001010 -00100010 -10000101 -01010010 +10000010 +10100001 +01001000 +10000010 +00100001 +01000000 +00000000 +00000101 +00101010 10101010 -00010101 -01010010 -10001010 -00010101 -01010010 -00010010 -00010101 -01010100 +10100001 +01000000 +00000000 +00000101 +00100000 +00101000 +10100001 +00100010 +00101010 +10100001 +00101000 +00100010 +00100001 +00100010 +00100000 +00100001 +01000100 +01000101 +01000101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01000101 +01000100 +01000101 +00100000 +00100010 +00100001 +00100010 +00100010 +00100001 +01001010 +10000010 +10100001 +01001000 +10000010 +00100001 +01000000 +00000000 +00000101 +00101010 +10101010 +10100001 +00000000 +00000000 +00000101 +00101000 +10100010 +10100001 +00101010 +10100000 +10000101 +00100010 +00100000 +10000101 +00100000 +00100010 +10100001 +01000101 +01000100 +00000101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01010100 01010101 +01000101 +01010010 +00010101 +00100001 +01010010 +00010001 +00100001 +01010010 +10001000 +10100001 +01010100 +10101010 +10000101 +01010100 +10100010 +10000101 +01010100 +10000100 +10000101 01010101 -01010101 -01010101 +00010101 +00010101 01010101 01010101 01010101 @@ -11292,10 +11292,10 @@ MAX7456 00000101 00101010 10101010 -10000101 +10100001 01000000 00000000 -00010101 +00000101 01010100 10001000 01010101 @@ -11418,11 +11418,11 @@ MAX7456 00100010 00101010 00100001 +01000100 01000000 -00000000 -00000101 +01000101 00100000 -00000000 +01000000 00000101 00100010 00101010 @@ -12559,35 +12559,35 @@ MAX7456 01010101 01010101 01010101 -01010100 -00010101 +01010000 01010101 -01010010 -10000101 01010101 01001010 -10000101 +00010101 01010101 00101010 -10000101 -01010100 -10100010 -10000101 -01010100 -10101010 -10100001 -01010100 -10101010 -10100001 -01010101 -00000010 -10000100 -01010101 -01010010 -10000100 -01010101 -01010100 00010101 +01010100 +10101010 +00010101 +01010010 +10001010 +00010101 +01010010 +10101010 +10000101 +01010010 +10101010 +10000101 +01010100 +00001010 +00010100 +01010101 +01001010 +00010100 +01010101 +01010000 +01010101 01010101 01010101 01010101 @@ -12637,8 +12637,8 @@ MAX7456 01010100 10101010 00010101 -01010101 -00101010 +01010100 +10101010 10000101 01010101 00000010 @@ -13583,35 +13583,35 @@ MAX7456 01010101 01010101 01010101 -01010100 -00010101 +01010000 01010101 -01010010 -10000101 01010101 01001010 -10000101 +00010101 01010101 00101010 -10000101 -01010100 -10100010 -10000101 +00010101 01010100 10101010 -10100001 -00010100 -10101010 -10100001 -10000101 -00000010 -10000101 -10000101 +00010101 01010010 +10001010 +00010101 +01010010 +10101010 10000101 +00010010 +10101010 +10000101 +10000100 +00001010 00010101 -01010100 +10000101 +01001010 00010101 +00010101 +01010000 +01010101 01010101 01010101 01010101 @@ -13661,8 +13661,8 @@ MAX7456 01010100 10101010 00010101 -01010101 -00101010 +01010100 +10101010 10000101 00010101 00000010 @@ -14350,6 +14350,9 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 00010101 01010101 01010101 @@ -14365,12 +14368,6 @@ MAX7456 10000101 01010101 01010101 -10000101 -01010101 -01010101 -10000101 -01010101 -01010101 00010101 01010101 01010101 @@ -14414,6 +14411,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01010001 01010101 01010101 @@ -14429,12 +14432,6 @@ MAX7456 01001000 01010101 01010101 -01001000 -01010101 -01010101 -01001000 -01010101 -01010101 01010001 01010101 01010101 @@ -14479,6 +14476,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 00010101 01010101 01010100 @@ -14493,12 +14496,6 @@ MAX7456 01010100 10000101 01010101 -01010100 -10000101 -01010101 -01010100 -10000101 -01010101 01010101 00010101 01010101 @@ -14543,6 +14540,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01010100 01010101 01010101 @@ -14558,12 +14561,6 @@ MAX7456 01010010 00010101 01010101 -01010010 -00010101 -01010101 -01010010 -00010101 -01010101 01010100 01010101 01010101 @@ -14608,6 +14605,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01000101 01010101 01010101 @@ -14623,12 +14626,6 @@ MAX7456 00100001 01010101 01010101 -00100001 -01010101 -01010101 -00100001 -01010101 -01010101 01000101 01010101 01010101 @@ -14672,6 +14669,12 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 01010100 01010101 01010101 @@ -14687,12 +14690,6 @@ MAX7456 01010010 01010101 01010101 -01010010 -01010101 -01010101 -01010010 -01010101 -01010101 01010100 01010101 01010101 @@ -14737,6 +14734,9 @@ MAX7456 01010101 01010101 01010101 +01010101 +01010101 +01010101 01010000 00010101 00000001 @@ -15316,30 +15316,30 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 +01010001 +01010001 +01010001 +01001000 +00001000 +00001000 +01001000 +10001000 +10001000 +01001000 +10001000 +10001000 +01001010 +00000010 +10100001 +01001000 +10000010 +00100001 +01001000 +10000010 +00100001 +01010001 +00010100 +01000101 01010101 01010101 01010101 @@ -16323,7 +16323,7 @@ MAX7456 01001110 01000001 01010110 -00000001 +00000010 01010101 01010101 01010101 @@ -16387,7 +16387,7 @@ MAX7456 01001110 01000001 01010110 -00000001 +00000010 01010101 01010101 01010101 diff --git a/resources/osd/impact_mini/006.png b/resources/osd/impact_mini/006.png index 8f3cfc261fb61b26be3d6611d458b62b3cfb8d70..68cdb34f38a40836caa7a24022a8bbcadda30e38 100644 GIT binary patch delta 175 zcmV;g08sz&0saAySAPz~000ie0hKEb8vp$WAP7Xoi>oI$muX3j zEWdg)4uLEPNzS>34dQ7(^OK;~dOJh~PnRAl5D|4~S6BzoR;-qkQqHdnn*o;)GHLc% z)E#=oFaz!@_5rn4k|*1o}7_X26!106T9D#3;TRpvX%G(%v{KUWll+ db2k4&2nYATOTW{hb29({002ovPDHLkV1g5IMhpM| delta 162 zcmV;T0A2t70r3HlSAPo=000XU0RWnu7ytkOcS%G+R5(xNkx>qSFbG437vFaBY0 z2t9p5&e@BMmdaCy9*9LkBG$!e2VI2*>Gf)2SenqRSquSj*BdORfqPO~0oNWrqbtmK Q5C8xG07*qoM6N<$f-|r~pa1{> diff --git a/resources/osd/impact_mini/008.png b/resources/osd/impact_mini/008.png index 75c7554ca0536554be81dca6efeff85d785882fa..7079406754d94465be475ca2605e9a3cd7aab40a 100644 GIT binary patch delta 222 zcmV<403rY50geKYBq<06Lfe02gnP zU&Tg|J{W(LNklFc^$JxP(!B22oisC!7GiWhdC4D34e9SgSp{vP07i32J9 Y0PO-z;}jEbT>t<807*qoM6N<$g2Pl>H~;_u delta 179 zcmV;k08Iam0^ZeAPfXsU(U}lYb>_1EIJ91&`uA%wbqT$JAJm}{uWlrfC`F9P}RY&4(?usRdpod z0NEju0u+=&bj+QHuv-@KvBNGoBS&IfLi~k%R?rSHB9kW}?}K}maW6tneiN}GsM!JH hbO*&J;aT471Vs}yqXJ+K;x+&P002ovPDHLkV1ft06Lfe02gnP zU&Tg|J{W(ONklh=i0ln3`UbpTv`Z&mmSHxc$-_vl=|L_p^gg zhb$2roZUiR6Y8=G2t3&UMeZ*li9F2#7=s?%Z)Gh-Fe@BvnoR-p#|x}!HRgwJ5OK?w bbwT6=K6y`Lo#yzz00000NkvXXu0mjf4*yuG delta 168 zcmV;Z09XH!0@wkNBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPkxdwXZAnByR5(wi zkXsJGPy|G=ay!?MYV-yrJwNvmGZIPKHS>O>_%)r2R1cVu4bEwK$gQpqy=w%C5F+O6&=!&oKA@%OL=vxB0p#$?8~|C7{i zEEKM?_L{MH-Mu8;&+Hv9Vt?OayQZ?4`TeG{2_Fpql{Wa@IGg2vUyE;AyN_a%QikoL z2W6oQn%~$?^KG%oW?zCbWk6 zd)*uN}P?1`>xbKNQ&>{v;S3j3^P6Y5!8bN!69KpHiPDH zbwRq?A;rPxw;~Th=HB(^G(@5;LG9NRi6T1L2G8`Yz8PnhZyNrG?jmvk-k3r@yTdKR P00000NkvXXu0mjfWyefI delta 171 zcmV;c0960}0f+*SWq*!IL_t(IPqmZX4uBvCg`@f2&L=kyLebGSz3AIi3=TiFBUpZrReFb0*u_HQ4A7Uvxyn;GZ; z8MVwmP=Wh_s$RDZ%uE7++UpWNlpF`|{h_HQ2?Mx9AqC?W#?dq734Z%on`!tp+~8Bwm`oqtn;r7ayH>oD!)(&m aNdp`OQ5UJ8Geyb(00004D`(0pTg2Gp;n|j_%uHqEU$O`#Tbw#cr3|S8ocoCOBOi+1(#DKTQhFd00000 LNkvXXu0mjf@*+k2 delta 155 zcmV;M0A&CA0r&xsWq*E2L_t(IPrZ^s4uBvG1gRefUXE^YO%V!sagxTybh?lrDWwuV zaNOT*eiTY6TQyC{Icr&50fXF1NkpoEpB4^}=n`hbpb_ja;zvBfd%&ik=RH*LwvA|x zbiFH;Sp!=L@7m1Av}i1IR M07*qoM6N<$f|OZARsaA1 delta 160 zcmV;R0AK&@0q+5jSAPo=000XU0RWnu7ytkObxA})R5(w?l8Xw!AP7Zu?7yooce}0| z7BMy$?SN>O`6$gfo4jDF`Z0?G%*-W1AN?(Wj#7%8gK!%f>&RZUgG~miYGft>A O0000$0mA{183+ad003{PKMavJFOeh_UP(zrK~y+T?T*0;03ZlMXFslfxgn`k zC%gARhT^6qB8I@spsLX=m>EPA9WX*`*>$g+C1voGOxx?eaJ(Evmwm{+xCC}0000x-UlYGp)Fu1bKm!>(UHx3vIVCg!0OOt^ AH~;_u diff --git a/resources/osd/impact_mini/129.png b/resources/osd/impact_mini/129.png index 485cf4b1b0738d64929c86adea11930a95f4860a..99797ca8a5f0efa40a86533efd810b22c254f7f6 100644 GIT binary patch delta 119 zcmV--0Eqv$0mcE483+ad003{PKMavJFOeh_VN6LxK~y+T?T10F;$hm}uO&653up$z|NqPkT3Y-%ZePE_|HHBV1m*_1KMj~ zfzn{`|Nno6#>Pe{4+84z>lqjs8KFER8(@k-G%|*X!2nzX$P}1q$Qa#*;Sj8&8i)ZT cYG7ah0F_uHBUN(qOaK4?07*qoM6N<$g5WnTE&u=k delta 105 zcmX@fxPx(mBnJ}%1H*&UE21a*N=#JI3AXceaSW-rm6Vf_k)XgbL!yJ>O7Ib;^h7H@ zy+cgT|Ns9l?<=URtn4D|1fujNORy&j^k^jk4Pp5IpP9j79>0$Gqzg+xd{0+Dmvv4F FO#m_rA%g$_ diff --git a/resources/osd/impact_mini/131.png b/resources/osd/impact_mini/131.png index d24a6eb397ef4b48a53dcee8c1aec06e1defcaf8..7b7ac59fb0c70b23377b12e37db7cb949320021e 100644 GIT binary patch delta 120 zcmV-;0Ehp$0mlK583+ad003{PKMavJFOeh_VogazK~y+T?U6wW03ZkiHTt*uazoRI zPIZfDK!&1S4tId{0+Dmvv4F FO#szZC4>L~ diff --git a/resources/osd/impact_mini/132.png b/resources/osd/impact_mini/132.png index f79182e554a29ea2ae7c6e16ac963dc1a52c6690..008c239afc25340fc11a31e4af2db15d9db92c4a 100644 GIT binary patch delta 119 zcmV--0Eqv!0mcE483+ad003{PKMavJFOeh_VN6LxK~y+T?UF$X03ZkiHTt*uazoRQ zPIhlVhN4|BAu}sHFv4wqpu-G1stO_!rwtLg5z&1%aI_%zoL0$% z0zom0|3Hw@B_S!P_(}jo70x_jA*Bm6f#LsuW`^80ew{a3rPd(6r>mdKI;Vst0003Z A4FCWD diff --git a/resources/osd/impact_mini/133.png b/resources/osd/impact_mini/133.png index 3e5e8362b4f3b40f2938b76a3e424fe018163372..366cd532424327cac00e740202d0e7510fdc2d8b 100644 GIT binary patch delta 120 zcmV-;0Ehp#0mlK583+ad003{PKMavJFOeh_VogazK~y+T?UF$X03ZkiHTt*uazoRI zPIc&112PotdI_0X;eZm}<_C7TAE;qRRY64J)FC1_BD%+hd~BX)Ef@i7ur~8Nd6zu+ a`2ZTQcpxVGZ^()O0000=|F@r|_|HHBV1m*_gHa8{ zfZ?El1xka#|Ns9P8XFs-JP4?-uV-LnWQ6jNY=9{S(a0Dk1_N*nAX8wbA!BqK23_)I aU;qHlY9k}lvBm}f0000|-wZkWANq!I`(2)QCnHgr~@$1YgdlC-hGI+ZBxvXo|-FW!7{sBP~J#`~Uy|07*qoM6N<$f(z0tlmGw# delta 104 zcmX@gxSer=BnJ}%1H*&UE21a*N=#JI39|KcaSW-rm6Vf_k)XgbL!yIWaaY?qB{2(b zW6J}s5fA?S|NnonW>QK@%L-==Aax{FNZGKH4`|5$|I7><9`Wn^U_4L&#0mA{183+ad003{PKMavJFOeh_UP(zrK~y+T?Tx_-03ZlMXY}9dmm8Ia z-R#~28H(FTL<|o!*D~Kw;TtME8@lVl%%G~iZI~HE!~4kTNBoSl#ZEOYa_it z8Dpe3QF6{x`$bd()ZL-??gcTm2-F#6Y%iu3N2s+rFM%hsS@{mm5S5uP2SMW7aS5KH zU~^B4INaeE5ZNWC!h_^r$ia6&L;$&ob;cc0d$cqHnh}M9eKsdG3!#8-7WQUv2=t3@ rR(NifYlNn8cuy7%2Tj`F&&cTmOR0gXt7v=-00000NkvXXu0mjf#@JD; delta 191 zcmV;w06_nm0-OSnWq+bcL_t(IPnD4i4g?_xL)D9`CwDFJv1*uPrU^kR<)gW^Hqr-_ zF-H1gCFi`fe?*)h-a7Q&jlheGAYP@WpNFZ&N2s-$cYy^fnRtipBq}TR4gm4p(FJc& z)aI@hd3Nw;)i_TElxri+-?re%bPs$7NGjst^+)1fEiI9fB{&KN``jdhP@uWNo-7;! tp7{2d#j~ZCpqei4%HZfgrTu(bPCu~|jv8-6>p1`b002ovPDHLkV1hW^S$zNi diff --git a/resources/osd/impact_mini/138.png b/resources/osd/impact_mini/138.png index c3afd624fd75d3d498e2bee8c2fcd6cdb7809c83..da2463a615f128e82edca903f683db1826f356d0 100644 GIT binary patch delta 197 zcmV;$06PD<0=NQ@dw-}&L_t(IPo0y24#OY_MA7WO)h}l}GE&4XTX)H6rEmu|ZF5eQ z8|bPkci3NrKcTfIGRB~#gEh{X_N@dbVmnaFan4q7wd8hb2RUXA|IM%!WOWcNv9GoK zxnormb1OmeJZ3b3bLa|+d}x-e^oisFpMgVI=Dq>%g5crn7e0`T08Z{uXUOMB4!pew zlmb=E3nC#taovNsZT~}610-e~H=PL(xv264g`tm&;}dE}00000NkvXXu0mjfsgPHm delta 198 zcmV;%06G7-0=WW^dw;1(L_t(IPo0y24#OY_MAhuS)h}m0vP%)0Y~3YSlpF`NX&qx& zd4OhShRwVTS0UO8i_dP z^mC(C7RFITbe>yW2ItZd6tFO89HP@5B?i6&3AK!K1Bn%1{y+Qz#2C=cJLDbWU1H(( zJK!W_GcS-puQ*4MZrlHm-2lRf<4Z>ZOfFh^1HQbN~PV07*qoM6N<$f+vev A%>V!Z diff --git a/resources/osd/impact_mini/144.png b/resources/osd/impact_mini/144.png index f6b46efc6af7ce49d8b9be684d4c85970911ffda..0cc3e4dd5b013f7a12ed1c096b71923a55367259 100644 GIT binary patch delta 158 zcmV;P0Ac^$0qg;gR)2v>L_t(IPqmYQ3cw%;M0M=Ht1oYyb;CIs#OQ(5(o?CXwbm{P zy^n2GwV51qwg7J=e&2$aiD2LROc1kp=%fF%G0<9@E0I#lTn+A)2!ef9F9r_*gV{GM zie43fuMkNEUn~hwac>2%SAb*wR{_t!UmDFn5Bndo3(A0au@@zg3s`$o5qN-Y8UO$Q M07*qoM6N<$f>DD)@c;k- delta 144 zcmV;B0B`^70p0~$`vnO{ut`i0k#BR0^#C|+#RBC1} z8ywAxyDyEL&5Nq`jaqAXaCgu~4^bg!K``eq2=ab!2{0JdXqe}UgMct2vu37(6(1Ae yOn*NEF7jQ4Qp)fwXjmulA7)Qr2E>~!iClZxRt3MN%K!iX00{s|MNUMnLSTY(@jGq+ diff --git a/resources/osd/impact_mini/145.png b/resources/osd/impact_mini/145.png index 3fc17938fd3fb45ac22014ebe1e643473f35edc6..a23bba09acf89dfee8210fc6fdc158dcbdfbcc65 100644 GIT binary patch delta 166 zcmV;X09pU<0rUZoR)2{}L_t(IPrZ|Y4uBvCMA7x%>X%z*o;%HzZLPPFL>^F*i!o+9 z$hj;H=Unwp_}rK4!EA#XX#xaC5kO4iMZgT2iHsGtx^|?Ls%I8LsNP9yiC{Cc!c+`8 z0XMU6n2KE~S@4c;TDs#0fzHVaT?LGR9vV%@qaXYatDhF)m+xS<1HF|{ U8k2DWVE_OC07*qoM6N<$fX%#3c99jO5Iq<-ZR?g~NGTOt zDW%Fz2*I=eg0&pUn}!~4 z8#DrO1jlb2o|w+IZ~QQlYd7N!ob3pWLyWQcEfnmFdLMd^mKx^4Z!lW`KX6$Kxu!}~ P00000NkvXXu0mjfY7j)F diff --git a/resources/osd/impact_mini/146.png b/resources/osd/impact_mini/146.png index 6aa4c1e054f6ee46ab49bba44db8d4b431aafc5b..d91d9348f8a0035125b60d1d960c3679fcb067a1 100644 GIT binary patch delta 159 zcmV;Q0AT;+0qp^hR)2y?L_t(IPpy-U3cw%;ge~^o)ss7}X;^dpz&;Qxyv~{nIcKH~ zn3+Nd6lGmEW}!7r05xJo6^ti+fdeneJ4z{%5v7zQduS~wD7KDP3_5`p>wOTTC}QJ; zS4%5gf%fmY|Kl*@NPrg49d_o&(m7xZ>_^kE<5B+y@A*6+J{Y_M(G5hSSqppYj1T|- N002ovPDHLkV1l$_LN5RS delta 151 zcmV;I0BHa10p$UZR)2a)L_t(IPrZ}j4uBvCgrW7`>XVa4Uc=2T`BC3SV0s;;X|2^H z!7;L!*=vB)uN_tOjEUBo*PwSWsvCERPr>3ihJf`WAY2SL2FB5G66}x{u(t?%Ud{c` z(#YFGT)Abj_*3)81PSXFHjvx_U4-a0000< KMNUMnLSTYg%u1U8 delta 155 zcmV;M0A&B_0qFsdR)2m;L_t(IPt}v%3V~JA1G5X$Fx+KXix33ad<;pvu|YON}c z>X}Z-{x(ud(;%mS*=GSLnZS=TqPW?!qqXLlNGZj$gG&zpgE=E2$|x&yDZs(8* z@C4)~0jvxBzi;`bBs9n9`L}7?IL{3ngScsocs%SrjA|VLc^RoBRh1q3s8%2ac(H5% O0000H~0q6mcR)2j-L_t(IPrZ}t3cw%;g*Eox)swp^o}tme{_F$MF2~DQJjM`m zMBea|=H6iDPs90T(L>BW=k$oE_nt&nVZE$tSX?WqB^)B78blxoDm0X;a#TT+pSR?` zOvCrBvaO)K!d8Bm!F>sxHwog87ESkoy@%a!J5+qsl8Dd^vl9bEHUAv}VE_OC07*qo IM6N<$g6L{WssI20 diff --git a/resources/osd/impact_mini/149.png b/resources/osd/impact_mini/149.png index 4f9883c3b12f8589620680900fee514e43fea804..5aa63a8e211c65451a86576814e4daee16db27a5 100644 GIT binary patch delta 154 zcmV;L0A>H>0q6mcR)2j-L_t(IPt}uI3cw%?M3d5ct0%XN%}889`qc*^aT!fqG{%_4 z$hn3Cs#?Y`YZuVDGExOx9e!n?2-u+Cahq>QDOn^ELa^wisR3ZJPs58*OC#W9Uu-WL zcGv;&kpTQ%FdQr49l(0NrG#hTFOBA(NBIx4t!F@dn3Bi?wG+WpAkrXa9RL6T07*qo IM6N<$f^YCbOaK4? delta 151 zcmV;I0BHZ{0p$UZR)2a)L_t(IPtB8!3VXTDvTtmuL|NAx^D2HR9wN{gt zn3*i@cW^N?atd&%svgbh0#=BXGJIS6nP{!KCsImr?_lTwAQ{zYQ49tFlhF$;iV$CZ zc;Xkl;Z_g_ml*_DgE%x=To2uY`Nkz6{@8=a1}qOv3s}kx8Vmpc002ovPDHLkV1faV BJn#Sj delta 129 zcmV-{0Dk}B0nh=ER(fSgL_t(IPwkVz3cxT3Lv`%GZNJ<#VxS%d_O`;undol2S%*{GP9+vpn%p$U(^3inBSt!sl9i%_dQbySl*?1fn zW5i};pf#~W$jv5TL8n({fLenZh#OR7t=w8`J8W`DtPLdaAPfKi002ovPDHLkV1m$F BL013( delta 146 zcmV;D0B!&90q+5jWq)-^L_t(IPwkUY3V<*SL)YQGx1GF_V6=`7=D!b0r)gppwBEay z57et~^Bdeft;lVN!We@kqDI3!tmJ4Cuaz`xW~^vZXw_kt^eZ7`6_gsZQbt_~D~_v^ z)*6%1K|Blo57-x?_MV?A9q=7=fj$p|=Uyo%NVQIym46QZ01E&B07*qoM6N<$f|@r# A(f|Me diff --git a/resources/osd/impact_mini/155.png b/resources/osd/impact_mini/155.png index 5704562265a338cc6bbe567656c341a04e08d4b8..79fc7022dc23b1b466869671416013c90e220d76 100644 GIT binary patch delta 182 zcmV;n07?Ip0+RxeWq+ATL_t(IPnDB_3d0}_1#8)VYroua&aR7$DG z24^3aSrXKGUt$PI{))(pkIC!0+6X!4v1ZPhl+s54Y{qJAx@L|D&e@X9h(g`=Uumv5 zJI)LT?ugg`M)RYG_U)L&#o+ES|7beClrD;7zv(`HL1kSck1toUK~ZE6%!h*q6&W6u k_CMI@3e6!_{2%Ff0}u*qtEoQB761SM07*qoM6N<$f=BFCApigX delta 183 zcmV;o07(Cn0+a%fWq+DUL_t(IPnDAa4#OY}14Ffc123mKR#U^&iJp`K0mlTXsg%;< z1;;gRvn6QlzQhoadN1%>q9z{#mY915kTILVW+?Awna=Uk5m zL_W3FEp-PEO zn!14`lS?Tr=6J?2P903PDl#sU!DOH+aJM5w6Lwja77E#ABr1+U7Z**pJAfu-a*v&X fM@zJk_7#pdnbdSU^^HSx00000NkvXXu0mjf`^8Jo delta 181 zcmV;m080Ok0+IrdWq+7SL_t(IPnD1f4uBvG1cCT(;N|Ex4i@p8WF;-#wirt(E&L$q z(^~taZiq3OzF-Excqh?U65D&ah`EDhKc`D|RIHN*VpvJ|@mEZS^9tg1Le6=Qj$e+c z8&pJbt<`d@M_$HZ0>yNd$irZuSg5N|%tVnWxB`=BdNlZzJTA$1;o%-04ATTm$QN5~ jOAK?Be8N`pdM1PwD*$vOSev0M00000NkvXXu0mjf`AJV+ diff --git a/resources/osd/impact_mini/157-158.png b/resources/osd/impact_mini/157-158.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8e56f206d0e490a37d174f6b218f3e983ce0fd GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^5IPKHS>O>_%)r2R1cVu84^|33xBDT| Wv+=;>Ru!PX7(8A5T-G@yGywqrDSCx#A`C4Q0lhcnDUh!HwMa|wKPIk+;9}8>3dJbkksQzwN^lf!#)a&X^ z2U3KBy!J}+KMR^x9*~e0>g3##J!AQ1Ddv4m+wHF>9hkB{Dy)f<)nHJ$aR2}S diff --git a/resources/osd/impact_mini/158.png b/resources/osd/impact_mini/158.png deleted file mode 100644 index 5be9ae3506da095d4a459f70a6783443e3b30581..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*dp%toLoEEKPGICa zs=(pg+Pzx+d-SA9=W6eM6JqC@QgSUy`l)Ji&!Zm#Pi(CBe2;rJEyIaV;JV_yT(yZa zBW diff --git a/resources/osd/impact_mini/159.png b/resources/osd/impact_mini/159.png index ce44ec3c8dae439b46d02f59198d118b22eb6041..92907d5aeea71f3aa2419b61ce3fbab152c71b5b 100644 GIT binary patch delta 189 zcmV;u07Czn0-6GlWq+VaL_t(IPnDAa4uBvG1I74n;N{aI#cra;OBPVpZh)pziY-4_ z``9qEX((GC+d{3iKV9UU`|M;?Kyq}RnYflfO396po8XJ7AiAS9;sh~q)?O1FcX8XS z2G+?Cz~w3QXh%zU$pv)>5D~Wr-i5krJHQE00ZHnvbKnFlO*VHVzTR{^Er=e!CBT*# rF&T{iLHh&{09GQdg2J|RZf464ebSWnN_RIs00000NkvXXu0mjf=^9fp delta 188 zcmV;t07L(p0+|AkWq+SZL_t(IPnDC~4uCKSL!I%zw|zNUVwb}3!IO}&LAk`(#u#?| z;CxTV%t}+10D(ED8&F@l-qVAu)>;exGq(F6j70Jn$|gWXJu_v8oU9##ASYJcT!5ue z<;%9E@qj8{)_eD4utvfo16mzGM8XdI7Fu1$0YN~t1NS3AkTrLy*aTV~B3&2+0fO3r qcV+z#IwxQvJCSl}z_HXfv*QNx437>@J%;Q60000F*@ diff --git a/resources/osd/impact_mini/161.png b/resources/osd/impact_mini/161.png index bd29b607ad278d7d1ada76ef97bffe4616944b53..59dc12b64b4266182d940879139aea2e5f81a1e5 100644 GIT binary patch delta 173 zcmV;e08;;k0*V5VWq*)KL_t(IPo0ws4uBvGLzx!`PCn^E3E)KVC0IV|2BMNu(s00q zhpKKhGqBSmBDFVySgVk8wh5}2gdkN}SIbKEh%uTrgAHmh$30ks$+iSofzUixY=&K~ zau1Jeo?<&t%(OGCKroWG3SSLzX6!!=OrjbBs0<|MhpsxXIwq5Az*gQE419IH&iwly b_6gwz_9kJXgAekn00000NkvXXu0mjfBcwX#cwoza!`Ho`*?bmi9CNDIbz zZWRP+M0KR#(|dQpL~8ZKa{Rby)aq-k!#j{8{!Ot*CNH}3-gzMWYt+)zP+5zefc_aH5#9jaZ002ovPDHLkV1gn)Sg-&9 delta 169 zcmV;a09OB)0)_&RWq*uGL_t(IPnA*$4!|G?!)5b3;L~IKcJ%YmsUbqy1j8=%H0OT!)oU@VpJpJDN&?3OJC9BxNueV-_A`y`b Xu`OaE3tBW#00000NkvXXu0mjfznMa8 diff --git a/resources/osd/impact_mini/173.png b/resources/osd/impact_mini/173.png index 9ab4ac515e481f66f1f8d9b5630b657770311a6b..3bab590a368e277d610a3fcc1ddd8c5d905a5f53 100644 GIT binary patch delta 186 zcmV;r07d_Y0+#}iWq+MXL_t(IPlb{T4#OY_K*j9d>dBp8o}sL=mr&%7rqX+#<-(l5 zp{h;V!Z delta 170 zcmV;b09F5&0*3;SWq*xHL_t(IPn}VV5`Z8GYyPFV;QOSxWKDAbNN?$QFF)_P&Cuv)=M-RjTU+D|Zg4kt-vmi1tgWu3U@4>1|u(>(F;h<=8)JC; z!13rdziDvy?N}V$-h1rKA}aFu4$76- zoQVc4;KZB*ivx>jpWh&U?|hu1PRmMFDCN=bv~~gcqg*Bh><*0500000NkvXXu0mjf DXRk*T delta 154 zcmV;L0A>I30rvrrWq*B1L_t(IPu-H?4uBvCgrW7`>XTF4yhg}c{q5V_DIO?J?Y*0P zV4M1y-z1osoUa9qRBVQ~}q z;vX~J;EJS!^?71U2r}8VhzJWM+T+|%C6TZmY>s01HniOxR1!X=w0(Py>IB5 zaOfVIVvO~KJEM+`o2!A&Etw0{s}$v*t8q2cumLG&G!6O#tRC-q{~oSnRGeD@7S~D{ TZDuZX00000NkvXXu0mjfKlDdI delta 161 zcmV;S0ABxs0{#JzWq*W8L_t(IPoA*_y`lAVKugdVWB&HIs^6$q7_@|y z;m`^jp!W^4;ORIx&wzp!Raqx{uS8}u4IAM5ji!MQpxX2Qe;SzCs5o~5zYR$YF>1IX P00000NkvXXu0mjf0>MfB diff --git a/resources/osd/impact_mini/178.png b/resources/osd/impact_mini/178.png index b3e63e9ce0cfd649eab5f0ba9e597a4d838ce776..7d2c2ada64f9e8c7999948bdcc6ee131c3774a06 100644 GIT binary patch delta 178 zcmV;j08Rgl0*?ZaWq*}PL_t(IPo0nn4#Xe`Ma9g$)ss8EX(34IY%d`o%O@zk_gQ|R zp8jk88<=yN>061l(pn=j(>Fe=34vD>k(U}CV$E*Q2G9CI%j0?5fLBszh}>>KAQP#& zb{({NHJ?Y|!2kitj4{R;9niJ^l##g3q#!%5-Ls g|`P#P?Du1uG5K$Wc$Qu!kT^0ZU002ovPDHLkV1l?APMQD! diff --git a/resources/osd/impact_mini/196.png b/resources/osd/impact_mini/196.png index 2e198278858cc68aa9951bbe90d3b391aed85022..2cae3154f538052eb17723d7792c9e458b01426d 100644 GIT binary patch delta 154 zcmV;L0A>I90rvrrWq*B1L_t(IPrZ^+4uBvGLzx!`PL6i5IB`t*@gf{|6n&?7*zhltz*k(u;>HKWoD4U7hR%Gih7bVLv2 zob@D%V2wR+%-t2h20lO$(`jXp)k!$s-W7*U+n%V!TS{pMI90rvrrWq*B1L_t(IPrZ`c4uBvGL&5mpz?V;JRvhy(O^hd*@Icp2$hB5U zFPLx{v{|0U1*?&3&rviHzmD?9p&vxmV!5YZ#qVecxOVI-vmGZS%Pm4-s-SO5S307*qo IM6N<$f=-c0LjV8( delta 155 zcmV;M0A&C70r&xsWq*E2L_t(IPrZ`i4uBvCgr)V~>XTd7I77-&TkG3Ue{jI5Qc7v* z1&i*F`BBhX3j?gjYN)m9=_Kc@C+$Erl6_T#E%Kdd5$S=Eu!E_9<9G&vtwiX7;zQt* zILaME2Y*YR{olOu#bnrt!OP&qB4Yc diff --git a/resources/osd/impact_mini/213.png b/resources/osd/impact_mini/213.png index df32f2aadac0d6084635f82e2137b17049948427..8fd37aede4c0f7d67f737e1b7cc14bf18323519f 100644 GIT binary patch delta 158 zcmV;P0Ac_C0s8@vWq*N5L_t(IPrXqA3cw%;%-FxPm%A>y;kH@}#tsh4%sWw3)xrW| zi?8wX2QwRz*jhZ2Ip-QZQcCq*M9vB*_FYNemY2cOJi6-V7@X(z}JcpWP8_k)!&SOeqy_2_cko5$P3h*>=ZCh delta 93 zcmX@XxQ20pBnJ}%1H*&UE21a*N=#JIaX0dGaSW-rm6Vf_k)XgbL!yJBB<#qE0|y)~ xy!HA2|G)a041r&LRgMQNLX;(dI{*J?X82&iHBWB-^5Z}*gQu&X%Q~loCIE?4BozPv diff --git a/resources/osd/impact_mini/225.png b/resources/osd/impact_mini/225.png index 915462fc492f11de3e7c92f4270c0aa3e5375ed5..54969a2525a08c60e6b3f604742a355dd361e580 100644 GIT binary patch delta 120 zcmV-;0Ehpw0mlK583+ad003{PKMavJFOeh_VogazK~y+T&5uC}z(5ECwI5esZb@i+ zHC~nuNG=&Lo|$b6t|w*wEOcwzDWF_cl0@MxBPR}yR-q6P=I+c13ThdAFG0dh92&i0 aDVW_4v=^hfz4U(o0000o?|xU|n{1*hFE4LTPftb7af=XT384P}|Ct$gTe~DWM4f DKa?gH diff --git a/resources/osd/impact_mini/229.png b/resources/osd/impact_mini/229.png index 89df972f8767d2a215f06ea0ffdfb6938c28682c..b60af7d09f03ca82e6736fb820931f6d5a728067 100644 GIT binary patch delta 110 zcmV-!0FnQ#0lfi`83+ad003{PKMavJFOeh_SVKufK~y+T)sHa_03Zm&4nGdO{0xcg z$6%seSlR#<5yXIXrp)gFNj)ezGxeb4(T3)sz};bHdQfsjcYhe2)Z7k$4LJxAqmgET Q^8f$<07*qoM6N<$f_`)<<^TWy delta 94 zcmdnXxR!B(BnJ}%1H*&UE21a*N=#JI@i6vuaSW-rb>-qlK?VknLk@+Xa{81LR<7Lt yP#|FCI@jj{7Xokm+o`AQFlnEh4N&X<|I7>`-CT>`x9ZmdxeT7JelF{r5}E+9{v;Ft diff --git a/resources/osd/impact_mini/239.png b/resources/osd/impact_mini/239.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7230bdfe8b02c1748c375ae0e1df8a5cecb9ff GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDEfH31!Z9ZwBV85q}V~BWgJ)}@|OG9%*|JWw9{@+(y?ZKzICa| zJwMHsfH287U+-A9ui0|#P1feWAKGNwZJYD@<);T3K0RV7iU#|cF literal 0 HcmV?d00001 diff --git a/resources/osd/large.mcm b/resources/osd/large.mcm index b013460d..b9b8324b 100644 --- a/resources/osd/large.mcm +++ b/resources/osd/large.mcm @@ -517,186 +517,241 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010101 -01010101 -01010101 -01011010 -10100101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -00000000 -00000101 -01010101 -10101010 -10100101 -01010101 -00000000 -00000101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01011010 -10100101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01011010 -10100101 -01010101 01010000 -01010101 -01010101 -01010010 -00010101 -01010101 -01010010 -10000101 -01010101 -01010010 -10100001 -01010101 -01010010 -10101000 -01010101 -01010010 -10101010 -00010101 -01010010 -10101000 -01010101 -01010010 -10100001 -01010101 -01010010 -10000101 -01010101 -01010010 -00010101 -01010101 -01010000 -01010101 -01010101 -01011010 -10100101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01011010 -10100101 -01010101 -01010101 -00000101 -01010101 -01010100 -10000101 -01010101 -01010010 -10000101 +01010001 01010101 01001010 -10000101 +00001000 01010101 +00100000 +10001000 +00010101 00101010 +10001010 10000101 -01010100 +00100000 +10001000 +00100001 +00100000 +10001000 +00100001 +01000000 +00000000 +00000101 +00101010 10101010 -10000101 -01010101 +10100001 +01000000 +00000000 +00000001 +00100000 +10000010 +00100001 +00100010 +00001000 +10001000 +00101000 +00001000 +10001000 00101010 -10000101 +00001000 +00001000 +00100000 +10001000 +00001000 +01000000 +00010001 +01010001 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010000 +01010001 01010101 01001010 +00001000 +01010101 +00100000 +10001000 +00010101 +00101010 +10001010 10000101 +00100000 +10001000 +00100001 +00100000 +10001000 +00100001 +01000000 +00000000 +00000101 +00101010 +10101010 +10100001 +01000000 +00000000 +00000001 +00001010 +10000101 +00010101 +00100010 +00100000 +10000101 +00100010 +00100000 +10000101 +00100000 +00100000 +10000101 +00100000 +00100000 +10000101 +01000101 +01000101 +00010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01000000 +01010100 +01010101 +00100010 +00010010 +01010100 +10001000 +10001000 +01010100 +10001000 +10001010 +01010100 +10000000 +10001000 +01010101 +00010101 +00010001 +01010101 +00000000 +00000000 +01010100 +10101010 +10101010 +01010101 +00000000 +00000000 +01010101 +01010101 +00010001 +01010101 +01010100 +10001000 01010101 01010010 -10000101 +00100010 +01010101 +01010010 +00000010 +01010101 +01010010 +00010010 +01010101 +01010100 +01010100 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +00010101 01010101 01010100 10000101 01010101 +00010100 +10000001 01010101 -00000101 +10000100 +10001000 +00010101 +00100000 +10100010 +00010101 +10100000 +10000010 +00010101 +00100000 +10000010 +00010101 +01000101 +00010100 01010101 -01011010 -10100101 +00000000 +00000000 +01010101 +10101010 +10101010 +00010101 +00000000 +00000000 +01010101 +01010001 01010101 01010101 +01001000 01010101 01010101 +00001000 01010101 01010101 +00001000 01010101 01010101 +00001000 01010101 01010101 +01010001 01010101 01010101 01010101 @@ -704,61 +759,6 @@ MAX7456 01010101 01010101 01010101 -01000001 -01010101 -01010101 -00101000 -01010101 -01010101 -01000001 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01000001 -01010101 -01010101 -00101000 -01010101 -01010101 -01000001 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01000001 -01010101 -01010101 -00101000 -01010101 -01010101 -01000001 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 01010101 01010101 01010101 @@ -11008,120 +11008,120 @@ MAX7456 01010101 01010101 01010101 -01010001 -01010100 01010101 -01001000 -01010010 -01010101 -01001000 -01010010 -01010101 -01001000 -00000010 -01010101 -01001000 -10100010 -01010101 -01010010 -10101000 -01010101 -01010010 -00001000 -01010101 -01010100 -01010001 -01010101 -00000000 -00000000 -01010100 -10101010 -10101010 -01010101 -00000000 -00000000 -01010101 -01010100 -00010000 -01010101 -01010010 -00001000 -01010101 -01010010 -00100000 -01010101 -01010010 -10100000 -01010101 -01010010 -00001000 -01010101 -01010100 -00000000 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01000001 -01010101 -01010101 -00100001 -01010101 -01010101 -00100000 -01010101 -01010101 -00100010 -00010101 -01010101 -00101000 -10000101 -01010101 -00100000 -10000101 -01010101 -00100000 -10000101 01010101 01000101 -00010101 -01010101 -00000000 -00000000 -01010101 -10101010 -10101010 -00010101 -00000000 -00000000 -01010101 -00000100 -00010101 +01000100 01010101 +00100001 00100010 00010101 -01010101 +00100000 +00100010 +00000101 +00100010 +00100010 +00100001 +00101010 +10100010 10001000 -10000101 -01010101 +00001000 +10000010 +00001000 +01001000 +10000010 +00001000 +01010001 +00010100 +01010001 +01000000 +00000000 +00000001 +00101010 +10101010 +10101000 +01000000 +00000000 +00000001 +00100000 +10000010 +00100001 +00100010 +00001000 10001000 -10000101 +00101010 +00001000 +00001000 +00100000 +10001000 +00001000 +01000000 +00010001 +01010001 01010101 -10000000 -10000101 01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01010101 +01000101 +01000100 +01010101 +00100001 +00100010 00010101 -00010101 -01010101 +00100000 +00100010 +00000101 +00100010 +00100010 +00100001 +00101010 +10100010 +10001000 +00001000 +10000010 +00001000 +01001000 +10000010 +00001000 +01010001 +00010100 +01010001 +01000000 +00000000 +00000001 +00101010 +10101010 +10101000 +01000000 +00000000 +00000001 +01000010 +00100001 +00100001 +01001000 +10001000 +00100001 +01001000 +00001000 +00100001 +01001000 +00001000 +00100001 +01010001 +01010001 +01000101 01010101 01010101 01010101 @@ -15319,27 +15319,27 @@ MAX7456 01010101 01010101 01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 -01010101 +00000001 +00000001 +01000000 +00100000 +00100001 +01001000 +00100010 +00100000 +00001000 +00100010 +00100010 +10001000 +00101000 +00001010 +10100000 +00100010 +00001000 +00100001 +00000000 +00000000 +00000001 01010101 01010101 01010101 @@ -16323,7 +16323,7 @@ MAX7456 01001110 01000001 01010110 -00000001 +00000010 01010101 01010101 01010101 @@ -16387,7 +16387,7 @@ MAX7456 01001110 01000001 01010110 -00000001 +00000010 01010101 01010101 01010101 diff --git a/resources/osd/large/008.png b/resources/osd/large/008.png new file mode 100644 index 0000000000000000000000000000000000000000..e510d2268cb166feb7d9945791dd0a74fdeb20bd GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*mwCE4hFJJdoyaJ} zEXd<(Se-v7#`c$S;?~>yW(v%A@i=3-{R4Za;;{h2lBo@S3B{2R#UToPS=Y{`wcbD|L^H z-;1P}+syRX$6oO1JJ+u&4YTTd~$0=wb#>S3j3^P65)mSmkrD;acs)r5TipPE!L~flIkj-oPJTJ)W&bD9>FW-$ML%f$lDOr_vQoC%$>-u<8kgIA6+bST7yt5g(&b-*+41}Sx3Ep; cS8Ney|BzIPKHS>O>_%)r2R1cVuu^kIK$OcWaq0doFXD)Fu_~XRJI^C{8!eNdnZ;O)m4bg{(F>TJA>K= z&A2|7pXJ@=5*?vW=e+0Op22=bQ-=FX{B~x4nZVDpl&!99Dq$1&;G!TWDE2|EkX^eZ zo#DO00=Z4=f6mM|+Qa;{j6M2*?UTuA;x|McN^?Fh`MdQ*lW3xl^2Wa%4;N}~;n7Y` zF??$;7#Hj>BluHvnVi&-@|ju&k4s%D*aSlRbL02V=g6P9mG$5H$(Pu*rW{%q8N&7n P=qCnGS3j3^P6`yK{)1^?D3Gm7JO9XR%XnVQ^nrhLiWn>mx}tGCOC X7R-&CH(9q8=u`$zS3j3^P6B literal 0 HcmV?d00001 diff --git a/resources/osd/large/173.png b/resources/osd/large/173.png new file mode 100644 index 0000000000000000000000000000000000000000..2f226bcc2430ff91cefdc92f92766d67bffd81a3 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*=Xts~hFJJdoz%#8 zSb@W3>CO7p@$W3QZC;)n{ac8Y^UH#)t=9tc3KCxL6*r#EoqnwR%=H4Li&vF8(|ac` zZFs}l;CfNW(TVL*PQKQg0LR)J0Sn&bHU4^Vp>f@Z18qt*p1K~j_b zuJ3Yk#?71`k~6idKda3SFX*?-=s9khv48cBt?`DeeTx?!2@Tk{MC1Ug$xTI_$p)gCDo|c5(|tho(F{$t@xhWVV!v|LH$`s zc5aQl|AeEPZg*rY*;bLVjz^|_OZEibJ99Ms4{JSny_2!$;p~;%{5t!XN)`H#1gClJ zigq%;B-Z?HTFOL|$)`3Pwr9@ITKeQqy+ixliojQlHimv7@3m_V0Nusl>FVdQ&MBb@ E0NPAl3jhEB literal 0 HcmV?d00001 diff --git a/resources/osd/vision/009.png b/resources/osd/vision/009.png new file mode 100644 index 0000000000000000000000000000000000000000..8371e0aa757907233f5c7bf4bb6aac2357f88f93 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*=X$z0hFJKwPHyBo zD!}9FeXsuUY1{BQYgw#4ug{9h&EnQvnkDYUp=`8zYn04KLDj@0p(#ObUyfC1{r$Ch zA@AHnY=(Bv@7({+WjFJZ`m$-)p3JQfy1=(4`ykOW*elF{r5}E+H7HLKR literal 0 HcmV?d00001 diff --git a/resources/osd/vision/010-011.png b/resources/osd/vision/010-011.png new file mode 100644 index 0000000000000000000000000000000000000000..0987c19b9f823d61313adaf276b077547cf85f76 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^5*~5uW*}?W{ttO?BWsWVDv@ufA&s0vV4ynDK$H*Rh1n|6gxp@`D`hOKDd zs&K_B+gtxOAN5$T|43SbBWc6;%f_W~Jl78-yI3nZhB(&C9QSQiZ?Tvkw@H2KB$*lK zh0>R>6|zg7sqYf}U%l-8g}?=$ZSvn5@7Z+BLH|_f{C5l5-~DgYIwbHYHCyLWE&D3B f74uc~mrh|1k*vzxyev-<=tBliS3j3^P6nvv literal 0 HcmV?d00001 diff --git a/resources/osd/vision/157-158.png b/resources/osd/vision/157-158.png old mode 100755 new mode 100644 index d22bfc9f484ddf2c885c6f741c7e6d82634adac6..437d4974caa669956fd87c46c954c8595e8fa863 GIT binary patch delta 244 zcmV>1tOT&8EBG<>o_vOJfC$2iV8%67JX-EFeBPN%Vj|4r|~IxdoN^Oi2|eO zUL@HfHXKn*ylwVAjOcE%y$^(AMk_p8IW@wMY?DVqGh72!OKkrwt^v2?7qpnAd*Gpk ubp||9qc}rX@R$FA2aT4u2tr=_lF|o7VtDL?mmJ6d0000I z1qKEN2L}fT2nY!Y2?`1d3kwSj3=9no4Gs87#JBD85$ZI8yg!O92^}T9UdMYA0HneARr+jAtE9oBO@auBqSvzB_<{&CnqN; ze<&y^DJd!{Dl021EG#T7EiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>t zIXOByIy*Z%JUl!-Jv}}?K0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jd zN=r*iOiWBoO-)WtPESuyP*6}&QBhJ-e^OIZQ&dz`RaI41R#sP6S6EnBSy@?HT3TCM zTU=aRU0q#XUS3~cUtnNhVPRonVq#-sV`OAxWo2b%W@cw+XJ}|>X=!O{YHDk1Yiw+6 zZEbCCZf#@ zetv#`e}900fPsO5f`WpBgM);GgoTBLhK7cRhlhxWh>3}bii(Phi;IkmjE#+rj*gCx zkB^X$kdcv*l9G~>larK`l$Dj0mX?;6mzS8Bn3y?($mw^ z)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l z_V@Sq`1ttw`T6?#`uqF)bNu}L{r&y^{{H{}|KJPQFaQ7mOG!jQRCwBykwFRoFbKn9 z|NrP6+@RuwttuWuQIQzLX+$OkAVj99K;lGmNLd|>jvH_pKrS8}ImNFiz?XF(Vs`w1 fU`GSPKf2ZcVxR$(AB+Q+00000NkvXXu0mjf*w3{P diff --git a/resources/osd/vision/172-173.png b/resources/osd/vision/172-173.png deleted file mode 100755 index 7afa65ddd19ebe0fd7dc9ee2cebad589a326c43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^5v;EQk(@Ik;M!Q+`=Ht$S`XTNQFYO zN02WALzOB6LqjtI!_R*}`ZWVXsR0ASs{{rHs~HRo;`ujsUXur^?eKJQ45_%aCFC^U z0R;}>NA16#-)(FWc)D=*;|mMgZ;4GkCh^v7O6OSiuWE01Iln5Y9}T`F88b|5_a zRMO6(xU#jK`rX?sgGEy7mt{;c&b%{gR*#PT9od+ECaY4ZsOaaa5>G>0)|M>2|Hvsz zW@-F6XVwirSM7{l_2FyxN>S&Z|Npt`zmjCI`xCn3$@E=kfNo;&boFyt=akR{04=Fv A)&Kwi diff --git a/resources/osd/vision/172.png b/resources/osd/vision/172.png new file mode 100644 index 0000000000000000000000000000000000000000..58c94130c533a8c311df45b7650a861f6c7b39df GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*Cwsa$hFJJdoyf@N ztjOVfu>18{$<&ukHD7m6&o~$$deyM)q-vTPZ{zHwMuYWUcV2{r^F0f#elMmz;r*|f z^Ba#|4f)*mdu5hNsAJ#3lBLp8{Wfpy*8VIwU%gqOr$VcL{jo1=c3)puRrq4@%bb|l zuOACnFEgIZ$htb#`2T-qwSQ((w>2Hs%#&!6-Kl@%Z3s`%#*P#0XTu6#Y}fDr`H#WV L)z4*}Q$iB}+f8I& literal 0 HcmV?d00001 diff --git a/resources/osd/vision/173.png b/resources/osd/vision/173.png new file mode 100644 index 0000000000000000000000000000000000000000..c906e58fedddc87de7ae40b997db2c85aed0a866 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*r+KD|O%6+oI4C?C^4Lc4gz~V!<~NQu%`2ChhuH1hU3+Tg%x5+_4FMZg86KM(m0bF6dUVrr*J=L+ zem{SkAavwm*q{B^ZvPiZ@ANKYte4*F=HG4nBWmKE#_)(>|Dz99YCdIpb1t<(y7b&< QpbHs1UHx3vIVCg!0Q!z;wEzGB literal 0 HcmV?d00001 diff --git a/resources/osd/vision/239.png b/resources/osd/vision/239.png new file mode 100644 index 0000000000000000000000000000000000000000..15df2997b1c2f5ae6640c9b6eae07b15af10a632 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`%C|gc+x5^GO2*TRdGHLoEESPQK08 zpupqY{^NcNzxrjZ*kea;FIG2PoeGG{8py7PUf`BEaSKN$8ReiEp(G1^0q7g5B